mirror of
https://github.com/pret/pokeheartgold.git
synced 2024-11-24 05:40:09 +00:00
985 lines
17 KiB
ArmAsm
985 lines
17 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "unk_0205AC88.inc"
|
|
.include "global.inc"
|
|
|
|
.public _020FC824
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_0205AC88
|
|
sub_0205AC88: ; 0x0205AC88
|
|
push {r3, r4, r5, lr}
|
|
ldr r1, _0205ACF4 ; =0x000004E8
|
|
add r5, r0, #0
|
|
mov r0, #0x1f
|
|
bl AllocFromHeap
|
|
add r4, r0, #0
|
|
ldr r2, _0205ACF4 ; =0x000004E8
|
|
mov r0, #0
|
|
add r1, r4, #0
|
|
bl MIi_CpuClearFast
|
|
mov r0, #0x4e
|
|
str r5, [r4]
|
|
mov r1, #1
|
|
lsl r0, r0, #4
|
|
str r1, [r4, r0]
|
|
ldr r0, _0205ACF8 ; =sub_0205AD60
|
|
add r1, r4, #0
|
|
mov r2, #0xb
|
|
bl CreateSysTask
|
|
str r0, [r4, #4]
|
|
add r0, r5, #0
|
|
bl sub_0205A1F0
|
|
ldr r1, _0205ACFC ; =0x000004D4
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
mov r1, #8
|
|
ldr r0, [r0, #0xc]
|
|
bl SaveArray_Get
|
|
ldr r1, _0205AD00 ; =0x000004D8
|
|
ldr r2, _0205AD04 ; =0x00002710
|
|
str r0, [r4, r1]
|
|
sub r0, r1, #4
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0x57
|
|
ldr r0, [r0, #0x40]
|
|
str r0, [r4, #8]
|
|
mov r0, #0xb
|
|
bl CreateHeapAtEnd
|
|
mov r0, #0x57
|
|
bl sub_0205B3B8
|
|
ldr r1, _0205AD08 ; =0x000004DC
|
|
str r0, [r4, r1]
|
|
add r0, r4, #0
|
|
bl sub_0205AD24
|
|
add r0, r4, #0
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
_0205ACF4: .word 0x000004E8
|
|
_0205ACF8: .word sub_0205AD60
|
|
_0205ACFC: .word 0x000004D4
|
|
_0205AD00: .word 0x000004D8
|
|
_0205AD04: .word 0x00002710
|
|
_0205AD08: .word 0x000004DC
|
|
thumb_func_end sub_0205AC88
|
|
|
|
thumb_func_start sub_0205AD0C
|
|
sub_0205AD0C: ; 0x0205AD0C
|
|
mov r3, #0
|
|
mov r1, #3
|
|
_0205AD10:
|
|
ldrb r2, [r0, #0xd]
|
|
cmp r2, #0
|
|
beq _0205AD18
|
|
strb r1, [r0, #0xc]
|
|
_0205AD18:
|
|
add r3, r3, #1
|
|
add r0, #0x18
|
|
cmp r3, #0x33
|
|
blt _0205AD10
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_0205AD0C
|
|
|
|
thumb_func_start sub_0205AD24
|
|
sub_0205AD24: ; 0x0205AD24
|
|
mov r2, #0
|
|
add r1, r2, #0
|
|
_0205AD28:
|
|
strb r1, [r0, #0xc]
|
|
strb r1, [r0, #0xd]
|
|
strb r1, [r0, #0xe]
|
|
strb r1, [r0, #0xf]
|
|
add r2, r2, #1
|
|
add r0, #0x18
|
|
cmp r2, #0x33
|
|
blt _0205AD28
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_0205AD24
|
|
|
|
thumb_func_start sub_0205AD3C
|
|
sub_0205AD3C: ; 0x0205AD3C
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #4]
|
|
bl DestroySysTask
|
|
ldr r0, _0205AD5C ; =0x000004DC
|
|
ldr r0, [r4, r0]
|
|
bl sub_0205B3CC
|
|
mov r0, #0x57
|
|
bl DestroyHeap
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_0205AD5C: .word 0x000004DC
|
|
thumb_func_end sub_0205AD3C
|
|
|
|
thumb_func_start sub_0205AD60
|
|
sub_0205AD60: ; 0x0205AD60
|
|
push {r3, r4, r5, lr}
|
|
ldr r0, _0205AD98 ; =0x000004D4
|
|
add r5, r1, #0
|
|
ldr r0, [r5, r0]
|
|
ldr r4, [r5]
|
|
bl FieldSystem_TaskIsRunning
|
|
cmp r0, #0
|
|
bne _0205AD96
|
|
ldr r3, _0205AD98 ; =0x000004D4
|
|
add r1, r4, #0
|
|
ldr r0, [r5, r3]
|
|
ldr r0, [r0, #0x40]
|
|
str r0, [r5, #8]
|
|
ldr r2, [r5, r3]
|
|
add r3, r3, #4
|
|
ldr r2, [r2, #0x3c]
|
|
ldr r3, [r5, r3]
|
|
add r0, r5, #0
|
|
bl sub_0205AEA8
|
|
ldr r1, _0205AD98 ; =0x000004D4
|
|
add r0, r5, #0
|
|
ldr r1, [r5, r1]
|
|
ldr r1, [r1, #0x3c]
|
|
bl sub_0205AF78
|
|
_0205AD96:
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
_0205AD98: .word 0x000004D4
|
|
thumb_func_end sub_0205AD60
|
|
|
|
thumb_func_start sub_0205AD9C
|
|
sub_0205AD9C: ; 0x0205AD9C
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
mov r5, #0
|
|
str r0, [sp]
|
|
str r3, [sp, #4]
|
|
cmp r2, #0
|
|
bne _0205ADD0
|
|
ldr r0, _0205AE9C ; =_020FC824
|
|
lsl r1, r1, #1
|
|
ldrh r4, [r0, r1]
|
|
ldr r0, [sp]
|
|
mov r6, #3
|
|
add r0, #0xc
|
|
str r0, [sp]
|
|
_0205ADB8:
|
|
ldr r0, [sp]
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl sub_0205AEA0
|
|
add r5, r5, #1
|
|
add r4, r4, #1
|
|
cmp r5, #4
|
|
blt _0205ADB8
|
|
add sp, #0x14
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, pc}
|
|
_0205ADD0:
|
|
add r0, r2, #0
|
|
str r0, [sp, #0xc]
|
|
add r0, #0x50
|
|
str r0, [sp, #0xc]
|
|
add r0, #0x30
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r2, #0x50]
|
|
mov r2, #0x18
|
|
add r3, r1, #0
|
|
mul r3, r2
|
|
ldr r2, [sp]
|
|
add r2, r2, r3
|
|
ldr r2, [r2, #0x18]
|
|
cmp r0, r2
|
|
beq _0205AE14
|
|
ldr r0, _0205AE9C ; =_020FC824
|
|
lsl r1, r1, #1
|
|
ldrh r4, [r0, r1]
|
|
ldr r0, [sp]
|
|
mov r6, #3
|
|
add r0, #0xc
|
|
str r0, [sp]
|
|
_0205ADFC:
|
|
ldr r0, [sp]
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl sub_0205AEA0
|
|
add r5, r5, #1
|
|
add r4, r4, #1
|
|
cmp r5, #4
|
|
blt _0205ADFC
|
|
add sp, #0x14
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, pc}
|
|
_0205AE14:
|
|
ldr r0, _0205AE9C ; =_020FC824
|
|
lsl r1, r1, #1
|
|
ldrh r7, [r0, r1]
|
|
ldr r0, [sp, #0xc]
|
|
add r6, r5, #0
|
|
str r0, [sp, #8]
|
|
ldr r0, [sp]
|
|
str r0, [sp, #0x10]
|
|
add r0, #0xc
|
|
str r0, [sp, #0x10]
|
|
_0205AE28:
|
|
mov r0, #0x18
|
|
add r1, r7, #0
|
|
mul r1, r0
|
|
ldr r0, [sp]
|
|
add r4, r0, r1
|
|
ldrb r0, [r4, #0xd]
|
|
cmp r0, #0
|
|
beq _0205AE42
|
|
cmp r0, #2
|
|
beq _0205AE68
|
|
cmp r0, #4
|
|
beq _0205AE82
|
|
b _0205AE86
|
|
_0205AE42:
|
|
ldr r0, [sp, #0xc]
|
|
add r1, r0, r6
|
|
ldrb r0, [r1, #0x18]
|
|
cmp r0, #0
|
|
beq _0205AE86
|
|
mov r0, #2
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r1, #0x18]
|
|
mov r0, #0x7f
|
|
and r0, r1
|
|
strb r0, [r4, #0x14]
|
|
ldr r1, [sp, #8]
|
|
ldr r0, [sp, #4]
|
|
ldr r1, [r1]
|
|
bl PalPad_PlayerIdIsFriendOrMutual
|
|
strb r0, [r4, #0xe]
|
|
mov r5, #1
|
|
b _0205AE86
|
|
_0205AE68:
|
|
ldr r0, [sp, #0xc]
|
|
add r0, r0, r6
|
|
ldrb r0, [r0, #0x18]
|
|
cmp r0, #0
|
|
bne _0205AE7E
|
|
ldr r0, [sp, #0x10]
|
|
add r1, r7, #0
|
|
mov r2, #3
|
|
bl sub_0205AEA0
|
|
b _0205AE86
|
|
_0205AE7E:
|
|
mov r5, #1
|
|
b _0205AE86
|
|
_0205AE82:
|
|
mov r0, #0
|
|
strb r0, [r4, #0xc]
|
|
_0205AE86:
|
|
ldr r0, [sp, #8]
|
|
add r6, r6, #1
|
|
add r0, r0, #4
|
|
add r7, r7, #1
|
|
str r0, [sp, #8]
|
|
cmp r6, #4
|
|
blt _0205AE28
|
|
add r0, r5, #0
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_0205AE9C: .word _020FC824
|
|
thumb_func_end sub_0205AD9C
|
|
|
|
thumb_func_start sub_0205AEA0
|
|
sub_0205AEA0: ; 0x0205AEA0
|
|
mov r3, #0x18
|
|
mul r3, r1
|
|
strb r2, [r0, r3]
|
|
bx lr
|
|
thumb_func_end sub_0205AEA0
|
|
|
|
thumb_func_start sub_0205AEA8
|
|
sub_0205AEA8: ; 0x0205AEA8
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
str r0, [sp]
|
|
add r5, r0, #0
|
|
str r0, [sp, #0x10]
|
|
add r0, #0xc
|
|
str r1, [sp, #4]
|
|
str r3, [sp, #8]
|
|
mov r4, #0
|
|
str r0, [sp, #0x10]
|
|
_0205AEBC:
|
|
ldr r0, [sp, #4]
|
|
add r1, r4, #0
|
|
bl sub_0205A1F4
|
|
add r6, r0, #0
|
|
beq _0205AED6
|
|
add r7, r6, #0
|
|
add r7, #0x50
|
|
add r0, r7, #0
|
|
str r0, [sp, #0xc]
|
|
add r0, #0x10
|
|
str r0, [sp, #0xc]
|
|
b _0205AEDC
|
|
_0205AED6:
|
|
mov r7, #0
|
|
add r0, r7, #0
|
|
str r0, [sp, #0xc]
|
|
_0205AEDC:
|
|
ldrb r0, [r5, #0xd]
|
|
cmp r0, #0
|
|
beq _0205AEEC
|
|
cmp r0, #2
|
|
beq _0205AF28
|
|
cmp r0, #4
|
|
beq _0205AF66
|
|
b _0205AF6A
|
|
_0205AEEC:
|
|
cmp r6, #0
|
|
beq _0205AF6A
|
|
ldr r0, [sp, #0xc]
|
|
bl PlayerProfile_GetAvatar
|
|
strb r0, [r5, #0x14]
|
|
ldr r0, [sp, #0xc]
|
|
bl PlayerProfile_GetTrainerID
|
|
add r1, r0, #0
|
|
ldr r0, [sp, #8]
|
|
bl PalPad_PlayerIdIsFriendOrMutual
|
|
strb r0, [r5, #0xe]
|
|
ldr r0, [r7]
|
|
ldr r3, [sp, #8]
|
|
str r0, [r5, #0x18]
|
|
ldr r0, [sp]
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl sub_0205AD9C
|
|
cmp r0, #0
|
|
beq _0205AF22
|
|
mov r0, #2
|
|
strb r0, [r5, #0xc]
|
|
b _0205AF6A
|
|
_0205AF22:
|
|
mov r0, #1
|
|
strb r0, [r5, #0xc]
|
|
b _0205AF6A
|
|
_0205AF28:
|
|
cmp r6, #0
|
|
bne _0205AF38
|
|
ldr r0, [sp, #0x10]
|
|
add r1, r4, #0
|
|
mov r2, #3
|
|
bl sub_0205AEA0
|
|
b _0205AF4A
|
|
_0205AF38:
|
|
ldr r1, [r7]
|
|
ldr r0, [r5, #0x18]
|
|
cmp r1, r0
|
|
beq _0205AF4A
|
|
ldr r0, [sp, #0x10]
|
|
add r1, r4, #0
|
|
mov r2, #3
|
|
bl sub_0205AEA0
|
|
_0205AF4A:
|
|
ldr r0, [sp]
|
|
ldr r3, [sp, #8]
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl sub_0205AD9C
|
|
cmp r0, #0
|
|
beq _0205AF6A
|
|
ldrb r0, [r5, #0x15]
|
|
cmp r0, #1
|
|
bne _0205AF6A
|
|
mov r0, #3
|
|
strb r0, [r5, #0xc]
|
|
b _0205AF6A
|
|
_0205AF66:
|
|
mov r0, #0
|
|
strb r0, [r5, #0xc]
|
|
_0205AF6A:
|
|
add r4, r4, #1
|
|
add r5, #0x18
|
|
cmp r4, #0xa
|
|
blt _0205AEBC
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_0205AEA8
|
|
|
|
thumb_func_start sub_0205AF78
|
|
sub_0205AF78: ; 0x0205AF78
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
str r0, [sp]
|
|
ldr r0, [r0, #8]
|
|
str r1, [sp, #4]
|
|
cmp r0, #0
|
|
bne _0205AF8A
|
|
bl GF_AssertFail
|
|
_0205AF8A:
|
|
ldr r0, [sp]
|
|
ldr r0, [r0, #8]
|
|
bl GetPlayerXCoord
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp]
|
|
ldr r0, [r0, #8]
|
|
bl GetPlayerYCoord
|
|
ldr r4, [sp]
|
|
str r0, [sp, #8]
|
|
add r6, r4, #0
|
|
mov r7, #0
|
|
add r6, #0xc
|
|
_0205AFA6:
|
|
ldr r0, [sp, #4]
|
|
add r1, r7, #1
|
|
bl GetMapObjectByID
|
|
add r5, r0, #0
|
|
bne _0205AFB6
|
|
bl GF_AssertFail
|
|
_0205AFB6:
|
|
ldrb r0, [r4, #0xd]
|
|
cmp r0, #4
|
|
bhi _0205B0AA
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_0205AFC8: ; jump table
|
|
.short _0205AFD2 - _0205AFC8 - 2 ; case 0
|
|
.short _0205AFF2 - _0205AFC8 - 2 ; case 1
|
|
.short _0205B052 - _0205AFC8 - 2 ; case 2
|
|
.short _0205B07A - _0205AFC8 - 2 ; case 3
|
|
.short _0205B0A6 - _0205AFC8 - 2 ; case 4
|
|
_0205AFD2:
|
|
add r0, r5, #0
|
|
bl MapObject_AreBitsSetForMovementScriptInit
|
|
cmp r0, #1
|
|
bne _0205B0AA
|
|
ldrb r0, [r4, #0xc]
|
|
sub r0, r0, #1
|
|
cmp r0, #1
|
|
bhi _0205B0AA
|
|
ldr r2, [sp, #0xc]
|
|
ldr r3, [sp, #8]
|
|
add r0, r6, #0
|
|
add r1, r5, #0
|
|
bl sub_0205B13C
|
|
b _0205B0AA
|
|
_0205AFF2:
|
|
add r0, r5, #0
|
|
bl MapObject_AreBitsSetForMovementScriptInit
|
|
cmp r0, #1
|
|
bne _0205B0AA
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #3
|
|
bne _0205B012
|
|
mov r0, #0
|
|
strb r0, [r4, #0xd]
|
|
strb r0, [r4, #0xc]
|
|
add r0, r6, #0
|
|
mov r1, #1
|
|
bl sub_0205B0DC
|
|
b _0205B0AA
|
|
_0205B012:
|
|
add r0, r5, #0
|
|
bl MapObject_ClearHeldMovementIfActive
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl MapObject_SetFlag19
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #1
|
|
bne _0205B048
|
|
ldrb r0, [r4, #0x15]
|
|
cmp r0, #0
|
|
bne _0205B048
|
|
add r0, r5, #0
|
|
mov r1, #3
|
|
bl sub_0205FC94
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl MapObject_SetXRange
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl MapObject_SetYRange
|
|
mov r0, #1
|
|
strb r0, [r4, #0x15]
|
|
_0205B048:
|
|
mov r0, #2
|
|
strb r0, [r4, #0xd]
|
|
mov r0, #0
|
|
strb r0, [r4, #0xc]
|
|
b _0205B0AA
|
|
_0205B052:
|
|
add r0, r5, #0
|
|
bl MapObject_AreBitsSetForMovementScriptInit
|
|
cmp r0, #1
|
|
bne _0205B0AA
|
|
add r0, r6, #0
|
|
add r1, r5, #0
|
|
bl sub_0205B218
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #3
|
|
bne _0205B072
|
|
add r0, r6, #0
|
|
add r1, r5, #0
|
|
bl sub_0205B1E4
|
|
_0205B072:
|
|
add r0, r6, #0
|
|
bl sub_0205B118
|
|
b _0205B0AA
|
|
_0205B07A:
|
|
add r0, r5, #0
|
|
bl MapObject_AreBitsSetForMovementScriptInit
|
|
cmp r0, #1
|
|
bne _0205B0AA
|
|
add r0, r5, #0
|
|
bl MapObject_ClearHeldMovementIfActive
|
|
mov r0, #4
|
|
strb r0, [r4, #0xd]
|
|
mov r0, #0
|
|
strb r0, [r4, #0xc]
|
|
strb r0, [r4, #0x15]
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl MapObject_SetVisible
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl MapObject_ClearFlag18
|
|
b _0205B0AA
|
|
_0205B0A6:
|
|
mov r0, #0
|
|
strb r0, [r4, #0xd]
|
|
_0205B0AA:
|
|
add r7, r7, #1
|
|
add r4, #0x18
|
|
add r6, #0x18
|
|
cmp r7, #0x32
|
|
bge _0205B0B6
|
|
b _0205AFA6
|
|
_0205B0B6:
|
|
ldr r0, [sp]
|
|
ldr r0, [r0, #8]
|
|
bl PlayerAvatar_GetMapObject
|
|
add r1, r0, #0
|
|
ldr r2, _0205B0D8 ; =0x000004BC
|
|
ldr r0, [sp]
|
|
add r0, r0, r2
|
|
bl sub_0205B218
|
|
ldr r1, _0205B0D8 ; =0x000004BC
|
|
ldr r0, [sp]
|
|
add r0, r0, r1
|
|
bl sub_0205B118
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_0205B0D8: .word 0x000004BC
|
|
thumb_func_end sub_0205AF78
|
|
|
|
thumb_func_start sub_0205B0DC
|
|
sub_0205B0DC: ; 0x0205B0DC
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x10]
|
|
add r4, r1, #0
|
|
cmp r0, #0
|
|
beq _0205B0FA
|
|
bl sub_02068CCC
|
|
cmp r0, #0
|
|
beq _0205B0F6
|
|
ldr r0, [r5, #0x10]
|
|
bl sub_02068B48
|
|
_0205B0F6:
|
|
mov r0, #0
|
|
str r0, [r5, #0x10]
|
|
_0205B0FA:
|
|
cmp r4, #0
|
|
beq _0205B116
|
|
ldr r0, [r5, #0x14]
|
|
cmp r0, #0
|
|
beq _0205B116
|
|
bl sub_02068CCC
|
|
cmp r0, #0
|
|
beq _0205B112
|
|
ldr r0, [r5, #0x14]
|
|
bl sub_02068B48
|
|
_0205B112:
|
|
mov r0, #0
|
|
str r0, [r5, #0x14]
|
|
_0205B116:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_0205B0DC
|
|
|
|
thumb_func_start sub_0205B118
|
|
sub_0205B118: ; 0x0205B118
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldrb r1, [r4, #4]
|
|
cmp r1, #0
|
|
beq _0205B138
|
|
ldrh r1, [r4, #6]
|
|
sub r1, r1, #1
|
|
strh r1, [r4, #6]
|
|
ldrh r1, [r4, #6]
|
|
cmp r1, #0
|
|
bne _0205B138
|
|
mov r1, #0
|
|
bl sub_0205B0DC
|
|
mov r0, #0
|
|
strb r0, [r4, #4]
|
|
_0205B138:
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_0205B118
|
|
|
|
thumb_func_start sub_0205B13C
|
|
sub_0205B13C: ; 0x0205B13C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
str r2, [sp, #4]
|
|
str r3, [sp, #8]
|
|
bl MapObject_GetInitialX
|
|
add r7, r0, #0
|
|
add r0, r4, #0
|
|
bl MapObject_GetInitialHeight
|
|
str r0, [sp, #0xc]
|
|
add r0, r4, #0
|
|
bl MapObject_GetInitialY
|
|
add r6, r0, #0
|
|
ldr r0, [sp, #4]
|
|
cmp r7, r0
|
|
bne _0205B16C
|
|
ldr r0, [sp, #8]
|
|
cmp r6, r0
|
|
beq _0205B1DC
|
|
_0205B16C:
|
|
ldr r0, _0205B1E0 ; =0x0000064E
|
|
bl PlaySE
|
|
ldrb r1, [r5, #8]
|
|
add r0, r4, #0
|
|
bl sub_0205E3AC
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_0205B0DC
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
ldr r2, [sp, #0xc]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
add r3, r6, #0
|
|
bl sub_0205FC2C
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MapObject_ForceSetFacingDirection
|
|
add r0, r4, #0
|
|
mov r1, #0x44
|
|
bl MapObject_SetHeldMovement
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl MapObject_SetVisible
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MapObject_ClearFlag18
|
|
mov r1, #1
|
|
strb r1, [r5, #1]
|
|
ldrb r0, [r5, #2]
|
|
cmp r0, #0
|
|
beq _0205B1DC
|
|
cmp r0, #1
|
|
bne _0205B1CA
|
|
add r0, r4, #0
|
|
bl ov01_021FD8E8
|
|
str r0, [r5, #0x14]
|
|
b _0205B1D8
|
|
_0205B1CA:
|
|
cmp r0, #2
|
|
blo _0205B1D8
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl ov01_021FD8E8
|
|
str r0, [r5, #0x14]
|
|
_0205B1D8:
|
|
mov r0, #0
|
|
strb r0, [r5, #2]
|
|
_0205B1DC:
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_0205B1E0: .word 0x0000064E
|
|
thumb_func_end sub_0205B13C
|
|
|
|
thumb_func_start sub_0205B1E4
|
|
sub_0205B1E4: ; 0x0205B1E4
|
|
push {r3, r4, r5, lr}
|
|
add r5, r1, #0
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
mov r1, #0x43
|
|
bl MapObject_SetHeldMovement
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl MapObject_SetFlag19
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_0205FC94
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl sub_0205B0DC
|
|
mov r0, #0
|
|
strb r0, [r4, #4]
|
|
strh r0, [r4, #6]
|
|
mov r0, #3
|
|
strb r0, [r4, #1]
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_0205B1E4
|
|
|
|
thumb_func_start sub_0205B218
|
|
sub_0205B218: ; 0x0205B218
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldrb r0, [r4, #3]
|
|
cmp r0, #1
|
|
bne _0205B23C
|
|
ldrb r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _0205B23C
|
|
add r0, r1, #0
|
|
bl ov01_02200730
|
|
str r0, [r4, #0x10]
|
|
mov r0, #0x1e
|
|
strh r0, [r4, #6]
|
|
mov r0, #0
|
|
strb r0, [r4, #3]
|
|
mov r0, #1
|
|
strb r0, [r4, #4]
|
|
_0205B23C:
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_0205B218
|
|
|
|
thumb_func_start sub_0205B240
|
|
sub_0205B240: ; 0x0205B240
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r1, #0
|
|
add r6, r2, #0
|
|
add r7, r0, #0
|
|
cmp r5, r6
|
|
bge _0205B27A
|
|
_0205B24C:
|
|
add r0, r7, #0
|
|
add r1, r5, #0
|
|
bl GetMapObjectByID
|
|
add r4, r0, #0
|
|
bne _0205B25C
|
|
bl GF_AssertFail
|
|
_0205B25C:
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MapObject_SetVisible
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl MapObject_ClearFlag18
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MapObject_SetFlag19
|
|
add r5, r5, #1
|
|
cmp r5, r6
|
|
blt _0205B24C
|
|
_0205B27A:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_0205B240
|
|
|
|
thumb_func_start sub_0205B27C
|
|
sub_0205B27C: ; 0x0205B27C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r1, #0
|
|
mov r1, #0
|
|
add r7, r0, #0
|
|
bl GetMapObjectByID
|
|
add r4, r0, #0
|
|
bne _0205B290
|
|
bl GF_AssertFail
|
|
_0205B290:
|
|
add r0, r4, #0
|
|
bl MapObject_AreBitsSetForMovementScriptInit
|
|
cmp r0, #1
|
|
bne _0205B336
|
|
bl sub_02037FCC
|
|
cmp r0, #0
|
|
bne _0205B2AA
|
|
bl sub_02037F94
|
|
cmp r0, #0
|
|
beq _0205B32C
|
|
_0205B2AA:
|
|
mov r6, #0
|
|
add r5, #0xc
|
|
_0205B2AE:
|
|
ldrb r0, [r5, #1]
|
|
cmp r0, #1
|
|
bne _0205B318
|
|
add r0, r7, #0
|
|
add r1, r6, #1
|
|
bl GetMapObjectByID
|
|
add r4, r0, #0
|
|
bne _0205B2C4
|
|
bl GF_AssertFail
|
|
_0205B2C4:
|
|
ldrb r1, [r5, #8]
|
|
add r0, r4, #0
|
|
bl sub_0205E3AC
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MapObject_ForceSetFacingDirection
|
|
add r0, r4, #0
|
|
mov r1, #0x44
|
|
bl MapObject_SetHeldMovement
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl MapObject_SetVisible
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MapObject_ClearFlag18
|
|
mov r0, #1
|
|
strb r0, [r5, #1]
|
|
ldrb r0, [r5, #2]
|
|
cmp r0, #0
|
|
beq _0205B318
|
|
cmp r0, #1
|
|
bne _0205B306
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl ov01_021FD8E8
|
|
str r0, [r5, #0x14]
|
|
b _0205B314
|
|
_0205B306:
|
|
cmp r0, #2
|
|
blo _0205B314
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl ov01_021FD8E8
|
|
str r0, [r5, #0x14]
|
|
_0205B314:
|
|
mov r0, #0
|
|
strb r0, [r5, #2]
|
|
_0205B318:
|
|
add r6, r6, #1
|
|
add r5, #0x18
|
|
cmp r6, #0xa
|
|
blt _0205B2AE
|
|
add r0, r7, #0
|
|
mov r1, #0xb
|
|
mov r2, #0x33
|
|
bl sub_0205B240
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_0205B32C:
|
|
add r0, r7, #0
|
|
mov r1, #1
|
|
mov r2, #0x33
|
|
bl sub_0205B240
|
|
_0205B336:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_0205B27C
|
|
|
|
thumb_func_start sub_0205B338
|
|
sub_0205B338: ; 0x0205B338
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r0, #8
|
|
mov r1, #0x57
|
|
bl String_New
|
|
str r0, [r4]
|
|
mov r1, #0
|
|
add r0, r4, #0
|
|
str r1, [r4, #4]
|
|
add r0, #0x14
|
|
str r1, [r4, #8]
|
|
bl MailMsg_Init_WithBank
|
|
mov r0, #0
|
|
str r0, [r4, #0x10]
|
|
str r0, [r4, #0xc]
|
|
pop {r4, pc}
|
|
thumb_func_end sub_0205B338
|
|
|
|
thumb_func_start sub_0205B35C
|
|
sub_0205B35C: ; 0x0205B35C
|
|
push {r4, r5, r6, lr}
|
|
add r6, r0, #0
|
|
mov r4, #0
|
|
add r5, r6, #0
|
|
_0205B364:
|
|
add r0, r5, #0
|
|
bl sub_0205B338
|
|
add r4, r4, #1
|
|
add r5, #0x1c
|
|
cmp r4, #0x1e
|
|
blt _0205B364
|
|
mov r0, #0xd2
|
|
mov r1, #0
|
|
lsl r0, r0, #2
|
|
str r1, [r6, r0]
|
|
add r0, r0, #4
|
|
str r1, [r6, r0]
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end sub_0205B35C
|
|
|
|
thumb_func_start sub_0205B380
|
|
sub_0205B380: ; 0x0205B380
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4]
|
|
bl FreeToHeap
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _0205B394
|
|
bl String_Delete
|
|
_0205B394:
|
|
ldr r0, [r4, #8]
|
|
cmp r0, #0
|
|
beq _0205B39E
|
|
bl String_Delete
|
|
_0205B39E:
|
|
pop {r4, pc}
|
|
thumb_func_end sub_0205B380
|
|
|
|
thumb_func_start sub_0205B3A0
|
|
sub_0205B3A0: ; 0x0205B3A0
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
_0205B3A6:
|
|
add r0, r5, #0
|
|
bl sub_0205B380
|
|
add r4, r4, #1
|
|
add r5, #0x1c
|
|
cmp r4, #0x1e
|
|
blt _0205B3A6
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_0205B3A0
|
|
|
|
thumb_func_start sub_0205B3B8
|
|
sub_0205B3B8: ; 0x0205B3B8
|
|
push {r4, lr}
|
|
mov r1, #0x35
|
|
lsl r1, r1, #4
|
|
bl AllocFromHeap
|
|
add r4, r0, #0
|
|
bl sub_0205B35C
|
|
add r0, r4, #0
|
|
pop {r4, pc}
|
|
thumb_func_end sub_0205B3B8
|
|
|
|
thumb_func_start sub_0205B3CC
|
|
sub_0205B3CC: ; 0x0205B3CC
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl sub_0205B3A0
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
thumb_func_end sub_0205B3CC
|