mirror of
https://github.com/pret/pokeheartgold.git
synced 2024-11-24 05:40:09 +00:00
3126 lines
55 KiB
ArmAsm
3126 lines
55 KiB
ArmAsm
#include "constants/sndseq.h"
|
|
#include "constants/species.h"
|
|
#include "constants/maps.h"
|
|
#include "constants/pokemon.h"
|
|
#include "constants/flags.h"
|
|
#include "constants/vars.h"
|
|
#include "constants/items.h"
|
|
#include "constants/std_script.h"
|
|
#include "fielddata/script/scr_seq/event_D24R0204.h"
|
|
#include "constants/party_menu.h"
|
|
.include "asm/macros.inc"
|
|
.include "unk_020632B0.inc"
|
|
.include "global.inc"
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_020632B0
|
|
sub_020632B0: ; 0x020632B0
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0xc
|
|
add r6, r1, #0
|
|
str r3, [sp, #4]
|
|
mov r1, #0xc
|
|
str r0, [sp]
|
|
add r7, r2, #0
|
|
ldr r5, [sp, #0x24]
|
|
bl sub_0205F3C0
|
|
add r4, r0, #0
|
|
mov r0, #0xb
|
|
mov r1, #0x1c
|
|
bl AllocFromHeapAtEnd
|
|
mov r1, #0
|
|
mov r2, #0x1c
|
|
str r0, [r4, #8]
|
|
bl MI_CpuFill8
|
|
mov r0, #0x10
|
|
add r1, sp, #0x10
|
|
ldrsb r0, [r1, r0]
|
|
cmp r5, #0
|
|
strb r0, [r4]
|
|
strb r5, [r4, #1]
|
|
ldrh r0, [r1, #0x18]
|
|
strb r0, [r4, #3]
|
|
ble _020632FC
|
|
lsl r0, r5, #0xc
|
|
bl _fflt
|
|
add r1, r0, #0
|
|
mov r0, #0x3f
|
|
lsl r0, r0, #0x18
|
|
bl _fadd
|
|
b _0206330A
|
|
_020632FC:
|
|
lsl r0, r5, #0xc
|
|
bl _fflt
|
|
mov r1, #0x3f
|
|
lsl r1, r1, #0x18
|
|
bl _fsub
|
|
_0206330A:
|
|
bl _ffix
|
|
str r0, [sp, #8]
|
|
ldr r0, [r4, #8]
|
|
strb r6, [r0, #1]
|
|
ldr r0, [r4, #8]
|
|
strb r7, [r0, #2]
|
|
ldr r1, [r4, #8]
|
|
ldr r0, [sp, #4]
|
|
strb r0, [r1, #3]
|
|
lsl r0, r6, #4
|
|
cmp r0, #0
|
|
ble _02063336
|
|
lsl r0, r6, #0x10
|
|
bl _fflt
|
|
add r1, r0, #0
|
|
mov r0, #0x3f
|
|
lsl r0, r0, #0x18
|
|
bl _fadd
|
|
b _02063344
|
|
_02063336:
|
|
lsl r0, r6, #0x10
|
|
bl _fflt
|
|
mov r1, #0x3f
|
|
lsl r1, r1, #0x18
|
|
bl _fsub
|
|
_02063344:
|
|
bl _ffix
|
|
ldr r1, [sp, #8]
|
|
bl FX_Div
|
|
ldr r1, [r4, #8]
|
|
str r0, [r1, #4]
|
|
lsl r0, r7, #4
|
|
cmp r0, #0
|
|
ble _0206336A
|
|
lsl r0, r7, #0x10
|
|
bl _fflt
|
|
add r1, r0, #0
|
|
mov r0, #0x3f
|
|
lsl r0, r0, #0x18
|
|
bl _fadd
|
|
b _02063378
|
|
_0206336A:
|
|
lsl r0, r7, #0x10
|
|
bl _fflt
|
|
mov r1, #0x3f
|
|
lsl r1, r1, #0x18
|
|
bl _fsub
|
|
_02063378:
|
|
bl _ffix
|
|
ldr r1, [sp, #8]
|
|
bl FX_Div
|
|
ldr r1, [r4, #8]
|
|
str r0, [r1, #8]
|
|
ldr r0, [sp, #4]
|
|
lsl r0, r0, #4
|
|
cmp r0, #0
|
|
ble _020633A2
|
|
ldr r0, [sp, #4]
|
|
lsl r0, r0, #0x10
|
|
bl _fflt
|
|
add r1, r0, #0
|
|
mov r0, #0x3f
|
|
lsl r0, r0, #0x18
|
|
bl _fadd
|
|
b _020633B2
|
|
_020633A2:
|
|
ldr r0, [sp, #4]
|
|
lsl r0, r0, #0x10
|
|
bl _fflt
|
|
mov r1, #0x3f
|
|
lsl r1, r1, #0x18
|
|
bl _fsub
|
|
_020633B2:
|
|
bl _ffix
|
|
ldr r1, [sp, #8]
|
|
bl FX_Div
|
|
ldr r1, [r4, #8]
|
|
str r0, [r1, #0xc]
|
|
mov r0, #0xb4
|
|
add r1, r5, #0
|
|
bl _s32_div_f
|
|
ldr r1, [r4, #8]
|
|
strb r0, [r1]
|
|
ldr r1, [r4, #8]
|
|
ldr r0, [sp]
|
|
add r1, #0x10
|
|
bl MapObject_GetPositionVec
|
|
ldr r0, [r4, #8]
|
|
ldr r0, [r0, #0x14]
|
|
str r0, [r4, #4]
|
|
ldr r0, [sp]
|
|
bl sub_02060F78
|
|
ldr r0, [sp]
|
|
ldr r1, _0206341C ; =0x00010004
|
|
bl MapObject_SetFlagsBits
|
|
add r2, sp, #0x10
|
|
mov r1, #0x10
|
|
ldrsb r1, [r2, r1]
|
|
ldr r0, [sp]
|
|
bl MapObject_SetOrQueueFacing
|
|
add r1, sp, #0x10
|
|
ldrh r1, [r1, #0x18]
|
|
ldr r0, [sp]
|
|
bl sub_0205F328
|
|
ldr r0, [sp]
|
|
bl MapObject_IncMovementStep
|
|
ldr r0, [sp]
|
|
bl MapObject_CheckVisible
|
|
cmp r0, #0
|
|
bne _02063416
|
|
ldr r0, _02063420 ; =SEQ_SE_DP_DANSA
|
|
bl PlaySE
|
|
_02063416:
|
|
add sp, #0xc
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_0206341C: .word 0x00010004
|
|
_02063420: .word SEQ_SE_DP_DANSA
|
|
thumb_func_end sub_020632B0
|
|
|
|
thumb_func_start MapObjectMovementCmd108_Step1
|
|
MapObjectMovementCmd108_Step1: ; 0x02063424
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
add r5, r0, #0
|
|
bl sub_0205F3E4
|
|
add r4, r0, #0
|
|
ldrb r0, [r4, #2]
|
|
cmp r0, #0
|
|
beq _02063448
|
|
lsl r0, r0, #0xc
|
|
bl _fflt
|
|
add r1, r0, #0
|
|
mov r0, #0x3f
|
|
lsl r0, r0, #0x18
|
|
bl _fadd
|
|
b _02063456
|
|
_02063448:
|
|
lsl r0, r0, #0xc
|
|
bl _fflt
|
|
mov r1, #0x3f
|
|
lsl r1, r1, #0x18
|
|
bl _fsub
|
|
_02063456:
|
|
bl _ffix
|
|
str r0, [sp]
|
|
asr r0, r0, #0x1f
|
|
str r0, [sp, #4]
|
|
ldr r6, [r4, #8]
|
|
ldr r2, [sp]
|
|
ldr r0, [r6, #4]
|
|
ldr r3, [sp, #4]
|
|
asr r1, r0, #0x1f
|
|
bl _ll_mul
|
|
ldr r3, [r6, #0x10]
|
|
mov r6, #2
|
|
mov r2, #0
|
|
lsl r6, r6, #0xa
|
|
add r6, r0, r6
|
|
adc r1, r2
|
|
lsl r0, r1, #0x14
|
|
lsr r1, r6, #0xc
|
|
orr r1, r0
|
|
add r0, r3, r1
|
|
str r2, [sp, #0xc]
|
|
str r0, [sp, #8]
|
|
ldr r6, [r4, #8]
|
|
ldr r2, [sp]
|
|
ldr r0, [r6, #0xc]
|
|
ldr r3, [sp, #4]
|
|
asr r1, r0, #0x1f
|
|
bl _ll_mul
|
|
mov r3, #2
|
|
ldr r2, [r6, #0x18]
|
|
mov r6, #0
|
|
lsl r3, r3, #0xa
|
|
add r3, r0, r3
|
|
adc r1, r6
|
|
lsl r0, r1, #0x14
|
|
lsr r1, r3, #0xc
|
|
orr r1, r0
|
|
add r0, r2, r1
|
|
str r0, [sp, #0x10]
|
|
add r0, r5, #0
|
|
bl MapObject_GetFieldSysPtr
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
bl MapObject_CheckFlag29
|
|
add r2, r0, #0
|
|
add r0, r6, #0
|
|
add r1, sp, #8
|
|
bl sub_02061248
|
|
cmp r0, #0
|
|
beq _020634CC
|
|
ldr r0, [sp, #0xc]
|
|
str r0, [r4, #4]
|
|
b _020634D0
|
|
_020634CC:
|
|
ldr r0, [r4, #4]
|
|
str r0, [sp, #0xc]
|
|
_020634D0:
|
|
add r0, r5, #0
|
|
add r1, sp, #8
|
|
bl MapObject_SetPositionVec
|
|
ldr r0, [r4, #8]
|
|
ldrb r1, [r0]
|
|
ldrb r0, [r4, #2]
|
|
mul r0, r1
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl GF_SinDegNoWrap
|
|
ldr r7, [r4, #8]
|
|
add r6, r0, #0
|
|
ldr r0, [r7, #8]
|
|
ldr r2, [sp]
|
|
ldr r3, [sp, #4]
|
|
asr r1, r0, #0x1f
|
|
bl _ll_mul
|
|
add r2, r0, #0
|
|
ldr r0, [r7, #0x14]
|
|
mov r3, #0
|
|
mov r7, #2
|
|
lsl r7, r7, #0xa
|
|
add r2, r2, r7
|
|
adc r1, r3
|
|
lsl r1, r1, #0x14
|
|
lsr r2, r2, #0xc
|
|
orr r2, r1
|
|
add r0, r0, r2
|
|
asr r2, r6, #0x1f
|
|
lsr r1, r6, #0x10
|
|
lsl r2, r2, #0x10
|
|
orr r2, r1
|
|
lsl r1, r6, #0x10
|
|
add r6, r1, r7
|
|
adc r2, r3
|
|
lsl r1, r2, #0x14
|
|
lsr r2, r6, #0xc
|
|
orr r2, r1
|
|
add r1, r0, r2
|
|
ldr r0, [sp, #0xc]
|
|
str r3, [sp, #8]
|
|
sub r0, r1, r0
|
|
str r0, [sp, #0xc]
|
|
add r0, r5, #0
|
|
add r1, sp, #8
|
|
str r3, [sp, #0x10]
|
|
bl sub_0205F9A0
|
|
mov r0, #1
|
|
ldrsb r1, [r4, r0]
|
|
sub r1, r1, #1
|
|
strb r1, [r4, #1]
|
|
ldrb r1, [r4, #2]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #2]
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #0
|
|
ble _02063550
|
|
add sp, #0x14
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, pc}
|
|
_02063550:
|
|
mov r0, #0
|
|
str r0, [sp, #0x10]
|
|
str r0, [sp, #0xc]
|
|
str r0, [sp, #8]
|
|
add r0, r5, #0
|
|
add r1, sp, #8
|
|
bl MapObject_SetFacingVec
|
|
add r0, r5, #0
|
|
add r1, sp, #8
|
|
bl sub_0205F9A0
|
|
ldr r2, [r4, #8]
|
|
mov r1, #1
|
|
ldrsb r1, [r2, r1]
|
|
add r0, r5, #0
|
|
bl MapObject_AddCurrentX
|
|
ldr r2, [r4, #8]
|
|
mov r1, #2
|
|
ldrsb r1, [r2, r1]
|
|
add r0, r5, #0
|
|
bl MapObject_AddCurrentHeight
|
|
ldr r2, [r4, #8]
|
|
mov r1, #3
|
|
ldrsb r1, [r2, r1]
|
|
add r0, r5, #0
|
|
bl MapObject_AddCurrentY
|
|
ldr r6, [r4, #8]
|
|
mov r0, #1
|
|
ldrsb r1, [r6, r0]
|
|
lsl r0, r1, #4
|
|
cmp r0, #0
|
|
ble _020635AA
|
|
lsl r0, r1, #0x10
|
|
bl _fflt
|
|
add r1, r0, #0
|
|
mov r0, #0x3f
|
|
lsl r0, r0, #0x18
|
|
bl _fadd
|
|
b _020635B8
|
|
_020635AA:
|
|
lsl r0, r1, #0x10
|
|
bl _fflt
|
|
mov r1, #0x3f
|
|
lsl r1, r1, #0x18
|
|
bl _fsub
|
|
_020635B8:
|
|
bl _ffix
|
|
ldr r1, [r6, #0x10]
|
|
add r0, r1, r0
|
|
str r0, [sp, #8]
|
|
ldr r6, [r4, #8]
|
|
mov r0, #2
|
|
ldrsb r1, [r6, r0]
|
|
lsl r0, r1, #4
|
|
cmp r0, #0
|
|
ble _020635E0
|
|
lsl r0, r1, #0x10
|
|
bl _fflt
|
|
add r1, r0, #0
|
|
mov r0, #0x3f
|
|
lsl r0, r0, #0x18
|
|
bl _fadd
|
|
b _020635EE
|
|
_020635E0:
|
|
lsl r0, r1, #0x10
|
|
bl _fflt
|
|
mov r1, #0x3f
|
|
lsl r1, r1, #0x18
|
|
bl _fsub
|
|
_020635EE:
|
|
bl _ffix
|
|
ldr r1, [r6, #0x14]
|
|
add r0, r1, r0
|
|
str r0, [sp, #0xc]
|
|
ldr r6, [r4, #8]
|
|
mov r0, #3
|
|
ldrsb r1, [r6, r0]
|
|
lsl r0, r1, #4
|
|
cmp r0, #0
|
|
ble _02063616
|
|
lsl r0, r1, #0x10
|
|
bl _fflt
|
|
add r1, r0, #0
|
|
mov r0, #0x3f
|
|
lsl r0, r0, #0x18
|
|
bl _fadd
|
|
b _02063624
|
|
_02063616:
|
|
lsl r0, r1, #0x10
|
|
bl _fflt
|
|
mov r1, #0x3f
|
|
lsl r1, r1, #0x18
|
|
bl _fsub
|
|
_02063624:
|
|
bl _ffix
|
|
ldr r1, [r6, #0x18]
|
|
add r0, r1, r0
|
|
str r0, [sp, #0x10]
|
|
add r0, r5, #0
|
|
add r1, sp, #8
|
|
bl MapObject_SetPositionVec
|
|
add r0, r5, #0
|
|
bl sub_02061070
|
|
ldr r1, _0206367C ; =0x00020008
|
|
add r0, r5, #0
|
|
bl MapObject_SetFlagsBits
|
|
add r0, r5, #0
|
|
bl sub_02060F78
|
|
add r0, r5, #0
|
|
bl sub_0205F484
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl sub_0205F328
|
|
add r0, r5, #0
|
|
bl MapObject_IncMovementStep
|
|
add r0, r5, #0
|
|
bl MapObject_CheckVisible
|
|
cmp r0, #0
|
|
bne _0206366E
|
|
ldr r0, _02063680 ; =SEQ_SE_DP_SUTYA2
|
|
bl PlaySE
|
|
_0206366E:
|
|
ldr r0, [r4, #8]
|
|
bl FreeToHeap
|
|
mov r0, #0
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_0206367C: .word 0x00020008
|
|
_02063680: .word SEQ_SE_DP_SUTYA2
|
|
thumb_func_end MapObjectMovementCmd108_Step1
|
|
|
|
thumb_func_start MapObjectMovementCmd105_Step0
|
|
MapObjectMovementCmd105_Step0: ; 0x02063684
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r2, #1
|
|
str r2, [sp]
|
|
mov r1, #0xf
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
mov r1, #0
|
|
mov r3, #5
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd105_Step0
|
|
|
|
thumb_func_start MapObjectMovementCmd105_Step2
|
|
MapObjectMovementCmd105_Step2: ; 0x020636A4
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r2, #3
|
|
str r2, [sp]
|
|
mov r1, #0xc
|
|
str r1, [sp, #4]
|
|
str r2, [sp, #8]
|
|
mov r2, #0
|
|
mov r1, #4
|
|
add r3, r2, #0
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd105_Step2
|
|
|
|
thumb_func_start MapObjectMovementCmd105_Step4
|
|
MapObjectMovementCmd105_Step4: ; 0x020636C4
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
mov r2, #0xf
|
|
str r2, [sp, #4]
|
|
mov r3, #3
|
|
str r3, [sp, #8]
|
|
add r2, r1, #0
|
|
sub r3, #8
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd105_Step4
|
|
|
|
thumb_func_start MapObjectMovementCmd105_Step6
|
|
MapObjectMovementCmd105_Step6: ; 0x020636E4
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
mov r1, #9
|
|
str r1, [sp, #4]
|
|
mov r3, #3
|
|
str r3, [sp, #8]
|
|
sub r1, r3, #5
|
|
sub r3, r3, #6
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd105_Step6
|
|
|
|
thumb_func_start MapObjectMovementCmd105_Step8
|
|
MapObjectMovementCmd105_Step8: ; 0x02063704
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #2
|
|
str r1, [sp]
|
|
mov r1, #0xc
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
sub r1, r1, #7
|
|
mov r2, #1
|
|
add r3, r1, #0
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd105_Step8
|
|
|
|
thumb_func_start MapObjectMovementCmd106_Step0
|
|
MapObjectMovementCmd106_Step0: ; 0x02063724
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r2, #3
|
|
str r2, [sp]
|
|
mov r1, #6
|
|
str r1, [sp, #4]
|
|
str r2, [sp, #8]
|
|
mov r1, #2
|
|
mov r2, #1
|
|
mov r3, #0
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd106_Step0
|
|
|
|
thumb_func_start MapObjectMovementCmd106_Step2
|
|
MapObjectMovementCmd106_Step2: ; 0x02063744
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #1
|
|
str r1, [sp]
|
|
mov r1, #0xc
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
sub r1, r1, #4
|
|
mov r2, #0
|
|
mov r3, #5
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd106_Step2
|
|
|
|
thumb_func_start MapObjectMovementCmd106_Step4
|
|
MapObjectMovementCmd106_Step4: ; 0x02063764
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #2
|
|
str r1, [sp]
|
|
mov r1, #6
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
mov r2, #0
|
|
str r1, [sp, #8]
|
|
sub r1, r1, #6
|
|
add r3, r2, #0
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd106_Step4
|
|
|
|
thumb_func_start MapObjectMovementCmd106_Step6
|
|
MapObjectMovementCmd106_Step6: ; 0x02063784
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #2
|
|
str r1, [sp]
|
|
mov r1, #9
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
mov r2, #0
|
|
str r1, [sp, #8]
|
|
sub r1, r1, #6
|
|
add r3, r2, #0
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd106_Step6
|
|
|
|
thumb_func_start MapObjectMovementCmd107_Step0
|
|
MapObjectMovementCmd107_Step0: ; 0x020637A4
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #3
|
|
str r1, [sp]
|
|
mov r2, #6
|
|
str r2, [sp, #4]
|
|
mov r2, #1
|
|
sub r3, r2, #2
|
|
str r1, [sp, #8]
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd107_Step0
|
|
|
|
thumb_func_start MapObjectMovementCmd107_Step2
|
|
MapObjectMovementCmd107_Step2: ; 0x020637C0
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #1
|
|
str r1, [sp]
|
|
mov r1, #9
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
mov r1, #0
|
|
add r2, r1, #0
|
|
mov r3, #4
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd107_Step2
|
|
|
|
thumb_func_start MapObjectMovementCmd107_Step4
|
|
MapObjectMovementCmd107_Step4: ; 0x020637E0
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #2
|
|
str r1, [sp]
|
|
mov r1, #0xc
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
mov r2, #0
|
|
str r1, [sp, #8]
|
|
sub r1, r1, #7
|
|
add r3, r2, #0
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd107_Step4
|
|
|
|
thumb_func_start MapObjectMovementCmd107_Step6
|
|
MapObjectMovementCmd107_Step6: ; 0x02063800
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
mov r2, #6
|
|
str r2, [sp, #4]
|
|
mov r3, #3
|
|
str r3, [sp, #8]
|
|
sub r2, r3, #4
|
|
sub r3, r3, #7
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd107_Step6
|
|
|
|
thumb_func_start MapObjectMovementCmd107_Step8
|
|
MapObjectMovementCmd107_Step8: ; 0x02063820
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
mov r1, #9
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
mov r1, #1
|
|
add r2, r1, #0
|
|
sub r3, r1, #4
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd107_Step8
|
|
|
|
thumb_func_start MapObjectMovementCmd107_Step10
|
|
MapObjectMovementCmd107_Step10: ; 0x02063840
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #3
|
|
str r1, [sp]
|
|
mov r2, #9
|
|
str r2, [sp, #4]
|
|
mov r2, #0
|
|
add r3, r2, #0
|
|
str r1, [sp, #8]
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd107_Step10
|
|
|
|
thumb_func_start MapObjectMovementCmd107_Step12
|
|
MapObjectMovementCmd107_Step12: ; 0x0206385C
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #1
|
|
str r1, [sp]
|
|
mov r1, #0xc
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
mov r1, #0
|
|
add r2, r1, #0
|
|
mov r3, #4
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd107_Step12
|
|
|
|
thumb_func_start MapObjectMovementCmd109_Step12
|
|
MapObjectMovementCmd109_Step12: ; 0x0206387C
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #1
|
|
str r1, [sp]
|
|
mov r1, #0xc
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
mov r1, #0
|
|
add r2, r1, #0
|
|
mov r3, #5
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd109_Step12
|
|
|
|
thumb_func_start MapObjectMovementCmd108_Step0
|
|
MapObjectMovementCmd108_Step0: ; 0x0206389C
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r2, #1
|
|
str r2, [sp]
|
|
mov r1, #9
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
mov r1, #2
|
|
mov r3, #5
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd108_Step0
|
|
|
|
thumb_func_start MapObjectMovementCmd110_Step0
|
|
MapObjectMovementCmd110_Step0: ; 0x020638BC
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r2, #1
|
|
str r2, [sp]
|
|
mov r1, #9
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
mov r1, #2
|
|
mov r3, #4
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd110_Step0
|
|
|
|
thumb_func_start MapObjectMovementCmd108_Step2
|
|
MapObjectMovementCmd108_Step2: ; 0x020638DC
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #1
|
|
str r1, [sp]
|
|
mov r2, #0xc
|
|
str r2, [sp, #4]
|
|
mov r2, #3
|
|
str r2, [sp, #8]
|
|
mov r2, #0
|
|
mov r3, #5
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd108_Step2
|
|
|
|
thumb_func_start MapObjectMovementCmd111_Step0
|
|
MapObjectMovementCmd111_Step0: ; 0x020638FC
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #1
|
|
str r1, [sp]
|
|
mov r1, #6
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
mov r1, #0
|
|
add r2, r1, #0
|
|
mov r3, #2
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd111_Step0
|
|
|
|
thumb_func_start MapObjectMovementCmd111_Step2
|
|
MapObjectMovementCmd111_Step2: ; 0x0206391C
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r2, #3
|
|
str r2, [sp]
|
|
mov r1, #6
|
|
str r1, [sp, #4]
|
|
str r2, [sp, #8]
|
|
mov r2, #0
|
|
mov r1, #2
|
|
add r3, r2, #0
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd111_Step2
|
|
|
|
thumb_func_start MapObjectMovementCmd111_Step4
|
|
MapObjectMovementCmd111_Step4: ; 0x0206393C
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #3
|
|
str r1, [sp]
|
|
mov r2, #9
|
|
str r2, [sp, #4]
|
|
mov r2, #0
|
|
add r3, r2, #0
|
|
str r1, [sp, #8]
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd111_Step4
|
|
|
|
thumb_func_start MapObjectMovementCmd111_Step6
|
|
MapObjectMovementCmd111_Step6: ; 0x02063958
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #1
|
|
str r1, [sp]
|
|
mov r1, #6
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
str r1, [sp, #8]
|
|
mov r1, #0
|
|
add r2, r1, #0
|
|
mov r3, #2
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd111_Step6
|
|
|
|
thumb_func_start MapObjectMovementCmd111_Step10
|
|
MapObjectMovementCmd111_Step10: ; 0x02063978
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #2
|
|
str r1, [sp]
|
|
mov r1, #9
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
mov r2, #0
|
|
str r1, [sp, #8]
|
|
sub r1, r1, #6
|
|
add r3, r2, #0
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd111_Step10
|
|
|
|
thumb_func_start MapObjectMovementCmd111_Step14
|
|
MapObjectMovementCmd111_Step14: ; 0x02063998
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
mov r2, #6
|
|
str r2, [sp, #4]
|
|
mov r3, #3
|
|
str r3, [sp, #8]
|
|
add r2, r1, #0
|
|
sub r3, r3, #5
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd111_Step14
|
|
|
|
thumb_func_start MapObjectMovementCmd111_Step16
|
|
MapObjectMovementCmd111_Step16: ; 0x020639B8
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
mov r2, #9
|
|
str r2, [sp, #4]
|
|
mov r3, #3
|
|
str r3, [sp, #8]
|
|
add r2, r1, #0
|
|
sub r3, r3, #6
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd111_Step16
|
|
|
|
thumb_func_start MapObjectMovementCmd111_Step18
|
|
MapObjectMovementCmd111_Step18: ; 0x020639D8
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r3, #1
|
|
str r3, [sp]
|
|
mov r1, #9
|
|
str r1, [sp, #4]
|
|
mov r1, #3
|
|
mov r2, #0
|
|
str r1, [sp, #8]
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
thumb_func_end MapObjectMovementCmd111_Step18
|
|
|
|
thumb_func_start MapObjectMovementCmd112_Step0
|
|
MapObjectMovementCmd112_Step0: ; 0x020639F4
|
|
push {lr}
|
|
sub sp, #0xc
|
|
mov r2, #3
|
|
str r2, [sp]
|
|
mov r1, #9
|
|
str r1, [sp, #4]
|
|
str r2, [sp, #8]
|
|
mov r2, #0
|
|
mov r1, #4
|
|
add r3, r2, #0
|
|
bl sub_020632B0
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end MapObjectMovementCmd112_Step0
|
|
|
|
thumb_func_start sub_02063A14
|
|
sub_02063A14: ; 0x02063A14
|
|
ldr r3, _02063A18 ; =sub_02063A40
|
|
bx r3
|
|
.balign 4, 0
|
|
_02063A18: .word sub_02063A40
|
|
thumb_func_end sub_02063A14
|
|
|
|
thumb_func_start sub_02063A1C
|
|
sub_02063A1C: ; 0x02063A1C
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl sub_02063A5C
|
|
cmp r0, #0
|
|
bne _02063A2C
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_02063A2C:
|
|
add r0, r4, #0
|
|
bl sub_02063A78
|
|
cmp r0, #0
|
|
beq _02063A3A
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
_02063A3A:
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02063A1C
|
|
|
|
thumb_func_start sub_02063A40
|
|
sub_02063A40: ; 0x02063A40
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl MapObject_GetType
|
|
add r1, r0, #0
|
|
lsl r2, r1, #2
|
|
ldr r1, _02063A58 ; =_020FE104
|
|
add r0, r4, #0
|
|
ldr r1, [r1, r2]
|
|
blx r1
|
|
pop {r4, pc}
|
|
nop
|
|
_02063A58: .word _020FE104
|
|
thumb_func_end sub_02063A40
|
|
|
|
thumb_func_start sub_02063A5C
|
|
sub_02063A5C: ; 0x02063A5C
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl MapObject_GetType
|
|
add r1, r0, #0
|
|
lsl r2, r1, #2
|
|
ldr r1, _02063A74 ; =_020FE134
|
|
add r0, r4, #0
|
|
ldr r1, [r1, r2]
|
|
blx r1
|
|
pop {r4, pc}
|
|
nop
|
|
_02063A74: .word _020FE134
|
|
thumb_func_end sub_02063A5C
|
|
|
|
thumb_func_start sub_02063A78
|
|
sub_02063A78: ; 0x02063A78
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl MapObject_GetType
|
|
add r1, r0, #0
|
|
lsl r2, r1, #2
|
|
ldr r1, _02063A90 ; =_020FE164
|
|
add r0, r4, #0
|
|
ldr r1, [r1, r2]
|
|
blx r1
|
|
pop {r4, pc}
|
|
nop
|
|
_02063A90: .word _020FE164
|
|
thumb_func_end sub_02063A78
|
|
|
|
thumb_func_start sub_02063A94
|
|
sub_02063A94: ; 0x02063A94
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
bl MapObject_GetCurrentX
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
bl MapObject_GetPrevX
|
|
cmp r5, r0
|
|
beq _02063AAC
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
_02063AAC:
|
|
add r0, r4, #0
|
|
bl MapObject_GetCurrentY
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
bl MapObject_GetPrevY
|
|
cmp r5, r0
|
|
beq _02063AC2
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
_02063AC2:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02063A94
|
|
|
|
thumb_func_start sub_02063AC8
|
|
sub_02063AC8: ; 0x02063AC8
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
bl MapObject_GetCurrentX
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
bl MapObject_GetPrevX
|
|
cmp r5, r0
|
|
beq _02063AE0
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
_02063AE0:
|
|
add r0, r4, #0
|
|
bl MapObject_GetCurrentY
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
bl MapObject_GetPrevY
|
|
cmp r5, r0
|
|
bne _02063AF6
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
_02063AF6:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02063AC8
|
|
|
|
thumb_func_start sub_02063AFC
|
|
sub_02063AFC: ; 0x02063AFC
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_02063AFC
|
|
|
|
thumb_func_start sub_02063B00
|
|
sub_02063B00: ; 0x02063B00
|
|
mov r0, #0
|
|
bx lr
|
|
thumb_func_end sub_02063B00
|
|
|
|
thumb_func_start sub_02063B04
|
|
sub_02063B04: ; 0x02063B04
|
|
mov r0, #0
|
|
bx lr
|
|
thumb_func_end sub_02063B04
|
|
|
|
thumb_func_start sub_02063B08
|
|
sub_02063B08: ; 0x02063B08
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r1, #9
|
|
bl sub_0205F398
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl MapObject_GetParam
|
|
strb r0, [r4, #3]
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_02063B08
|
|
|
|
thumb_func_start sub_02063B20
|
|
sub_02063B20: ; 0x02063B20
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F3BC
|
|
add r4, r0, #0
|
|
ldrb r0, [r4]
|
|
cmp r0, #3
|
|
bhi _02063B98
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02063B3C: ; jump table
|
|
.short _02063B44 - _02063B3C - 2 ; case 0
|
|
.short _02063B56 - _02063B3C - 2 ; case 1
|
|
.short _02063B7E - _02063B3C - 2 ; case 2
|
|
.short _02063B94 - _02063B3C - 2 ; case 3
|
|
_02063B44:
|
|
add r0, r5, #0
|
|
bl sub_02063A94
|
|
cmp r0, #1
|
|
bne _02063B98
|
|
ldrb r0, [r4]
|
|
add r0, r0, #1
|
|
strb r0, [r4]
|
|
b _02063B98
|
|
_02063B56:
|
|
add r0, r5, #0
|
|
bl sub_02063AC8
|
|
cmp r0, #0
|
|
beq _02063B98
|
|
mov r0, #2
|
|
ldrsb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #2]
|
|
ldrsb r1, [r4, r0]
|
|
mov r0, #3
|
|
ldrsb r0, [r4, r0]
|
|
cmp r1, r0
|
|
bge _02063B78
|
|
mov r0, #0
|
|
strb r0, [r4]
|
|
b _02063B98
|
|
_02063B78:
|
|
ldrb r0, [r4]
|
|
add r0, r0, #1
|
|
strb r0, [r4]
|
|
_02063B7E:
|
|
add r0, r5, #0
|
|
bl MapObject_IsSingleMovementActive
|
|
cmp r0, #1
|
|
beq _02063B98
|
|
ldrb r0, [r4]
|
|
add r0, r0, #1
|
|
strb r0, [r4]
|
|
mov r0, #0
|
|
strb r0, [r4, #2]
|
|
strb r0, [r4, #1]
|
|
_02063B94:
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
_02063B98:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_02063B20
|
|
|
|
thumb_func_start sub_02063B9C
|
|
sub_02063B9C: ; 0x02063B9C
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x20
|
|
add r5, r0, #0
|
|
bl sub_0205F3BC
|
|
add r4, r0, #0
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #3
|
|
bhi _02063C7A
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02063BBA: ; jump table
|
|
.short _02063BC2 - _02063BBA - 2 ; case 0
|
|
.short _02063BE4 - _02063BBA - 2 ; case 1
|
|
.short _02063C16 - _02063BBA - 2 ; case 2
|
|
.short _02063C2C - _02063BBA - 2 ; case 3
|
|
_02063BC2:
|
|
ldr r3, _02063C80 ; =_020FE0C4
|
|
add r2, sp, #0x10
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
strb r0, [r4, #4]
|
|
lsl r1, r0, #2
|
|
add r0, sp, #0x10
|
|
ldr r0, [r0, r1]
|
|
strb r0, [r4, #5]
|
|
ldrb r0, [r4, #1]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #1]
|
|
_02063BE4:
|
|
ldr r6, _02063C84 ; =_020FE0D4
|
|
add r3, sp, #0
|
|
add r2, r3, #0
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
mov r0, #5
|
|
ldrsb r0, [r4, r0]
|
|
lsl r3, r0, #3
|
|
mov r0, #6
|
|
ldrsb r0, [r4, r0]
|
|
lsl r1, r0, #2
|
|
add r0, r2, r3
|
|
ldr r0, [r1, r0]
|
|
mov r1, #0
|
|
bl sub_0206234C
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
bl MapObject_ForceSetHeldMovement
|
|
ldrb r0, [r4, #1]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #1]
|
|
_02063C16:
|
|
add r0, r5, #0
|
|
bl sub_02062428
|
|
cmp r0, #0
|
|
bne _02063C26
|
|
add sp, #0x20
|
|
mov r0, #1
|
|
pop {r4, r5, r6, pc}
|
|
_02063C26:
|
|
ldrb r0, [r4, #1]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #1]
|
|
_02063C2C:
|
|
mov r0, #8
|
|
ldrsb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #8]
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #8
|
|
bge _02063C40
|
|
add sp, #0x20
|
|
mov r0, #1
|
|
pop {r4, r5, r6, pc}
|
|
_02063C40:
|
|
mov r0, #0
|
|
strb r0, [r4, #8]
|
|
mov r0, #7
|
|
ldrsb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #7]
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #4
|
|
bge _02063C64
|
|
mov r0, #6
|
|
ldrsb r0, [r4, r0]
|
|
add sp, #0x20
|
|
add r1, r0, #1
|
|
mov r0, #1
|
|
and r1, r0
|
|
strb r1, [r4, #6]
|
|
strb r0, [r4, #1]
|
|
pop {r4, r5, r6, pc}
|
|
_02063C64:
|
|
mov r1, #4
|
|
ldrsb r1, [r4, r1]
|
|
add r0, r5, #0
|
|
bl MapObject_SetFacingDirection
|
|
ldrb r0, [r4, #1]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #1]
|
|
mov r0, #0
|
|
strb r0, [r4, #7]
|
|
strb r0, [r4]
|
|
_02063C7A:
|
|
mov r0, #0
|
|
add sp, #0x20
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_02063C80: .word _020FE0C4
|
|
_02063C84: .word _020FE0D4
|
|
thumb_func_end sub_02063B9C
|
|
|
|
thumb_func_start sub_02063C88
|
|
sub_02063C88: ; 0x02063C88
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r1, #9
|
|
bl sub_0205F398
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl MapObject_GetParam
|
|
strb r0, [r4, #3]
|
|
add r0, r5, #0
|
|
bl MapObject_GetType
|
|
cmp r0, #5
|
|
beq _02063CAC
|
|
mov r0, #1
|
|
b _02063CAE
|
|
_02063CAC:
|
|
mov r0, #0
|
|
_02063CAE:
|
|
strb r0, [r4, #5]
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02063C88
|
|
|
|
thumb_func_start sub_02063CB4
|
|
sub_02063CB4: ; 0x02063CB4
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F3BC
|
|
add r4, r0, #0
|
|
ldrb r0, [r4]
|
|
cmp r0, #3
|
|
bhi _02063D2C
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02063CD0: ; jump table
|
|
.short _02063CD8 - _02063CD0 - 2 ; case 0
|
|
.short _02063CEA - _02063CD0 - 2 ; case 1
|
|
.short _02063D12 - _02063CD0 - 2 ; case 2
|
|
.short _02063D28 - _02063CD0 - 2 ; case 3
|
|
_02063CD8:
|
|
add r0, r5, #0
|
|
bl sub_02063A94
|
|
cmp r0, #1
|
|
bne _02063D2C
|
|
ldrb r0, [r4]
|
|
add r0, r0, #1
|
|
strb r0, [r4]
|
|
b _02063D2C
|
|
_02063CEA:
|
|
add r0, r5, #0
|
|
bl sub_02063AC8
|
|
cmp r0, #0
|
|
beq _02063D2C
|
|
mov r0, #2
|
|
ldrsb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #2]
|
|
ldrsb r1, [r4, r0]
|
|
mov r0, #3
|
|
ldrsb r0, [r4, r0]
|
|
cmp r1, r0
|
|
bge _02063D0C
|
|
mov r0, #0
|
|
strb r0, [r4]
|
|
b _02063D2C
|
|
_02063D0C:
|
|
ldrb r0, [r4]
|
|
add r0, r0, #1
|
|
strb r0, [r4]
|
|
_02063D12:
|
|
add r0, r5, #0
|
|
bl MapObject_IsSingleMovementActive
|
|
cmp r0, #1
|
|
beq _02063D2C
|
|
ldrb r0, [r4]
|
|
add r0, r0, #1
|
|
strb r0, [r4]
|
|
mov r0, #0
|
|
strb r0, [r4, #2]
|
|
strb r0, [r4, #1]
|
|
_02063D28:
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
_02063D2C:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_02063CB4
|
|
|
|
thumb_func_start sub_02063D30
|
|
sub_02063D30: ; 0x02063D30
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x20
|
|
ldr r3, _02063E4C ; =_020FE0E4
|
|
add r2, sp, #0
|
|
add r7, r0, #0
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
add r0, r7, #0
|
|
bl sub_0205F3BC
|
|
add r4, r0, #0
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #3
|
|
bhi _02063E46
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02063D64: ; jump table
|
|
.short _02063D6C - _02063D64 - 2 ; case 0
|
|
.short _02063DB2 - _02063D64 - 2 ; case 1
|
|
.short _02063DD8 - _02063D64 - 2 ; case 2
|
|
.short _02063DEE - _02063D64 - 2 ; case 3
|
|
_02063D6C:
|
|
add r0, r7, #0
|
|
bl MapObject_GetFacingDirection
|
|
mov r5, #0
|
|
add r6, r0, #0
|
|
add r1, r5, #0
|
|
add r0, sp, #0
|
|
mov r2, #5
|
|
b _02063D82
|
|
_02063D7E:
|
|
add r1, r1, #4
|
|
add r5, r5, #1
|
|
_02063D82:
|
|
cmp r5, #4
|
|
bge _02063D92
|
|
ldrsb r3, [r4, r2]
|
|
lsl r3, r3, #4
|
|
add r3, r0, r3
|
|
ldr r3, [r1, r3]
|
|
cmp r6, r3
|
|
bne _02063D7E
|
|
_02063D92:
|
|
cmp r5, #4
|
|
blt _02063D9A
|
|
bl GF_AssertFail
|
|
_02063D9A:
|
|
add r0, r5, #1
|
|
lsr r2, r0, #0x1f
|
|
lsl r1, r0, #0x1e
|
|
sub r1, r1, r2
|
|
mov r0, #0x1e
|
|
ror r1, r0
|
|
strb r6, [r4, #4]
|
|
add r0, r2, r1
|
|
strb r0, [r4, #6]
|
|
ldrb r0, [r4, #1]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #1]
|
|
_02063DB2:
|
|
mov r0, #5
|
|
ldrsb r0, [r4, r0]
|
|
add r2, sp, #0
|
|
lsl r3, r0, #4
|
|
mov r0, #6
|
|
ldrsb r0, [r4, r0]
|
|
lsl r1, r0, #2
|
|
add r0, r2, r3
|
|
ldr r0, [r1, r0]
|
|
mov r1, #0
|
|
bl sub_0206234C
|
|
add r1, r0, #0
|
|
add r0, r7, #0
|
|
bl MapObject_ForceSetHeldMovement
|
|
ldrb r0, [r4, #1]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #1]
|
|
_02063DD8:
|
|
add r0, r7, #0
|
|
bl sub_02062428
|
|
cmp r0, #0
|
|
bne _02063DE8
|
|
add sp, #0x20
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02063DE8:
|
|
ldrb r0, [r4, #1]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #1]
|
|
_02063DEE:
|
|
mov r0, #8
|
|
ldrsb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #8]
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #8
|
|
bge _02063E02
|
|
add sp, #0x20
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02063E02:
|
|
mov r0, #0
|
|
strb r0, [r4, #8]
|
|
mov r0, #7
|
|
ldrsb r1, [r4, r0]
|
|
add r1, r1, #1
|
|
strb r1, [r4, #7]
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, #4
|
|
bge _02063E30
|
|
mov r0, #6
|
|
ldrsb r0, [r4, r0]
|
|
add sp, #0x20
|
|
add r0, r0, #1
|
|
lsr r2, r0, #0x1f
|
|
lsl r1, r0, #0x1e
|
|
sub r1, r1, r2
|
|
mov r0, #0x1e
|
|
ror r1, r0
|
|
add r0, r2, r1
|
|
strb r0, [r4, #6]
|
|
mov r0, #1
|
|
strb r0, [r4, #1]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02063E30:
|
|
mov r1, #4
|
|
ldrsb r1, [r4, r1]
|
|
add r0, r7, #0
|
|
bl MapObject_SetFacingDirection
|
|
ldrb r0, [r4, #1]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #1]
|
|
mov r0, #0
|
|
strb r0, [r4, #7]
|
|
strb r0, [r4]
|
|
_02063E46:
|
|
mov r0, #0
|
|
add sp, #0x20
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_02063E4C: .word _020FE0E4
|
|
thumb_func_end sub_02063D30
|
|
|
|
thumb_func_start sub_02063E50
|
|
sub_02063E50: ; 0x02063E50
|
|
push {r4, lr}
|
|
mov r1, #0x18
|
|
add r4, r0, #0
|
|
bl sub_0205F3E8
|
|
ldr r1, _02063E6C ; =0x00000106
|
|
str r1, [r0]
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
add r0, r4, #0
|
|
bl sub_0205F484
|
|
pop {r4, pc}
|
|
nop
|
|
_02063E6C: .word 0x00000106
|
|
thumb_func_end sub_02063E50
|
|
|
|
thumb_func_start sub_02063E70
|
|
sub_02063E70: ; 0x02063E70
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F394
|
|
add r7, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl MapObject_GetFieldSysPtr
|
|
add r1, r5, #0
|
|
bl sub_02055780
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
bne _02063E9C
|
|
b _02063FDC
|
|
_02063E9C:
|
|
ldr r0, [r4, #8]
|
|
cmp r0, #0
|
|
bne _02063ECC
|
|
add r0, r5, #0
|
|
bl MapObject_GetFieldSysPtr
|
|
add r1, r5, #0
|
|
bl FieldSystem_ApricornTree_TryGetApricorn
|
|
add r1, r6, #0
|
|
bl sub_020640A4
|
|
str r0, [r4]
|
|
ldr r1, [r4]
|
|
add r0, r5, #0
|
|
bl MapObject_SetGfxID
|
|
add r1, r4, #0
|
|
ldr r2, [r4]
|
|
add r0, r5, #0
|
|
add r1, #8
|
|
bl ov01_021F94C0
|
|
b _02063F22
|
|
_02063ECC:
|
|
ldr r0, [r4, #4]
|
|
cmp r6, r0
|
|
beq _02063F22
|
|
add r1, r4, #0
|
|
ldr r2, [r4]
|
|
add r0, r5, #0
|
|
add r1, #8
|
|
bl ov01_021F95CC
|
|
add r0, r5, #0
|
|
bl MapObject_GetFieldSysPtr
|
|
add r1, r5, #0
|
|
bl FieldSystem_ApricornTree_TryGetApricorn
|
|
add r1, r6, #0
|
|
bl sub_020640A4
|
|
str r0, [r4]
|
|
ldr r1, [r4]
|
|
add r0, r5, #0
|
|
bl MapObject_SetGfxID
|
|
ldr r1, [r4]
|
|
ldr r0, _02063FE0 ; =0x0000FFFF
|
|
cmp r1, r0
|
|
beq _02063F1A
|
|
cmp r6, #1
|
|
bne _02063F0C
|
|
add r0, r5, #0
|
|
bl ov01_021FE66C
|
|
_02063F0C:
|
|
add r1, r4, #0
|
|
ldr r2, [r4]
|
|
add r0, r5, #0
|
|
add r1, #8
|
|
bl ov01_021F94C0
|
|
b _02063F1E
|
|
_02063F1A:
|
|
bl GF_AssertFail
|
|
_02063F1E:
|
|
mov r0, #0
|
|
strh r0, [r7, #2]
|
|
_02063F22:
|
|
add r0, r5, #0
|
|
str r6, [r4, #4]
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _02063FDC
|
|
ldr r1, [r4, #8]
|
|
cmp r1, #0
|
|
beq _02063FDC
|
|
add r0, r5, #0
|
|
bl ov01_021FA3E8
|
|
add r0, r5, #0
|
|
bl ov01_021F9344
|
|
cmp r0, #0
|
|
bne _02063FD4
|
|
add r0, r5, #0
|
|
bl sub_0205F330
|
|
cmp r0, #0
|
|
beq _02063F58
|
|
cmp r0, #1
|
|
beq _02063F74
|
|
cmp r0, #2
|
|
beq _02063F90
|
|
b _02063FAC
|
|
_02063F58:
|
|
ldr r0, [r4, #8]
|
|
bl sub_02023EF4
|
|
cmp r0, #0
|
|
beq _02063FCA
|
|
ldr r0, [r4, #8]
|
|
mov r1, #0
|
|
bl sub_02023EE0
|
|
ldr r0, [r4, #8]
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _02063FCA
|
|
_02063F74:
|
|
ldr r0, [r4, #8]
|
|
bl sub_02023EF4
|
|
cmp r0, #1
|
|
beq _02063FCA
|
|
ldr r0, [r4, #8]
|
|
mov r1, #1
|
|
bl sub_02023EE0
|
|
ldr r0, [r4, #8]
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _02063FCA
|
|
_02063F90:
|
|
ldr r0, [r4, #8]
|
|
bl sub_02023EF4
|
|
cmp r0, #2
|
|
beq _02063FCA
|
|
ldr r0, [r4, #8]
|
|
mov r1, #2
|
|
bl sub_02023EE0
|
|
ldr r0, [r4, #8]
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
b _02063FCA
|
|
_02063FAC:
|
|
bl GF_AssertFail
|
|
ldr r0, [r4, #8]
|
|
bl sub_02023EF4
|
|
cmp r0, #0
|
|
beq _02063FCA
|
|
ldr r0, [r4, #8]
|
|
mov r1, #0
|
|
bl sub_02023EE0
|
|
ldr r0, [r4, #8]
|
|
mov r1, #0
|
|
bl sub_02023F40
|
|
_02063FCA:
|
|
mov r1, #1
|
|
ldr r0, [r4, #8]
|
|
lsl r1, r1, #0xc
|
|
bl sub_02023F04
|
|
_02063FD4:
|
|
ldr r1, [r4, #8]
|
|
add r0, r5, #0
|
|
bl ov01_021FA40C
|
|
_02063FDC:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_02063FE0: .word 0x0000FFFF
|
|
thumb_func_end sub_02063E70
|
|
|
|
thumb_func_start sub_02063FE4
|
|
sub_02063FE4: ; 0x02063FE4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl sub_0205F40C
|
|
add r2, r0, #0
|
|
add r1, r2, #0
|
|
ldr r2, [r2]
|
|
add r0, r4, #0
|
|
add r1, #8
|
|
bl ov01_021F95CC
|
|
pop {r4, pc}
|
|
thumb_func_end sub_02063FE4
|
|
|
|
thumb_func_start sub_02063FFC
|
|
sub_02063FFC: ; 0x02063FFC
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #8]
|
|
cmp r0, #0
|
|
beq _02064014
|
|
add r1, r4, #0
|
|
add r1, #0xc
|
|
bl ov01_021F9610
|
|
_02064014:
|
|
add r1, r4, #0
|
|
ldr r2, [r4]
|
|
add r0, r5, #0
|
|
add r1, #8
|
|
bl ov01_021F95CC
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x14
|
|
bl MapObject_SetFlagsBits
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_02063FFC
|
|
|
|
thumb_func_start sub_0206402C
|
|
sub_0206402C: ; 0x0206402C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl sub_0205F40C
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
beq _0206407E
|
|
ldr r0, [r4, #8]
|
|
cmp r0, #0
|
|
bne _0206405E
|
|
ldr r2, [r4]
|
|
ldr r0, _02064080 ; =0x0000FFFF
|
|
cmp r2, r0
|
|
beq _0206405A
|
|
add r1, r4, #0
|
|
add r0, r5, #0
|
|
add r1, #8
|
|
bl ov01_021F94C0
|
|
b _0206405E
|
|
_0206405A:
|
|
bl GF_AssertFail
|
|
_0206405E:
|
|
ldr r0, [r4, #8]
|
|
cmp r0, #0
|
|
beq _0206407E
|
|
add r1, r4, #0
|
|
add r1, #0xc
|
|
bl ov01_021F9630
|
|
ldr r1, [r4, #8]
|
|
add r0, r5, #0
|
|
bl ov01_021FA3E8
|
|
mov r1, #2
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x14
|
|
bl MapObject_ClearFlagsBits
|
|
_0206407E:
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
_02064080: .word 0x0000FFFF
|
|
thumb_func_end sub_0206402C
|
|
|
|
thumb_func_start sub_02064084
|
|
sub_02064084: ; 0x02064084
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl ov01_021FA2D4
|
|
cmp r0, #1
|
|
bne _02064098
|
|
bl GF_AssertFail
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_02064098:
|
|
add r0, r4, #0
|
|
bl sub_0205F40C
|
|
ldr r0, [r0, #8]
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02064084
|
|
|
|
thumb_func_start sub_020640A4
|
|
sub_020640A4: ; 0x020640A4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
cmp r1, #0
|
|
bne _020640B0
|
|
ldr r0, _020640C0 ; =0x00000106
|
|
pop {r4, pc}
|
|
_020640B0:
|
|
cmp r4, #0
|
|
bne _020640B8
|
|
bl GF_AssertFail
|
|
_020640B8:
|
|
ldr r0, _020640C4 ; =ov01_02207274
|
|
lsl r1, r4, #2
|
|
ldr r0, [r0, r1]
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_020640C0: .word 0x00000106
|
|
_020640C4: .word ov01_02207274
|
|
thumb_func_end sub_020640A4
|
|
|
|
thumb_func_start TryGetSeenByNpcTrainers
|
|
TryGetSeenByNpcTrainers: ; 0x020640C8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x58
|
|
add r5, r0, #0
|
|
ldr r7, [r5, #0x40]
|
|
add r4, r1, #0
|
|
ldr r6, [r5, #0x3c]
|
|
add r1, sp, #0x40
|
|
str r1, [sp]
|
|
add r1, r6, #0
|
|
add r2, r7, #0
|
|
mov r3, #0
|
|
bl CheckSeenByNpcTrainers
|
|
cmp r0, #0
|
|
bne _020640EC
|
|
add sp, #0x58
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_020640EC:
|
|
ldr r0, [sp, #0x50]
|
|
cmp r0, #0
|
|
bne _02064172
|
|
ldr r1, _020641E8 ; =std_trainer_approach
|
|
ldr r2, [sp, #0x54]
|
|
add r0, r5, #0
|
|
bl StartMapSceneScript
|
|
cmp r4, #0
|
|
beq _02064114
|
|
add r0, sp, #0x28
|
|
str r0, [sp]
|
|
ldr r3, [sp, #0x54]
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
add r2, r7, #0
|
|
bl CheckSeenByNpcTrainers
|
|
cmp r0, #0
|
|
bne _02064134
|
|
_02064114:
|
|
ldr r0, [sp, #0x48]
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0x4c]
|
|
str r0, [sp, #4]
|
|
mov r0, #0
|
|
str r0, [sp, #8]
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x54]
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [sp, #0x44]
|
|
add r0, r5, #0
|
|
bl FieldSystem_SetEngagedTrainer
|
|
add sp, #0x58
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02064134:
|
|
ldr r0, [sp, #0x48]
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0x4c]
|
|
str r0, [sp, #4]
|
|
mov r0, #2
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x54]
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [sp, #0x44]
|
|
add r0, r5, #0
|
|
bl FieldSystem_SetEngagedTrainer
|
|
ldr r0, [sp, #0x30]
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0x34]
|
|
str r0, [sp, #4]
|
|
mov r0, #2
|
|
str r0, [sp, #8]
|
|
mov r0, #1
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x3c]
|
|
ldr r2, [sp, #0x28]
|
|
ldr r3, [sp, #0x2c]
|
|
add r0, r5, #0
|
|
bl FieldSystem_SetEngagedTrainer
|
|
add sp, #0x58
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02064172:
|
|
cmp r0, #1
|
|
bne _020641DE
|
|
cmp r4, #0
|
|
bne _02064180
|
|
add sp, #0x58
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02064180:
|
|
ldr r2, [sp, #0x54]
|
|
ldr r3, [sp, #0x4c]
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
bl sub_02064520
|
|
add r1, r0, #0
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [sp, #0x44]
|
|
add r0, sp, #0x10
|
|
bl GetEngagingTrainerParams
|
|
ldr r1, _020641E8 ; =std_trainer_approach
|
|
ldr r2, [sp, #0x54]
|
|
add r0, r5, #0
|
|
bl StartMapSceneScript
|
|
ldr r0, [sp, #0x48]
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0x4c]
|
|
str r0, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x54]
|
|
ldr r2, [sp, #0x40]
|
|
ldr r3, [sp, #0x44]
|
|
add r0, r5, #0
|
|
bl FieldSystem_SetEngagedTrainer
|
|
ldr r0, [sp, #0x18]
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0x1c]
|
|
str r0, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
str r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x24]
|
|
ldr r2, [sp, #0x10]
|
|
ldr r3, [sp, #0x14]
|
|
add r0, r5, #0
|
|
bl FieldSystem_SetEngagedTrainer
|
|
add sp, #0x58
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_020641DE:
|
|
bl GF_AssertFail
|
|
mov r0, #0
|
|
add sp, #0x58
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_020641E8: .word std_trainer_approach
|
|
thumb_func_end TryGetSeenByNpcTrainers
|
|
|
|
thumb_func_start CheckSeenByNpcTrainers
|
|
CheckSeenByNpcTrainers: ; 0x020641EC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
add r6, r1, #0
|
|
add r7, r2, #0
|
|
add r4, r3, #0
|
|
str r0, [sp, #0xc]
|
|
str r0, [sp, #4]
|
|
add r0, r6, #0
|
|
add r1, sp, #4
|
|
add r2, sp, #0xc
|
|
mov r3, #1
|
|
bl sub_0205EEF4
|
|
cmp r0, #0
|
|
beq _02064264
|
|
_0206420E:
|
|
cmp r4, #0
|
|
beq _02064218
|
|
ldr r0, [sp, #4]
|
|
cmp r4, r0
|
|
beq _02064254
|
|
_02064218:
|
|
ldr r0, [sp, #4]
|
|
add r1, r7, #0
|
|
add r2, sp, #8
|
|
bl sub_020642C4
|
|
mov r1, #0
|
|
mvn r1, r1
|
|
str r0, [sp]
|
|
cmp r0, r1
|
|
beq _02064254
|
|
ldr r0, [sp, #4]
|
|
bl MapObject_GetTrainerNum
|
|
add r1, r0, #0
|
|
lsl r1, r1, #0x10
|
|
ldr r0, [r5, #0xc]
|
|
lsr r1, r1, #0x10
|
|
bl TrainerFlagCheck
|
|
cmp r0, #0
|
|
bne _02064254
|
|
ldr r0, [sp, #0x28]
|
|
ldr r1, [sp, #4]
|
|
ldr r2, [sp]
|
|
ldr r3, [sp, #8]
|
|
bl GetEngagingTrainerParams
|
|
add sp, #0x10
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02064254:
|
|
add r0, r6, #0
|
|
add r1, sp, #4
|
|
add r2, sp, #0xc
|
|
mov r3, #1
|
|
bl sub_0205EEF4
|
|
cmp r0, #0
|
|
bne _0206420E
|
|
_02064264:
|
|
mov r0, #0
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end CheckSeenByNpcTrainers
|
|
|
|
thumb_func_start GetEngagingTrainerParams
|
|
GetEngagingTrainerParams: ; 0x0206426C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
add r4, r1, #0
|
|
str r2, [r5]
|
|
str r3, [r5, #4]
|
|
add r0, r4, #0
|
|
bl MapObject_GetScript
|
|
str r0, [r5, #8]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl ScriptNumToTrainerNum
|
|
str r0, [r5, #0xc]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl TrainerNumIsDouble
|
|
str r0, [r5, #0x10]
|
|
str r4, [r5, #0x14]
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end GetEngagingTrainerParams
|
|
|
|
thumb_func_start sub_02064298
|
|
sub_02064298: ; 0x02064298
|
|
push {r3, lr}
|
|
bl MapObject_GetType
|
|
cmp r0, #8
|
|
bhi _020642C2
|
|
add r1, r0, r0
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_020642AE: ; jump table
|
|
.short _020642C2 - _020642AE - 2 ; case 0
|
|
.short _020642C2 - _020642AE - 2 ; case 1
|
|
.short _020642C2 - _020642AE - 2 ; case 2
|
|
.short _020642C2 - _020642AE - 2 ; case 3
|
|
.short _020642C0 - _020642AE - 2 ; case 4
|
|
.short _020642C0 - _020642AE - 2 ; case 5
|
|
.short _020642C0 - _020642AE - 2 ; case 6
|
|
.short _020642C0 - _020642AE - 2 ; case 7
|
|
.short _020642C0 - _020642AE - 2 ; case 8
|
|
_020642C0:
|
|
mov r0, #1
|
|
_020642C2:
|
|
pop {r3, pc}
|
|
thumb_func_end sub_02064298
|
|
|
|
thumb_func_start sub_020642C4
|
|
sub_020642C4: ; 0x020642C4
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
add r5, r0, #0
|
|
add r4, r1, #0
|
|
str r2, [sp, #8]
|
|
bl sub_02064298
|
|
cmp r0, #1
|
|
bne _02064332
|
|
add r0, r4, #0
|
|
bl GetPlayerXCoord
|
|
add r7, r0, #0
|
|
add r0, r4, #0
|
|
bl GetPlayerYCoord
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
bl MapObject_GetFacingDirection
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl MapObject_GetParam
|
|
add r2, r0, #0
|
|
str r6, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
add r3, r7, #0
|
|
bl sub_0206439C
|
|
add r6, r0, #0
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
cmp r6, r0
|
|
beq _0206432A
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl sub_02064468
|
|
cmp r0, #0
|
|
bne _0206432A
|
|
ldr r0, [sp, #8]
|
|
add sp, #0x14
|
|
str r4, [r0]
|
|
add r0, r6, #0
|
|
pop {r4, r5, r6, r7, pc}
|
|
_0206432A:
|
|
mov r0, #0
|
|
add sp, #0x14
|
|
mvn r0, r0
|
|
pop {r4, r5, r6, r7, pc}
|
|
_02064332:
|
|
cmp r0, #2
|
|
bne _02064394
|
|
add r0, r4, #0
|
|
bl GetPlayerXCoord
|
|
str r0, [sp, #0x10]
|
|
add r0, r4, #0
|
|
bl GetPlayerYCoord
|
|
add r7, r0, #0
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
bl MapObject_GetParam
|
|
str r0, [sp, #0xc]
|
|
mov r4, #0
|
|
_02064352:
|
|
str r7, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
ldr r2, [sp, #0xc]
|
|
ldr r3, [sp, #0x10]
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
bl sub_0206439C
|
|
add r6, r0, #0
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
cmp r6, r0
|
|
beq _02064386
|
|
add r0, r5, #0
|
|
add r1, r4, #0
|
|
add r2, r6, #0
|
|
bl sub_02064468
|
|
cmp r0, #0
|
|
bne _02064386
|
|
ldr r0, [sp, #8]
|
|
add sp, #0x14
|
|
str r4, [r0]
|
|
add r0, r6, #0
|
|
pop {r4, r5, r6, r7, pc}
|
|
_02064386:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _02064352
|
|
mov r0, #0
|
|
add sp, #0x14
|
|
mvn r0, r0
|
|
pop {r4, r5, r6, r7, pc}
|
|
_02064394:
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_020642C4
|
|
|
|
thumb_func_start sub_0206439C
|
|
sub_0206439C: ; 0x0206439C
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
ldr r1, [sp, #0x14]
|
|
lsl r5, r4, #2
|
|
ldr r4, _020643B4 ; =_020FE194
|
|
str r1, [sp]
|
|
add r1, r2, #0
|
|
add r2, r3, #0
|
|
ldr r3, [sp, #0x10]
|
|
ldr r4, [r4, r5]
|
|
blx r4
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
_020643B4: .word _020FE194
|
|
thumb_func_end sub_0206439C
|
|
|
|
thumb_func_start sub_020643B8
|
|
sub_020643B8: ; 0x020643B8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
add r5, r1, #0
|
|
add r6, r2, #0
|
|
add r4, r3, #0
|
|
bl MapObject_GetCurrentX
|
|
cmp r0, r6
|
|
bne _020643DE
|
|
add r0, r7, #0
|
|
bl MapObject_GetCurrentY
|
|
cmp r4, r0
|
|
bge _020643DE
|
|
sub r1, r0, r5
|
|
cmp r4, r1
|
|
blt _020643DE
|
|
sub r0, r0, r4
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_020643DE:
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_020643B8
|
|
|
|
thumb_func_start sub_020643E4
|
|
sub_020643E4: ; 0x020643E4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
add r5, r1, #0
|
|
add r6, r2, #0
|
|
add r4, r3, #0
|
|
bl MapObject_GetCurrentX
|
|
cmp r0, r6
|
|
bne _0206440A
|
|
add r0, r7, #0
|
|
bl MapObject_GetCurrentY
|
|
cmp r4, r0
|
|
ble _0206440A
|
|
add r1, r0, r5
|
|
cmp r4, r1
|
|
bgt _0206440A
|
|
sub r0, r4, r0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_0206440A:
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_020643E4
|
|
|
|
thumb_func_start sub_02064410
|
|
sub_02064410: ; 0x02064410
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
add r6, r1, #0
|
|
add r5, r2, #0
|
|
add r4, r3, #0
|
|
bl MapObject_GetCurrentY
|
|
cmp r0, r4
|
|
bne _02064436
|
|
add r0, r7, #0
|
|
bl MapObject_GetCurrentX
|
|
cmp r5, r0
|
|
bge _02064436
|
|
sub r1, r0, r6
|
|
cmp r5, r1
|
|
blt _02064436
|
|
sub r0, r0, r5
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02064436:
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_02064410
|
|
|
|
thumb_func_start sub_0206443C
|
|
sub_0206443C: ; 0x0206443C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
add r6, r1, #0
|
|
add r5, r2, #0
|
|
add r4, r3, #0
|
|
bl MapObject_GetCurrentY
|
|
cmp r0, r4
|
|
bne _02064462
|
|
add r0, r7, #0
|
|
bl MapObject_GetCurrentX
|
|
cmp r5, r0
|
|
ble _02064462
|
|
add r1, r0, r6
|
|
cmp r5, r1
|
|
bgt _02064462
|
|
sub r0, r5, r0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02064462:
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_0206443C
|
|
|
|
thumb_func_start sub_02064468
|
|
sub_02064468: ; 0x02064468
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x18
|
|
add r5, r1, #0
|
|
str r0, [sp, #4]
|
|
str r2, [sp, #8]
|
|
cmp r2, #0
|
|
bne _0206447C
|
|
add sp, #0x18
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_0206447C:
|
|
bl MapObject_GetCurrentX
|
|
add r4, r0, #0
|
|
ldr r0, [sp, #4]
|
|
bl MapObject_GetCurrentY
|
|
add r7, r0, #0
|
|
ldr r0, [sp, #4]
|
|
bl MapObject_GetCurrentHeight
|
|
str r0, [sp, #0xc]
|
|
add r0, r5, #0
|
|
bl GetDeltaXByFacingDirection
|
|
add r6, r4, r0
|
|
add r0, r5, #0
|
|
bl GetDeltaYByFacingDirection
|
|
add r4, r7, r0
|
|
ldr r0, [sp, #8]
|
|
mov r7, #0
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x10]
|
|
cmp r0, #0
|
|
ble _020644E4
|
|
mov r0, #1
|
|
str r0, [sp, #0x14]
|
|
_020644B2:
|
|
ldr r0, [sp, #4]
|
|
ldr r2, [sp, #0xc]
|
|
add r1, r6, #0
|
|
add r3, r4, #0
|
|
str r5, [sp]
|
|
bl sub_02060B90
|
|
ldr r1, [sp, #0x14]
|
|
bic r0, r1
|
|
beq _020644CC
|
|
add sp, #0x18
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_020644CC:
|
|
add r0, r5, #0
|
|
bl GetDeltaXByFacingDirection
|
|
add r6, r6, r0
|
|
add r0, r5, #0
|
|
bl GetDeltaYByFacingDirection
|
|
add r4, r4, r0
|
|
ldr r0, [sp, #0x10]
|
|
add r7, r7, #1
|
|
cmp r7, r0
|
|
blt _020644B2
|
|
_020644E4:
|
|
ldr r0, [sp, #4]
|
|
ldr r2, [sp, #0xc]
|
|
add r1, r6, #0
|
|
add r3, r4, #0
|
|
str r5, [sp]
|
|
bl sub_02060B90
|
|
mov r1, #1
|
|
bic r0, r1
|
|
cmp r0, #4
|
|
bne _02064500
|
|
add sp, #0x18
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02064500:
|
|
mov r0, #1
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02064468
|
|
|
|
thumb_func_start MapObject_GetTrainerNum
|
|
MapObject_GetTrainerNum: ; 0x02064508
|
|
push {r3, lr}
|
|
bl MapObject_GetScript
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl ScriptNumToTrainerNum
|
|
pop {r3, pc}
|
|
thumb_func_end MapObject_GetTrainerNum
|
|
|
|
thumb_func_start sub_02064518
|
|
sub_02064518: ; 0x02064518
|
|
ldr r3, _0206451C ; =MapObject_GetTrainerNum
|
|
bx r3
|
|
.balign 4, 0
|
|
_0206451C: .word MapObject_GetTrainerNum
|
|
thumb_func_end sub_02064518
|
|
|
|
thumb_func_start sub_02064520
|
|
sub_02064520: ; 0x02064520
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r5, r1, #0
|
|
mov r0, #0
|
|
add r4, r2, #0
|
|
add r6, r3, #0
|
|
str r0, [sp, #4]
|
|
add r0, r5, #0
|
|
add r1, sp, #0
|
|
add r2, sp, #4
|
|
mov r3, #1
|
|
bl sub_0205EEF4
|
|
cmp r0, #0
|
|
beq _02064570
|
|
add r7, sp, #0
|
|
_02064540:
|
|
ldr r0, [sp]
|
|
cmp r0, r4
|
|
beq _02064560
|
|
bl sub_02064298
|
|
sub r0, r0, #1
|
|
cmp r0, #1
|
|
bhi _02064560
|
|
ldr r0, [sp]
|
|
bl MapObject_GetTrainerNum
|
|
cmp r6, r0
|
|
bne _02064560
|
|
ldr r0, [sp]
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_02064560:
|
|
add r0, r5, #0
|
|
add r1, r7, #0
|
|
add r2, sp, #4
|
|
mov r3, #1
|
|
bl sub_0205EEF4
|
|
cmp r0, #0
|
|
bne _02064540
|
|
_02064570:
|
|
bl GF_AssertFail
|
|
mov r0, #0
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02064520
|
|
|
|
thumb_func_start sub_0206457C
|
|
sub_0206457C: ; 0x0206457C
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
ldr r4, [sp, #0x18]
|
|
str r4, [sp]
|
|
ldr r4, [sp, #0x1c]
|
|
str r4, [sp, #4]
|
|
ldr r4, [sp, #0x20]
|
|
str r4, [sp, #8]
|
|
ldr r4, [sp, #0x24]
|
|
str r4, [sp, #0xc]
|
|
bl sub_020645B4
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
thumb_func_end sub_0206457C
|
|
|
|
thumb_func_start sub_02064598
|
|
sub_02064598: ; 0x02064598
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bne _020645A2
|
|
bl GF_AssertFail
|
|
_020645A2:
|
|
add r0, r4, #0
|
|
bl sub_0206460C
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02064598
|
|
|
|
thumb_func_start sub_020645AC
|
|
sub_020645AC: ; 0x020645AC
|
|
ldr r3, _020645B0 ; =sub_02064618
|
|
bx r3
|
|
.balign 4, 0
|
|
_020645B0: .word sub_02064618
|
|
thumb_func_end sub_020645AC
|
|
|
|
thumb_func_start sub_020645B4
|
|
sub_020645B4: ; 0x020645B4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
add r6, r1, #0
|
|
mov r0, #4
|
|
mov r1, #0x30
|
|
add r7, r2, #0
|
|
str r3, [sp]
|
|
bl AllocFromHeapAtEnd
|
|
add r4, r0, #0
|
|
bne _020645CE
|
|
bl GF_AssertFail
|
|
_020645CE:
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
mov r2, #0x30
|
|
bl memset
|
|
ldr r0, [sp]
|
|
add r1, r4, #0
|
|
str r0, [r4, #8]
|
|
ldr r0, [sp, #0x18]
|
|
mov r2, #0xff
|
|
str r0, [r4, #0xc]
|
|
ldr r0, [sp, #0x1c]
|
|
str r0, [r4, #0x10]
|
|
ldr r0, [sp, #0x20]
|
|
str r0, [r4, #0x14]
|
|
ldr r0, [sp, #0x24]
|
|
str r0, [r4, #0x18]
|
|
str r5, [r4, #0x2c]
|
|
str r6, [r4, #0x24]
|
|
ldr r0, _02064608 ; =sub_02064630
|
|
str r7, [r4, #0x28]
|
|
bl SysTask_CreateOnMainQueue
|
|
add r4, r0, #0
|
|
bne _02064604
|
|
bl GF_AssertFail
|
|
_02064604:
|
|
add r0, r4, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_02064608: .word sub_02064630
|
|
thumb_func_end sub_020645B4
|
|
|
|
thumb_func_start sub_0206460C
|
|
sub_0206460C: ; 0x0206460C
|
|
push {r3, lr}
|
|
bl SysTask_GetData
|
|
ldr r0, [r0, #4]
|
|
pop {r3, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_0206460C
|
|
|
|
thumb_func_start sub_02064618
|
|
sub_02064618: ; 0x02064618
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl SysTask_GetData
|
|
add r1, r0, #0
|
|
mov r0, #4
|
|
bl FreeToHeapExplicit
|
|
add r0, r4, #0
|
|
bl SysTask_Destroy
|
|
pop {r4, pc}
|
|
thumb_func_end sub_02064618
|
|
|
|
thumb_func_start sub_02064630
|
|
sub_02064630: ; 0x02064630
|
|
push {r3, r4, r5, lr}
|
|
ldr r4, _02064648 ; =_020FE1A4
|
|
add r5, r1, #0
|
|
_02064636:
|
|
ldr r1, [r5]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #2
|
|
ldr r1, [r4, r1]
|
|
blx r1
|
|
cmp r0, #1
|
|
beq _02064636
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_02064648: .word _020FE1A4
|
|
thumb_func_end sub_02064630
|
|
|
|
thumb_func_start sub_0206464C
|
|
sub_0206464C: ; 0x0206464C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r4, [r5, #0x24]
|
|
add r0, r4, #0
|
|
bl MapObject_IsSingleMovementActive
|
|
cmp r0, #1
|
|
bne _02064662
|
|
add r0, r4, #0
|
|
bl MapObject_UnpauseMovement
|
|
_02064662:
|
|
mov r0, #1
|
|
str r0, [r5]
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_0206464C
|
|
|
|
thumb_func_start sub_02064668
|
|
sub_02064668: ; 0x02064668
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
ldr r5, [r4, #0x24]
|
|
add r0, r5, #0
|
|
bl MapObject_IsSingleMovementActive
|
|
cmp r0, #1
|
|
bne _0206467C
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
_0206467C:
|
|
ldr r0, [r4, #0x24]
|
|
ldr r1, [r4, #8]
|
|
bl ov01_021F9408
|
|
add r0, r5, #0
|
|
mov r1, #0x40
|
|
bl MapObject_SetFlagsBits
|
|
mov r0, #2
|
|
str r0, [r4]
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_02064668
|
|
|
|
thumb_func_start sub_02064694
|
|
sub_02064694: ; 0x02064694
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x28]
|
|
bl PlayerAvatar_GetMapObject
|
|
bl MapObject_IsMovementPaused
|
|
cmp r0, #0
|
|
bne _020646AA
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_020646AA:
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_GetMovement
|
|
sub r0, #0x33
|
|
cmp r0, #3
|
|
bhi _020646D2
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_020646C2: ; jump table
|
|
.short _020646CA - _020646C2 - 2 ; case 0
|
|
.short _020646CA - _020646C2 - 2 ; case 1
|
|
.short _020646CA - _020646C2 - 2 ; case 2
|
|
.short _020646CA - _020646C2 - 2 ; case 3
|
|
_020646CA:
|
|
mov r0, #7
|
|
str r0, [r4]
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
_020646D2:
|
|
mov r0, #3
|
|
str r0, [r4]
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02064694
|
|
|
|
thumb_func_start sub_020646DC
|
|
sub_020646DC: ; 0x020646DC
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_AreBitsSetForMovementScriptInit
|
|
cmp r0, #0
|
|
bne _020646EE
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_020646EE:
|
|
mov r0, #0
|
|
ldr r1, [r4, #8]
|
|
mvn r0, r0
|
|
cmp r1, r0
|
|
bne _020646FC
|
|
bl GF_AssertFail
|
|
_020646FC:
|
|
ldr r0, [r4, #8]
|
|
mov r1, #0
|
|
bl sub_0206234C
|
|
add r1, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_SetHeldMovement
|
|
mov r0, #4
|
|
str r0, [r4]
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
thumb_func_end sub_020646DC
|
|
|
|
thumb_func_start sub_02064714
|
|
sub_02064714: ; 0x02064714
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_IsMovementPaused
|
|
cmp r0, #0
|
|
bne _02064726
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_02064726:
|
|
mov r0, #5
|
|
str r0, [r4]
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02064714
|
|
|
|
thumb_func_start sub_02064730
|
|
sub_02064730: ; 0x02064730
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r1, #0
|
|
ldr r0, [r4, #0x24]
|
|
add r2, r1, #0
|
|
bl ov01_02200540
|
|
str r0, [r4, #0x20]
|
|
mov r0, #6
|
|
str r0, [r4]
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
thumb_func_end sub_02064730
|
|
|
|
thumb_func_start sub_02064748
|
|
sub_02064748: ; 0x02064748
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x20]
|
|
bl ov01_022003F4
|
|
cmp r0, #1
|
|
bne _02064760
|
|
ldr r0, [r4, #0x20]
|
|
bl sub_02068B48
|
|
mov r0, #9
|
|
str r0, [r4]
|
|
_02064760:
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
thumb_func_end sub_02064748
|
|
|
|
thumb_func_start sub_02064764
|
|
sub_02064764: ; 0x02064764
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
mov r1, #0x65
|
|
bl MapObject_SetHeldMovement
|
|
mov r0, #8
|
|
str r0, [r4]
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
thumb_func_end sub_02064764
|
|
|
|
thumb_func_start sub_02064778
|
|
sub_02064778: ; 0x02064778
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_IsMovementPaused
|
|
cmp r0, #1
|
|
bne _0206478A
|
|
mov r0, #9
|
|
str r0, [r4]
|
|
_0206478A:
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02064778
|
|
|
|
thumb_func_start sub_02064790
|
|
sub_02064790: ; 0x02064790
|
|
ldr r1, [r0, #0x1c]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x1c]
|
|
cmp r1, #0x1e
|
|
blt _020647A2
|
|
mov r1, #0
|
|
str r1, [r0, #0x1c]
|
|
mov r1, #0xa
|
|
str r1, [r0]
|
|
_020647A2:
|
|
mov r0, #0
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_02064790
|
|
|
|
thumb_func_start sub_020647A8
|
|
sub_020647A8: ; 0x020647A8
|
|
ldr r1, [r0, #0xc]
|
|
cmp r1, #1
|
|
bgt _020647B6
|
|
mov r1, #0xd
|
|
str r1, [r0]
|
|
mov r0, #1
|
|
bx lr
|
|
_020647B6:
|
|
mov r1, #0xb
|
|
str r1, [r0]
|
|
mov r0, #1
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_020647A8
|
|
|
|
thumb_func_start sub_020647C0
|
|
sub_020647C0: ; 0x020647C0
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_AreBitsSetForMovementScriptInit
|
|
cmp r0, #1
|
|
bne _020647E2
|
|
ldr r0, [r4, #8]
|
|
mov r1, #0xc
|
|
bl sub_0206234C
|
|
add r1, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_SetHeldMovement
|
|
mov r0, #0xc
|
|
str r0, [r4]
|
|
_020647E2:
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_020647C0
|
|
|
|
thumb_func_start sub_020647E8
|
|
sub_020647E8: ; 0x020647E8
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_IsMovementPaused
|
|
cmp r0, #0
|
|
bne _020647FA
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_020647FA:
|
|
ldr r0, [r4, #0xc]
|
|
sub r0, r0, #1
|
|
str r0, [r4, #0xc]
|
|
mov r0, #0xa
|
|
str r0, [r4]
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
thumb_func_end sub_020647E8
|
|
|
|
thumb_func_start sub_02064808
|
|
sub_02064808: ; 0x02064808
|
|
ldr r1, [r0, #0x1c]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x1c]
|
|
cmp r1, #8
|
|
bge _02064816
|
|
mov r0, #0
|
|
bx lr
|
|
_02064816:
|
|
mov r1, #0
|
|
str r1, [r0, #0x1c]
|
|
mov r1, #0xe
|
|
str r1, [r0]
|
|
mov r0, #1
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_02064808
|
|
|
|
thumb_func_start sub_02064824
|
|
sub_02064824: ; 0x02064824
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x28]
|
|
bl PlayerAvatar_GetMapObject
|
|
add r4, r0, #0
|
|
bl MapObject_GetCurrentX
|
|
add r6, r0, #0
|
|
add r0, r4, #0
|
|
bl MapObject_GetCurrentY
|
|
add r7, r0, #0
|
|
ldr r0, [r5, #0x24]
|
|
bl MapObject_GetCurrentX
|
|
str r0, [sp]
|
|
ldr r0, [r5, #0x24]
|
|
bl MapObject_GetCurrentY
|
|
add r3, r0, #0
|
|
ldr r2, [sp]
|
|
add r0, r6, #0
|
|
add r1, r7, #0
|
|
bl sub_02061200
|
|
add r6, r0, #0
|
|
ldr r0, [r5, #0x28]
|
|
bl PlayerAvatar_GetFacingDirection
|
|
cmp r6, r0
|
|
beq _02064898
|
|
ldr r0, [r5, #0x18]
|
|
cmp r0, #0
|
|
beq _02064870
|
|
ldr r0, [r5, #0x14]
|
|
cmp r0, #2
|
|
bne _02064898
|
|
_02064870:
|
|
add r0, r4, #0
|
|
bl MapObject_AreBitsSetForMovementScriptInit
|
|
cmp r0, #1
|
|
bne _0206489C
|
|
add r0, r4, #0
|
|
mov r1, #0x80
|
|
bl MapObject_ClearFlagsBits
|
|
add r0, r6, #0
|
|
mov r1, #0
|
|
bl sub_0206234C
|
|
add r1, r0, #0
|
|
add r0, r4, #0
|
|
bl MapObject_SetHeldMovement
|
|
mov r0, #0xf
|
|
str r0, [r5]
|
|
b _0206489C
|
|
_02064898:
|
|
mov r0, #0x10
|
|
str r0, [r5]
|
|
_0206489C:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_02064824
|
|
|
|
thumb_func_start sub_020648A0
|
|
sub_020648A0: ; 0x020648A0
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x28]
|
|
bl PlayerAvatar_GetMapObject
|
|
add r5, r0, #0
|
|
bl MapObject_IsMovementPaused
|
|
cmp r0, #0
|
|
bne _020648B8
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
_020648B8:
|
|
add r0, r5, #0
|
|
bl MapObject_ClearHeldMovementIfActive
|
|
mov r0, #0x10
|
|
str r0, [r4]
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_020648A0
|
|
|
|
thumb_func_start sub_020648C8
|
|
sub_020648C8: ; 0x020648C8
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
bl MapObject_ClearHeldMovementIfActive
|
|
ldr r0, [r4, #0x24]
|
|
mov r1, #0
|
|
bl sub_0205FC94
|
|
mov r0, #0x11
|
|
str r0, [r4]
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_020648C8
|
|
|
|
thumb_func_start sub_020648E4
|
|
sub_020648E4: ; 0x020648E4
|
|
mov r1, #1
|
|
str r1, [r0, #4]
|
|
mov r0, #0
|
|
bx lr
|
|
thumb_func_end sub_020648E4
|
|
|
|
.rodata
|
|
|
|
_020FE0C4:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
_020FE0D4:
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
_020FE0E4:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x00, 0x00, 0x00
|
|
_020FE104:
|
|
.word sub_02063AFC
|
|
.word sub_02063AFC
|
|
.word sub_02063AFC
|
|
.word sub_02063AFC
|
|
.word sub_02063B08
|
|
.word sub_02063C88
|
|
.word sub_02063C88
|
|
.word sub_02063AFC
|
|
.word sub_02063AFC
|
|
.word sub_02063AFC
|
|
.word sub_02063AFC
|
|
.word sub_02063AFC
|
|
_020FE134:
|
|
.word sub_02063B00
|
|
.word sub_02063B00
|
|
.word sub_02063B00
|
|
.word sub_02063B00
|
|
.word sub_02063B20
|
|
.word sub_02063CB4
|
|
.word sub_02063CB4
|
|
.word sub_02063B00
|
|
.word sub_02063B00
|
|
.word sub_02063B00
|
|
.word sub_02063B00
|
|
.word sub_02063B00
|
|
_020FE164:
|
|
.word sub_02063B04
|
|
.word sub_02063B04
|
|
.word sub_02063B04
|
|
.word sub_02063B04
|
|
.word sub_02063B9C
|
|
.word sub_02063D30
|
|
.word sub_02063D30
|
|
.word sub_02063B04
|
|
.word sub_02063B04
|
|
.word sub_02063B04
|
|
.word sub_02063B04
|
|
.word sub_02063B04
|
|
; File boundary?
|
|
_020FE194:
|
|
.word sub_020643B8
|
|
.word sub_020643E4
|
|
.word sub_02064410
|
|
.word sub_0206443C
|
|
_020FE1A4:
|
|
.word sub_0206464C
|
|
.word sub_02064668
|
|
.word sub_02064694
|
|
.word sub_020646DC
|
|
.word sub_02064714
|
|
.word sub_02064730
|
|
.word sub_02064748
|
|
.word sub_02064764
|
|
.word sub_02064778
|
|
.word sub_02064790
|
|
.word sub_020647A8
|
|
.word sub_020647C0
|
|
.word sub_020647E8
|
|
.word sub_02064808
|
|
.word sub_02064824
|
|
.word sub_020648A0
|
|
.word sub_020648C8
|
|
.word sub_020648E4
|