-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy path0x000D4034.asm
434 lines (411 loc) · 11.6 KB
/
0x000D4034.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
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
// waypoint stuff, navigate around obstacles
0x000D4034() {
playerPtr = load(0x12F344)
partnerPtr = load(0x12F348)
partnerLocationPtr = load(partnerPtr + 0x04)
playerTileX, playerTileY = getEntityTileFromModel(playerPtr)
if(playerTileX != load(0x134D5C) || playerTileY != load(0x134D5B)) {
partnerTileX, partnerTileY = getEntityTileFromModel(partnerPtr)
if(isFiveTileWidePathOpen(playerTileX, playerTileY, partnerTileX, partnerTileY) == 1) {
someVal1 = load(0x134D59)
if(someVal1 != 0) {
someVal2 = load(0x134D5A)
prevOffset = (someVal2 + someVal1 - 1) % 30
if(isFiveTileWidePathOpen(playerTileX, playerTileY, load(0x13D5F0 + prevOffset), load(0x13D5D0 + prevOffset)) == 1)
storePreviousLocation(prevOffset + 1, load(0x134D5C), load(0x134D5B))
}
else
clearPreviousLocations()
storePreviousLocation(load(0x134D5A), load(0x134D5C), load(0x134D5B))
}
else
clearPreviousLocations()
}
if(load(0x134D59) >= 2) {
for(r16 = 0; r16 < 3; r16++) {
offset = (load(0x134D5A) + load(0x134D59) - r16 - 2) % 30
if(isFiveTileWidePathOpen(playerTileX, playerTileY, load(0x13D5F0 + offset), load(0x13D5D0 + offset)) == 0) {
store(0x134D59, load(0x134D5A) - r16 - 1)
break
}
if(load(0x134D5A) == offset)
break
}
}
if(load(0x134D59) != 0) {
setTransformationMatrix(0x136F84)
offset = load(0x134D5A)
if(isTileWithinScreenArea(load(0x13D5F0 + offset), load(0x13D5D0 + offset)) != 0) {
if(load(partnerPtr + 0x35) == 0) {
offset = load(0x134D5A)
locX = (load(0x13D5F0 + offset) - 50) * 100 + 50
locY = (50 - load(0x13D5D0 + offset)) * 100 - 50
store(partnerLocationPtr + 0x78, locX)
store(partnerLocationPtr + 0x80, locY)
store(partnerPtr + 0x10, locX / 32768)
store(partnerPtr + 0x18, locY / 32768)
pollStoredLocation() // TODO
}
}
}
state = load(0x134F0A)
if(state == 0 || state == 3) {
rotation = load(partnerLocationPtr + 0x72)
if(load(0x134D59) != 0) {
partnerModelTileX, partnerModelTileY = getModelTile(partnerLocationPtr + 0x78)
offset = load(0x124D5A)
entityLookAtTile(partnerPtr, load(0x13D5F0 + offset), load(0x13D5D0 + offset))
if(load(0x13D5F0 + offset) == partnerModelTileX && partnerModelTileY == load(0x13D5D0 + offset))
pollStoredLocation() // TODO
}
else {
playerLocationPtr = load(playerPtr + 0x04)
entityLookAtLocation(partnerPtr, playerLocationPtr + 0x78)
}
}
collisionResponse = entityCheckCollision(0, partnerPtr, 0, 0)
if(collisionResponse >= 0 && collisionResponse < 10) {
if(load(0x134F0A) != 3) {
store(partnerLocationPtr + 0x72, rotation)
0x000D4884(playerPtr, partnerPtr, 0, 0) // TODO
}
else if(collisionResponse != 0)
startBattleIdleAnimation(0x1557A8, 0x1557E0, 0)
}
else if(load(0x134F0A) == 3 && entityIsInEntity(playerPtr, partnerPtr) == 1)
handleBattleIdle(0x1557A8, 0x1557E0, 0)
store(0x134D5C, playerTileX)
store(0x134D5B, playerTileY)
}
0x000d4034 addiu r29,r29,0xffd8
0x000d4038 sw r31,0x001c(r29)
0x000d403c sw r18,0x0018(r29)
0x000d4040 lui r1,0x8013
0x000d4044 sw r17,0x0014(r29)
0x000d4048 lw r4,-0x0cbc(r1)
0x000d404c sw r16,0x0010(r29)
0x000d4050 addiu r5,r29,0x0024
0x000d4054 jal 0x000d3aec
0x000d4058 addiu r6,r29,0x0025
0x000d405c lb r3,0x0024(r29)
0x000d4060 lb r2,-0x6dd0(r28)
0x000d4064 nop
0x000d4068 bne r3,r2,0x000d4084
0x000d406c nop
0x000d4070 lb r3,0x0025(r29)
0x000d4074 lb r2,-0x6dd1(r28)
0x000d4078 nop
0x000d407c beq r3,r2,0x000d4188
0x000d4080 nop
0x000d4084 lui r1,0x8013
0x000d4088 lw r4,-0x0cb8(r1)
0x000d408c addiu r5,r29,0x0026
0x000d4090 jal 0x000d3aec
0x000d4094 addiu r6,r29,0x0027
0x000d4098 lb r4,0x0024(r29)
0x000d409c lb r5,0x0025(r29)
0x000d40a0 lb r6,0x0026(r29)
0x000d40a4 lb r7,0x0027(r29)
0x000d40a8 jal 0x000d3b44
0x000d40ac nop
0x000d40b0 addiu r1,r0,0x0001
0x000d40b4 bne r2,r1,0x000d4180
0x000d40b8 nop
0x000d40bc lb r2,-0x6dd3(r28)
0x000d40c0 nop
0x000d40c4 beq r2,r0,0x000d415c
0x000d40c8 addu r3,r2,r0
0x000d40cc lb r2,-0x6dd2(r28)
0x000d40d0 lb r4,0x0024(r29)
0x000d40d4 add r2,r2,r3
0x000d40d8 addi r3,r2,-0x0001
0x000d40dc addiu r2,r0,0x001e
0x000d40e0 div r3,r2
0x000d40e4 mfhi r2
0x000d40e8 sll r5,r2,0x10
0x000d40ec lui r2,0x8014
0x000d40f0 sra r5,r5,0x10
0x000d40f4 addiu r2,r2,0xd5f0
0x000d40f8 addu r3,r2,r5
0x000d40fc lui r2,0x8014
0x000d4100 addiu r2,r2,0xd5d0
0x000d4104 addu r2,r2,r5
0x000d4108 lb r5,0x0025(r29)
0x000d410c lb r6,0x0000(r3)
0x000d4110 lb r7,0x0000(r2)
0x000d4114 jal 0x000d3b44
0x000d4118 nop
0x000d411c addiu r1,r0,0x0001
0x000d4120 bne r2,r1,0x000d4188
0x000d4124 nop
0x000d4128 lb r3,-0x6dd2(r28)
0x000d412c lb r2,-0x6dd3(r28)
0x000d4130 lb r5,-0x6dd0(r28)
0x000d4134 add r3,r3,r2
0x000d4138 addiu r2,r0,0x001e
0x000d413c div r3,r2
0x000d4140 lb r6,-0x6dd1(r28)
0x000d4144 mfhi r2
0x000d4148 sll r4,r2,0x10
0x000d414c jal 0x000d4564
0x000d4150 sra r4,r4,0x10
0x000d4154 beq r0,r0,0x000d4188
0x000d4158 nop
0x000d415c jal 0x000d39f8
0x000d4160 nop
0x000d4164 lb r4,-0x6dd2(r28)
0x000d4168 lb r5,-0x6dd0(r28)
0x000d416c lb r6,-0x6dd1(r28)
0x000d4170 jal 0x000d4564
0x000d4174 nop
0x000d4178 beq r0,r0,0x000d4188
0x000d417c nop
0x000d4180 jal 0x000d39f8
0x000d4184 nop
0x000d4188 lb r2,-0x6dd3(r28)
0x000d418c nop
0x000d4190 slti r1,r2,0x0002
0x000d4194 bne r1,r0,0x000d4244
0x000d4198 nop
0x000d419c beq r0,r0,0x000d4238
0x000d41a0 addu r16,r0,r0
0x000d41a4 lb r3,-0x6dd2(r28)
0x000d41a8 lb r2,-0x6dd3(r28)
0x000d41ac lb r4,0x0024(r29)
0x000d41b0 add r2,r3,r2
0x000d41b4 addi r2,r2,-0x0002
0x000d41b8 sub r3,r2,r16
0x000d41bc addiu r2,r0,0x001e
0x000d41c0 div r3,r2
0x000d41c4 mfhi r2
0x000d41c8 sll r17,r2,0x10
0x000d41cc sra r17,r17,0x10
0x000d41d0 lui r2,0x8014
0x000d41d4 addu r5,r17,r0
0x000d41d8 addiu r2,r2,0xd5f0
0x000d41dc addu r3,r2,r5
0x000d41e0 lui r2,0x8014
0x000d41e4 addiu r2,r2,0xd5d0
0x000d41e8 addu r2,r2,r5
0x000d41ec lb r5,0x0025(r29)
0x000d41f0 lb r6,0x0000(r3)
0x000d41f4 lb r7,0x0000(r2)
0x000d41f8 jal 0x000d3b44
0x000d41fc nop
0x000d4200 bne r2,r0,0x000d4224
0x000d4204 nop
0x000d4208 addi r3,r16,0x0001
0x000d420c sll r3,r3,0x18
0x000d4210 lb r2,-0x6dd3(r28)
0x000d4214 sra r3,r3,0x18
0x000d4218 sub r2,r2,r3
0x000d421c beq r0,r0,0x000d4244
0x000d4220 sb r2,-0x6dd3(r28)
0x000d4224 lb r2,-0x6dd2(r28)
0x000d4228 nop
0x000d422c beq r17,r2,0x000d4244
0x000d4230 nop
0x000d4234 addi r16,r16,0x0001
0x000d4238 slti r1,r16,0x0003
0x000d423c bne r1,r0,0x000d41a4
0x000d4240 nop
0x000d4244 lb r2,-0x6dd3(r28)
0x000d4248 nop
0x000d424c beq r2,r0,0x000d4358
0x000d4250 nop
0x000d4254 lui r4,0x8013
0x000d4258 jal 0x00097dd8
0x000d425c addiu r4,r4,0x6f84
0x000d4260 lui r2,0x8014
0x000d4264 lb r5,-0x6dd2(r28)
0x000d4268 addiu r2,r2,0xd5f0
0x000d426c addu r3,r2,r5
0x000d4270 lui r2,0x8014
0x000d4274 addiu r2,r2,0xd5d0
0x000d4278 addu r2,r2,r5
0x000d427c lb r4,0x0000(r3)
0x000d4280 lb r5,0x0000(r2)
0x000d4284 jal 0x000d3078
0x000d4288 nop
0x000d428c beq r2,r0,0x000d4358
0x000d4290 nop
0x000d4294 lui r1,0x8013
0x000d4298 lw r2,-0x0cb8(r1)
0x000d429c nop
0x000d42a0 lb r3,0x0035(r2)
0x000d42a4 nop
0x000d42a8 bne r3,r0,0x000d4358
0x000d42ac nop
0x000d42b0 lb r4,-0x6dd2(r28)
0x000d42b4 lui r3,0x8014
0x000d42b8 addiu r3,r3,0xd5f0
0x000d42bc addu r3,r3,r4
0x000d42c0 lb r3,0x0000(r3)
0x000d42c4 addu r6,r4,r0
0x000d42c8 addi r4,r3,-0x0032
0x000d42cc sll r3,r4,0x02
0x000d42d0 add r4,r3,r4
0x000d42d4 sll r3,r4,0x02
0x000d42d8 add r3,r4,r3
0x000d42dc sll r3,r3,0x02
0x000d42e0 addi r5,r3,0x0032
0x000d42e4 lui r3,0x8014
0x000d42e8 addiu r3,r3,0xd5d0
0x000d42ec addu r3,r3,r6
0x000d42f0 lb r4,0x0000(r3)
0x000d42f4 lw r2,0x0004(r2)
0x000d42f8 addiu r3,r0,0x0032
0x000d42fc sub r4,r3,r4
0x000d4300 sll r3,r4,0x02
0x000d4304 add r4,r3,r4
0x000d4308 sll r3,r4,0x02
0x000d430c add r3,r4,r3
0x000d4310 sll r3,r3,0x02
0x000d4314 addi r4,r3,-0x0032
0x000d4318 sw r5,0x0078(r2)
0x000d431c lui r1,0x8013
0x000d4320 lw r2,-0x0cb8(r1)
0x000d4324 sll r3,r5,0x0f
0x000d4328 lw r2,0x0004(r2)
0x000d432c lui r1,0x8013
0x000d4330 sw r4,0x0080(r2)
0x000d4334 lw r2,-0x0cb8(r1)
0x000d4338 nop
0x000d433c sw r3,0x0010(r2)
0x000d4340 lui r1,0x8013
0x000d4344 lw r2,-0x0cb8(r1)
0x000d4348 sll r3,r4,0x0f
0x000d434c sw r3,0x0018(r2)
0x000d4350 jal 0x000d3174
0x000d4354 nop
0x000d4358 lb r2,-0x6c22(r28)
0x000d435c nop
0x000d4360 beq r2,r0,0x000d4374
0x000d4364 addu r3,r2,r0
0x000d4368 addiu r1,r0,0x0003
0x000d436c bne r3,r1,0x000d4444
0x000d4370 nop
0x000d4374 lui r1,0x8013
0x000d4378 lw r4,-0x0cb8(r1)
0x000d437c lb r2,-0x6dd3(r28)
0x000d4380 lw r3,0x0004(r4)
0x000d4384 nop
0x000d4388 lh r18,0x0072(r3)
0x000d438c beq r2,r0,0x000d442c
0x000d4390 nop
0x000d4394 addiu r4,r3,0x0078
0x000d4398 addiu r5,r29,0x0020
0x000d439c jal 0x000c0f28
0x000d43a0 addiu r6,r29,0x0022
0x000d43a4 lui r2,0x8014
0x000d43a8 lui r1,0x8013
0x000d43ac lb r3,-0x6dd2(r28)
0x000d43b0 addiu r2,r2,0xd5f0
0x000d43b4 addu r2,r2,r3
0x000d43b8 lb r5,0x0000(r2)
0x000d43bc lw r4,-0x0cb8(r1)
0x000d43c0 lui r2,0x8014
0x000d43c4 addiu r2,r2,0xd5d0
0x000d43c8 addu r2,r2,r3
0x000d43cc lb r6,0x0000(r2)
0x000d43d0 jal 0x000e6078
0x000d43d4 nop
0x000d43d8 lb r3,-0x6dd2(r28)
0x000d43dc lui r2,0x8014
0x000d43e0 addiu r2,r2,0xd5f0
0x000d43e4 addu r2,r2,r3
0x000d43e8 lh r4,0x0020(r29)
0x000d43ec lb r2,0x0000(r2)
0x000d43f0 nop
0x000d43f4 bne r4,r2,0x000d4444
0x000d43f8 addu r5,r3,r0
0x000d43fc lui r2,0x8014
0x000d4400 addiu r2,r2,0xd5d0
0x000d4404 addu r2,r2,r5
0x000d4408 lh r3,0x0022(r29)
0x000d440c lb r2,0x0000(r2)
0x000d4410 nop
0x000d4414 bne r3,r2,0x000d4444
0x000d4418 nop
0x000d441c jal 0x000d3174
0x000d4420 nop
0x000d4424 beq r0,r0,0x000d4444
0x000d4428 nop
0x000d442c lui r1,0x8013
0x000d4430 lw r2,-0x0cbc(r1)
0x000d4434 nop
0x000d4438 lw r2,0x0004(r2)
0x000d443c jal 0x000d459c
0x000d4440 addiu r5,r2,0x0078
0x000d4444 lui r1,0x8013
0x000d4448 lw r5,-0x0cb8(r1)
0x000d444c addu r4,r0,r0
0x000d4450 addu r6,r0,r0
0x000d4454 jal 0x000d45ec
0x000d4458 addu r7,r0,r0
0x000d445c sll r3,r2,0x10
0x000d4460 sra r3,r3,0x10
0x000d4464 slt r1,r3,r0
0x000d4468 bne r1,r0,0x000d44e8
0x000d446c nop
0x000d4470 slti r1,r3,0x000a
0x000d4474 beq r1,r0,0x000d44e8
0x000d4478 nop
0x000d447c lb r2,-0x6c22(r28)
0x000d4480 addiu r1,r0,0x0003
0x000d4484 beq r2,r1,0x000d44c0
0x000d4488 nop
0x000d448c lui r1,0x8013
0x000d4490 lw r2,-0x0cb8(r1)
0x000d4494 addu r6,r0,r0
0x000d4498 lw r2,0x0004(r2)
0x000d449c lui r1,0x8013
0x000d44a0 sh r18,0x0072(r2)
0x000d44a4 lw r4,-0x0cbc(r1)
0x000d44a8 lui r1,0x8013
0x000d44ac lw r5,-0x0cb8(r1)
0x000d44b0 jal 0x000d4884
0x000d44b4 addu r7,r0,r0
0x000d44b8 beq r0,r0,0x000d4538
0x000d44bc lb r2,0x0024(r29)
0x000d44c0 bne r3,r0,0x000d4534
0x000d44c4 nop
0x000d44c8 lui r4,0x8015
0x000d44cc lui r5,0x8015
0x000d44d0 addiu r4,r4,0x57a8
0x000d44d4 addiu r5,r5,0x57e0
0x000d44d8 jal 0x000e8970
0x000d44dc addu r6,r0,r0
0x000d44e0 beq r0,r0,0x000d4538
0x000d44e4 lb r2,0x0024(r29)
0x000d44e8 lb r2,-0x6c22(r28)
0x000d44ec addiu r1,r0,0x0003
0x000d44f0 bne r2,r1,0x000d4534
0x000d44f4 nop
0x000d44f8 lui r1,0x8013
0x000d44fc lw r4,-0x0cbc(r1)
0x000d4500 lui r1,0x8013
0x000d4504 lw r5,-0x0cb8(r1)
0x000d4508 jal 0x000d31ac
0x000d450c nop
0x000d4510 addiu r1,r0,0x0001
0x000d4514 bne r2,r1,0x000d4534
0x000d4518 nop
0x000d451c lui r4,0x8015
0x000d4520 lui r5,0x8015
0x000d4524 addiu r4,r4,0x57a8
0x000d4528 addiu r5,r5,0x57e0
0x000d452c jal 0x000e7d40
0x000d4530 addu r6,r0,r0
0x000d4534 lb r2,0x0024(r29)
0x000d4538 nop
0x000d453c sb r2,-0x6dd0(r28)
0x000d4540 lb r2,0x0025(r29)
0x000d4544 nop
0x000d4548 sb r2,-0x6dd1(r28)
0x000d454c lw r31,0x001c(r29)
0x000d4550 lw r18,0x0018(r29)
0x000d4554 lw r17,0x0014(r29)
0x000d4558 lw r16,0x0010(r29)
0x000d455c jr r31
0x000d4560 addiu r29,r29,0x0028