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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global GXDrawSphere
GXDrawSphere:
/* 8028582C 0028148C 94 21 FE F0 */ stwu r1, -0x110(r1)
/* 80285830 00281490 7C 08 02 A6 */ mflr r0
/* 80285834 00281494 90 01 01 14 */ stw r0, 0x114(r1)
/* 80285838 00281498 DB E1 01 00 */ stfd f31, 0x100(r1)
/* 8028583C 0028149C F3 E1 01 08 */ psq_st f31, 264(r1), 0, qr0
/* 80285840 002814A0 DB C1 00 F0 */ stfd f30, 0xf0(r1)
/* 80285844 002814A4 F3 C1 00 F8 */ psq_st f30, 248(r1), 0, qr0
/* 80285848 002814A8 DB A1 00 E0 */ stfd f29, 0xe0(r1)
/* 8028584C 002814AC F3 A1 00 E8 */ psq_st f29, 232(r1), 0, qr0
/* 80285850 002814B0 DB 81 00 D0 */ stfd f28, 0xd0(r1)
/* 80285854 002814B4 F3 81 00 D8 */ psq_st f28, 216(r1), 0, qr0
/* 80285858 002814B8 DB 61 00 C0 */ stfd f27, 0xc0(r1)
/* 8028585C 002814BC F3 61 00 C8 */ psq_st f27, 200(r1), 0, qr0
/* 80285860 002814C0 DB 41 00 B0 */ stfd f26, 0xb0(r1)
/* 80285864 002814C4 F3 41 00 B8 */ psq_st f26, 184(r1), 0, qr0
/* 80285868 002814C8 DB 21 00 A0 */ stfd f25, 0xa0(r1)
/* 8028586C 002814CC F3 21 00 A8 */ psq_st f25, 168(r1), 0, qr0
/* 80285870 002814D0 DB 01 00 90 */ stfd f24, 0x90(r1)
/* 80285874 002814D4 F3 01 00 98 */ psq_st f24, 152(r1), 0, qr0
/* 80285878 002814D8 DA E1 00 80 */ stfd f23, 0x80(r1)
/* 8028587C 002814DC F2 E1 00 88 */ psq_st f23, 136(r1), 0, qr0
/* 80285880 002814E0 DA C1 00 70 */ stfd f22, 0x70(r1)
/* 80285884 002814E4 F2 C1 00 78 */ psq_st f22, 120(r1), 0, qr0
/* 80285888 002814E8 DA A1 00 60 */ stfd f21, 0x60(r1)
/* 8028588C 002814EC F2 A1 00 68 */ psq_st f21, 104(r1), 0, qr0
/* 80285890 002814F0 DA 81 00 50 */ stfd f20, 0x50(r1)
/* 80285894 002814F4 F2 81 00 58 */ psq_st f20, 88(r1), 0, qr0
/* 80285898 002814F8 DA 61 00 40 */ stfd f19, 0x40(r1)
/* 8028589C 002814FC F2 61 00 48 */ psq_st f19, 72(r1), 0, qr0
/* 802858A0 00281500 39 61 00 40 */ addi r11, r1, 0x40
/* 802858A4 00281504 4B F4 18 7D */ bl _savegpr_25
/* 802858A8 00281508 3C 00 43 30 */ lis r0, 0x4330
/* 802858AC 0028150C 90 61 00 14 */ stw r3, 0x14(r1)
/* 802858B0 00281510 7C 79 1B 78 */ mr r25, r3
/* 802858B4 00281514 C8 82 A1 F0 */ lfd f4, lbl_806427F0-_SDA2_BASE_(r2)
/* 802858B8 00281518 90 01 00 10 */ stw r0, 0x10(r1)
/* 802858BC 0028151C 7C 9A 23 78 */ mr r26, r4
/* 802858C0 00281520 C0 42 A1 D4 */ lfs f2, lbl_806427D4-_SDA2_BASE_(r2)
/* 802858C4 00281524 38 60 00 0D */ li r3, 0xd
/* 802858C8 00281528 90 81 00 1C */ stw r4, 0x1c(r1)
/* 802858CC 0028152C 38 81 00 08 */ addi r4, r1, 8
/* 802858D0 00281530 C8 01 00 10 */ lfd f0, 0x10(r1)
/* 802858D4 00281534 90 01 00 18 */ stw r0, 0x18(r1)
/* 802858D8 00281538 EC 60 20 28 */ fsubs f3, f0, f4
/* 802858DC 0028153C C0 02 A1 F8 */ lfs f0, lbl_806427F8-_SDA2_BASE_(r2)
/* 802858E0 00281540 C8 21 00 18 */ lfd f1, 0x18(r1)
/* 802858E4 00281544 C3 42 A1 D0 */ lfs f26, lbl_806427D0-_SDA2_BASE_(r2)
/* 802858E8 00281548 EC 21 20 28 */ fsubs f1, f1, f4
/* 802858EC 0028154C EF 22 18 24 */ fdivs f25, f2, f3
/* 802858F0 00281550 EF 00 08 24 */ fdivs f24, f0, f1
/* 802858F4 00281554 4B FF A1 4D */ bl GXGetVtxDesc
/* 802858F8 00281558 3C 60 80 51 */ lis r3, lbl_80515FF8@ha
/* 802858FC 0028155C 38 63 5F F8 */ addi r3, r3, lbl_80515FF8@l
/* 80285900 00281560 4B FF A2 F5 */ bl GXGetVtxDescv
/* 80285904 00281564 3C 80 80 51 */ lis r4, lbl_805160D0@ha
/* 80285908 00281568 38 60 00 03 */ li r3, 3
/* 8028590C 0028156C 38 84 60 D0 */ addi r4, r4, lbl_805160D0@l
/* 80285910 00281570 4B FF A9 F9 */ bl GXGetVtxAttrFmtv
/* 80285914 00281574 4B FF A3 71 */ bl GXClearVtxDesc
/* 80285918 00281578 38 60 00 09 */ li r3, 9
/* 8028591C 0028157C 38 80 00 01 */ li r4, 1
/* 80285920 00281580 4B FF 9A D5 */ bl GXSetVtxDesc
/* 80285924 00281584 38 60 00 0A */ li r3, 0xa
/* 80285928 00281588 38 80 00 01 */ li r4, 1
/* 8028592C 0028158C 4B FF 9A C9 */ bl GXSetVtxDesc
/* 80285930 00281590 38 60 00 03 */ li r3, 3
/* 80285934 00281594 38 80 00 09 */ li r4, 9
/* 80285938 00281598 38 A0 00 01 */ li r5, 1
/* 8028593C 0028159C 38 C0 00 04 */ li r6, 4
/* 80285940 002815A0 38 E0 00 00 */ li r7, 0
/* 80285944 002815A4 4B FF A3 75 */ bl GXSetVtxAttrFmt
/* 80285948 002815A8 38 60 00 03 */ li r3, 3
/* 8028594C 002815AC 38 80 00 0A */ li r4, 0xa
/* 80285950 002815B0 38 A0 00 00 */ li r5, 0
/* 80285954 002815B4 38 C0 00 04 */ li r6, 4
/* 80285958 002815B8 38 E0 00 00 */ li r7, 0
/* 8028595C 002815BC 4B FF A3 5D */ bl GXSetVtxAttrFmt
/* 80285960 002815C0 80 01 00 08 */ lwz r0, 8(r1)
/* 80285964 002815C4 2C 00 00 00 */ cmpwi r0, 0
/* 80285968 002815C8 41 82 00 28 */ beq lbl_80285990
/* 8028596C 002815CC 38 60 00 0D */ li r3, 0xd
/* 80285970 002815D0 38 80 00 01 */ li r4, 1
/* 80285974 002815D4 4B FF 9A 81 */ bl GXSetVtxDesc
/* 80285978 002815D8 38 60 00 03 */ li r3, 3
/* 8028597C 002815DC 38 80 00 0D */ li r4, 0xd
/* 80285980 002815E0 38 A0 00 01 */ li r5, 1
/* 80285984 002815E4 38 C0 00 04 */ li r6, 4
/* 80285988 002815E8 38 E0 00 00 */ li r7, 0
/* 8028598C 002815EC 4B FF A3 2D */ bl GXSetVtxAttrFmt
lbl_80285990:
/* 80285990 002815F0 38 1A 00 01 */ addi r0, r26, 1
/* 80285994 002815F4 CB 82 A1 E8 */ lfd f28, lbl_806427E8-_SDA2_BASE_(r2)
/* 80285998 002815F8 CB C2 A1 F0 */ lfd f30, lbl_806427F0-_SDA2_BASE_(r2)
/* 8028599C 002815FC 54 1E 08 3C */ slwi r30, r0, 1
/* 802859A0 00281600 3B 80 00 00 */ li r28, 0
/* 802859A4 00281604 3F E0 CC 01 */ lis r31, 0xcc01
/* 802859A8 00281608 48 00 01 B0 */ b lbl_80285B58
lbl_802859AC:
/* 802859AC 0028160C 6F 80 80 00 */ xoris r0, r28, 0x8000
/* 802859B0 00281610 90 01 00 14 */ stw r0, 0x14(r1)
/* 802859B4 00281614 C8 01 00 10 */ lfd f0, 0x10(r1)
/* 802859B8 00281618 EC 00 E0 28 */ fsubs f0, f0, f28
/* 802859BC 0028161C EE 80 06 72 */ fmuls f20, f0, f25
/* 802859C0 00281620 FC 20 A0 90 */ fmr f1, f20
/* 802859C4 00281624 EE B4 C8 2A */ fadds f21, f20, f25
/* 802859C8 00281628 4B F4 EA BD */ bl sin
/* 802859CC 0028162C FC 00 08 18 */ frsp f0, f1
/* 802859D0 00281630 FC 20 A8 90 */ fmr f1, f21
/* 802859D4 00281634 EE FA 00 32 */ fmuls f23, f26, f0
/* 802859D8 00281638 4B F4 EA AD */ bl sin
/* 802859DC 0028163C FC 00 08 18 */ frsp f0, f1
/* 802859E0 00281640 FC 20 A0 90 */ fmr f1, f20
/* 802859E4 00281644 EE DA 00 32 */ fmuls f22, f26, f0
/* 802859E8 00281648 4B F4 E6 91 */ bl cos
/* 802859EC 0028164C FC 00 08 18 */ frsp f0, f1
/* 802859F0 00281650 FC 20 A8 90 */ fmr f1, f21
/* 802859F4 00281654 EE BA 00 32 */ fmuls f21, f26, f0
/* 802859F8 00281658 4B F4 E6 81 */ bl cos
/* 802859FC 0028165C FC 00 08 18 */ frsp f0, f1
/* 80285A00 00281660 57 C5 04 3E */ clrlwi r5, r30, 0x10
/* 80285A04 00281664 38 60 00 98 */ li r3, 0x98
/* 80285A08 00281668 38 80 00 03 */ li r4, 3
/* 80285A0C 0028166C EE 9A 00 32 */ fmuls f20, f26, f0
/* 80285A10 00281670 4B FF B7 39 */ bl GXBegin
/* 80285A14 00281674 EF B4 D0 24 */ fdivs f29, f20, f26
/* 80285A18 00281678 83 A1 00 08 */ lwz r29, 8(r1)
/* 80285A1C 0028167C 3B 60 00 00 */ li r27, 0
/* 80285A20 00281680 EF F5 D0 24 */ fdivs f31, f21, f26
/* 80285A24 00281684 48 00 01 28 */ b lbl_80285B4C
lbl_80285A28:
/* 80285A28 00281688 6F 60 80 00 */ xoris r0, r27, 0x8000
/* 80285A2C 0028168C 90 01 00 1C */ stw r0, 0x1c(r1)
/* 80285A30 00281690 C8 01 00 18 */ lfd f0, 0x18(r1)
/* 80285A34 00281694 EC 00 E0 28 */ fsubs f0, f0, f28
/* 80285A38 00281698 EE 60 06 32 */ fmuls f19, f0, f24
/* 80285A3C 0028169C FC 20 98 90 */ fmr f1, f19
/* 80285A40 002816A0 4B F4 E6 39 */ bl cos
/* 80285A44 002816A4 FF 60 08 18 */ frsp f27, f1
/* 80285A48 002816A8 FC 20 98 90 */ fmr f1, f19
/* 80285A4C 002816AC 4B F4 EA 39 */ bl sin
/* 80285A50 002816B0 FC 80 08 18 */ frsp f4, f1
/* 80285A54 002816B4 2C 1D 00 00 */ cmpwi r29, 0
/* 80285A58 002816B8 EC 5B 05 B2 */ fmuls f2, f27, f22
/* 80285A5C 002816BC EC 04 05 B2 */ fmuls f0, f4, f22
/* 80285A60 002816C0 D0 5F 80 00 */ stfs f2, -0x8000(r31)
/* 80285A64 002816C4 EC 22 D0 24 */ fdivs f1, f2, f26
/* 80285A68 002816C8 D0 1F 80 00 */ stfs f0, -0x8000(r31)
/* 80285A6C 002816CC D2 9F 80 00 */ stfs f20, -0x8000(r31)
/* 80285A70 002816D0 EC 00 D0 24 */ fdivs f0, f0, f26
/* 80285A74 002816D4 D0 3F 80 00 */ stfs f1, -0x8000(r31)
/* 80285A78 002816D8 D0 1F 80 00 */ stfs f0, -0x8000(r31)
/* 80285A7C 002816DC D3 BF 80 00 */ stfs f29, -0x8000(r31)
/* 80285A80 002816E0 41 82 00 50 */ beq lbl_80285AD0
/* 80285A84 002816E4 6F 63 80 00 */ xoris r3, r27, 0x8000
/* 80285A88 002816E8 93 41 00 1C */ stw r26, 0x1c(r1)
/* 80285A8C 002816EC 38 1C 00 01 */ addi r0, r28, 1
/* 80285A90 002816F0 90 61 00 14 */ stw r3, 0x14(r1)
/* 80285A94 002816F4 6C 00 80 00 */ xoris r0, r0, 0x8000
/* 80285A98 002816F8 C8 01 00 18 */ lfd f0, 0x18(r1)
/* 80285A9C 002816FC C8 21 00 10 */ lfd f1, 0x10(r1)
/* 80285AA0 00281700 93 21 00 1C */ stw r25, 0x1c(r1)
/* 80285AA4 00281704 EC 40 F0 28 */ fsubs f2, f0, f30
/* 80285AA8 00281708 EC 61 E0 28 */ fsubs f3, f1, f28
/* 80285AAC 0028170C 90 01 00 14 */ stw r0, 0x14(r1)
/* 80285AB0 00281710 C8 01 00 18 */ lfd f0, 0x18(r1)
/* 80285AB4 00281714 C8 21 00 10 */ lfd f1, 0x10(r1)
/* 80285AB8 00281718 EC 43 10 24 */ fdivs f2, f3, f2
/* 80285ABC 0028171C EC 21 E0 28 */ fsubs f1, f1, f28
/* 80285AC0 00281720 D0 5F 80 00 */ stfs f2, -0x8000(r31)
/* 80285AC4 00281724 EC 00 F0 28 */ fsubs f0, f0, f30
/* 80285AC8 00281728 EC 01 00 24 */ fdivs f0, f1, f0
/* 80285ACC 0028172C D0 1F 80 00 */ stfs f0, -0x8000(r31)
lbl_80285AD0:
/* 80285AD0 00281730 EC 5B 05 F2 */ fmuls f2, f27, f23
/* 80285AD4 00281734 2C 1D 00 00 */ cmpwi r29, 0
/* 80285AD8 00281738 EC 04 05 F2 */ fmuls f0, f4, f23
/* 80285ADC 0028173C D0 5F 80 00 */ stfs f2, -0x8000(r31)
/* 80285AE0 00281740 EC 22 D0 24 */ fdivs f1, f2, f26
/* 80285AE4 00281744 D0 1F 80 00 */ stfs f0, -0x8000(r31)
/* 80285AE8 00281748 D2 BF 80 00 */ stfs f21, -0x8000(r31)
/* 80285AEC 0028174C EC 00 D0 24 */ fdivs f0, f0, f26
/* 80285AF0 00281750 D0 3F 80 00 */ stfs f1, -0x8000(r31)
/* 80285AF4 00281754 D0 1F 80 00 */ stfs f0, -0x8000(r31)
/* 80285AF8 00281758 D3 FF 80 00 */ stfs f31, -0x8000(r31)
/* 80285AFC 0028175C 41 82 00 4C */ beq lbl_80285B48
/* 80285B00 00281760 6F 63 80 00 */ xoris r3, r27, 0x8000
/* 80285B04 00281764 93 41 00 1C */ stw r26, 0x1c(r1)
/* 80285B08 00281768 6F 80 80 00 */ xoris r0, r28, 0x8000
/* 80285B0C 0028176C 90 61 00 14 */ stw r3, 0x14(r1)
/* 80285B10 00281770 C8 01 00 18 */ lfd f0, 0x18(r1)
/* 80285B14 00281774 C8 21 00 10 */ lfd f1, 0x10(r1)
/* 80285B18 00281778 93 21 00 1C */ stw r25, 0x1c(r1)
/* 80285B1C 0028177C EC 40 F0 28 */ fsubs f2, f0, f30
/* 80285B20 00281780 EC 61 E0 28 */ fsubs f3, f1, f28
/* 80285B24 00281784 90 01 00 14 */ stw r0, 0x14(r1)
/* 80285B28 00281788 C8 01 00 18 */ lfd f0, 0x18(r1)
/* 80285B2C 0028178C C8 21 00 10 */ lfd f1, 0x10(r1)
/* 80285B30 00281790 EC 43 10 24 */ fdivs f2, f3, f2
/* 80285B34 00281794 EC 21 E0 28 */ fsubs f1, f1, f28
/* 80285B38 00281798 D0 5F 80 00 */ stfs f2, -0x8000(r31)
/* 80285B3C 0028179C EC 00 F0 28 */ fsubs f0, f0, f30
/* 80285B40 002817A0 EC 01 00 24 */ fdivs f0, f1, f0
/* 80285B44 002817A4 D0 1F 80 00 */ stfs f0, -0x8000(r31)
lbl_80285B48:
/* 80285B48 002817A8 3B 7B 00 01 */ addi r27, r27, 1
lbl_80285B4C:
/* 80285B4C 002817AC 7C 1B D0 00 */ cmpw r27, r26
/* 80285B50 002817B0 40 81 FE D8 */ ble lbl_80285A28
/* 80285B54 002817B4 3B 9C 00 01 */ addi r28, r28, 1
lbl_80285B58:
/* 80285B58 002817B8 7C 1C C8 00 */ cmpw r28, r25
/* 80285B5C 002817BC 41 80 FE 50 */ blt lbl_802859AC
/* 80285B60 002817C0 3C 60 80 51 */ lis r3, lbl_80515FF8@ha
/* 80285B64 002817C4 38 63 5F F8 */ addi r3, r3, lbl_80515FF8@l
/* 80285B68 002817C8 4B FF 9A F1 */ bl GXSetVtxDescv
/* 80285B6C 002817CC 3C 80 80 51 */ lis r4, lbl_805160D0@ha
/* 80285B70 002817D0 38 60 00 03 */ li r3, 3
/* 80285B74 002817D4 38 84 60 D0 */ addi r4, r4, lbl_805160D0@l
/* 80285B78 002817D8 4B FF A2 E1 */ bl GXSetVtxAttrFmtv
/* 80285B7C 002817DC E3 E1 01 08 */ psq_l f31, 264(r1), 0, qr0
/* 80285B80 002817E0 CB E1 01 00 */ lfd f31, 0x100(r1)
/* 80285B84 002817E4 E3 C1 00 F8 */ psq_l f30, 248(r1), 0, qr0
/* 80285B88 002817E8 CB C1 00 F0 */ lfd f30, 0xf0(r1)
/* 80285B8C 002817EC E3 A1 00 E8 */ psq_l f29, 232(r1), 0, qr0
/* 80285B90 002817F0 CB A1 00 E0 */ lfd f29, 0xe0(r1)
/* 80285B94 002817F4 E3 81 00 D8 */ psq_l f28, 216(r1), 0, qr0
/* 80285B98 002817F8 CB 81 00 D0 */ lfd f28, 0xd0(r1)
/* 80285B9C 002817FC E3 61 00 C8 */ psq_l f27, 200(r1), 0, qr0
/* 80285BA0 00281800 CB 61 00 C0 */ lfd f27, 0xc0(r1)
/* 80285BA4 00281804 E3 41 00 B8 */ psq_l f26, 184(r1), 0, qr0
/* 80285BA8 00281808 CB 41 00 B0 */ lfd f26, 0xb0(r1)
/* 80285BAC 0028180C E3 21 00 A8 */ psq_l f25, 168(r1), 0, qr0
/* 80285BB0 00281810 CB 21 00 A0 */ lfd f25, 0xa0(r1)
/* 80285BB4 00281814 E3 01 00 98 */ psq_l f24, 152(r1), 0, qr0
/* 80285BB8 00281818 CB 01 00 90 */ lfd f24, 0x90(r1)
/* 80285BBC 0028181C E2 E1 00 88 */ psq_l f23, 136(r1), 0, qr0
/* 80285BC0 00281820 CA E1 00 80 */ lfd f23, 0x80(r1)
/* 80285BC4 00281824 E2 C1 00 78 */ psq_l f22, 120(r1), 0, qr0
/* 80285BC8 00281828 CA C1 00 70 */ lfd f22, 0x70(r1)
/* 80285BCC 0028182C E2 A1 00 68 */ psq_l f21, 104(r1), 0, qr0
/* 80285BD0 00281830 CA A1 00 60 */ lfd f21, 0x60(r1)
/* 80285BD4 00281834 E2 81 00 58 */ psq_l f20, 88(r1), 0, qr0
/* 80285BD8 00281838 CA 81 00 50 */ lfd f20, 0x50(r1)
/* 80285BDC 0028183C E2 61 00 48 */ psq_l f19, 72(r1), 0, qr0
/* 80285BE0 00281840 39 61 00 40 */ addi r11, r1, 0x40
/* 80285BE4 00281844 CA 61 00 40 */ lfd f19, 0x40(r1)
/* 80285BE8 00281848 4B F4 15 85 */ bl _restgpr_25
/* 80285BEC 0028184C 80 01 01 14 */ lwz r0, 0x114(r1)
/* 80285BF0 00281850 7C 08 03 A6 */ mtlr r0
/* 80285BF4 00281854 38 21 01 10 */ addi r1, r1, 0x110
/* 80285BF8 00281858 4E 80 00 20 */ blr
|