mirror of
https://github.com/pret/pokediamond.git
synced 2026-03-21 17:54:29 -05:00
1119 lines
20 KiB
ArmAsm
1119 lines
20 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.section .rodata
|
|
|
|
.global UNK_020F71A8
|
|
UNK_020F71A8: ; 0x020F71A8
|
|
.word sub_0205C888, sub_0205C8B4, sub_0205C8E0, sub_0205C90C
|
|
|
|
.global UNK_020F71B8
|
|
UNK_020F71B8: ; 0x020F71B8
|
|
.word sub_0205CB14, sub_0205CB30, sub_0205CB5C, sub_0205CBA4
|
|
.word sub_0205CBDC, sub_0205CBF8, sub_0205CC10, sub_0205CC2C
|
|
.word sub_0205CC40, sub_0205CC58, sub_0205CC70, sub_0205CC88
|
|
.word sub_0205CCB0, sub_0205CCD0, sub_0205CCEC, sub_0205CD68
|
|
.word sub_0205CD90, sub_0205CDAC
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_0205C598
|
|
sub_0205C598: ; 0x0205C598
|
|
push {r3-r7, lr}
|
|
sub sp, #0x58
|
|
add r5, r0, #0x0
|
|
ldr r7, [r5, #0x38]
|
|
add r4, r1, #0x0
|
|
ldr r6, [r5, #0x34]
|
|
add r1, sp, #0x40
|
|
str r1, [sp, #0x0]
|
|
add r1, r6, #0x0
|
|
add r2, r7, #0x0
|
|
mov r3, #0x0
|
|
bl sub_0205C6BC
|
|
cmp r0, #0x0
|
|
bne _0205C5BC
|
|
add sp, #0x58
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_0205C5BC:
|
|
ldr r0, [sp, #0x50]
|
|
cmp r0, #0x0
|
|
bne _0205C642
|
|
ldr r1, _0205C6B8 ; =0x00000F0A
|
|
ldr r2, [sp, #0x54]
|
|
add r0, r5, #0x0
|
|
bl sub_02038C78
|
|
cmp r4, #0x0
|
|
beq _0205C5E4
|
|
add r0, sp, #0x28
|
|
str r0, [sp, #0x0]
|
|
ldr r3, [sp, #0x54]
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
add r2, r7, #0x0
|
|
bl sub_0205C6BC
|
|
cmp r0, #0x0
|
|
bne _0205C604
|
|
_0205C5E4:
|
|
ldr r0, [sp, #0x48]
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x4c]
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x8]
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x54]
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [sp, #0x44]
|
|
add r0, r5, #0x0
|
|
bl sub_02038CA8
|
|
add sp, #0x58
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_0205C604:
|
|
ldr r0, [sp, #0x48]
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x4c]
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0x2
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x54]
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [sp, #0x44]
|
|
add r0, r5, #0x0
|
|
bl sub_02038CA8
|
|
ldr r0, [sp, #0x30]
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x34]
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0x2
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x1
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x3c]
|
|
ldr r2, [sp, #0x28]
|
|
ldr r3, [sp, #0x2c]
|
|
add r0, r5, #0x0
|
|
bl sub_02038CA8
|
|
add sp, #0x58
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_0205C642:
|
|
cmp r0, #0x1
|
|
bne _0205C6AE
|
|
cmp r4, #0x0
|
|
bne _0205C650
|
|
add sp, #0x58
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_0205C650:
|
|
ldr r2, [sp, #0x54]
|
|
ldr r3, [sp, #0x4c]
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl sub_0205C9F0
|
|
add r1, r0, #0x0
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [sp, #0x44]
|
|
add r0, sp, #0x10
|
|
bl sub_0205C73C
|
|
ldr r1, _0205C6B8 ; =0x00000F0A
|
|
ldr r2, [sp, #0x54]
|
|
add r0, r5, #0x0
|
|
bl sub_02038C78
|
|
ldr r0, [sp, #0x48]
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x4c]
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x54]
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [sp, #0x44]
|
|
add r0, r5, #0x0
|
|
bl sub_02038CA8
|
|
ldr r0, [sp, #0x18]
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x1c]
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x8]
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x24]
|
|
ldr r2, [sp, #0x10]
|
|
ldr r3, [sp, #0x14]
|
|
add r0, r5, #0x0
|
|
bl sub_02038CA8
|
|
add sp, #0x58
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_0205C6AE:
|
|
bl GF_AssertFail
|
|
mov r0, #0x0
|
|
add sp, #0x58
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
_0205C6B8: .word 0x00000F0A
|
|
|
|
thumb_func_start sub_0205C6BC
|
|
sub_0205C6BC: ; 0x0205C6BC
|
|
push {r3-r7, lr}
|
|
sub sp, #0x10
|
|
add r6, r0, #0x0
|
|
mov r0, #0x0
|
|
add r5, r1, #0x0
|
|
add r7, r2, #0x0
|
|
add r4, r3, #0x0
|
|
str r0, [sp, #0xc]
|
|
str r0, [sp, #0x4]
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x4
|
|
add r2, sp, #0xc
|
|
mov r3, #0x1
|
|
bl MapObjectManager_GetNextObjectWithFlagFromIndex
|
|
cmp r0, #0x0
|
|
beq _0205C734
|
|
_0205C6DE:
|
|
cmp r4, #0x0
|
|
beq _0205C6E8
|
|
ldr r0, [sp, #0x4]
|
|
cmp r4, r0
|
|
beq _0205C724
|
|
_0205C6E8:
|
|
ldr r0, [sp, #0x4]
|
|
add r1, r7, #0x0
|
|
add r2, sp, #0x8
|
|
bl sub_0205C794
|
|
mov r1, #0x0
|
|
mvn r1, r1
|
|
str r0, [sp, #0x0]
|
|
cmp r0, r1
|
|
beq _0205C724
|
|
ldr r0, [sp, #0x4]
|
|
bl sub_0205C9D8
|
|
add r1, r0, #0x0
|
|
lsl r1, r1, #0x10
|
|
add r0, r6, #0x0
|
|
lsr r1, r1, #0x10
|
|
bl TrainerFieldSystem_FlagCheck
|
|
cmp r0, #0x0
|
|
bne _0205C724
|
|
ldr r0, [sp, #0x28]
|
|
ldr r1, [sp, #0x4]
|
|
ldr r2, [sp, #0x0]
|
|
ldr r3, [sp, #0x8]
|
|
bl sub_0205C73C
|
|
add sp, #0x10
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_0205C724:
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x4
|
|
add r2, sp, #0xc
|
|
mov r3, #0x1
|
|
bl MapObjectManager_GetNextObjectWithFlagFromIndex
|
|
cmp r0, #0x0
|
|
bne _0205C6DE
|
|
_0205C734:
|
|
mov r0, #0x0
|
|
add sp, #0x10
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205C73C
|
|
sub_0205C73C: ; 0x0205C73C
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
add r4, r1, #0x0
|
|
str r2, [r5, #0x0]
|
|
str r3, [r5, #0x4]
|
|
add r0, r4, #0x0
|
|
bl MapObject_GetScriptID
|
|
str r0, [r5, #0x8]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl sub_020395F4
|
|
str r0, [r5, #0xc]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl TrainerIsDoubleBattle
|
|
str r0, [r5, #0x10]
|
|
str r4, [r5, #0x14]
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205C768
|
|
sub_0205C768: ; 0x0205C768
|
|
push {r3, lr}
|
|
bl MapObject_GetType
|
|
cmp r0, #0x8
|
|
bhi _0205C792
|
|
add r1, r0, r0
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_0205C77E: ; jump table (using 16-bit offset)
|
|
.short _0205C792 - _0205C77E - 2; case 0
|
|
.short _0205C792 - _0205C77E - 2; case 1
|
|
.short _0205C792 - _0205C77E - 2; case 2
|
|
.short _0205C792 - _0205C77E - 2; case 3
|
|
.short _0205C790 - _0205C77E - 2; case 4
|
|
.short _0205C790 - _0205C77E - 2; case 5
|
|
.short _0205C790 - _0205C77E - 2; case 6
|
|
.short _0205C790 - _0205C77E - 2; case 7
|
|
.short _0205C790 - _0205C77E - 2; case 8
|
|
_0205C790:
|
|
mov r0, #0x1
|
|
_0205C792:
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start sub_0205C794
|
|
sub_0205C794: ; 0x0205C794
|
|
push {r4-r7, lr}
|
|
sub sp, #0x14
|
|
add r5, r0, #0x0
|
|
add r4, r1, #0x0
|
|
str r2, [sp, #0x8]
|
|
bl sub_0205C768
|
|
cmp r0, #0x1
|
|
bne _0205C802
|
|
add r0, r4, #0x0
|
|
bl PlayerAvatar_GetXCoord
|
|
add r7, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl PlayerAvatar_GetZCoord
|
|
add r6, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl MapObject_GetFacingDirection
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
mov r1, #0x0
|
|
bl MapObject_GetParam
|
|
add r2, r0, #0x0
|
|
str r6, [sp, #0x0]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x4]
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
add r3, r7, #0x0
|
|
bl sub_0205C86C
|
|
add r6, r0, #0x0
|
|
mov r0, #0x0
|
|
mvn r0, r0
|
|
cmp r6, r0
|
|
beq _0205C7FA
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r6, #0x0
|
|
bl sub_0205C938
|
|
cmp r0, #0x0
|
|
bne _0205C7FA
|
|
ldr r0, [sp, #0x8]
|
|
add sp, #0x14
|
|
str r4, [r0, #0x0]
|
|
add r0, r6, #0x0
|
|
pop {r4-r7, pc}
|
|
_0205C7FA:
|
|
mov r0, #0x0
|
|
add sp, #0x14
|
|
mvn r0, r0
|
|
pop {r4-r7, pc}
|
|
_0205C802:
|
|
cmp r0, #0x2
|
|
bne _0205C864
|
|
add r0, r4, #0x0
|
|
bl PlayerAvatar_GetXCoord
|
|
str r0, [sp, #0x10]
|
|
add r0, r4, #0x0
|
|
bl PlayerAvatar_GetZCoord
|
|
add r7, r0, #0x0
|
|
add r0, r5, #0x0
|
|
mov r1, #0x0
|
|
bl MapObject_GetParam
|
|
str r0, [sp, #0xc]
|
|
mov r4, #0x0
|
|
_0205C822:
|
|
str r7, [sp, #0x0]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x4]
|
|
ldr r2, [sp, #0xc]
|
|
ldr r3, [sp, #0x10]
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
bl sub_0205C86C
|
|
add r6, r0, #0x0
|
|
mov r0, #0x0
|
|
mvn r0, r0
|
|
cmp r6, r0
|
|
beq _0205C856
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r6, #0x0
|
|
bl sub_0205C938
|
|
cmp r0, #0x0
|
|
bne _0205C856
|
|
ldr r0, [sp, #0x8]
|
|
add sp, #0x14
|
|
str r4, [r0, #0x0]
|
|
add r0, r6, #0x0
|
|
pop {r4-r7, pc}
|
|
_0205C856:
|
|
add r4, r4, #0x1
|
|
cmp r4, #0x4
|
|
blt _0205C822
|
|
mov r0, #0x0
|
|
add sp, #0x14
|
|
mvn r0, r0
|
|
pop {r4-r7, pc}
|
|
_0205C864:
|
|
mov r0, #0x0
|
|
mvn r0, r0
|
|
add sp, #0x14
|
|
pop {r4-r7, pc}
|
|
|
|
thumb_func_start sub_0205C86C
|
|
sub_0205C86C: ; 0x0205C86C
|
|
push {r3-r5, lr}
|
|
add r4, r1, #0x0
|
|
ldr r1, [sp, #0x14]
|
|
lsl r5, r4, #0x2
|
|
ldr r4, _0205C884 ; =UNK_020F71A8
|
|
str r1, [sp, #0x0]
|
|
add r1, r2, #0x0
|
|
add r2, r3, #0x0
|
|
ldr r3, [sp, #0x10]
|
|
ldr r4, [r4, r5]
|
|
blx r4
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
_0205C884: .word UNK_020F71A8
|
|
|
|
thumb_func_start sub_0205C888
|
|
sub_0205C888: ; 0x0205C888
|
|
push {r3-r7, lr}
|
|
add r7, r0, #0x0
|
|
add r5, r1, #0x0
|
|
add r6, r2, #0x0
|
|
add r4, r3, #0x0
|
|
bl MapObject_GetXCoord
|
|
cmp r0, r6
|
|
bne _0205C8AE
|
|
add r0, r7, #0x0
|
|
bl MapObject_GetZCoord
|
|
cmp r4, r0
|
|
bge _0205C8AE
|
|
sub r1, r0, r5
|
|
cmp r4, r1
|
|
blt _0205C8AE
|
|
sub r0, r0, r4
|
|
pop {r3-r7, pc}
|
|
_0205C8AE:
|
|
mov r0, #0x0
|
|
mvn r0, r0
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_0205C8B4
|
|
sub_0205C8B4: ; 0x0205C8B4
|
|
push {r3-r7, lr}
|
|
add r7, r0, #0x0
|
|
add r5, r1, #0x0
|
|
add r6, r2, #0x0
|
|
add r4, r3, #0x0
|
|
bl MapObject_GetXCoord
|
|
cmp r0, r6
|
|
bne _0205C8DA
|
|
add r0, r7, #0x0
|
|
bl MapObject_GetZCoord
|
|
cmp r4, r0
|
|
ble _0205C8DA
|
|
add r1, r0, r5
|
|
cmp r4, r1
|
|
bgt _0205C8DA
|
|
sub r0, r4, r0
|
|
pop {r3-r7, pc}
|
|
_0205C8DA:
|
|
mov r0, #0x0
|
|
mvn r0, r0
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_0205C8E0
|
|
sub_0205C8E0: ; 0x0205C8E0
|
|
push {r3-r7, lr}
|
|
add r7, r0, #0x0
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
add r6, r3, #0x0
|
|
bl MapObject_GetZCoord
|
|
cmp r0, r6
|
|
bne _0205C906
|
|
add r0, r7, #0x0
|
|
bl MapObject_GetXCoord
|
|
cmp r4, r0
|
|
bge _0205C906
|
|
sub r1, r0, r5
|
|
cmp r4, r1
|
|
blt _0205C906
|
|
sub r0, r0, r4
|
|
pop {r3-r7, pc}
|
|
_0205C906:
|
|
mov r0, #0x0
|
|
mvn r0, r0
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_0205C90C
|
|
sub_0205C90C: ; 0x0205C90C
|
|
push {r3-r7, lr}
|
|
add r7, r0, #0x0
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
add r6, r3, #0x0
|
|
bl MapObject_GetZCoord
|
|
cmp r0, r6
|
|
bne _0205C932
|
|
add r0, r7, #0x0
|
|
bl MapObject_GetXCoord
|
|
cmp r4, r0
|
|
ble _0205C932
|
|
add r1, r0, r5
|
|
cmp r4, r1
|
|
bgt _0205C932
|
|
sub r0, r4, r0
|
|
pop {r3-r7, pc}
|
|
_0205C932:
|
|
mov r0, #0x0
|
|
mvn r0, r0
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_0205C938
|
|
sub_0205C938: ; 0x0205C938
|
|
push {r3-r7, lr}
|
|
sub sp, #0x18
|
|
add r5, r1, #0x0
|
|
str r0, [sp, #0x4]
|
|
str r2, [sp, #0x8]
|
|
cmp r2, #0x0
|
|
bne _0205C94C
|
|
add sp, #0x18
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_0205C94C:
|
|
bl MapObject_GetXCoord
|
|
add r4, r0, #0x0
|
|
ldr r0, [sp, #0x4]
|
|
bl MapObject_GetZCoord
|
|
add r7, r0, #0x0
|
|
ldr r0, [sp, #0x4]
|
|
bl MapObject_GetYCoord
|
|
str r0, [sp, #0xc]
|
|
add r0, r5, #0x0
|
|
bl sub_02059BF4
|
|
add r6, r4, r0
|
|
add r0, r5, #0x0
|
|
bl sub_02059C00
|
|
add r4, r7, r0
|
|
ldr r0, [sp, #0x8]
|
|
mov r7, #0x0
|
|
sub r0, r0, #0x1
|
|
str r0, [sp, #0x10]
|
|
cmp r0, #0x0
|
|
ble _0205C9B4
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x14]
|
|
_0205C982:
|
|
ldr r0, [sp, #0x4]
|
|
ldr r2, [sp, #0xc]
|
|
add r1, r6, #0x0
|
|
add r3, r4, #0x0
|
|
str r5, [sp, #0x0]
|
|
bl sub_020598F0
|
|
ldr r1, [sp, #0x14]
|
|
bic r0, r1
|
|
beq _0205C99C
|
|
add sp, #0x18
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_0205C99C:
|
|
add r0, r5, #0x0
|
|
bl sub_02059BF4
|
|
add r6, r6, r0
|
|
add r0, r5, #0x0
|
|
bl sub_02059C00
|
|
add r4, r4, r0
|
|
ldr r0, [sp, #0x10]
|
|
add r7, r7, #0x1
|
|
cmp r7, r0
|
|
blt _0205C982
|
|
_0205C9B4:
|
|
ldr r0, [sp, #0x4]
|
|
ldr r2, [sp, #0xc]
|
|
add r1, r6, #0x0
|
|
add r3, r4, #0x0
|
|
str r5, [sp, #0x0]
|
|
bl sub_020598F0
|
|
mov r1, #0x1
|
|
bic r0, r1
|
|
cmp r0, #0x4
|
|
bne _0205C9D0
|
|
add sp, #0x18
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_0205C9D0:
|
|
mov r0, #0x1
|
|
add sp, #0x18
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205C9D8
|
|
sub_0205C9D8: ; 0x0205C9D8
|
|
push {r3, lr}
|
|
bl MapObject_GetScriptID
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl sub_020395F4
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start sub_0205C9E8
|
|
sub_0205C9E8: ; 0x0205C9E8
|
|
ldr r3, _0205C9EC ; =sub_0205C9D8
|
|
bx r3
|
|
.balign 4
|
|
_0205C9EC: .word sub_0205C9D8
|
|
|
|
thumb_func_start sub_0205C9F0
|
|
sub_0205C9F0: ; 0x0205C9F0
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
add r5, r1, #0x0
|
|
mov r0, #0x0
|
|
add r4, r2, #0x0
|
|
add r6, r3, #0x0
|
|
str r0, [sp, #0x4]
|
|
add r0, r5, #0x0
|
|
add r1, sp, #0x0
|
|
add r2, sp, #0x4
|
|
mov r3, #0x1
|
|
bl MapObjectManager_GetNextObjectWithFlagFromIndex
|
|
cmp r0, #0x0
|
|
beq _0205CA40
|
|
add r7, sp, #0x0
|
|
_0205CA10:
|
|
ldr r0, [sp, #0x0]
|
|
cmp r0, r4
|
|
beq _0205CA30
|
|
bl sub_0205C768
|
|
sub r0, r0, #0x1
|
|
cmp r0, #0x1
|
|
bhi _0205CA30
|
|
ldr r0, [sp, #0x0]
|
|
bl sub_0205C9D8
|
|
cmp r6, r0
|
|
bne _0205CA30
|
|
ldr r0, [sp, #0x0]
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
_0205CA30:
|
|
add r0, r5, #0x0
|
|
add r1, r7, #0x0
|
|
add r2, sp, #0x4
|
|
mov r3, #0x1
|
|
bl MapObjectManager_GetNextObjectWithFlagFromIndex
|
|
cmp r0, #0x0
|
|
bne _0205CA10
|
|
_0205CA40:
|
|
bl GF_AssertFail
|
|
mov r0, #0x0
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CA4C
|
|
sub_0205CA4C: ; 0x0205CA4C
|
|
push {r3-r4, lr}
|
|
sub sp, #0xc
|
|
ldr r4, [sp, #0x18]
|
|
str r4, [sp, #0x0]
|
|
ldr r4, [sp, #0x1c]
|
|
str r4, [sp, #0x4]
|
|
ldr r4, [sp, #0x20]
|
|
str r4, [sp, #0x8]
|
|
bl sub_0205CA80
|
|
add sp, #0xc
|
|
pop {r3-r4, pc}
|
|
|
|
thumb_func_start sub_0205CA64
|
|
sub_0205CA64: ; 0x0205CA64
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bne _0205CA6E
|
|
bl GF_AssertFail
|
|
_0205CA6E:
|
|
add r0, r4, #0x0
|
|
bl sub_0205CAD4
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CA78
|
|
sub_0205CA78: ; 0x0205CA78
|
|
ldr r3, _0205CA7C ; =sub_0205CAE0
|
|
bx r3
|
|
.balign 4
|
|
_0205CA7C: .word sub_0205CAE0
|
|
|
|
thumb_func_start sub_0205CA80
|
|
sub_0205CA80: ; 0x0205CA80
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
mov r0, #0x4
|
|
mov r1, #0x2c
|
|
add r7, r2, #0x0
|
|
str r3, [sp, #0x0]
|
|
bl Heap_AllocAtEnd
|
|
add r4, r0, #0x0
|
|
bne _0205CA9A
|
|
bl GF_AssertFail
|
|
_0205CA9A:
|
|
add r0, r4, #0x0
|
|
mov r1, #0x0
|
|
mov r2, #0x2c
|
|
bl memset
|
|
ldr r0, [sp, #0x0]
|
|
str r7, [r4, #0x8]
|
|
str r0, [r4, #0xc]
|
|
ldr r0, [sp, #0x18]
|
|
add r1, r4, #0x0
|
|
str r0, [r4, #0x10]
|
|
ldr r0, [sp, #0x1c]
|
|
mov r2, #0xff
|
|
str r0, [r4, #0x14]
|
|
ldr r0, [sp, #0x20]
|
|
str r0, [r4, #0x18]
|
|
str r5, [r4, #0x24]
|
|
ldr r0, _0205CAD0 ; =sub_0205CAF8
|
|
str r6, [r4, #0x28]
|
|
bl SysTask_CreateOnMainQueue
|
|
add r4, r0, #0x0
|
|
bne _0205CACC
|
|
bl GF_AssertFail
|
|
_0205CACC:
|
|
add r0, r4, #0x0
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
_0205CAD0: .word sub_0205CAF8
|
|
|
|
thumb_func_start sub_0205CAD4
|
|
sub_0205CAD4: ; 0x0205CAD4
|
|
push {r3, lr}
|
|
bl sub_0201B6C8
|
|
ldr r0, [r0, #0x4]
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CAE0
|
|
sub_0205CAE0: ; 0x0205CAE0
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
bl sub_0201B6C8
|
|
add r1, r0, #0x0
|
|
mov r0, #0x4
|
|
bl Heap_FreeExplicit
|
|
add r0, r4, #0x0
|
|
bl SysTask_Destroy
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0205CAF8
|
|
sub_0205CAF8: ; 0x0205CAF8
|
|
push {r3-r5, lr}
|
|
ldr r4, _0205CB10 ; =UNK_020F71B8
|
|
add r5, r1, #0x0
|
|
_0205CAFE:
|
|
ldr r1, [r5, #0x0]
|
|
add r0, r5, #0x0
|
|
lsl r1, r1, #0x2
|
|
ldr r1, [r4, r1]
|
|
blx r1
|
|
cmp r0, #0x1
|
|
beq _0205CAFE
|
|
pop {r3-r5, pc}
|
|
nop
|
|
_0205CB10: .word UNK_020F71B8
|
|
|
|
thumb_func_start sub_0205CB14
|
|
sub_0205CB14: ; 0x0205CB14
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
ldr r4, [r5, #0x24]
|
|
add r0, r4, #0x0
|
|
bl MapObject_CheckSingleMovement
|
|
cmp r0, #0x1
|
|
bne _0205CB2A
|
|
add r0, r4, #0x0
|
|
bl MapObject_UnpauseMovement
|
|
_0205CB2A:
|
|
mov r0, #0x1
|
|
str r0, [r5, #0x0]
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start sub_0205CB30
|
|
sub_0205CB30: ; 0x0205CB30
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
ldr r5, [r4, #0x24]
|
|
add r0, r5, #0x0
|
|
bl MapObject_CheckSingleMovement
|
|
cmp r0, #0x1
|
|
bne _0205CB44
|
|
mov r0, #0x0
|
|
pop {r3-r5, pc}
|
|
_0205CB44:
|
|
ldr r0, [r4, #0x24]
|
|
ldr r1, [r4, #0x8]
|
|
bl ov05_021F1EC0
|
|
add r0, r5, #0x0
|
|
mov r1, #0x40
|
|
bl MapObject_SetFlagsBits
|
|
mov r0, #0x2
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x1
|
|
pop {r3-r5, pc}
|
|
|
|
thumb_func_start sub_0205CB5C
|
|
sub_0205CB5C: ; 0x0205CB5C
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x28]
|
|
bl PlayerAvatar_GetMapObject
|
|
bl sub_0205AE28
|
|
cmp r0, #0x0
|
|
bne _0205CB72
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
_0205CB72:
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_GetMovement
|
|
sub r0, #0x33
|
|
cmp r0, #0x3
|
|
bhi _0205CB9A
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_0205CB8A: ; jump table (using 16-bit offset)
|
|
.short _0205CB92 - _0205CB8A - 2; case 0
|
|
.short _0205CB92 - _0205CB8A - 2; case 1
|
|
.short _0205CB92 - _0205CB8A - 2; case 2
|
|
.short _0205CB92 - _0205CB8A - 2; case 3
|
|
_0205CB92:
|
|
mov r0, #0x7
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
_0205CB9A:
|
|
mov r0, #0x3
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CBA4
|
|
sub_0205CBA4: ; 0x0205CBA4
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
bl sub_0205AD98
|
|
cmp r0, #0x0
|
|
bne _0205CBB6
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
_0205CBB6:
|
|
mov r0, #0x0
|
|
ldr r1, [r4, #0x8]
|
|
mvn r0, r0
|
|
cmp r1, r0
|
|
bne _0205CBC4
|
|
bl GF_AssertFail
|
|
_0205CBC4:
|
|
ldr r0, [r4, #0x8]
|
|
mov r1, #0x0
|
|
bl sub_0205AFDC
|
|
add r1, r0, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
bl sub_0205ADDC
|
|
mov r0, #0x4
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0205CBDC
|
|
sub_0205CBDC: ; 0x0205CBDC
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
bl sub_0205AE28
|
|
cmp r0, #0x0
|
|
bne _0205CBEE
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
_0205CBEE:
|
|
mov r0, #0x5
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CBF8
|
|
sub_0205CBF8: ; 0x0205CBF8
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
mov r1, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
add r2, r1, #0x0
|
|
bl ov05_021E7AC0
|
|
str r0, [r4, #0x20]
|
|
mov r0, #0x6
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0205CC10
|
|
sub_0205CC10: ; 0x0205CC10
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x20]
|
|
bl ov05_021E799C
|
|
cmp r0, #0x1
|
|
bne _0205CC28
|
|
ldr r0, [r4, #0x20]
|
|
bl sub_02064520
|
|
mov r0, #0x9
|
|
str r0, [r4, #0x0]
|
|
_0205CC28:
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0205CC2C
|
|
sub_0205CC2C: ; 0x0205CC2C
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
mov r1, #0x65
|
|
bl sub_0205ADDC
|
|
mov r0, #0x8
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0205CC40
|
|
sub_0205CC40: ; 0x0205CC40
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
bl sub_0205AE28
|
|
cmp r0, #0x1
|
|
bne _0205CC52
|
|
mov r0, #0x9
|
|
str r0, [r4, #0x0]
|
|
_0205CC52:
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CC58
|
|
sub_0205CC58: ; 0x0205CC58
|
|
ldr r1, [r0, #0x1c]
|
|
add r1, r1, #0x1
|
|
str r1, [r0, #0x1c]
|
|
cmp r1, #0x1e
|
|
blt _0205CC6A
|
|
mov r1, #0x0
|
|
str r1, [r0, #0x1c]
|
|
mov r1, #0xa
|
|
str r1, [r0, #0x0]
|
|
_0205CC6A:
|
|
mov r0, #0x0
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CC70
|
|
sub_0205CC70: ; 0x0205CC70
|
|
ldr r1, [r0, #0xc]
|
|
cmp r1, #0x1
|
|
bgt _0205CC7E
|
|
mov r1, #0xd
|
|
str r1, [r0, #0x0]
|
|
mov r0, #0x1
|
|
bx lr
|
|
_0205CC7E:
|
|
mov r1, #0xb
|
|
str r1, [r0, #0x0]
|
|
mov r0, #0x1
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CC88
|
|
sub_0205CC88: ; 0x0205CC88
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
bl sub_0205AD98
|
|
cmp r0, #0x1
|
|
bne _0205CCAA
|
|
ldr r0, [r4, #0x8]
|
|
mov r1, #0xc
|
|
bl sub_0205AFDC
|
|
add r1, r0, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
bl sub_0205ADDC
|
|
mov r0, #0xc
|
|
str r0, [r4, #0x0]
|
|
_0205CCAA:
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CCB0
|
|
sub_0205CCB0: ; 0x0205CCB0
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
bl sub_0205AE28
|
|
cmp r0, #0x0
|
|
bne _0205CCC2
|
|
mov r0, #0x0
|
|
pop {r4, pc}
|
|
_0205CCC2:
|
|
ldr r0, [r4, #0xc]
|
|
sub r0, r0, #0x1
|
|
str r0, [r4, #0xc]
|
|
mov r0, #0xa
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0205CCD0
|
|
sub_0205CCD0: ; 0x0205CCD0
|
|
ldr r1, [r0, #0x1c]
|
|
add r1, r1, #0x1
|
|
str r1, [r0, #0x1c]
|
|
cmp r1, #0x8
|
|
bge _0205CCDE
|
|
mov r0, #0x0
|
|
bx lr
|
|
_0205CCDE:
|
|
mov r1, #0x0
|
|
str r1, [r0, #0x1c]
|
|
mov r1, #0xe
|
|
str r1, [r0, #0x0]
|
|
mov r0, #0x1
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CCEC
|
|
sub_0205CCEC: ; 0x0205CCEC
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
ldr r0, [r5, #0x28]
|
|
bl PlayerAvatar_GetMapObject
|
|
add r4, r0, #0x0
|
|
bl MapObject_GetXCoord
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl MapObject_GetZCoord
|
|
add r7, r0, #0x0
|
|
ldr r0, [r5, #0x24]
|
|
bl MapObject_GetXCoord
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [r5, #0x24]
|
|
bl MapObject_GetZCoord
|
|
add r3, r0, #0x0
|
|
ldr r2, [sp, #0x0]
|
|
add r0, r6, #0x0
|
|
add r1, r7, #0x0
|
|
bl sub_02059E80
|
|
add r6, r0, #0x0
|
|
ldr r0, [r5, #0x28]
|
|
bl PlayerAvatar_GetFacingDirection
|
|
cmp r6, r0
|
|
beq _0205CD60
|
|
ldr r0, [r5, #0x18]
|
|
cmp r0, #0x0
|
|
beq _0205CD38
|
|
ldr r0, [r5, #0x14]
|
|
cmp r0, #0x2
|
|
bne _0205CD60
|
|
_0205CD38:
|
|
add r0, r4, #0x0
|
|
bl sub_0205AD98
|
|
cmp r0, #0x1
|
|
bne _0205CD64
|
|
add r0, r4, #0x0
|
|
mov r1, #0x80
|
|
bl MapObject_ClearFlagsBits
|
|
add r0, r6, #0x0
|
|
mov r1, #0x0
|
|
bl sub_0205AFDC
|
|
add r1, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_0205ADDC
|
|
mov r0, #0xf
|
|
str r0, [r5, #0x0]
|
|
b _0205CD64
|
|
_0205CD60:
|
|
mov r0, #0x10
|
|
str r0, [r5, #0x0]
|
|
_0205CD64:
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_0205CD68
|
|
sub_0205CD68: ; 0x0205CD68
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x28]
|
|
bl PlayerAvatar_GetMapObject
|
|
add r5, r0, #0x0
|
|
bl sub_0205AE28
|
|
cmp r0, #0x0
|
|
bne _0205CD80
|
|
mov r0, #0x0
|
|
pop {r3-r5, pc}
|
|
_0205CD80:
|
|
add r0, r5, #0x0
|
|
bl sub_0205AE50
|
|
mov r0, #0x10
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x1
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CD90
|
|
sub_0205CD90: ; 0x0205CD90
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x24]
|
|
bl sub_0205AE50
|
|
ldr r0, [r4, #0x24]
|
|
mov r1, #0x0
|
|
bl sub_02058E90
|
|
mov r0, #0x11
|
|
str r0, [r4, #0x0]
|
|
mov r0, #0x1
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0205CDAC
|
|
sub_0205CDAC: ; 0x0205CDAC
|
|
mov r1, #0x1
|
|
str r1, [r0, #0x4]
|
|
mov r0, #0x0
|
|
bx lr
|