-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy path0x000CEA04.asm
301 lines (285 loc) · 7.76 KB
/
0x000CEA04.asm
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
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
0x000CEA04(voiceId, val2, val3, val4, val5, val6, val7, val8) {
if(load(0x14E590) == 1)
return -1
store(0x14E590, 1)
if(!(voiceId < 24 && 0x000D2A48(val2, val3) == 0)) {
store(0x14E590, 0)
return -1
}
store(0x14EDF6, 33)
store(0x14EDE2, val5)
store(0x14EDE3, val6)
store(0x14EDEC, val4)
if(val7 == val8) {
store(0x14EDE4, val7)
store(0x14EDE5, 64)
}
else if(val8 < val7) {
// throws divide by zero and overflow exceptions
r2 = (val8 * 64) / val7
store(0x14EDE4, val7)
store(0x14EDE5, r2)
}
else {
// throws divide by zero and overflow exceptions
r2 = 127 - (val7 * 64) / val8
store(0x14EDE4, val8)
store(0x14EDE5, r2)
}
r3 = load(0x14EF48) + val3 * 0x10
store(0x14EDEA, load(r3 + 0x01))
store(0x14EDEA + 0x01, load(r3 + 0x04))
store(0x14EDEA - 0x0A, load(r3))
r2 = load(0x14EDEA + 0x02)
r3 = load(0x14EDEA - 0x03)
r2 = load(0x14EF4C) + (r3 * 16 + r2) * 0x20
store(0x14EDEA + 0x03, load(r2 + 0x02))
store(0x14EDEA + 0x04, load(r2 + 0x03))
store(0x14EDEA + 0x05, load(r2))
store(0x14EDEA + 0x06, load(r2 + 0x04))
store(0x14EDEA + 0x07, load(r2 + 0x05))
store(0x14EDEA + 0x08, load(r2 + 0x06))
store(0x14EDEA + 0x09, load(r2 + 0x07))
store(0x14EDEA + 0x0A, load(r2 + 0x01))
store(0x14EDEA + 0x0E, load(r2 + 0x16))
if(r4 == 0) {
store(0x14E590, 0)
return -1
}
store(0x14EDEA + 0x10, voiceId)
store(0x14E6F8 + voiceId * 0x36, load(0x14EDEA + 0x0E))
store(0x14E6FA + voiceId * 0x36, 0)
store(0x14E70E + voiceId * 0x36, load(0x14EDEA + 0x02))
store(0x14E706 + voiceId * 0x36, val5)
store(0x14E708 + voiceId * 0x36, 33)
store(0x14E70A + voiceId * 0x36, load(0x14EDEA - 0x03))
store(0x14E70C + voiceId * 0x36, val3)
store(0x14E710 + voiceId * 0x36, val2)
store(0x14E715 + voiceId * 0x36, 1)
0x000CF430()
if(load(0x14EDEA + 0x0E) == 0xFF) {
0x000D0E68(voiceId) // TODO
}
else {
r2 = 0x000D0C7C(val5, val6) // TODO
0x000D14F8(1, r2) // TODO
}
store(0x14E590, 0)
return voiceId
}
0x000cea04 addiu r29,r29,0xffc0
0x000cea08 sw r16,0x0018(r29)
0x000cea0c lw r16,0x0058(r29)
0x000cea10 sw r17,0x001c(r29)
0x000cea14 lw r17,0x005c(r29)
0x000cea18 sw r21,0x002c(r29)
0x000cea1c lhu r21,0x0050(r29)
0x000cea20 lui r2,0x8015
0x000cea24 lw r2,-0x1a70(r2)
0x000cea28 sw r18,0x0020(r29)
0x000cea2c addu r18,r4,r0
0x000cea30 sw r23,0x0034(r29)
0x000cea34 addu r23,r6,r0
0x000cea38 sw r20,0x0028(r29)
0x000cea3c addu r20,r7,r0
0x000cea40 sw r30,0x0038(r29)
0x000cea44 lhu r30,0x0054(r29)
0x000cea48 addiu r3,r0,0x0001
0x000cea4c sw r31,0x003c(r29)
0x000cea50 sw r22,0x0030(r29)
0x000cea54 sw r19,0x0024(r29)
0x000cea58 sh r5,0x0010(r29)
0x000cea5c addu r19,r16,r0
0x000cea60 bne r2,r3,0x000cea70
0x000cea64 addu r22,r17,r0
0x000cea68 j 0x000ced34
0x000cea6c addiu r2,r0,0xffff
0x000cea70 lui r1,0x8015
0x000cea74 sw r3,-0x1a70(r1)
0x000cea78 andi r2,r18,0xffff
0x000cea7c sltiu r2,r2,0x0018
0x000cea80 beq r2,r0,0x000cec28
0x000cea84 sll r4,r5,0x10
0x000cea88 sra r4,r4,0x10
0x000cea8c sll r5,r6,0x10
0x000cea90 jal 0x000d2a48
0x000cea94 sra r5,r5,0x10
0x000cea98 bne r2,r0,0x000cec28
0x000cea9c addiu r2,r0,0x0021
0x000ceaa0 lui r5,0x8015
0x000ceaa4 addiu r5,r5,0xedf6
0x000ceaa8 sh r2,0x0000(r5)
0x000ceaac sll r2,r16,0x10
0x000ceab0 sra r3,r2,0x10
0x000ceab4 sll r2,r17,0x10
0x000ceab8 sra r4,r2,0x10
0x000ceabc sb r21,-0x0014(r5)
0x000ceac0 sb r30,-0x0013(r5)
0x000ceac4 bne r3,r4,0x000ceadc
0x000ceac8 sb r20,-0x000a(r5)
0x000ceacc addiu r2,r0,0x0040
0x000cead0 sb r2,-0x0011(r5)
0x000cead4 j 0x000ceb5c
0x000cead8 sb r19,-0x0012(r5)
0x000ceadc slt r2,r4,r3
0x000ceae0 beq r2,r0,0x000ceb1c
0x000ceae4 sll r2,r4,0x06
0x000ceae8 div r2,r3
0x000ceaec bne r3,r0,0x000ceaf8
0x000ceaf0 nop
0x000ceaf4 break 0x00001c00
0x000ceaf8 addiu r1,r0,0xffff
0x000ceafc bne r3,r1,0x000ceb10
0x000ceb00 lui r1,0x8000
0x000ceb04 bne r2,r1,0x000ceb10
0x000ceb08 nop
0x000ceb0c break 0x00001800
0x000ceb10 mflo r2
0x000ceb14 j 0x000ceb58
0x000ceb18 sb r19,-0x0012(r5)
0x000ceb1c sll r3,r3,0x06
0x000ceb20 div r3,r4
0x000ceb24 bne r4,r0,0x000ceb30
0x000ceb28 nop
0x000ceb2c break 0x00001c00
0x000ceb30 addiu r1,r0,0xffff
0x000ceb34 bne r4,r1,0x000ceb48
0x000ceb38 lui r1,0x8000
0x000ceb3c bne r3,r1,0x000ceb48
0x000ceb40 nop
0x000ceb44 break 0x00001800
0x000ceb48 mflo r3
0x000ceb4c addiu r2,r0,0x007f
0x000ceb50 sb r22,-0x0012(r5)
0x000ceb54 subu r2,r2,r3
0x000ceb58 sb r2,-0x0011(r5)
0x000ceb5c sll r3,r23,0x10
0x000ceb60 lui r2,0x8015
0x000ceb64 lw r2,-0x10b8(r2)
0x000ceb68 sra r3,r3,0x0c
0x000ceb6c addu r3,r3,r2
0x000ceb70 lbu r2,0x0001(r3)
0x000ceb74 lui r16,0x8015
0x000ceb78 addiu r16,r16,0xedea
0x000ceb7c sb r2,0x0000(r16)
0x000ceb80 lbu r2,0x0002(r16)
0x000ceb84 lbu r4,0x0004(r3)
0x000ceb88 sll r2,r2,0x18
0x000ceb8c sb r4,0x0001(r16)
0x000ceb90 lbu r4,0x0000(r3)
0x000ceb94 lb r3,-0x0003(r16)
0x000ceb98 sra r2,r2,0x18
0x000ceb9c sll r3,r3,0x04
0x000ceba0 addu r2,r2,r3
0x000ceba4 sll r2,r2,0x10
0x000ceba8 sb r4,-0x000a(r16)
0x000cebac lui r3,0x8015
0x000cebb0 lw r3,-0x10b4(r3)
0x000cebb4 sra r2,r2,0x0b
0x000cebb8 addu r2,r2,r3
0x000cebbc lbu r3,0x0000(r2)
0x000cebc0 nop
0x000cebc4 sb r3,0x0005(r16)
0x000cebc8 lhu r4,0x0016(r2)
0x000cebcc nop
0x000cebd0 sh r4,0x000e(r16)
0x000cebd4 lbu r3,0x0002(r2)
0x000cebd8 nop
0x000cebdc sb r3,0x0003(r16)
0x000cebe0 lbu r3,0x0003(r2)
0x000cebe4 nop
0x000cebe8 sb r3,0x0004(r16)
0x000cebec lbu r3,0x0004(r2)
0x000cebf0 nop
0x000cebf4 sb r3,0x0006(r16)
0x000cebf8 lbu r3,0x0005(r2)
0x000cebfc nop
0x000cec00 sb r3,0x0007(r16)
0x000cec04 lbu r3,0x0001(r2)
0x000cec08 nop
0x000cec0c sb r3,0x000a(r16)
0x000cec10 lbu r3,0x0006(r2)
0x000cec14 nop
0x000cec18 sb r3,0x0008(r16)
0x000cec1c lbu r2,0x0007(r2)
0x000cec20 bne r4,r0,0x000cec38
0x000cec24 sb r2,0x0009(r16)
0x000cec28 lui r1,0x8015
0x000cec2c sw r0,-0x1a70(r1)
0x000cec30 j 0x000ced34
0x000cec34 addiu r2,r0,0xffff
0x000cec38 sll r3,r18,0x10
0x000cec3c sra r3,r3,0x10
0x000cec40 sll r2,r3,0x03
0x000cec44 subu r2,r2,r3
0x000cec48 sll r2,r2,0x02
0x000cec4c subu r2,r2,r3
0x000cec50 sll r2,r2,0x01
0x000cec54 sh r18,0x0010(r16)
0x000cec58 lhu r8,0x0010(r29)
0x000cec5c addiu r3,r0,0x0021
0x000cec60 lui r1,0x8015
0x000cec64 addu r1,r1,r2
0x000cec68 sh r3,-0x18f8(r1)
0x000cec6c lui r1,0x8015
0x000cec70 addu r1,r1,r2
0x000cec74 sh r8,-0x18f0(r1)
0x000cec78 lbu r3,-0x0003(r16)
0x000cec7c lui r1,0x8015
0x000cec80 addu r1,r1,r2
0x000cec84 sh r23,-0x18f4(r1)
0x000cec88 sll r3,r3,0x18
0x000cec8c sra r3,r3,0x18
0x000cec90 lui r1,0x8015
0x000cec94 addu r1,r1,r2
0x000cec98 sh r3,-0x18f6(r1)
0x000cec9c lhu r3,0x000e(r16)
0x000ceca0 lui r1,0x8015
0x000ceca4 addu r1,r1,r2
0x000ceca8 sh r3,-0x1908(r1)
0x000cecac lbu r4,0x0002(r16)
0x000cecb0 addiu r3,r0,0x0001
0x000cecb4 lui r1,0x8015
0x000cecb8 addu r1,r1,r2
0x000cecbc sh r21,-0x18fa(r1)
0x000cecc0 lui r1,0x8015
0x000cecc4 addu r1,r1,r2
0x000cecc8 sb r3,-0x18eb(r1)
0x000ceccc lui r1,0x8015
0x000cecd0 addu r1,r1,r2
0x000cecd4 sh r0,-0x1906(r1)
0x000cecd8 sll r4,r4,0x18
0x000cecdc sra r4,r4,0x18
0x000cece0 lui r1,0x8015
0x000cece4 addu r1,r1,r2
0x000cece8 jal 0x000cf430
0x000cecec sh r4,-0x18f2(r1)
0x000cecf0 lh r3,0x000e(r16)
0x000cecf4 addiu r2,r0,0x00ff
0x000cecf8 bne r3,r2,0x000ced10
0x000cecfc addu r4,r21,r0
0x000ced00 jal 0x000d0e68
0x000ced04 andi r4,r18,0x00ff
0x000ced08 j 0x000ced24
0x000ced0c nop
0x000ced10 jal 0x000d0c7c
0x000ced14 addu r5,r30,r0
0x000ced18 addiu r4,r0,0x0001
0x000ced1c jal 0x000d14f8
0x000ced20 andi r5,r2,0xffff
0x000ced24 lui r1,0x8015
0x000ced28 sw r0,-0x1a70(r1)
0x000ced2c sll r2,r18,0x10
0x000ced30 sra r2,r2,0x10
0x000ced34 lw r31,0x003c(r29)
0x000ced38 lw r30,0x0038(r29)
0x000ced3c lw r23,0x0034(r29)
0x000ced40 lw r22,0x0030(r29)
0x000ced44 lw r21,0x002c(r29)
0x000ced48 lw r20,0x0028(r29)
0x000ced4c lw r19,0x0024(r29)
0x000ced50 lw r18,0x0020(r29)
0x000ced54 lw r17,0x001c(r29)
0x000ced58 lw r16,0x0018(r29)
0x000ced5c jr r31
0x000ced60 addiu r29,r29,0x0040