summaryrefslogtreecommitdiff
path: root/asm/SDK/MTX/mtx44.s
blob: 578f1d8c1e3b67f78625fb504e0eaa39d37366d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global C_MTXFrustum
C_MTXFrustum:
/* 8027CAA4 00278704  EC 04 18 28 */	fsubs f0, f4, f3
/* 8027CAA8 00278708  C1 22 A0 98 */	lfs f9, lbl_80642698-_SDA2_BASE_(r2)
/* 8027CAAC 0027870C  C1 62 A0 90 */	lfs f11, lbl_80642690-_SDA2_BASE_(r2)
/* 8027CAB0 00278710  ED 01 10 28 */	fsubs f8, f1, f2
/* 8027CAB4 00278714  EC E6 28 28 */	fsubs f7, f6, f5
/* 8027CAB8 00278718  C1 42 A0 94 */	lfs f10, lbl_80642694-_SDA2_BASE_(r2)
/* 8027CABC 0027871C  ED 8B 00 24 */	fdivs f12, f11, f0
/* 8027CAC0 00278720  C0 02 A0 9C */	lfs f0, lbl_8064269C-_SDA2_BASE_(r2)
/* 8027CAC4 00278724  D1 23 00 04 */	stfs f9, 4(r3)
/* 8027CAC8 00278728  D0 03 00 38 */	stfs f0, 0x38(r3)
/* 8027CACC 0027872C  D1 23 00 0C */	stfs f9, 0xc(r3)
/* 8027CAD0 00278730  D1 23 00 10 */	stfs f9, 0x10(r3)
/* 8027CAD4 00278734  ED 0B 40 24 */	fdivs f8, f11, f8
/* 8027CAD8 00278738  D1 23 00 1C */	stfs f9, 0x1c(r3)
/* 8027CADC 0027873C  D1 23 00 20 */	stfs f9, 0x20(r3)
/* 8027CAE0 00278740  D1 23 00 24 */	stfs f9, 0x24(r3)
/* 8027CAE4 00278744  D1 23 00 30 */	stfs f9, 0x30(r3)
/* 8027CAE8 00278748  D1 23 00 34 */	stfs f9, 0x34(r3)
/* 8027CAEC 0027874C  EC 01 10 2A */	fadds f0, f1, f2
/* 8027CAF0 00278750  D1 23 00 3C */	stfs f9, 0x3c(r3)
/* 8027CAF4 00278754  EC 64 18 2A */	fadds f3, f4, f3
/* 8027CAF8 00278758  ED 4A 01 72 */	fmuls f10, f10, f5
/* 8027CAFC 0027875C  EC 08 00 32 */	fmuls f0, f8, f0
/* 8027CB00 00278760  EC 4C 00 F2 */	fmuls f2, f12, f3
/* 8027CB04 00278764  EC 2A 02 32 */	fmuls f1, f10, f8
/* 8027CB08 00278768  EC 8A 03 32 */	fmuls f4, f10, f12
/* 8027CB0C 0027876C  D0 03 00 18 */	stfs f0, 0x18(r3)
/* 8027CB10 00278770  EC C6 01 72 */	fmuls f6, f6, f5
/* 8027CB14 00278774  D0 23 00 14 */	stfs f1, 0x14(r3)
/* 8027CB18 00278778  EC 6B 38 24 */	fdivs f3, f11, f7
/* 8027CB1C 0027877C  D0 83 00 00 */	stfs f4, 0(r3)
/* 8027CB20 00278780  D0 43 00 08 */	stfs f2, 8(r3)
/* 8027CB24 00278784  FC 20 28 50 */	fneg f1, f5
/* 8027CB28 00278788  FC 00 30 50 */	fneg f0, f6
/* 8027CB2C 0027878C  EC 21 00 F2 */	fmuls f1, f1, f3
/* 8027CB30 00278790  EC 03 00 32 */	fmuls f0, f3, f0
/* 8027CB34 00278794  D0 23 00 28 */	stfs f1, 0x28(r3)
/* 8027CB38 00278798  D0 03 00 2C */	stfs f0, 0x2c(r3)
/* 8027CB3C 0027879C  4E 80 00 20 */	blr

.global C_MTXPerspective
C_MTXPerspective:
/* 8027CB40 002787A0  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 8027CB44 002787A4  7C 08 02 A6 */	mflr r0
/* 8027CB48 002787A8  90 01 00 44 */	stw r0, 0x44(r1)
/* 8027CB4C 002787AC  DB E1 00 30 */	stfd f31, 0x30(r1)
/* 8027CB50 002787B0  F3 E1 00 38 */	psq_st f31, 56(r1), 0, qr0
/* 8027CB54 002787B4  DB C1 00 20 */	stfd f30, 0x20(r1)
/* 8027CB58 002787B8  F3 C1 00 28 */	psq_st f30, 40(r1), 0, qr0
/* 8027CB5C 002787BC  DB A1 00 10 */	stfd f29, 0x10(r1)
/* 8027CB60 002787C0  F3 A1 00 18 */	psq_st f29, 24(r1), 0, qr0
/* 8027CB64 002787C4  FF A0 10 90 */	fmr f29, f2
/* 8027CB68 002787C8  C0 A2 A0 A0 */	lfs f5, lbl_806426A0-_SDA2_BASE_(r2)
/* 8027CB6C 002787CC  FF C0 18 90 */	fmr f30, f3
/* 8027CB70 002787D0  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8027CB74 002787D4  FF E0 20 90 */	fmr f31, f4
/* 8027CB78 002787D8  EC 25 00 72 */	fmuls f1, f5, f1
/* 8027CB7C 002787DC  C0 02 A0 A4 */	lfs f0, lbl_806426A4-_SDA2_BASE_(r2)
/* 8027CB80 002787E0  7C 7F 1B 78 */	mr r31, r3
/* 8027CB84 002787E4  EC 20 00 72 */	fmuls f1, f0, f1
/* 8027CB88 002787E8  4B F5 79 D5 */	bl tan
/* 8027CB8C 002787EC  FC 80 08 18 */	frsp f4, f1
/* 8027CB90 002787F0  C0 62 A0 98 */	lfs f3, lbl_80642698-_SDA2_BASE_(r2)
/* 8027CB94 002787F4  C0 A2 A0 90 */	lfs f5, lbl_80642690-_SDA2_BASE_(r2)
/* 8027CB98 002787F8  EC 5F F0 28 */	fsubs f2, f31, f30
/* 8027CB9C 002787FC  C0 02 A0 9C */	lfs f0, lbl_8064269C-_SDA2_BASE_(r2)
/* 8027CBA0 00278800  EC 3F 07 B2 */	fmuls f1, f31, f30
/* 8027CBA4 00278804  EC C5 20 24 */	fdivs f6, f5, f4
/* 8027CBA8 00278808  D0 1F 00 38 */	stfs f0, 0x38(r31)
/* 8027CBAC 0027880C  D0 7F 00 04 */	stfs f3, 4(r31)
/* 8027CBB0 00278810  D0 7F 00 08 */	stfs f3, 8(r31)
/* 8027CBB4 00278814  D0 7F 00 0C */	stfs f3, 0xc(r31)
/* 8027CBB8 00278818  D0 7F 00 10 */	stfs f3, 0x10(r31)
/* 8027CBBC 0027881C  EC A5 10 24 */	fdivs f5, f5, f2
/* 8027CBC0 00278820  D0 7F 00 18 */	stfs f3, 0x18(r31)
/* 8027CBC4 00278824  D0 DF 00 14 */	stfs f6, 0x14(r31)
/* 8027CBC8 00278828  D0 7F 00 1C */	stfs f3, 0x1c(r31)
/* 8027CBCC 0027882C  D0 7F 00 20 */	stfs f3, 0x20(r31)
/* 8027CBD0 00278830  D0 7F 00 24 */	stfs f3, 0x24(r31)
/* 8027CBD4 00278834  EC 86 E8 24 */	fdivs f4, f6, f29
/* 8027CBD8 00278838  D0 7F 00 30 */	stfs f3, 0x30(r31)
/* 8027CBDC 0027883C  D0 7F 00 34 */	stfs f3, 0x34(r31)
/* 8027CBE0 00278840  D0 7F 00 3C */	stfs f3, 0x3c(r31)
/* 8027CBE4 00278844  FC 00 08 50 */	fneg f0, f1
/* 8027CBE8 00278848  D0 9F 00 00 */	stfs f4, 0(r31)
/* 8027CBEC 0027884C  FC 40 F0 50 */	fneg f2, f30
/* 8027CBF0 00278850  EC 05 00 32 */	fmuls f0, f5, f0
/* 8027CBF4 00278854  EC 22 01 72 */	fmuls f1, f2, f5
/* 8027CBF8 00278858  D0 1F 00 2C */	stfs f0, 0x2c(r31)
/* 8027CBFC 0027885C  D0 3F 00 28 */	stfs f1, 0x28(r31)
/* 8027CC00 00278860  E3 E1 00 38 */	psq_l f31, 56(r1), 0, qr0
/* 8027CC04 00278864  CB E1 00 30 */	lfd f31, 0x30(r1)
/* 8027CC08 00278868  E3 C1 00 28 */	psq_l f30, 40(r1), 0, qr0
/* 8027CC0C 0027886C  CB C1 00 20 */	lfd f30, 0x20(r1)
/* 8027CC10 00278870  E3 A1 00 18 */	psq_l f29, 24(r1), 0, qr0
/* 8027CC14 00278874  CB A1 00 10 */	lfd f29, 0x10(r1)
/* 8027CC18 00278878  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8027CC1C 0027887C  80 01 00 44 */	lwz r0, 0x44(r1)
/* 8027CC20 00278880  7C 08 03 A6 */	mtlr r0
/* 8027CC24 00278884  38 21 00 40 */	addi r1, r1, 0x40
/* 8027CC28 00278888  4E 80 00 20 */	blr

.global C_MTXOrtho
C_MTXOrtho:
/* 8027CC2C 0027888C  ED 64 18 28 */	fsubs f11, f4, f3
/* 8027CC30 00278890  C1 02 A0 98 */	lfs f8, lbl_80642698-_SDA2_BASE_(r2)
/* 8027CC34 00278894  C1 42 A0 90 */	lfs f10, lbl_80642690-_SDA2_BASE_(r2)
/* 8027CC38 00278898  EC E1 10 28 */	fsubs f7, f1, f2
/* 8027CC3C 0027889C  EC 06 28 28 */	fsubs f0, f6, f5
/* 8027CC40 002788A0  C1 22 A0 94 */	lfs f9, lbl_80642694-_SDA2_BASE_(r2)
/* 8027CC44 002788A4  ED 8A 58 24 */	fdivs f12, f10, f11
/* 8027CC48 002788A8  C0 A2 A0 9C */	lfs f5, lbl_8064269C-_SDA2_BASE_(r2)
/* 8027CC4C 002788AC  D1 03 00 04 */	stfs f8, 4(r3)
/* 8027CC50 002788B0  D1 03 00 08 */	stfs f8, 8(r3)
/* 8027CC54 002788B4  D1 03 00 10 */	stfs f8, 0x10(r3)
/* 8027CC58 002788B8  D1 03 00 18 */	stfs f8, 0x18(r3)
/* 8027CC5C 002788BC  ED 6A 38 24 */	fdivs f11, f10, f7
/* 8027CC60 002788C0  D1 03 00 20 */	stfs f8, 0x20(r3)
/* 8027CC64 002788C4  D1 03 00 24 */	stfs f8, 0x24(r3)
/* 8027CC68 002788C8  D1 03 00 30 */	stfs f8, 0x30(r3)
/* 8027CC6C 002788CC  D1 03 00 34 */	stfs f8, 0x34(r3)
/* 8027CC70 002788D0  D1 03 00 38 */	stfs f8, 0x38(r3)
/* 8027CC74 002788D4  EC EA 00 24 */	fdivs f7, f10, f0
/* 8027CC78 002788D8  D1 43 00 3C */	stfs f10, 0x3c(r3)
/* 8027CC7C 002788DC  FC 00 30 50 */	fneg f0, f6
/* 8027CC80 002788E0  EC 21 10 2A */	fadds f1, f1, f2
/* 8027CC84 002788E4  EC 64 18 2A */	fadds f3, f4, f3
/* 8027CC88 002788E8  EC C9 03 32 */	fmuls f6, f9, f12
/* 8027CC8C 002788EC  EC 00 01 F2 */	fmuls f0, f0, f7
/* 8027CC90 002788F0  FC 40 18 50 */	fneg f2, f3
/* 8027CC94 002788F4  EC 69 02 F2 */	fmuls f3, f9, f11
/* 8027CC98 002788F8  D0 C3 00 00 */	stfs f6, 0(r3)
/* 8027CC9C 002788FC  FC 20 08 50 */	fneg f1, f1
/* 8027CCA0 00278900  EC 8C 00 B2 */	fmuls f4, f12, f2
/* 8027CCA4 00278904  D0 03 00 2C */	stfs f0, 0x2c(r3)
/* 8027CCA8 00278908  EC 4B 00 72 */	fmuls f2, f11, f1
/* 8027CCAC 0027890C  D0 63 00 14 */	stfs f3, 0x14(r3)
/* 8027CCB0 00278910  EC 25 01 F2 */	fmuls f1, f5, f7
/* 8027CCB4 00278914  D0 83 00 0C */	stfs f4, 0xc(r3)
/* 8027CCB8 00278918  D0 43 00 1C */	stfs f2, 0x1c(r3)
/* 8027CCBC 0027891C  D0 23 00 28 */	stfs f1, 0x28(r3)
/* 8027CCC0 00278920  4E 80 00 20 */	blr