mirror of
https://github.com/pret/pmd-red.git
synced 2024-11-23 13:09:56 +00:00
1857 lines
28 KiB
ArmAsm
1857 lines
28 KiB
ArmAsm
#include "asm/constants/gba_constants.inc"
|
|
#include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start HandleAction
|
|
HandleAction:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x148
|
|
adds r7, r0, 0
|
|
movs r1, 0x26
|
|
ldrsh r0, [r7, r1]
|
|
cmp r0, 0
|
|
bne _0809DA8A
|
|
bl _0809EAB8
|
|
_0809DA8A:
|
|
movs r2, 0x26
|
|
ldrsh r0, [r7, r2]
|
|
cmp r0, 0x4
|
|
bls _0809DA96
|
|
bl _0809E9CC
|
|
_0809DA96:
|
|
lsls r0, 2
|
|
ldr r1, _0809DAA0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0809DAA0: .4byte _0809DAA4
|
|
.align 2, 0
|
|
_0809DAA4:
|
|
.4byte _0809E9C6
|
|
.4byte _0809E9C6
|
|
.4byte _0809DAB8
|
|
.4byte _0809E900
|
|
.4byte _0809E9C6
|
|
_0809DAB8:
|
|
adds r1, r7, 0
|
|
adds r1, 0x44
|
|
ldrb r0, [r1]
|
|
subs r0, 0x3
|
|
adds r6, r1, 0
|
|
cmp r0, 0xED
|
|
bls _0809DACA
|
|
bl _0809E9D6
|
|
_0809DACA:
|
|
lsls r0, 2
|
|
ldr r1, _0809DAD4
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0809DAD4: .4byte _0809DAD8
|
|
.align 2, 0
|
|
_0809DAD8:
|
|
.4byte _0809E382
|
|
.4byte _0809E3C4
|
|
.4byte _0809E524
|
|
.4byte _0809E464
|
|
.4byte _0809E4B4
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809DED6
|
|
.4byte _0809DED6
|
|
.4byte _0809DED6
|
|
.4byte _0809DED6
|
|
.4byte _0809DED6
|
|
.4byte _0809DED6
|
|
.4byte _0809DED6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E308
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E308
|
|
.4byte _0809E308
|
|
.4byte _0809E308
|
|
.4byte _0809E308
|
|
.4byte _0809E308
|
|
.4byte _0809E308
|
|
.4byte _0809E308
|
|
.4byte _0809E308
|
|
.4byte _0809E308
|
|
.4byte _0809E31C
|
|
.4byte _0809E75C
|
|
.4byte _0809E33C
|
|
.4byte _0809E368
|
|
.4byte _0809E658
|
|
.4byte _0809E6B4
|
|
.4byte _0809E6E8
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809E9D6
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809E9D6
|
|
.4byte _0809DE90
|
|
.4byte _0809DF60
|
|
.4byte _0809DF60
|
|
.4byte _0809DF60
|
|
.4byte _0809DF60
|
|
.4byte _0809DF60
|
|
.4byte _0809DF60
|
|
.4byte _0809DF60
|
|
.4byte _0809E0A2
|
|
.4byte _0809DFDC
|
|
.4byte _0809DFDC
|
|
.4byte _0809DFDC
|
|
.4byte _0809DFDC
|
|
.4byte _0809DFDC
|
|
.4byte _0809DFDC
|
|
.4byte _0809DFDC
|
|
.4byte _0809E0A2
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E078
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E08C
|
|
.4byte _0809E0E8
|
|
.4byte _0809E0E8
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809E146
|
|
.4byte _0809E146
|
|
.4byte _0809E146
|
|
.4byte _0809E146
|
|
.4byte _0809E146
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809E9D6
|
|
.4byte _0809E2D0
|
|
.4byte _0809E2D0
|
|
.4byte _0809E2D0
|
|
.4byte _0809E2D0
|
|
.4byte _0809E2D0
|
|
.4byte _0809E2D0
|
|
.4byte _0809E2D0
|
|
.4byte _0809E2D0
|
|
.4byte _0809E2D0
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E798
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E864
|
|
.4byte _0809E864
|
|
.4byte _0809E864
|
|
.4byte _0809E864
|
|
.4byte _0809E864
|
|
.4byte _0809E864
|
|
.4byte _0809E864
|
|
.4byte _0809E9D6
|
|
.4byte _0809E8D8
|
|
.4byte _0809DE90
|
|
.4byte _0809DE90
|
|
.4byte _0809DEA6
|
|
.4byte _0809DEBE
|
|
.4byte _0809DED6
|
|
.4byte _0809DEE8
|
|
.4byte _0809DF24
|
|
.4byte _0809DF24
|
|
.4byte _0809E2DE
|
|
.4byte _0809E9D6
|
|
.4byte _0809E2DE
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9D6
|
|
_0809DE90:
|
|
adds r1, r7, 0
|
|
adds r1, 0x4E
|
|
ldrh r2, [r1]
|
|
movs r3, 0
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
ble _0809DEA2
|
|
bl _0809EAB2
|
|
_0809DEA2:
|
|
bl _0809E8F4
|
|
_0809DEA6:
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldr r1, [r1, 0x4C]
|
|
bl _call_via_r1
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0809DEBA
|
|
bl _0809E9D6
|
|
_0809DEBA:
|
|
bl _0809E8F4
|
|
_0809DEBE:
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldr r1, [r1, 0x50]
|
|
bl _call_via_r1
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0809DED2
|
|
bl _0809E9D6
|
|
_0809DED2:
|
|
bl _0809E8F4
|
|
_0809DED6:
|
|
bl sub_8099B94
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0809DEE4
|
|
bl _0809E9D6
|
|
_0809DEE4:
|
|
bl _0809E8F4
|
|
_0809DEE8:
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r4-r6}
|
|
stm r1!, {r4-r6}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
add r0, sp, 0x4
|
|
ldrh r0, [r0, 0x2]
|
|
bl IsEqualtoBGTrack
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809DF06
|
|
bl _0809E8F4
|
|
_0809DF06:
|
|
adds r2, r7, 0
|
|
adds r2, 0x50
|
|
ldrh r1, [r2]
|
|
adds r0, r1, 0x1
|
|
strh r0, [r2]
|
|
lsls r1, 16
|
|
ldr r0, _0809DF20
|
|
cmp r1, r0
|
|
bgt _0809DF1C
|
|
bl _0809E9D6
|
|
_0809DF1C:
|
|
bl _0809E8F4
|
|
.align 2, 0
|
|
_0809DF20: .4byte 0x2a2f0000
|
|
_0809DF24:
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
add r0, sp, 0x4
|
|
ldrh r0, [r0, 0x2]
|
|
bl IsFanfareSEPlaying_1
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809DF42
|
|
bl _0809E8F4
|
|
_0809DF42:
|
|
adds r2, r7, 0
|
|
adds r2, 0x50
|
|
ldrh r1, [r2]
|
|
adds r0, r1, 0x1
|
|
strh r0, [r2]
|
|
lsls r1, 16
|
|
ldr r0, _0809DF5C
|
|
cmp r1, r0
|
|
bgt _0809DF58
|
|
bl _0809E9D6
|
|
_0809DF58:
|
|
bl _0809E8F4
|
|
.align 2, 0
|
|
_0809DF5C: .4byte 0x0e0f0000
|
|
_0809DF60:
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r5, sp, 0xA4
|
|
ldr r2, [r1, 0xC]
|
|
adds r1, r5, 0
|
|
bl _call_via_r2
|
|
ldr r1, [r7, 0x60]
|
|
ldr r0, [r5]
|
|
subs r1, r0
|
|
add r4, sp, 0xAC
|
|
str r1, [r4]
|
|
ldr r0, [r7, 0x64]
|
|
ldr r1, [r5, 0x4]
|
|
subs r0, r1
|
|
str r0, [r4, 0x4]
|
|
ldr r1, [r7, 0x54]
|
|
adds r0, r4, 0
|
|
bl sub_800290C
|
|
ldr r0, [r4]
|
|
cmp r0, 0
|
|
bne _0809DF98
|
|
ldr r0, [r4, 0x4]
|
|
cmp r0, 0
|
|
bne _0809DF98
|
|
bl _0809E8F4
|
|
_0809DF98:
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldr r2, [r1, 0x48]
|
|
adds r1, r4, 0
|
|
bl _call_via_r2
|
|
movs r1, 0x9
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0809DFB0
|
|
bl _0809E8F4
|
|
_0809DFB0:
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
ldr r2, [r2, 0x30]
|
|
bl _call_via_r2
|
|
adds r2, r7, 0
|
|
adds r2, 0x4E
|
|
ldrh r0, [r2]
|
|
movs r5, 0
|
|
ldrsh r1, [r2, r5]
|
|
cmp r1, 0
|
|
bge _0809DFD0
|
|
bl _0809E9D6
|
|
_0809DFD0:
|
|
cmp r1, 0
|
|
ble _0809DFD8
|
|
bl _0809EAAC
|
|
_0809DFD8:
|
|
bl _0809E8F4
|
|
_0809DFDC:
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r5, sp, 0xB4
|
|
ldr r2, [r1, 0xC]
|
|
adds r1, r5, 0
|
|
bl _call_via_r2
|
|
ldr r1, [r7, 0x60]
|
|
ldr r0, [r5]
|
|
subs r1, r0
|
|
add r4, sp, 0xBC
|
|
str r1, [r4]
|
|
ldr r0, [r7, 0x64]
|
|
ldr r1, [r5, 0x4]
|
|
subs r0, r1
|
|
str r0, [r4, 0x4]
|
|
ldr r1, [r7, 0x54]
|
|
adds r0, r4, 0
|
|
bl sub_800290C
|
|
ldr r0, [r4]
|
|
adds r5, r4, 0
|
|
cmp r0, 0
|
|
bne _0809E016
|
|
ldr r0, [r5, 0x4]
|
|
cmp r0, 0
|
|
bne _0809E016
|
|
bl _0809E8F4
|
|
_0809E016:
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldr r2, [r1, 0x48]
|
|
adds r1, r5, 0
|
|
bl _call_via_r2
|
|
adds r4, r0, 0
|
|
adds r0, r5, 0
|
|
bl VecDirection8Radial
|
|
lsls r0, 24
|
|
adds r2, r7, 0
|
|
adds r2, 0x4A
|
|
asrs r1, r0, 24
|
|
lsrs r0, 24
|
|
strb r0, [r2]
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldr r2, [r2, 0x2C]
|
|
bl _call_via_r2
|
|
movs r0, 0x9
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0809E04C
|
|
bl _0809E8F4
|
|
_0809E04C:
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
ldr r2, [r2, 0x30]
|
|
bl _call_via_r2
|
|
adds r2, r7, 0
|
|
adds r2, 0x4E
|
|
ldrh r0, [r2]
|
|
movs r6, 0
|
|
ldrsh r1, [r2, r6]
|
|
cmp r1, 0
|
|
bge _0809E06C
|
|
bl _0809E9D6
|
|
_0809E06C:
|
|
cmp r1, 0
|
|
ble _0809E074
|
|
bl _0809EAAC
|
|
_0809E074:
|
|
bl _0809E8F4
|
|
_0809E078:
|
|
adds r6, r7, 0
|
|
adds r6, 0x4E
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
ble _0809E088
|
|
bl _0809EA62
|
|
_0809E088:
|
|
bl _0809E8F4
|
|
_0809E08C:
|
|
movs r2, 0x4E
|
|
adds r2, r7
|
|
mov r8, r2
|
|
movs r3, 0
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0
|
|
ble _0809E09E
|
|
bl _0809E9DA
|
|
_0809E09E:
|
|
bl _0809E8F4
|
|
_0809E0A2:
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r4, sp, 0xE4
|
|
add r2, sp, 0xE8
|
|
ldr r3, [r1, 0x10]
|
|
adds r1, r4, 0
|
|
bl _call_via_r3
|
|
ldr r0, [r7, 0x6C]
|
|
ldr r1, [r4]
|
|
subs r0, r1
|
|
adds r2, r4, 0
|
|
cmp r0, 0
|
|
bne _0809E0C2
|
|
bl _0809E8F4
|
|
_0809E0C2:
|
|
ldr r4, [r7, 0x54]
|
|
cmn r0, r4
|
|
bge _0809E0CC
|
|
subs r0, r1, r4
|
|
b _0809E0D4
|
|
_0809E0CC:
|
|
cmp r0, r4
|
|
ble _0809E0D2
|
|
adds r0, r4, 0
|
|
_0809E0D2:
|
|
adds r0, r1, r0
|
|
_0809E0D4:
|
|
str r0, [r2]
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r1, sp, 0xE4
|
|
ldr r1, [r1]
|
|
ldr r2, [r2, 0x28]
|
|
bl _call_via_r2
|
|
bl _0809E9D6
|
|
_0809E0E8:
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r4, sp, 0x14
|
|
ldr r2, [r1, 0x14]
|
|
adds r1, r4, 0
|
|
bl _call_via_r2
|
|
movs r1, 0
|
|
ldrsb r1, [r4, r1]
|
|
ldr r2, [r7, 0x54]
|
|
add r4, sp, 0xEC
|
|
adds r0, r4, 0
|
|
bl SetVecFromDirectionSpeed
|
|
ldr r2, [r4]
|
|
ldr r3, [r4, 0x4]
|
|
add r1, sp, 0xF4
|
|
str r2, [r1]
|
|
str r3, [r1, 0x4]
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldr r2, [r2, 0x48]
|
|
bl _call_via_r2
|
|
movs r1, 0x9
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0809E124
|
|
bl _0809E8F4
|
|
_0809E124:
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
ldr r2, [r2, 0x30]
|
|
bl _call_via_r2
|
|
adds r1, r7, 0
|
|
adds r1, 0x4E
|
|
ldrh r2, [r1]
|
|
movs r4, 0
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, 0
|
|
ble _0809E144
|
|
bl _0809EAB2
|
|
_0809E144:
|
|
b _0809E8F4
|
|
_0809E146:
|
|
adds r1, r7, 0
|
|
adds r1, 0x4E
|
|
ldrh r2, [r1]
|
|
movs r5, 0
|
|
ldrsh r0, [r1, r5]
|
|
mov r10, r1
|
|
cmp r0, 0
|
|
ble _0809E15A
|
|
bl _0809EAB2
|
|
_0809E15A:
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r2,r3,r6}
|
|
stm r1!, {r2,r3,r6}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
movs r4, 0x1
|
|
negs r4, r4
|
|
mov r8, r4
|
|
movs r5, 0
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
mov r4, sp
|
|
adds r4, 0x15
|
|
ldr r2, [r1, 0x14]
|
|
adds r1, r4, 0
|
|
bl _call_via_r2
|
|
add r0, sp, 0x4
|
|
ldrb r0, [r0]
|
|
subs r0, 0x91
|
|
mov r9, r4
|
|
cmp r0, 0x4
|
|
bhi _0809E234
|
|
lsls r0, 2
|
|
ldr r1, _0809E194
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0809E194: .4byte _0809E198
|
|
.align 2, 0
|
|
_0809E198:
|
|
.4byte _0809E1AC
|
|
.4byte _0809E1AC
|
|
.4byte _0809E1BA
|
|
.4byte _0809E1E0
|
|
.4byte _0809E20C
|
|
_0809E1AC:
|
|
adds r0, r7, 0
|
|
adds r0, 0x71
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
mov r8, r0
|
|
b _0809E234
|
|
_0809E1BA:
|
|
ldr r0, [sp, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
bl sub_80A7AE8
|
|
lsls r0, 16
|
|
asrs r4, r0, 16
|
|
cmp r4, 0
|
|
blt _0809E234
|
|
movs r5, 0x1
|
|
add r1, sp, 0xFC
|
|
adds r0, r4, 0
|
|
bl sub_80A8FD8
|
|
add r1, sp, 0x104
|
|
adds r0, r4, 0
|
|
bl sub_80A8F9C
|
|
b _0809E234
|
|
_0809E1E0:
|
|
ldr r0, [sp, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
bl sub_80A7AE8
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
blt _0809E234
|
|
movs r5, 0x1
|
|
add r1, sp, 0xFC
|
|
bl sub_80A8FD8
|
|
ldr r0, _0809E208
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, [r0]
|
|
add r2, sp, 0x104
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
b _0809E234
|
|
.align 2, 0
|
|
_0809E208: .4byte gUnknown_81164DC
|
|
_0809E20C:
|
|
movs r5, 0x1
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r4, sp, 0xFC
|
|
ldr r2, [r1, 0xC]
|
|
adds r1, r4, 0
|
|
bl _call_via_r2
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r1, sp, 0x104
|
|
ldr r2, [r2, 0x8]
|
|
bl _call_via_r2
|
|
ldr r0, [sp, 0x8]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
adds r1, r4, 0
|
|
bl GroundLink_GetPos
|
|
_0809E234:
|
|
cmp r5, 0
|
|
beq _0809E282
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r5, sp, 0x10C
|
|
ldr r2, [r1, 0xC]
|
|
adds r1, r5, 0
|
|
bl _call_via_r2
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r4, sp, 0x114
|
|
ldr r2, [r1, 0x8]
|
|
adds r1, r4, 0
|
|
bl _call_via_r2
|
|
add r6, sp, 0xFC
|
|
add r3, sp, 0x104
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
adds r2, r6, 0
|
|
bl SizedDeltaDirection8
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
mov r8, r0
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r8, r0
|
|
bne _0809E28C
|
|
ldr r3, _0809E2CC
|
|
adds r0, r5, 0
|
|
adds r1, r3, 0
|
|
adds r2, r6, 0
|
|
bl SizedDeltaDirection4
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
mov r8, r0
|
|
_0809E282:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r8, r0
|
|
bne _0809E28C
|
|
b _0809E8F4
|
|
_0809E28C:
|
|
mov r5, r9
|
|
movs r0, 0
|
|
ldrsb r0, [r5, r0]
|
|
cmp r8, r0
|
|
bne _0809E298
|
|
b _0809E8F4
|
|
_0809E298:
|
|
mov r6, r9
|
|
movs r0, 0
|
|
ldrsb r0, [r6, r0]
|
|
add r1, sp, 0x4
|
|
ldrh r2, [r1, 0x2]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r1, r8
|
|
bl sub_8002A70
|
|
adds r1, r7, 0
|
|
adds r1, 0x4A
|
|
strb r0, [r1]
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldrb r1, [r1]
|
|
lsls r1, 24
|
|
asrs r1, 24
|
|
ldr r2, [r2, 0x2C]
|
|
bl _call_via_r2
|
|
add r0, sp, 0x4
|
|
ldrb r0, [r0, 0x1]
|
|
mov r1, r10
|
|
strh r0, [r1]
|
|
b _0809E9CC
|
|
.align 2, 0
|
|
_0809E2CC: .4byte gUnknown_81164DC
|
|
_0809E2D0:
|
|
bl sub_809D234
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0809E2DC
|
|
b _0809E9D6
|
|
_0809E2DC:
|
|
b _0809E8F4
|
|
_0809E2DE:
|
|
adds r0, r7, 0
|
|
adds r0, 0x46
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809E2F0
|
|
b _0809E9D6
|
|
_0809E2F0:
|
|
ldr r1, _0809E304
|
|
adds r0, r7, 0
|
|
adds r0, 0x4C
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
b _0809E8EC
|
|
.align 2, 0
|
|
_0809E304: .4byte gUnlockBranchLabels
|
|
_0809E308:
|
|
adds r0, r7, 0
|
|
adds r0, 0x46
|
|
movs r4, 0
|
|
ldrsh r1, [r0, r4]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809E31A
|
|
b _0809E9D6
|
|
_0809E31A:
|
|
b _0809E8CA
|
|
_0809E31C:
|
|
adds r0, r7, 0
|
|
adds r0, 0x46
|
|
movs r5, 0
|
|
ldrsh r1, [r0, r5]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809E32E
|
|
b _0809E9D6
|
|
_0809E32E:
|
|
bl sub_8099B94
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0809E33A
|
|
b _0809E9D6
|
|
_0809E33A:
|
|
b _0809E8CA
|
|
_0809E33C:
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r2,r3,r6}
|
|
stm r1!, {r2,r3,r6}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
add r0, sp, 0x4
|
|
ldrb r1, [r0, 0x1]
|
|
movs r4, 0x2
|
|
ldrsh r2, [r0, r4]
|
|
ldr r3, [sp, 0x8]
|
|
adds r0, r7, 0
|
|
bl sub_80A14E8
|
|
adds r1, r0, 0
|
|
cmp r1, 0
|
|
bge _0809E360
|
|
b _0809E9D6
|
|
_0809E360:
|
|
movs r0, 0x3
|
|
strh r0, [r7, 0x26]
|
|
adds r0, r7, 0
|
|
b _0809E60C
|
|
_0809E368:
|
|
add r0, sp, 0x11C
|
|
bl sub_809B260
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E376
|
|
b _0809E9D6
|
|
_0809E376:
|
|
add r0, sp, 0x11C
|
|
ldr r1, [r0]
|
|
adds r0, r7, 0
|
|
bl ResolveJump
|
|
b _0809E8C8
|
|
_0809E382:
|
|
add r0, sp, 0x120
|
|
bl sub_809B260
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E390
|
|
b _0809E9D6
|
|
_0809E390:
|
|
add r4, sp, 0x120
|
|
ldr r0, [r4]
|
|
cmp r0, 0
|
|
blt _0809E3BA
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r2,r5,r6}
|
|
stm r1!, {r2,r5,r6}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldrb r0, [r4]
|
|
bl sub_8002694
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
add r1, sp, 0x4
|
|
movs r3, 0x2
|
|
ldrsh r2, [r1, r3]
|
|
movs r1, 0
|
|
bl GroundMainGroundRequest
|
|
_0809E3BA:
|
|
ldr r1, [r4]
|
|
adds r0, r7, 0
|
|
bl ResolveJump
|
|
b _0809E8C8
|
|
_0809E3C4:
|
|
adds r4, r7, 0
|
|
adds r4, 0x4C
|
|
movs r5, 0
|
|
ldrsh r0, [r4, r5]
|
|
cmp r0, 0
|
|
bne _0809E40C
|
|
add r0, sp, 0x124
|
|
bl sub_809B260
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E3DE
|
|
b _0809E9D6
|
|
_0809E3DE:
|
|
add r0, sp, 0x124
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
blt _0809E400
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
bl sub_80A26B8
|
|
adds r2, r0, 0
|
|
lsls r2, 16
|
|
asrs r2, 16
|
|
movs r0, 0
|
|
movs r1, 0x12
|
|
bl SetScriptVarValue
|
|
movs r0, 0x1
|
|
b _0809E402
|
|
_0809E400:
|
|
ldr r0, _0809E408
|
|
_0809E402:
|
|
strh r0, [r4]
|
|
b _0809E8CE
|
|
.align 2, 0
|
|
_0809E408: .4byte 0x0000ffff
|
|
_0809E40C:
|
|
cmp r0, 0x1
|
|
bne _0809E464
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
movs r0, 0
|
|
movs r1, 0x12
|
|
bl GetScriptVarValue
|
|
adds r2, r0, 0
|
|
lsls r2, 16
|
|
asrs r4, r2, 16
|
|
lsrs r2, 16
|
|
movs r0, 0
|
|
movs r1, 0x30
|
|
bl GetScriptVarArrayValue
|
|
cmp r4, 0x13
|
|
bne _0809E43C
|
|
cmp r0, 0
|
|
beq _0809E45A
|
|
_0809E43C:
|
|
add r0, sp, 0x4
|
|
movs r5, 0x2
|
|
ldrsh r0, [r0, r5]
|
|
bl sub_8098DCC
|
|
adds r0, r7, 0
|
|
movs r1, 0
|
|
bl ResolveJump
|
|
str r0, [r7, 0x28]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_80A87AC
|
|
b _0809E8F4
|
|
_0809E45A:
|
|
movs r0, 0
|
|
movs r1, 0x13
|
|
movs r2, 0x13
|
|
bl SetScriptVarValue
|
|
_0809E464:
|
|
adds r0, r7, 0
|
|
adds r0, 0x4C
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
adds r5, r0, 0
|
|
cmp r1, 0
|
|
bne _0809E4B4
|
|
add r0, sp, 0x128
|
|
bl sub_809B260
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E480
|
|
b _0809E9D6
|
|
_0809E480:
|
|
add r0, sp, 0x128
|
|
ldr r1, [r0]
|
|
cmp r1, 0
|
|
blt _0809E4AA
|
|
ldrb r0, [r6]
|
|
cmp r0, 0x4
|
|
bne _0809E49A
|
|
lsls r0, r1, 16
|
|
asrs r0, 16
|
|
bl sub_80A26B8
|
|
lsls r0, 16
|
|
b _0809E49C
|
|
_0809E49A:
|
|
lsls r0, r1, 16
|
|
_0809E49C:
|
|
asrs r2, r0, 16
|
|
movs r0, 0
|
|
movs r1, 0x13
|
|
bl SetScriptVarValue
|
|
movs r0, 0x1
|
|
b _0809E4AC
|
|
_0809E4AA:
|
|
ldr r0, _0809E4B0
|
|
_0809E4AC:
|
|
strh r0, [r5]
|
|
b _0809E8CE
|
|
.align 2, 0
|
|
_0809E4B0: .4byte 0x0000ffff
|
|
_0809E4B4:
|
|
adds r0, r7, 0
|
|
adds r0, 0x4C
|
|
movs r3, 0
|
|
ldrsh r1, [r0, r3]
|
|
adds r5, r0, 0
|
|
cmp r1, 0x1
|
|
beq _0809E4C4
|
|
b _0809E5B8
|
|
_0809E4C4:
|
|
movs r0, 0
|
|
movs r1, 0x13
|
|
bl GetScriptVarValue
|
|
lsls r0, 16
|
|
asrs r6, r0, 16
|
|
add r4, sp, 0x18
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl sub_80990EC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0809E580
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl sub_8099220
|
|
movs r0, 0x6
|
|
bl sub_80023E4
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
ldrb r0, [r4]
|
|
ldr r4, _0809E51C
|
|
ldr r2, [r4]
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
bl sub_809034C
|
|
adds r1, r0, 0
|
|
ldr r0, _0809E520
|
|
str r1, [r0]
|
|
cmp r1, 0x1
|
|
beq _0809E586
|
|
cmp r1, 0x1
|
|
bcc _0809E580
|
|
cmp r1, 0x2
|
|
bne _0809E5AE
|
|
strh r1, [r5]
|
|
ldr r2, [r4]
|
|
movs r0, 0x9
|
|
b _0809E58E
|
|
.align 2, 0
|
|
_0809E51C: .4byte gUnknown_203B4B0
|
|
_0809E520: .4byte gUnknown_2039DA4
|
|
_0809E524:
|
|
adds r0, r7, 0
|
|
adds r0, 0x4C
|
|
movs r4, 0
|
|
ldrsh r6, [r0, r4]
|
|
adds r5, r0, 0
|
|
cmp r6, 0x1
|
|
bne _0809E5B8
|
|
movs r0, 0
|
|
movs r1, 0x14
|
|
bl GetScriptVarValue
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetMailatIndex
|
|
adds r4, r0, 0
|
|
movs r0, 0x6
|
|
bl sub_80023E4
|
|
adds r3, r0, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
ldrb r0, [r4, 0x4]
|
|
ldr r4, _0809E578
|
|
ldr r2, [r4]
|
|
str r6, [sp]
|
|
movs r1, 0
|
|
bl sub_809034C
|
|
adds r1, r0, 0
|
|
ldr r0, _0809E57C
|
|
str r1, [r0]
|
|
cmp r1, 0x1
|
|
beq _0809E586
|
|
cmp r1, 0x1
|
|
bcc _0809E580
|
|
cmp r1, 0x2
|
|
bne _0809E5AE
|
|
strh r1, [r5]
|
|
ldr r2, [r4]
|
|
movs r0, 0x9
|
|
b _0809E58E
|
|
.align 2, 0
|
|
_0809E578: .4byte gUnknown_203B4B0
|
|
_0809E57C: .4byte gUnknown_2039DA4
|
|
_0809E580:
|
|
movs r0, 0x3
|
|
strh r0, [r5]
|
|
b _0809E9CC
|
|
_0809E586:
|
|
movs r0, 0x4
|
|
strh r0, [r5]
|
|
ldr r2, [r4]
|
|
movs r0, 0xA
|
|
_0809E58E:
|
|
movs r1, 0x1
|
|
bl sub_809B1C0
|
|
adds r0, r7, 0
|
|
movs r1, 0x1
|
|
bl GroundScriptCheckLockCondition
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E5A4
|
|
b _0809E9CC
|
|
_0809E5A4:
|
|
movs r0, 0
|
|
movs r1, 0xB
|
|
bl sub_80A87AC
|
|
b _0809E9CC
|
|
_0809E5AE:
|
|
ldr r0, _0809E5B4
|
|
strh r0, [r5]
|
|
b _0809E9CC
|
|
.align 2, 0
|
|
_0809E5B4: .4byte 0x0000ffff
|
|
_0809E5B8:
|
|
movs r6, 0
|
|
ldrsh r2, [r5, r6]
|
|
cmp r2, 0x2
|
|
bne _0809E5DA
|
|
add r0, sp, 0x12C
|
|
bl sub_809B260
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E5CE
|
|
b _0809E9D6
|
|
_0809E5CE:
|
|
add r0, sp, 0x12C
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0809E626
|
|
movs r0, 0x3
|
|
b _0809E628
|
|
_0809E5DA:
|
|
cmp r2, 0x3
|
|
bne _0809E614
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r3-r5}
|
|
stm r1!, {r3-r5}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
strh r2, [r7, 0x26]
|
|
add r0, sp, 0x4
|
|
movs r6, 0x2
|
|
ldrsh r0, [r0, r6]
|
|
bl sub_80999FC
|
|
movs r0, 0x70
|
|
movs r1, 0
|
|
bl GroundMap_ExecuteEvent
|
|
movs r1, 0x8
|
|
ldrsh r0, [r7, r1]
|
|
cmp r0, 0
|
|
bne _0809E608
|
|
b _0809E9CC
|
|
_0809E608:
|
|
adds r0, r7, 0
|
|
movs r1, 0x1
|
|
_0809E60C:
|
|
bl ResolveJump
|
|
str r0, [r7, 0x28]
|
|
b _0809E9CC
|
|
_0809E614:
|
|
cmp r2, 0x4
|
|
bne _0809E63C
|
|
add r0, sp, 0x130
|
|
bl sub_809B260
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E626
|
|
b _0809E9D6
|
|
_0809E626:
|
|
ldr r0, _0809E638
|
|
_0809E628:
|
|
strh r0, [r5]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_80A87AC
|
|
bl ScriptPrintNullTextbox
|
|
b _0809E9CC
|
|
.align 2, 0
|
|
_0809E638: .4byte 0x0000ffff
|
|
_0809E63C:
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_8099220
|
|
movs r4, 0x1
|
|
negs r4, r4
|
|
movs r0, 0
|
|
movs r1, 0x13
|
|
adds r2, r4, 0
|
|
bl SetScriptVarValue
|
|
adds r0, r7, 0
|
|
adds r1, r4, 0
|
|
b _0809E8EE
|
|
_0809E658:
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
add r0, sp, 0x134
|
|
bl sub_809B260
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E672
|
|
b _0809E9D6
|
|
_0809E672:
|
|
add r0, sp, 0x134
|
|
ldr r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _0809E6A4
|
|
ldr r0, [sp, 0x8]
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809E6A4
|
|
adds r0, r1, 0
|
|
bl sub_80A8D54
|
|
movs r2, 0
|
|
adds r3, r0, 0
|
|
adds r3, 0x4C
|
|
ldr r4, _0809E6B0
|
|
_0809E696:
|
|
adds r0, r3, r2
|
|
adds r1, r2, r4
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x9
|
|
ble _0809E696
|
|
_0809E6A4:
|
|
add r0, sp, 0x134
|
|
ldr r1, [r0]
|
|
adds r0, r7, 0
|
|
bl ResolveJump
|
|
b _0809E8C8
|
|
.align 2, 0
|
|
_0809E6B0: .4byte gUnknown_2039D98
|
|
_0809E6B4:
|
|
add r0, sp, 0x138
|
|
bl sub_809B260
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E6C2
|
|
b _0809E9D6
|
|
_0809E6C2:
|
|
add r4, sp, 0x138
|
|
ldr r0, [r4]
|
|
cmp r0, 0x1
|
|
bne _0809E6D0
|
|
ldr r0, _0809E6DC
|
|
bl SetRescueTeamName
|
|
_0809E6D0:
|
|
ldr r1, [r4]
|
|
adds r0, r7, 0
|
|
bl ResolveJump
|
|
b _0809E8C8
|
|
.align 2, 0
|
|
_0809E6DC: .4byte gUnknown_2039D98
|
|
_0809E6E0:
|
|
movs r1, 0x2
|
|
add r0, sp, 0x13C
|
|
str r1, [r0]
|
|
b _0809E74A
|
|
_0809E6E8:
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r2,r5,r6}
|
|
stm r1!, {r2,r5,r6}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldr r5, [sp, 0x10]
|
|
add r0, sp, 0x13C
|
|
bl sub_809B260
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E704
|
|
b _0809E9D6
|
|
_0809E704:
|
|
add r0, sp, 0x13C
|
|
ldr r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _0809E74A
|
|
add r4, sp, 0x18
|
|
ldr r0, _0809E758
|
|
adds r3, r4, 0
|
|
movs r2, 0
|
|
mov r1, sp
|
|
adds r1, 0x27
|
|
_0809E718:
|
|
strb r2, [r1]
|
|
subs r1, 0x1
|
|
cmp r1, r3
|
|
bge _0809E718
|
|
adds r1, r4, 0
|
|
bl CopyStringtoBuffer
|
|
movs r2, 0
|
|
ldrb r0, [r4]
|
|
ldrb r3, [r5]
|
|
cmp r0, r3
|
|
bne _0809E6E0
|
|
cmp r0, 0
|
|
beq _0809E74A
|
|
_0809E734:
|
|
adds r2, 0x1
|
|
cmp r2, 0xF
|
|
bgt _0809E74A
|
|
adds r0, r4, r2
|
|
adds r1, r5, r2
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _0809E6E0
|
|
cmp r0, 0
|
|
bne _0809E734
|
|
_0809E74A:
|
|
add r0, sp, 0x13C
|
|
ldr r1, [r0]
|
|
adds r0, r7, 0
|
|
bl ResolveJump
|
|
b _0809E8C8
|
|
.align 2, 0
|
|
_0809E758: .4byte gUnknown_2039D98
|
|
_0809E75C:
|
|
adds r2, r7, 0
|
|
adds r2, 0x50
|
|
ldrh r3, [r2]
|
|
movs r4, 0
|
|
ldrsh r0, [r2, r4]
|
|
cmp r0, 0
|
|
bne _0809E76C
|
|
b _0809E872
|
|
_0809E76C:
|
|
add r4, sp, 0xA0
|
|
adds r0, r4, 0
|
|
bl sub_809AFFC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E77C
|
|
b _0809E9D6
|
|
_0809E77C:
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
bne _0809E784
|
|
b _0809E8CA
|
|
_0809E784:
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r2,r3,r6}
|
|
stm r1!, {r2,r3,r6}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
add r0, sp, 0x4
|
|
movs r4, 0x2
|
|
ldrsh r1, [r0, r4]
|
|
b _0809E8C2
|
|
_0809E798:
|
|
add r1, sp, 0x4
|
|
ldr r0, [r7, 0x40]
|
|
ldm r0!, {r2,r5,r6}
|
|
stm r1!, {r2,r5,r6}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
adds r2, r7, 0
|
|
adds r2, 0x50
|
|
movs r3, 0
|
|
ldrsh r0, [r2, r3]
|
|
adds r4, r2, 0
|
|
cmp r0, 0
|
|
bne _0809E84C
|
|
movs r3, 0
|
|
adds r0, r7, 0
|
|
adds r0, 0x4C
|
|
movs r5, 0
|
|
ldrsh r2, [r0, r5]
|
|
adds r5, r0, 0
|
|
cmp r2, 0
|
|
bge _0809E7CC
|
|
ldr r0, [r7, 0x28]
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xD1
|
|
beq _0809E812
|
|
b _0809E8F4
|
|
_0809E7CC:
|
|
ldr r1, [r7, 0x28]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xD0
|
|
bne _0809E7F8
|
|
movs r6, 0x2
|
|
ldrsh r0, [r1, r6]
|
|
cmp r0, r2
|
|
beq _0809E812
|
|
_0809E7DC:
|
|
ldr r0, [r7, 0x28]
|
|
adds r1, r0, 0
|
|
adds r1, 0x10
|
|
str r1, [r7, 0x28]
|
|
ldrb r0, [r0, 0x10]
|
|
cmp r0, 0xD0
|
|
bne _0809E7F8
|
|
movs r0, 0x2
|
|
ldrsh r1, [r1, r0]
|
|
movs r2, 0
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bne _0809E7DC
|
|
movs r3, 0x1
|
|
_0809E7F8:
|
|
cmp r3, 0
|
|
bne _0809E812
|
|
ldr r1, [r7, 0x28]
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xD1
|
|
bne _0809E8F4
|
|
_0809E804:
|
|
adds r0, r1, 0
|
|
adds r1, 0x10
|
|
str r1, [r7, 0x28]
|
|
ldrb r0, [r0, 0x10]
|
|
cmp r0, 0xD1
|
|
beq _0809E804
|
|
b _0809E8F4
|
|
_0809E812:
|
|
add r0, sp, 0x4
|
|
ldrb r0, [r0, 0x1]
|
|
ldr r1, [sp, 0x8]
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
ldr r2, [r7, 0x28]
|
|
ldr r2, [r2, 0xC]
|
|
bl ScriptPrintText
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0809E844
|
|
movs r0, 0
|
|
movs r1, 0xA
|
|
bl sub_80A87AC
|
|
adds r0, r7, 0
|
|
movs r1, 0
|
|
bl GroundScriptCheckLockCondition
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0809E844
|
|
movs r0, 0x1
|
|
strh r0, [r4]
|
|
_0809E844:
|
|
ldr r0, [r7, 0x28]
|
|
adds r0, 0x10
|
|
str r0, [r7, 0x28]
|
|
b _0809E9CC
|
|
_0809E84C:
|
|
adds r0, r7, 0
|
|
adds r0, 0x46
|
|
movs r3, 0
|
|
ldrsh r1, [r0, r3]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809E85E
|
|
b _0809E9D6
|
|
_0809E85E:
|
|
movs r0, 0
|
|
strh r0, [r2]
|
|
b _0809E8D0
|
|
_0809E864:
|
|
adds r2, r7, 0
|
|
adds r2, 0x50
|
|
ldrh r3, [r2]
|
|
movs r4, 0
|
|
ldrsh r0, [r2, r4]
|
|
cmp r0, 0
|
|
bne _0809E88A
|
|
_0809E872:
|
|
adds r0, r7, 0
|
|
adds r0, 0x46
|
|
movs r5, 0
|
|
ldrsh r1, [r0, r5]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809E884
|
|
b _0809E9D6
|
|
_0809E884:
|
|
adds r0, r3, 0x1
|
|
strh r0, [r2]
|
|
b _0809E9CC
|
|
_0809E88A:
|
|
add r0, sp, 0x140
|
|
bl sub_809B18C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0809E898
|
|
b _0809E9D6
|
|
_0809E898:
|
|
add r0, sp, 0x140
|
|
ldr r3, [r0]
|
|
cmp r3, 0
|
|
ble _0809E8CA
|
|
adds r0, r7, 0
|
|
adds r0, 0x4C
|
|
movs r6, 0
|
|
ldrsh r2, [r0, r6]
|
|
ldr r1, [r7, 0x40]
|
|
lsls r0, r3, 4
|
|
lsls r2, 4
|
|
adds r2, r1
|
|
add r1, sp, 0x4
|
|
adds r0, r2
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
add r0, sp, 0x4
|
|
movs r5, 0x2
|
|
ldrsh r1, [r0, r5]
|
|
_0809E8C2:
|
|
adds r0, r7, 0
|
|
bl FindLabel
|
|
_0809E8C8:
|
|
str r0, [r7, 0x28]
|
|
_0809E8CA:
|
|
movs r0, 0x3
|
|
strh r0, [r7, 0x26]
|
|
_0809E8CE:
|
|
movs r0, 0
|
|
_0809E8D0:
|
|
movs r1, 0
|
|
bl sub_80A87AC
|
|
b _0809E9CC
|
|
_0809E8D8:
|
|
adds r0, r7, 0
|
|
adds r0, 0x46
|
|
movs r6, 0
|
|
ldrsh r1, [r0, r6]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _0809E9D6
|
|
ldr r0, _0809E8FC
|
|
ldr r1, [r0, 0x4]
|
|
_0809E8EC:
|
|
adds r0, r7, 0
|
|
_0809E8EE:
|
|
bl ResolveJump
|
|
str r0, [r7, 0x28]
|
|
_0809E8F4:
|
|
movs r0, 0x3
|
|
strh r0, [r7, 0x26]
|
|
b _0809E9CC
|
|
.align 2, 0
|
|
_0809E8FC: .4byte gUnlockBranchLabels
|
|
_0809E900:
|
|
adds r0, r7, 0
|
|
bl ExecuteScriptCommand
|
|
strh r0, [r7, 0x26]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x4
|
|
bhi _0809E9BC
|
|
lsls r0, 2
|
|
ldr r1, _0809E91C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0809E91C: .4byte _0809E920
|
|
.align 2, 0
|
|
_0809E920:
|
|
.4byte _0809E934
|
|
.4byte _0809E9B8
|
|
.4byte _0809E9BC
|
|
.4byte _0809E9D6
|
|
.4byte _0809E9B4
|
|
_0809E934:
|
|
adds r0, r7, 0
|
|
adds r0, 0x86
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _0809E9AA
|
|
adds r4, r7, 0
|
|
adds r4, 0x84
|
|
adds r0, r7, 0
|
|
adds r0, 0x24
|
|
adds r1, r4, 0
|
|
movs r2, 0x60
|
|
bl memcpy
|
|
ldr r2, [r7]
|
|
ldr r0, [r2, 0x2C]
|
|
cmp r0, 0
|
|
beq _0809E98E
|
|
adds r5, r7, 0
|
|
adds r5, 0x4A
|
|
movs r1, 0
|
|
ldrsb r1, [r5, r1]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0809E98E
|
|
ldr r0, [r7, 0x4]
|
|
add r1, sp, 0x144
|
|
ldr r2, [r2, 0x18]
|
|
bl _call_via_r2
|
|
add r0, sp, 0x144
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0809E98E
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
movs r1, 0
|
|
ldrsb r1, [r5, r1]
|
|
ldr r2, [r2, 0x2C]
|
|
bl _call_via_r2
|
|
_0809E98E:
|
|
ldr r0, [r7]
|
|
ldr r2, [r0, 0x30]
|
|
cmp r2, 0
|
|
beq _0809E9A2
|
|
ldr r0, [r7, 0x4]
|
|
adds r1, r7, 0
|
|
adds r1, 0x48
|
|
ldrh r1, [r1]
|
|
bl _call_via_r2
|
|
_0809E9A2:
|
|
adds r0, r4, 0
|
|
bl InitScriptData
|
|
b _0809E9D6
|
|
_0809E9AA:
|
|
adds r0, r7, 0
|
|
adds r0, 0x24
|
|
bl InitScriptData
|
|
b _0809E9D6
|
|
_0809E9B4:
|
|
movs r0, 0x4
|
|
b _0809EABA
|
|
_0809E9B8:
|
|
movs r0, 0x1
|
|
b _0809EABA
|
|
_0809E9BC:
|
|
adds r1, r7, 0
|
|
adds r1, 0x50
|
|
movs r0, 0
|
|
strh r0, [r1]
|
|
b _0809E9CC
|
|
_0809E9C6:
|
|
movs r2, 0x26
|
|
ldrsh r0, [r7, r2]
|
|
b _0809EABA
|
|
_0809E9CC:
|
|
movs r3, 0x1
|
|
cmp r3, 0
|
|
beq _0809E9D6
|
|
bl _0809DA8A
|
|
_0809E9D6:
|
|
movs r0, 0x3
|
|
b _0809EABA
|
|
_0809E9DA:
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
add r4, sp, 0xCC
|
|
ldr r2, [r1, 0xC]
|
|
adds r1, r4, 0
|
|
bl _call_via_r2
|
|
add r5, sp, 0xD4
|
|
adds r1, r7, 0
|
|
adds r1, 0x58
|
|
adds r2, r7, 0
|
|
adds r2, 0x60
|
|
mov r6, r8
|
|
movs r0, 0
|
|
ldrsh r6, [r6, r0]
|
|
mov r9, r6
|
|
adds r6, r7, 0
|
|
adds r6, 0x50
|
|
movs r3, 0
|
|
ldrsh r0, [r6, r3]
|
|
str r0, [sp]
|
|
adds r0, r5, 0
|
|
mov r3, r9
|
|
bl sub_8002934
|
|
ldr r1, [r5]
|
|
ldr r0, [r4]
|
|
subs r1, r0
|
|
add r0, sp, 0xDC
|
|
str r1, [r0]
|
|
ldr r1, [r5, 0x4]
|
|
ldr r2, [r4, 0x4]
|
|
subs r1, r2
|
|
str r1, [r0, 0x4]
|
|
bl VecDirection8Radial
|
|
lsls r0, 24
|
|
adds r2, r7, 0
|
|
adds r2, 0x4A
|
|
asrs r1, r0, 24
|
|
lsrs r0, 24
|
|
strb r0, [r2]
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldr r2, [r2, 0x2C]
|
|
bl _call_via_r2
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldr r2, [r1, 0x24]
|
|
adds r1, r5, 0
|
|
bl _call_via_r2
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
ldr r2, [r2, 0x30]
|
|
bl _call_via_r2
|
|
mov r4, r8
|
|
ldrh r0, [r4]
|
|
subs r0, 0x1
|
|
strh r0, [r4]
|
|
ldrh r0, [r6]
|
|
adds r0, 0x1
|
|
strh r0, [r6]
|
|
b _0809E9D6
|
|
_0809EA62:
|
|
add r5, sp, 0xC4
|
|
adds r1, r7, 0
|
|
adds r1, 0x58
|
|
adds r2, r7, 0
|
|
adds r2, 0x60
|
|
movs r3, 0
|
|
ldrsh r0, [r6, r3]
|
|
mov r8, r0
|
|
adds r4, r7, 0
|
|
adds r4, 0x50
|
|
movs r3, 0
|
|
ldrsh r0, [r4, r3]
|
|
str r0, [sp]
|
|
adds r0, r5, 0
|
|
mov r3, r8
|
|
bl sub_8002934
|
|
ldr r1, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
ldr r2, [r1, 0x24]
|
|
adds r1, r5, 0
|
|
bl _call_via_r2
|
|
ldr r2, [r7]
|
|
ldr r0, [r7, 0x4]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
ldr r2, [r2, 0x30]
|
|
bl _call_via_r2
|
|
ldrh r0, [r6]
|
|
subs r0, 0x1
|
|
strh r0, [r6]
|
|
ldrh r0, [r4]
|
|
adds r0, 0x1
|
|
strh r0, [r4]
|
|
b _0809E9D6
|
|
_0809EAAC:
|
|
subs r0, 0x1
|
|
strh r0, [r2]
|
|
b _0809E9D6
|
|
_0809EAB2:
|
|
subs r0, r2, 0x1
|
|
strh r0, [r1]
|
|
b _0809E9D6
|
|
_0809EAB8:
|
|
movs r0, 0
|
|
_0809EABA:
|
|
add sp, 0x148
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end HandleAction
|
|
.align 2, 0
|