mirror of
https://github.com/pret/pokediamond.git
synced 2026-03-21 17:54:29 -05:00
691 lines
14 KiB
ArmAsm
691 lines
14 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.section .rodata
|
|
|
|
.global UNK_020F7D4C
|
|
UNK_020F7D4C: ; 0x020F7D4C
|
|
.byte 0x02, 0x01, 0x00, 0x00, 0xF6, 0x01, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0xF6, 0x01, 0x00, 0x00
|
|
.byte 0x02, 0x01, 0x00, 0x00, 0xF6, 0x01, 0x00, 0x00
|
|
|
|
.global UNK_020F7D64
|
|
UNK_020F7D64: ; 0x020F7D64
|
|
.byte 0x00, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2C, 0x00
|
|
|
|
.global UNK_020F7D70
|
|
UNK_020F7D70: ; 0x020F7D70
|
|
.byte 0x00, 0x00, 0x01, 0x00
|
|
|
|
.global UNK_020F7D74
|
|
UNK_020F7D74: ; 0x020F7D74
|
|
.byte 0x00, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00
|
|
|
|
.global UNK_020F7D80
|
|
UNK_020F7D80: ; 0x020F7D80
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
|
|
.global UNK_020F7D84
|
|
UNK_020F7D84: ; 0x020F7D84
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x12, 0x00, 0x00, 0x00
|
|
.byte 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00
|
|
.byte 0x00, 0x00, 0x09, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x00, 0x00
|
|
.byte 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00
|
|
.byte 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00
|
|
.byte 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_020647A4
|
|
sub_020647A4: ; 0x020647A4
|
|
push {r3-r7, lr}
|
|
sub sp, #0x30
|
|
add r4, r0, #0x0
|
|
bl FieldSystem_GetSaveData
|
|
bl sub_02024ED8
|
|
mov r1, #0x7
|
|
bl sub_020254A0
|
|
ldrh r1, [r0, #0x2]
|
|
ldrh r0, [r0, #0x0]
|
|
ldr r3, _0206485C ; =UNK_020F7D70
|
|
mov r7, #0x18
|
|
add r2, r1, #0x0
|
|
mul r2, r7
|
|
add r6, r3, r2
|
|
lsl r0, r0, #0x2
|
|
ldr r5, [r6, r0]
|
|
ldr r0, [r6, #0x14]
|
|
cmp r0, #0x0
|
|
beq _0206480A
|
|
ldr r3, _02064860 ; =UNK_020F7D64
|
|
add r2, sp, #0x24
|
|
ldmia r3!, {r0-r1}
|
|
mov r12, r2
|
|
stmia r2!, {r0-r1}
|
|
ldr r0, [r3, #0x0]
|
|
add r7, #0xea
|
|
str r0, [r2, #0x0]
|
|
str r5, [sp, #0x28]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [r4, #0x4c]
|
|
add r2, r7, #0x0
|
|
str r0, [sp, #0x4]
|
|
add r0, r4, #0x0
|
|
add r0, #0xa0
|
|
ldr r0, [r0, #0x0]
|
|
ldr r1, [r4, #0x2c]
|
|
mov r3, r12
|
|
bl ov05_021E7FBC
|
|
add r0, r4, #0x0
|
|
add r0, #0xa0
|
|
ldr r0, [r0, #0x0]
|
|
ldr r1, _02064864 ; =0x00000102
|
|
bl ov05_021E7ED8
|
|
str r0, [sp, #0x14]
|
|
b _0206482C
|
|
_0206480A:
|
|
ldr r0, _02064868 ; =UNK_020F7D4C
|
|
add r1, sp, #0xc
|
|
ldr r2, [r0, #0x8]
|
|
ldr r0, [r0, #0xc]
|
|
str r2, [sp, #0xc]
|
|
str r0, [sp, #0x10]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x0]
|
|
add r0, r4, #0x0
|
|
mov r2, #0x2
|
|
add r3, sp, #0x14
|
|
bl sub_0204AA5C
|
|
cmp r0, #0x0
|
|
bne _0206482C
|
|
bl GF_AssertFail
|
|
_0206482C:
|
|
ldr r1, [sp, #0x14]
|
|
add r0, sp, #0x18
|
|
bl ov05_021E7EA0
|
|
ldr r0, [sp, #0x14]
|
|
add r1, sp, #0x18
|
|
str r5, [sp, #0x1c]
|
|
bl ov05_021E7EB0
|
|
mov r0, #0x2
|
|
str r0, [sp, #0x0]
|
|
str r5, [sp, #0x4]
|
|
add r4, #0x9c
|
|
ldr r0, [r4, #0x0]
|
|
mov r3, #0x3
|
|
str r0, [sp, #0x8]
|
|
ldr r1, [r6, #0x8]
|
|
ldr r2, [r6, #0xc]
|
|
mov r0, #0x0
|
|
bl ov05_021F44D8
|
|
add sp, #0x30
|
|
pop {r3-r7, pc}
|
|
nop
|
|
_0206485C: .word UNK_020F7D70
|
|
_02064860: .word UNK_020F7D64
|
|
_02064864: .word 0x00000102
|
|
_02064868: .word UNK_020F7D4C
|
|
|
|
thumb_func_start sub_0206486C
|
|
sub_0206486C: ; 0x0206486C
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
bl FieldSystem_GetSaveData
|
|
bl sub_02024ED8
|
|
add r5, r0, #0x0
|
|
mov r1, #0x7
|
|
bl sub_02025490
|
|
add r0, r5, #0x0
|
|
mov r1, #0x7
|
|
bl sub_020254A0
|
|
mov r3, #0x1
|
|
str r3, [r0, #0x4]
|
|
mov r2, #0x0
|
|
str r2, [r0, #0x8]
|
|
ldr r4, [r4, #0x1c]
|
|
ldr r5, _020649A8 ; =0x00000123
|
|
ldr r1, [r4, #0x0]
|
|
cmp r1, r5
|
|
bgt _020648C4
|
|
bge _020648D6
|
|
add r5, r1, #0x0
|
|
sub r5, #0xb0
|
|
cmp r5, #0x9
|
|
bhi _020649A0
|
|
add r5, r5, r5
|
|
add r5, pc
|
|
ldrh r5, [r5, #0x6]
|
|
lsl r5, r5, #0x10
|
|
asr r5, r5, #0x10
|
|
add pc, r5
|
|
_020648B0: ; jump table (using 16-bit offset)
|
|
.short _02064910 - _020648B0 - 2; case 0
|
|
.short _020649A0 - _020648B0 - 2; case 1
|
|
.short _02064928 - _020648B0 - 2; case 2
|
|
.short _020649A0 - _020648B0 - 2; case 3
|
|
.short _02064940 - _020648B0 - 2; case 4
|
|
.short _020649A0 - _020648B0 - 2; case 5
|
|
.short _02064958 - _020648B0 - 2; case 6
|
|
.short _020649A0 - _020648B0 - 2; case 7
|
|
.short _02064970 - _020648B0 - 2; case 8
|
|
.short _02064988 - _020648B0 - 2; case 9
|
|
_020648C4:
|
|
ldr r2, _020649AC ; =0x00000125
|
|
cmp r1, r2
|
|
bgt _020648CE
|
|
beq _020648E8
|
|
b _020649A0
|
|
_020648CE:
|
|
add r2, r2, #0x1
|
|
cmp r1, r2
|
|
beq _020648FC
|
|
b _020649A0
|
|
_020648D6:
|
|
ldr r1, [r4, #0xc]
|
|
cmp r1, #0x1a
|
|
bne _020648E0
|
|
strh r2, [r0, #0x0]
|
|
b _020648E2
|
|
_020648E0:
|
|
strh r3, [r0, #0x0]
|
|
_020648E2:
|
|
mov r1, #0x0
|
|
strh r1, [r0, #0x2]
|
|
pop {r3-r5, pc}
|
|
_020648E8:
|
|
ldr r1, [r4, #0xc]
|
|
cmp r1, #0x30
|
|
bne _020648F2
|
|
mov r1, #0x0
|
|
b _020648F4
|
|
_020648F2:
|
|
mov r1, #0x1
|
|
_020648F4:
|
|
strh r1, [r0, #0x0]
|
|
mov r1, #0x1
|
|
strh r1, [r0, #0x2]
|
|
pop {r3-r5, pc}
|
|
_020648FC:
|
|
ldr r1, [r4, #0xc]
|
|
cmp r1, #0xf
|
|
bne _02064906
|
|
mov r1, #0x0
|
|
b _02064908
|
|
_02064906:
|
|
mov r1, #0x1
|
|
_02064908:
|
|
strh r1, [r0, #0x0]
|
|
mov r1, #0x2
|
|
strh r1, [r0, #0x2]
|
|
pop {r3-r5, pc}
|
|
_02064910:
|
|
ldr r1, [r4, #0xc]
|
|
cmp r1, #0xf
|
|
bne _0206491A
|
|
strh r2, [r0, #0x0]
|
|
b _0206491E
|
|
_0206491A:
|
|
strh r3, [r0, #0x0]
|
|
str r2, [r0, #0x4]
|
|
_0206491E:
|
|
mov r1, #0x3
|
|
strh r1, [r0, #0x2]
|
|
mov r1, #0x1
|
|
str r1, [r0, #0x8]
|
|
pop {r3-r5, pc}
|
|
_02064928:
|
|
ldr r1, [r4, #0xc]
|
|
cmp r1, #0xf
|
|
bne _02064932
|
|
strh r2, [r0, #0x0]
|
|
b _02064936
|
|
_02064932:
|
|
strh r3, [r0, #0x0]
|
|
str r2, [r0, #0x4]
|
|
_02064936:
|
|
mov r1, #0x4
|
|
strh r1, [r0, #0x2]
|
|
mov r1, #0x1
|
|
str r1, [r0, #0x8]
|
|
pop {r3-r5, pc}
|
|
_02064940:
|
|
ldr r1, [r4, #0xc]
|
|
cmp r1, #0xf
|
|
bne _0206494A
|
|
strh r2, [r0, #0x0]
|
|
b _0206494E
|
|
_0206494A:
|
|
strh r3, [r0, #0x0]
|
|
str r2, [r0, #0x4]
|
|
_0206494E:
|
|
mov r1, #0x5
|
|
strh r1, [r0, #0x2]
|
|
mov r1, #0x1
|
|
str r1, [r0, #0x8]
|
|
pop {r3-r5, pc}
|
|
_02064958:
|
|
ldr r1, [r4, #0xc]
|
|
cmp r1, #0xf
|
|
bne _02064962
|
|
strh r2, [r0, #0x0]
|
|
b _02064966
|
|
_02064962:
|
|
strh r3, [r0, #0x0]
|
|
str r2, [r0, #0x4]
|
|
_02064966:
|
|
mov r1, #0x6
|
|
strh r1, [r0, #0x2]
|
|
mov r1, #0x1
|
|
str r1, [r0, #0x8]
|
|
pop {r3-r5, pc}
|
|
_02064970:
|
|
ldr r1, [r4, #0xc]
|
|
cmp r1, #0x17
|
|
bne _0206497A
|
|
strh r2, [r0, #0x0]
|
|
b _0206497E
|
|
_0206497A:
|
|
strh r3, [r0, #0x0]
|
|
str r2, [r0, #0x4]
|
|
_0206497E:
|
|
mov r1, #0x7
|
|
strh r1, [r0, #0x2]
|
|
mov r1, #0x1
|
|
str r1, [r0, #0x8]
|
|
pop {r3-r5, pc}
|
|
_02064988:
|
|
ldr r1, [r4, #0xc]
|
|
cmp r1, #0x12
|
|
bne _02064992
|
|
strh r2, [r0, #0x0]
|
|
b _02064996
|
|
_02064992:
|
|
strh r3, [r0, #0x0]
|
|
str r2, [r0, #0x4]
|
|
_02064996:
|
|
mov r1, #0x8
|
|
strh r1, [r0, #0x2]
|
|
mov r1, #0x1
|
|
str r1, [r0, #0x8]
|
|
pop {r3-r5, pc}
|
|
_020649A0:
|
|
bl GF_AssertFail
|
|
pop {r3-r5, pc}
|
|
nop
|
|
_020649A8: .word 0x00000123
|
|
_020649AC: .word 0x00000125
|
|
|
|
thumb_func_start sub_020649B0
|
|
sub_020649B0: ; 0x020649B0
|
|
push {r3, lr}
|
|
bl FieldSystem_GetSaveData
|
|
bl sub_02024ED8
|
|
mov r1, #0x7
|
|
bl sub_020254A0
|
|
ldr r0, [r0, #0x4]
|
|
cmp r0, #0x0
|
|
beq _020649CA
|
|
mov r0, #0x1
|
|
b _020649CC
|
|
_020649CA:
|
|
mov r0, #0x0
|
|
_020649CC:
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020649D4
|
|
sub_020649D4: ; 0x020649D4
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
bl FieldSystem_GetSaveData
|
|
bl sub_02024ED8
|
|
mov r1, #0x7
|
|
bl sub_020254A0
|
|
add r4, r0, #0x0
|
|
ldrh r1, [r4, #0x2]
|
|
mov r0, #0x18
|
|
add r2, r1, #0x0
|
|
mul r2, r0
|
|
ldr r0, _02064A58 ; =UNK_020F7D80
|
|
ldr r0, [r0, r2]
|
|
cmp r0, #0x0
|
|
beq _020649FE
|
|
ldrh r0, [r4, #0x0]
|
|
cmp r0, #0x1
|
|
beq _02064A54
|
|
_020649FE:
|
|
mov r0, #0xb
|
|
mov r1, #0x10
|
|
bl Heap_AllocAtEnd
|
|
add r2, r0, #0x0
|
|
mov r0, #0x0
|
|
str r0, [r2, #0x0]
|
|
ldrh r1, [r4, #0x2]
|
|
mov r0, #0x18
|
|
add r3, r1, #0x0
|
|
ldr r1, _02064A5C ; =UNK_020F7D84
|
|
mul r3, r0
|
|
ldr r1, [r1, r3]
|
|
str r1, [r2, #0x8]
|
|
ldr r1, [r4, #0x8]
|
|
str r1, [r2, #0xc]
|
|
ldrh r1, [r4, #0x0]
|
|
cmp r1, #0x0
|
|
ldrh r1, [r4, #0x2]
|
|
bne _02064A3E
|
|
add r3, r1, #0x0
|
|
mul r3, r0
|
|
ldr r0, _02064A60 ; =UNK_020F7D74
|
|
ldr r1, _02064A64 ; =sub_02064A70
|
|
ldr r0, [r0, r3]
|
|
str r0, [r2, #0x4]
|
|
ldr r0, [r5, #0x10]
|
|
bl TaskManager_Call
|
|
mov r0, #0x1
|
|
strh r0, [r4, #0x0]
|
|
pop {r3-r5, pc}
|
|
_02064A3E:
|
|
add r3, r1, #0x0
|
|
mul r3, r0
|
|
ldr r0, _02064A68 ; =UNK_020F7D70
|
|
ldr r1, _02064A6C ; =sub_02064B70
|
|
ldr r0, [r0, r3]
|
|
str r0, [r2, #0x4]
|
|
ldr r0, [r5, #0x10]
|
|
bl TaskManager_Call
|
|
mov r0, #0x0
|
|
strh r0, [r4, #0x0]
|
|
_02064A54:
|
|
pop {r3-r5, pc}
|
|
nop
|
|
_02064A58: .word UNK_020F7D80
|
|
_02064A5C: .word UNK_020F7D84
|
|
_02064A60: .word UNK_020F7D74
|
|
_02064A64: .word sub_02064A70
|
|
_02064A68: .word UNK_020F7D70
|
|
_02064A6C: .word sub_02064B70
|
|
|
|
thumb_func_start sub_02064A70
|
|
sub_02064A70: ; 0x02064A70
|
|
push {r4-r5, lr}
|
|
sub sp, #0x1c
|
|
add r4, r0, #0x0
|
|
bl TaskManager_GetFieldSystem
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl TaskManager_GetEnvironment
|
|
add r4, r0, #0x0
|
|
ldr r1, [r4, #0x0]
|
|
cmp r1, #0x3
|
|
bhi _02064B5C
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02064A96: ; jump table (using 16-bit offset)
|
|
.short _02064A9E - _02064A96 - 2; case 0
|
|
.short _02064AB4 - _02064A96 - 2; case 1
|
|
.short _02064B2E - _02064A96 - 2; case 2
|
|
.short _02064B52 - _02064A96 - 2; case 3
|
|
_02064A9E:
|
|
ldr r0, [r5, #0x38]
|
|
mov r1, #0x0
|
|
bl PlayerAvatar_ToggleAutomaticHeightUpdating
|
|
ldr r0, [r4, #0xc]
|
|
bl sub_02064C64
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02064B5C
|
|
_02064AB4:
|
|
ldr r0, [r4, #0x8]
|
|
cmp r0, #0x0
|
|
beq _02064ACA
|
|
add r0, r5, #0x0
|
|
add r0, #0xa0
|
|
ldr r0, [r0, #0x0]
|
|
ldr r1, _02064B64 ; =0x00000102
|
|
bl ov05_021E7ED8
|
|
str r0, [sp, #0xc]
|
|
b _02064AEC
|
|
_02064ACA:
|
|
ldr r0, _02064B68 ; =UNK_020F7D4C
|
|
add r1, sp, #0x4
|
|
ldr r2, [r0, #0x0]
|
|
ldr r0, [r0, #0x4]
|
|
str r2, [sp, #0x4]
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x0]
|
|
add r0, r5, #0x0
|
|
mov r2, #0x2
|
|
add r3, sp, #0xc
|
|
bl sub_0204AA5C
|
|
cmp r0, #0x0
|
|
bne _02064AEC
|
|
bl GF_AssertFail
|
|
_02064AEC:
|
|
ldr r1, [sp, #0xc]
|
|
add r0, sp, #0x10
|
|
bl ov05_021E7EA0
|
|
ldr r0, [r4, #0xc]
|
|
cmp r0, #0x0
|
|
bne _02064AFE
|
|
mov r1, #0x1
|
|
b _02064B00
|
|
_02064AFE:
|
|
mov r1, #0x2
|
|
_02064B00:
|
|
ldr r0, [sp, #0x14]
|
|
lsl r1, r1, #0xc
|
|
add r1, r0, r1
|
|
str r1, [sp, #0x14]
|
|
ldr r0, [r4, #0x4]
|
|
cmp r1, r0
|
|
blt _02064B1C
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [r4, #0xc]
|
|
bl sub_02064C84
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
_02064B1C:
|
|
ldr r0, [r5, #0x38]
|
|
ldr r1, [sp, #0x14]
|
|
bl PlayerAvatar_SetMapObjectYPosition
|
|
ldr r0, [sp, #0xc]
|
|
add r1, sp, #0x10
|
|
bl ov05_021E7EB0
|
|
b _02064B5C
|
|
_02064B2E:
|
|
add r2, r5, #0x0
|
|
add r2, #0x9c
|
|
ldr r1, [r4, #0x4]
|
|
ldr r2, [r2, #0x0]
|
|
mov r0, #0x0
|
|
bl ov05_021F4594
|
|
ldr r0, [r5, #0x38]
|
|
mov r1, #0x1
|
|
bl PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate
|
|
ldr r0, _02064B6C ; =0x0000061A
|
|
bl PlaySE
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02064B5C
|
|
_02064B52:
|
|
bl Heap_Free
|
|
add sp, #0x1c
|
|
mov r0, #0x1
|
|
pop {r4-r5, pc}
|
|
_02064B5C:
|
|
mov r0, #0x0
|
|
add sp, #0x1c
|
|
pop {r4-r5, pc}
|
|
nop
|
|
_02064B64: .word 0x00000102
|
|
_02064B68: .word UNK_020F7D4C
|
|
_02064B6C: .word 0x0000061A
|
|
|
|
thumb_func_start sub_02064B70
|
|
sub_02064B70: ; 0x02064B70
|
|
push {r4-r5, lr}
|
|
sub sp, #0x1c
|
|
add r4, r0, #0x0
|
|
bl TaskManager_GetFieldSystem
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl TaskManager_GetEnvironment
|
|
add r4, r0, #0x0
|
|
ldr r1, [r4, #0x0]
|
|
cmp r1, #0x3
|
|
bhi _02064C52
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02064B96: ; jump table (using 16-bit offset)
|
|
.short _02064B9E - _02064B96 - 2; case 0
|
|
.short _02064BB4 - _02064B96 - 2; case 1
|
|
.short _02064C24 - _02064B96 - 2; case 2
|
|
.short _02064C48 - _02064B96 - 2; case 3
|
|
_02064B9E:
|
|
ldr r0, [r5, #0x38]
|
|
mov r1, #0x0
|
|
bl PlayerAvatar_ToggleAutomaticHeightUpdating
|
|
ldr r0, [r4, #0xc]
|
|
bl sub_02064C64
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02064C52
|
|
_02064BB4:
|
|
ldr r0, [r4, #0x8]
|
|
cmp r0, #0x0
|
|
beq _02064BCA
|
|
add r0, r5, #0x0
|
|
add r0, #0xa0
|
|
ldr r0, [r0, #0x0]
|
|
ldr r1, _02064C58 ; =0x00000102
|
|
bl ov05_021E7ED8
|
|
str r0, [sp, #0xc]
|
|
b _02064BEC
|
|
_02064BCA:
|
|
ldr r0, _02064C5C ; =UNK_020F7D4C
|
|
add r1, sp, #0x4
|
|
ldr r2, [r0, #0x10]
|
|
ldr r0, [r0, #0x14]
|
|
str r2, [sp, #0x4]
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x0]
|
|
add r0, r5, #0x0
|
|
mov r2, #0x2
|
|
add r3, sp, #0xc
|
|
bl sub_0204AA5C
|
|
cmp r0, #0x0
|
|
bne _02064BEC
|
|
bl GF_AssertFail
|
|
_02064BEC:
|
|
ldr r1, [sp, #0xc]
|
|
add r0, sp, #0x10
|
|
bl ov05_021E7EA0
|
|
mov r0, #0x1
|
|
ldr r1, [sp, #0x14]
|
|
lsl r0, r0, #0xc
|
|
sub r1, r1, r0
|
|
str r1, [sp, #0x14]
|
|
ldr r0, [r4, #0x4]
|
|
cmp r1, r0
|
|
bgt _02064C12
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [r4, #0xc]
|
|
bl sub_02064C84
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
_02064C12:
|
|
ldr r0, [r5, #0x38]
|
|
ldr r1, [sp, #0x14]
|
|
bl PlayerAvatar_SetMapObjectYPosition
|
|
ldr r0, [sp, #0xc]
|
|
add r1, sp, #0x10
|
|
bl ov05_021E7EB0
|
|
b _02064C52
|
|
_02064C24:
|
|
add r2, r5, #0x0
|
|
add r2, #0x9c
|
|
ldr r1, [r4, #0x4]
|
|
ldr r2, [r2, #0x0]
|
|
mov r0, #0x0
|
|
bl ov05_021F4594
|
|
ldr r0, [r5, #0x38]
|
|
mov r1, #0x1
|
|
bl PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate
|
|
ldr r0, _02064C60 ; =0x0000061A
|
|
bl PlaySE
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02064C52
|
|
_02064C48:
|
|
bl Heap_Free
|
|
add sp, #0x1c
|
|
mov r0, #0x1
|
|
pop {r4-r5, pc}
|
|
_02064C52:
|
|
mov r0, #0x0
|
|
add sp, #0x1c
|
|
pop {r4-r5, pc}
|
|
.balign 4
|
|
_02064C58: .word 0x00000102
|
|
_02064C5C: .word UNK_020F7D4C
|
|
_02064C60: .word 0x0000061A
|
|
|
|
thumb_func_start sub_02064C64
|
|
sub_02064C64: ; 0x02064C64
|
|
push {r3, lr}
|
|
cmp r0, #0x0
|
|
bne _02064C72
|
|
ldr r0, _02064C7C ; =0x00000611
|
|
bl PlaySE
|
|
pop {r3, pc}
|
|
_02064C72:
|
|
ldr r0, _02064C80 ; =0x00000614
|
|
bl PlaySE
|
|
pop {r3, pc}
|
|
nop
|
|
_02064C7C: .word 0x00000611
|
|
_02064C80: .word 0x00000614
|
|
|
|
thumb_func_start sub_02064C84
|
|
sub_02064C84: ; 0x02064C84
|
|
push {r3, lr}
|
|
cmp r0, #0x0
|
|
bne _02064C94
|
|
ldr r0, _02064CA0 ; =0x00000611
|
|
mov r1, #0x0
|
|
bl sub_020054F0
|
|
pop {r3, pc}
|
|
_02064C94:
|
|
ldr r0, _02064CA4 ; =0x00000614
|
|
mov r1, #0x0
|
|
bl sub_020054F0
|
|
pop {r3, pc}
|
|
nop
|
|
_02064CA0: .word 0x00000611
|
|
_02064CA4: .word 0x00000614
|