-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathhandleBuffDisks.asm
386 lines (361 loc) · 9.79 KB
/
handleBuffDisks.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
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
void handleBuffDisks(int itemId) {
if(load(0x1557F4) == 0) // check current HP
return
maxOffense = max(load(0x13D614) * 1.3, 999) // offense at start of battle
maxDefense = max(load(0x13D616) * 1.3, 999) // defense at start of battle
maxSpeed = max(load(0x13D618) * 1.3, 999) // speed at start of battle
/*
* 0x800F083C
* 0x800F08A0
* 0x800F0904
* 0x800F0968
* 0x800F09E8
* 0x800F0A4C
* 0x800F0AB0
*/
switch(itemId - 15) {
case 0:
curOffense = load(0x1557E0) // offense
if(maxOffense < curOffense + 20)
newOffense = maxOffense - curOffense
else
newOffense = 20
store(stack + 0x10, 0x0B)
store(stack + 0x14, 0x03)
0x0005CF3C(load(0x12F348), 0, newOffense, 0x1557E0)
break
case 1:
curDefense = load(0x1557E0 + 2) // defense
if(maxDefense < curDefense + 20)
newDefense = maxDefense - curDefense
else
newDefense = 20
store(stack + 0x10, 0x0B)
store(stack + 0x14, 0x04)
0x0005CF3C(load(0x12F348), 0, newDefense, 0x1557E2)
break
case 2:
curSpeed = load(0x1557E0 + 4) // speed
if(maxSpeed < curSpeed + 20)
newSpeed = maxSpeed - curSpeed
else
newSpeed = 20
store(stack + 0x10, 0x0B)
store(stack + 0x14, 0x05)
0x0005CF3C(load(0x12F348), 0, newSpeed, 0x1557E4)
break
case 3:
store(stack + 0x10, 0x0B)
store(stack + 0x14, 0x03)
0x0005CF3C(load(0x12F348), 0, 20, 0x1557E0)
store(stack + 0x10, 0x0B)
store(stack + 0x14, 0x04)
0x0005CF3C(load(0x12F348), 0, 20, 0x1557E2)
store(stack + 0x10, 0x0B)
store(stack + 0x14, 0x05)
0x0005CF3C(load(0x12F348), 0, 20, 0x1557E4)
break
case 4:
curOffense = load(0x1557E0) // offense
if(maxOffense < curOffense + 50)
newOffense = maxOffense - curOffense
else
newOffense = 50
store(stack + 0x10, 0x0B)
store(stack + 0x14, 0x03)
0x0005CF3C(load(0x12F348), 0, newOffense, 0x1557E0)
break
case 5:
curDefense = load(0x1557E0 + 2) // defense
if(maxDefense < curDefense + 50)
newDefense = maxDefense - curDefense
else
newDefense = 50
store(stack + 0x10, 0x0B)
store(stack + 0x14, 0x04)
0x0005CF3C(load(0x12F348), 0, newDefense, 0x1557E2)
break
case 6:
curSpeed = load(0x1557E0 + 4) // speed
if(maxSpeed < curSpeed + 50)
newSpeed = maxSpeed - curSpeed
else
newSpeed = 50
store(stack + 0x10, 0x0B)
store(stack + 0x14, 0x05)
0x0005CF3C(load(0x12F348), 0, newSpeed, 0x1557E4)
break
}
0x000721FC(load(0x12F348))
}
0x000f06f0 addiu r29,r29,0xffe0
0x000f06f4 lui r1,0x8015
0x000f06f8 sw r31,0x001c(r29)
0x000f06fc lh r2,0x57f4(r1)
0x000f0700 nop
0x000f0704 beq r2,r0,0x000f0b1c
0x000f0708 sw r16,0x0018(r29)
0x000f070c lui r1,0x8014
0x000f0710 lh r5,-0x29ec(r1)
0x000f0714 nop
0x000f0718 sll r2,r5,0x01
0x000f071c add r3,r2,r5
0x000f0720 lui r2,0x6666
0x000f0724 ori r2,r2,0x6667
0x000f0728 mult r2,r3
0x000f072c mfhi r2
0x000f0730 srl r3,r3,0x1f
0x000f0734 sra r2,r2,0x02
0x000f0738 addu r2,r2,r3
0x000f073c add r2,r5,r2
0x000f0740 sll r2,r2,0x10
0x000f0744 sra r2,r2,0x10
0x000f0748 slti r1,r2,0x03e8
0x000f074c bne r1,r0,0x000f0760
0x000f0750 nop
0x000f0754 addiu r2,r0,0x03e7
0x000f0758 sll r2,r2,0x10
0x000f075c sra r2,r2,0x10
0x000f0760 lui r1,0x8014
0x000f0764 lh r6,-0x29ea(r1)
0x000f0768 nop
0x000f076c sll r3,r6,0x01
0x000f0770 add r5,r3,r6
0x000f0774 lui r3,0x6666
0x000f0778 ori r3,r3,0x6667
0x000f077c mult r3,r5
0x000f0780 mfhi r3
0x000f0784 srl r5,r5,0x1f
0x000f0788 sra r3,r3,0x02
0x000f078c addu r3,r3,r5
0x000f0790 add r3,r6,r3
0x000f0794 sll r3,r3,0x10
0x000f0798 sra r3,r3,0x10
0x000f079c slti r1,r3,0x03e8
0x000f07a0 bne r1,r0,0x000f07b4
0x000f07a4 nop
0x000f07a8 addiu r3,r0,0x03e7
0x000f07ac sll r3,r3,0x10
0x000f07b0 sra r3,r3,0x10
0x000f07b4 lui r1,0x8014
0x000f07b8 lh r7,-0x29e8(r1)
0x000f07bc nop
0x000f07c0 sll r5,r7,0x01
0x000f07c4 add r6,r5,r7
0x000f07c8 lui r5,0x6666
0x000f07cc ori r5,r5,0x6667
0x000f07d0 mult r5,r6
0x000f07d4 mfhi r5
0x000f07d8 srl r6,r6,0x1f
0x000f07dc sra r5,r5,0x02
0x000f07e0 addu r5,r5,r6
0x000f07e4 add r5,r7,r5
0x000f07e8 sll r6,r5,0x10
0x000f07ec sra r6,r6,0x10
0x000f07f0 slti r1,r6,0x03e8
0x000f07f4 bne r1,r0,0x000f0808
0x000f07f8 nop
0x000f07fc addiu r5,r0,0x03e7
0x000f0800 sll r6,r5,0x10
0x000f0804 sra r6,r6,0x10
0x000f0808 lui r16,0x8015
0x000f080c addi r4,r4,-0x000f
0x000f0810 sltiu r1,r4,0x0007
0x000f0814 beq r1,r0,0x000f0b0c
0x000f0818 addiu r16,r16,0x57e0
0x000f081c lui r5,0x8011
0x000f0820 addiu r5,r5,0x5200
0x000f0824 sll r4,r4,0x02
0x000f0828 addu r4,r4,r5
0x000f082c lw r4,0x0000(r4)
0x000f0830 nop
0x000f0834 jr r4
0x000f0838 nop
0x000f083c lh r3,0x0000(r16)
0x000f0840 nop
0x000f0844 addu r4,r3,r0
0x000f0848 addi r3,r3,0x0014
0x000f084c slt r1,r2,r3
0x000f0850 beq r1,r0,0x000f0868
0x000f0854 addu r5,r2,r0
0x000f0858 sub r2,r5,r4
0x000f085c sll r6,r2,0x10
0x000f0860 beq r0,r0,0x000f0874
0x000f0864 sra r6,r6,0x10
0x000f0868 addiu r2,r0,0x0014
0x000f086c sll r6,r2,0x10
0x000f0870 sra r6,r6,0x10
0x000f0874 addiu r2,r0,0x000b
0x000f0878 sw r2,0x0010(r29)
0x000f087c addiu r2,r0,0x0003
0x000f0880 sw r2,0x0014(r29)
0x000f0884 lui r1,0x8013
0x000f0888 lw r4,-0x0cb8(r1)
0x000f088c addu r5,r0,r0
0x000f0890 jal 0x0005cf3c
0x000f0894 addu r7,r16,r0
0x000f0898 beq r0,r0,0x000f0b0c
0x000f089c nop
0x000f08a0 lh r2,0x0002(r16)
0x000f08a4 nop
0x000f08a8 addu r4,r2,r0
0x000f08ac addi r2,r2,0x0014
0x000f08b0 slt r1,r3,r2
0x000f08b4 beq r1,r0,0x000f08cc
0x000f08b8 addu r5,r3,r0
0x000f08bc sub r2,r5,r4
0x000f08c0 sll r6,r2,0x10
0x000f08c4 beq r0,r0,0x000f08d8
0x000f08c8 sra r6,r6,0x10
0x000f08cc addiu r2,r0,0x0014
0x000f08d0 sll r6,r2,0x10
0x000f08d4 sra r6,r6,0x10
0x000f08d8 addiu r2,r0,0x000b
0x000f08dc sw r2,0x0010(r29)
0x000f08e0 addiu r2,r0,0x0004
0x000f08e4 sw r2,0x0014(r29)
0x000f08e8 lui r1,0x8013
0x000f08ec lw r4,-0x0cb8(r1)
0x000f08f0 addu r5,r0,r0
0x000f08f4 jal 0x0005cf3c
0x000f08f8 addiu r7,r16,0x0002
0x000f08fc beq r0,r0,0x000f0b0c
0x000f0900 nop
0x000f0904 lh r2,0x0004(r16)
0x000f0908 nop
0x000f090c addu r3,r2,r0
0x000f0910 addi r2,r2,0x0014
0x000f0914 slt r1,r6,r2
0x000f0918 beq r1,r0,0x000f0930
0x000f091c addu r4,r6,r0
0x000f0920 sub r2,r4,r3
0x000f0924 sll r6,r2,0x10
0x000f0928 beq r0,r0,0x000f093c
0x000f092c sra r6,r6,0x10
0x000f0930 addiu r2,r0,0x0014
0x000f0934 sll r6,r2,0x10
0x000f0938 sra r6,r6,0x10
0x000f093c addiu r2,r0,0x000b
0x000f0940 sw r2,0x0010(r29)
0x000f0944 addiu r2,r0,0x0005
0x000f0948 sw r2,0x0014(r29)
0x000f094c lui r1,0x8013
0x000f0950 lw r4,-0x0cb8(r1)
0x000f0954 addu r5,r0,r0
0x000f0958 jal 0x0005cf3c
0x000f095c addiu r7,r16,0x0004
0x000f0960 beq r0,r0,0x000f0b0c
0x000f0964 nop
0x000f0968 addiu r2,r0,0x000b
0x000f096c sw r2,0x0010(r29)
0x000f0970 addiu r2,r0,0x0003
0x000f0974 sw r2,0x0014(r29)
0x000f0978 lui r1,0x8013
0x000f097c lw r4,-0x0cb8(r1)
0x000f0980 addu r5,r0,r0
0x000f0984 addiu r6,r0,0x0014
0x000f0988 jal 0x0005cf3c
0x000f098c addu r7,r16,r0
0x000f0990 addiu r2,r0,0x000b
0x000f0994 sw r2,0x0010(r29)
0x000f0998 addiu r2,r0,0x0004
0x000f099c sw r2,0x0014(r29)
0x000f09a0 lui r1,0x8013
0x000f09a4 lw r4,-0x0cb8(r1)
0x000f09a8 addu r5,r0,r0
0x000f09ac addiu r6,r0,0x0014
0x000f09b0 jal 0x0005cf3c
0x000f09b4 addiu r7,r16,0x0002
0x000f09b8 addiu r2,r0,0x000b
0x000f09bc sw r2,0x0010(r29)
0x000f09c0 addiu r2,r0,0x0005
0x000f09c4 sw r2,0x0014(r29)
0x000f09c8 lui r1,0x8013
0x000f09cc lw r4,-0x0cb8(r1)
0x000f09d0 addu r5,r0,r0
0x000f09d4 addiu r6,r0,0x0014
0x000f09d8 jal 0x0005cf3c
0x000f09dc addiu r7,r16,0x0004
0x000f09e0 beq r0,r0,0x000f0b0c
0x000f09e4 nop
0x000f09e8 lh r3,0x0000(r16)
0x000f09ec nop
0x000f09f0 addu r4,r3,r0
0x000f09f4 addi r3,r3,0x0032
0x000f09f8 slt r1,r2,r3
0x000f09fc beq r1,r0,0x000f0a14
0x000f0a00 addu r5,r2,r0
0x000f0a04 sub r2,r5,r4
0x000f0a08 sll r6,r2,0x10
0x000f0a0c beq r0,r0,0x000f0a20
0x000f0a10 sra r6,r6,0x10
0x000f0a14 addiu r2,r0,0x0032
0x000f0a18 sll r6,r2,0x10
0x000f0a1c sra r6,r6,0x10
0x000f0a20 addiu r2,r0,0x000b
0x000f0a24 sw r2,0x0010(r29)
0x000f0a28 addiu r2,r0,0x0003
0x000f0a2c sw r2,0x0014(r29)
0x000f0a30 lui r1,0x8013
0x000f0a34 lw r4,-0x0cb8(r1)
0x000f0a38 addu r5,r0,r0
0x000f0a3c jal 0x0005cf3c
0x000f0a40 addu r7,r16,r0
0x000f0a44 beq r0,r0,0x000f0b0c
0x000f0a48 nop
0x000f0a4c lh r2,0x0002(r16)
0x000f0a50 nop
0x000f0a54 addu r4,r2,r0
0x000f0a58 addi r2,r2,0x0032
0x000f0a5c slt r1,r3,r2
0x000f0a60 beq r1,r0,0x000f0a78
0x000f0a64 addu r5,r3,r0
0x000f0a68 sub r2,r5,r4
0x000f0a6c sll r6,r2,0x10
0x000f0a70 beq r0,r0,0x000f0a84
0x000f0a74 sra r6,r6,0x10
0x000f0a78 addiu r2,r0,0x0032
0x000f0a7c sll r6,r2,0x10
0x000f0a80 sra r6,r6,0x10
0x000f0a84 addiu r2,r0,0x000b
0x000f0a88 sw r2,0x0010(r29)
0x000f0a8c addiu r2,r0,0x0004
0x000f0a90 sw r2,0x0014(r29)
0x000f0a94 lui r1,0x8013
0x000f0a98 lw r4,-0x0cb8(r1)
0x000f0a9c addu r5,r0,r0
0x000f0aa0 jal 0x0005cf3c
0x000f0aa4 addiu r7,r16,0x0002
0x000f0aa8 beq r0,r0,0x000f0b0c
0x000f0aac nop
0x000f0ab0 lh r2,0x0004(r16)
0x000f0ab4 nop
0x000f0ab8 addu r3,r2,r0
0x000f0abc addi r2,r2,0x0032
0x000f0ac0 slt r1,r6,r2
0x000f0ac4 beq r1,r0,0x000f0adc
0x000f0ac8 addu r4,r6,r0
0x000f0acc sub r2,r4,r3
0x000f0ad0 sll r6,r2,0x10
0x000f0ad4 beq r0,r0,0x000f0ae8
0x000f0ad8 sra r6,r6,0x10
0x000f0adc addiu r2,r0,0x0032
0x000f0ae0 sll r6,r2,0x10
0x000f0ae4 sra r6,r6,0x10
0x000f0ae8 addiu r2,r0,0x000b
0x000f0aec sw r2,0x0010(r29)
0x000f0af0 addiu r2,r0,0x0005
0x000f0af4 sw r2,0x0014(r29)
0x000f0af8 lui r1,0x8013
0x000f0afc lw r4,-0x0cb8(r1)
0x000f0b00 addu r5,r0,r0
0x000f0b04 jal 0x0005cf3c
0x000f0b08 addiu r7,r16,0x0004
0x000f0b0c lui r1,0x8013
0x000f0b10 lw r4,-0x0cb8(r1)
0x000f0b14 jal 0x000721fc
0x000f0b18 nop
0x000f0b1c lw r31,0x001c(r29)
0x000f0b20 lw r16,0x0018(r29)
0x000f0b24 jr r31
0x000f0b28 addiu r29,r29,0x0020