mirror of
https://github.com/pret/pokeheartgold.git
synced 2024-11-24 05:40:09 +00:00
5382 lines
96 KiB
ArmAsm
5382 lines
96 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_87.inc"
|
|
.include "global.inc"
|
|
|
|
.text
|
|
|
|
thumb_func_start ov87_021E5900
|
|
ov87_021E5900: ; 0x021E5900
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
add r7, r1, #0
|
|
bl ov87_021E68A4
|
|
mov r2, #0x12
|
|
mov r0, #3
|
|
mov r1, #0x7a
|
|
lsl r2, r2, #0xe
|
|
bl CreateHeap
|
|
ldr r1, _021E59AC ; =0x000099FC
|
|
add r0, r5, #0
|
|
mov r2, #0x7a
|
|
bl OverlayManager_CreateAndGetData
|
|
ldr r2, _021E59AC ; =0x000099FC
|
|
mov r1, #0
|
|
add r4, r0, #0
|
|
bl memset
|
|
mov r0, #0x7a
|
|
bl BgConfig_Alloc
|
|
str r0, [r4, #0x58]
|
|
add r0, r5, #0
|
|
str r5, [r4]
|
|
bl OverlayManager_GetArgs
|
|
add r5, r0, #0
|
|
mov r1, #0x5a
|
|
add r2, r5, #0
|
|
ldr r0, [r5]
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
ldrb r0, [r5, #4]
|
|
add r2, #0x14
|
|
strb r0, [r4, #9]
|
|
mov r0, #0xdd
|
|
lsl r0, r0, #2
|
|
str r2, [r4, r0]
|
|
ldr r0, [r4, r1]
|
|
bl Save_PlayerData_GetOptionsAddr
|
|
mov r1, #0x59
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
add r1, r5, #0
|
|
mov r0, #0xde
|
|
add r1, #8
|
|
lsl r0, r0, #2
|
|
str r1, [r4, r0]
|
|
add r5, #0xe
|
|
add r0, r0, #4
|
|
str r5, [r4, r0]
|
|
add r0, r4, #0
|
|
bl ov87_021E7334
|
|
mov r1, #0
|
|
mov r3, #0xde
|
|
lsl r3, r3, #2
|
|
add r2, r1, #0
|
|
add r0, r1, #0
|
|
add r5, r3, #4
|
|
_021E5980:
|
|
ldr r6, [r4, r3]
|
|
add r1, r1, #1
|
|
strh r0, [r6, r2]
|
|
ldr r6, [r4, r5]
|
|
strh r0, [r6, r2]
|
|
add r2, r2, #2
|
|
cmp r1, #3
|
|
blt _021E5980
|
|
ldr r1, _021E59B0 ; =0x0000039D
|
|
strb r0, [r4, r1]
|
|
add r0, r4, #0
|
|
bl ov87_021E68DC
|
|
mov r1, #0
|
|
mov r0, #0x42
|
|
add r2, r1, #0
|
|
str r1, [r7]
|
|
bl sub_02004EC4
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E59AC: .word 0x000099FC
|
|
_021E59B0: .word 0x0000039D
|
|
thumb_func_end ov87_021E5900
|
|
|
|
thumb_func_start ov87_021E59B4
|
|
ov87_021E59B4: ; 0x021E59B4
|
|
push {r3, r4, r5, lr}
|
|
add r5, r1, #0
|
|
bl OverlayManager_GetData
|
|
ldr r1, [r5]
|
|
add r4, r0, #0
|
|
cmp r1, #7
|
|
bhi _021E5AB2
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021E59D0: ; jump table
|
|
.short _021E59E0 - _021E59D0 - 2 ; case 0
|
|
.short _021E59F4 - _021E59D0 - 2 ; case 1
|
|
.short _021E5A08 - _021E59D0 - 2 ; case 2
|
|
.short _021E5A1C - _021E59D0 - 2 ; case 3
|
|
.short _021E5A58 - _021E59D0 - 2 ; case 4
|
|
.short _021E5A6C - _021E59D0 - 2 ; case 5
|
|
.short _021E5A92 - _021E59D0 - 2 ; case 6
|
|
.short _021E5AA6 - _021E59D0 - 2 ; case 7
|
|
_021E59E0:
|
|
bl ov87_021E5AFC
|
|
cmp r0, #1
|
|
bne _021E5AB2
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
mov r2, #1
|
|
bl ov87_021E725C
|
|
b _021E5AB2
|
|
_021E59F4:
|
|
bl ov87_021E5B48
|
|
cmp r0, #1
|
|
bne _021E5AB2
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
mov r2, #2
|
|
bl ov87_021E725C
|
|
b _021E5AB2
|
|
_021E5A08:
|
|
bl ov87_021E5C38
|
|
cmp r0, #1
|
|
bne _021E5AB2
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
mov r2, #3
|
|
bl ov87_021E725C
|
|
b _021E5AB2
|
|
_021E5A1C:
|
|
bl ov87_021E5CEC
|
|
cmp r0, #1
|
|
bne _021E5AB2
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #3
|
|
blo _021E5A4C
|
|
mov r0, #0
|
|
strb r0, [r4, #0xe]
|
|
add r0, r4, #0
|
|
bl ov87_021E6760
|
|
add r0, r4, #0
|
|
bl ov87_021E6668
|
|
add r0, r4, #0
|
|
bl ov87_021E66B8
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
mov r2, #4
|
|
bl ov87_021E725C
|
|
b _021E5AB2
|
|
_021E5A4C:
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
mov r2, #1
|
|
bl ov87_021E725C
|
|
b _021E5AB2
|
|
_021E5A58:
|
|
bl ov87_021E5E00
|
|
cmp r0, #1
|
|
bne _021E5AB2
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
mov r2, #5
|
|
bl ov87_021E725C
|
|
b _021E5AB2
|
|
_021E5A6C:
|
|
bl ov87_021E6080
|
|
cmp r0, #1
|
|
bne _021E5AB2
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #3
|
|
blo _021E5A86
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
mov r2, #7
|
|
bl ov87_021E725C
|
|
b _021E5AB2
|
|
_021E5A86:
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
mov r2, #6
|
|
bl ov87_021E725C
|
|
b _021E5AB2
|
|
_021E5A92:
|
|
bl ov87_021E64F8
|
|
cmp r0, #1
|
|
bne _021E5AB2
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
mov r2, #4
|
|
bl ov87_021E725C
|
|
b _021E5AB2
|
|
_021E5AA6:
|
|
bl ov87_021E65FC
|
|
cmp r0, #1
|
|
bne _021E5AB2
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
_021E5AB2:
|
|
mov r0, #0x5b
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl sub_0202457C
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E59B4
|
|
|
|
thumb_func_start ov87_021E5AC0
|
|
ov87_021E5AC0: ; 0x021E5AC0
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
bl OverlayManager_GetData
|
|
add r4, r0, #0
|
|
bl sub_02021238
|
|
mov r0, #0xdd
|
|
lsl r0, r0, #2
|
|
ldrb r1, [r4, #0xc]
|
|
ldr r0, [r4, r0]
|
|
strh r1, [r0]
|
|
bl GF_DestroyVramTransferManager
|
|
add r0, r4, #0
|
|
bl ov87_021E6780
|
|
add r0, r5, #0
|
|
bl OverlayManager_FreeData
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl Main_SetVBlankIntrCB
|
|
mov r0, #0x7a
|
|
bl DestroyHeap
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E5AC0
|
|
|
|
thumb_func_start ov87_021E5AFC
|
|
ov87_021E5AFC: ; 0x021E5AFC
|
|
push {r3, r4, lr}
|
|
sub sp, #0xc
|
|
add r4, r0, #0
|
|
ldrb r0, [r4, #8]
|
|
cmp r0, #0
|
|
beq _021E5B0E
|
|
cmp r0, #1
|
|
beq _021E5B2E
|
|
b _021E5B40
|
|
_021E5B0E:
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r0, #3
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
mov r1, #1
|
|
add r2, r1, #0
|
|
add r3, r0, #0
|
|
bl BeginNormalPaletteFade
|
|
ldrb r0, [r4, #8]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #8]
|
|
b _021E5B40
|
|
_021E5B2E:
|
|
bl IsPaletteFadeFinished
|
|
cmp r0, #1
|
|
bne _021E5B40
|
|
mov r0, #0
|
|
strb r0, [r4, #0xe]
|
|
add sp, #0xc
|
|
mov r0, #1
|
|
pop {r3, r4, pc}
|
|
_021E5B40:
|
|
mov r0, #0
|
|
add sp, #0xc
|
|
pop {r3, r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E5AFC
|
|
|
|
thumb_func_start ov87_021E5B48
|
|
ov87_021E5B48: ; 0x021E5B48
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
ldrb r0, [r6, #8]
|
|
cmp r0, #0
|
|
beq _021E5B5C
|
|
cmp r0, #1
|
|
beq _021E5BCE
|
|
cmp r0, #2
|
|
beq _021E5C22
|
|
b _021E5C2A
|
|
_021E5B5C:
|
|
mov r0, #0xff
|
|
mvn r0, r0
|
|
ldr r4, _021E5C30 ; =ov87_021E81A0
|
|
strh r0, [r6, #0x10]
|
|
mov r7, #0
|
|
add r5, r6, #0
|
|
_021E5B68:
|
|
mov r1, #0x10
|
|
mov r2, #0
|
|
ldrsh r1, [r6, r1]
|
|
ldrsh r2, [r4, r2]
|
|
mov r0, #0xcb
|
|
lsl r0, r0, #2
|
|
add r1, r1, r2
|
|
mov r2, #2
|
|
ldrsh r2, [r4, r2]
|
|
ldr r0, [r5, r0]
|
|
bl ov87_021E7FEC
|
|
mov r0, #0xcb
|
|
lsl r0, r0, #2
|
|
add r1, r7, #0
|
|
ldr r0, [r5, r0]
|
|
add r1, #0x14
|
|
bl ov87_021E7FE0
|
|
add r7, r7, #1
|
|
add r4, r4, #4
|
|
add r5, r5, #4
|
|
cmp r7, #4
|
|
blt _021E5B68
|
|
mov r0, #0x59
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
bl Options_GetFrame
|
|
add r1, r0, #0
|
|
mov r0, #0x53
|
|
lsl r0, r0, #2
|
|
add r0, r6, r0
|
|
bl ov87_021E8134
|
|
add r0, r6, #0
|
|
bl ov87_021E7048
|
|
mov r0, #1
|
|
add r1, r0, #0
|
|
bl GfGfx_EngineBTogglePlanes
|
|
mov r0, #3
|
|
strh r0, [r6, #0x12]
|
|
mov r0, #0x56
|
|
lsl r0, r0, #4
|
|
bl PlaySE
|
|
mov r0, #1
|
|
strb r0, [r6, #8]
|
|
b _021E5C2A
|
|
_021E5BCE:
|
|
mov r1, #0x10
|
|
ldrsh r0, [r6, r1]
|
|
add r0, #0x20
|
|
strh r0, [r6, #0x10]
|
|
mov r0, #0x12
|
|
ldrsh r0, [r6, r0]
|
|
lsl r2, r0, #2
|
|
mov r0, #0xcb
|
|
add r3, r6, r2
|
|
lsl r0, r0, #2
|
|
ldr r0, [r3, r0]
|
|
ldrsh r3, [r6, r1]
|
|
ldr r1, _021E5C30 ; =ov87_021E81A0
|
|
ldrsh r1, [r1, r2]
|
|
add r1, r3, r1
|
|
ldr r3, _021E5C34 ; =ov87_021E81A2
|
|
ldrsh r2, [r3, r2]
|
|
bl ov87_021E7FEC
|
|
mov r0, #0x10
|
|
ldrsh r0, [r6, r0]
|
|
cmp r0, #0
|
|
blt _021E5C2A
|
|
mov r0, #0x12
|
|
ldrsh r0, [r6, r0]
|
|
cmp r0, #0
|
|
bne _021E5C0A
|
|
mov r0, #2
|
|
strb r0, [r6, #8]
|
|
b _021E5C2A
|
|
_021E5C0A:
|
|
mov r0, #0x56
|
|
lsl r0, r0, #4
|
|
bl PlaySE
|
|
mov r0, #0x12
|
|
ldrsh r0, [r6, r0]
|
|
sub r0, r0, #1
|
|
strh r0, [r6, #0x12]
|
|
mov r0, #0xff
|
|
mvn r0, r0
|
|
strh r0, [r6, #0x10]
|
|
b _021E5C2A
|
|
_021E5C22:
|
|
mov r0, #0
|
|
strh r0, [r6, #0x10]
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E5C2A:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E5C30: .word ov87_021E81A0
|
|
_021E5C34: .word ov87_021E81A2
|
|
thumb_func_end ov87_021E5B48
|
|
|
|
thumb_func_start ov87_021E5C38
|
|
ov87_021E5C38: ; 0x021E5C38
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #8
|
|
add r5, r0, #0
|
|
ldrb r0, [r5, #8]
|
|
cmp r0, #0
|
|
beq _021E5C4E
|
|
cmp r0, #1
|
|
beq _021E5C60
|
|
cmp r0, #2
|
|
beq _021E5CD8
|
|
b _021E5CDE
|
|
_021E5C4E:
|
|
mov r0, #4
|
|
mov r1, #1
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #0x1e
|
|
strb r0, [r5, #0xf]
|
|
mov r0, #1
|
|
strb r0, [r5, #8]
|
|
b _021E5CDE
|
|
_021E5C60:
|
|
ldrb r0, [r5, #0xf]
|
|
cmp r0, #0
|
|
bne _021E5C7C
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #0xd
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
b _021E5C80
|
|
_021E5C7C:
|
|
sub r0, r0, #1
|
|
strb r0, [r5, #0xf]
|
|
_021E5C80:
|
|
ldr r0, _021E5CE4 ; =ov87_021E81C0
|
|
bl TouchscreenHitbox_FindRectAtTouchHeld
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
cmp r4, r0
|
|
beq _021E5CDE
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #0xd
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
ldr r0, _021E5CE8 ; =0x000005E4
|
|
bl PlaySE
|
|
ldrb r0, [r5, #0xe]
|
|
add r1, sp, #0
|
|
add r0, r5, r0
|
|
strb r4, [r0, #0x15]
|
|
ldrb r0, [r5, #0xe]
|
|
add r0, r0, #1
|
|
strb r0, [r5, #0xe]
|
|
add r0, sp, #4
|
|
bl System_GetTouchHeldCoords
|
|
mov r0, #0x53
|
|
lsl r0, r0, #2
|
|
add r0, r5, r0
|
|
mov r1, #0
|
|
bl ClearFrameAndWindow2
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl GfGfx_EngineBTogglePlanes
|
|
mov r0, #2
|
|
strb r0, [r5, #8]
|
|
b _021E5CDE
|
|
_021E5CD8:
|
|
add sp, #8
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
_021E5CDE:
|
|
mov r0, #0
|
|
add sp, #8
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
_021E5CE4: .word ov87_021E81C0
|
|
_021E5CE8: .word 0x000005E4
|
|
thumb_func_end ov87_021E5C38
|
|
|
|
thumb_func_start ov87_021E5CEC
|
|
ov87_021E5CEC: ; 0x021E5CEC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
ldrb r1, [r4, #0xe]
|
|
sub r1, r1, #1
|
|
add r1, r4, r1
|
|
ldrb r7, [r1, #0x15]
|
|
ldrb r1, [r4, #8]
|
|
cmp r1, #3
|
|
bhi _021E5DFA
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021E5D0C: ; jump table
|
|
.short _021E5D14 - _021E5D0C - 2 ; case 0
|
|
.short _021E5D40 - _021E5D0C - 2 ; case 1
|
|
.short _021E5D9E - _021E5D0C - 2 ; case 2
|
|
.short _021E5DF0 - _021E5D0C - 2 ; case 3
|
|
_021E5D14:
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
str r0, [r4, #0x1c]
|
|
str r0, [r4, #0x20]
|
|
str r0, [r4, #0x24]
|
|
mov r1, #0
|
|
mov r2, #0x3a
|
|
strh r1, [r4, #0x10]
|
|
lsl r2, r2, #4
|
|
ldrb r3, [r4, r2]
|
|
mov r0, #0xfe
|
|
bic r3, r0
|
|
lsl r0, r7, #2
|
|
strb r3, [r4, r2]
|
|
add r0, r4, r0
|
|
sub r2, #0x74
|
|
ldr r0, [r0, r2]
|
|
bl ov87_021E7FE0
|
|
mov r0, #1
|
|
strb r0, [r4, #8]
|
|
b _021E5DFA
|
|
_021E5D40:
|
|
lsl r1, r7, #0x18
|
|
lsr r1, r1, #0x18
|
|
bl ov87_021E73E0
|
|
mov r0, #1
|
|
ldr r2, [r4, #0x1c]
|
|
lsl r0, r0, #8
|
|
add r2, r2, r0
|
|
str r2, [r4, #0x1c]
|
|
ldr r2, [r4, #0x20]
|
|
add r1, r4, #0
|
|
add r2, r2, r0
|
|
str r2, [r4, #0x20]
|
|
ldr r2, [r4, #0x24]
|
|
add r1, #0x1c
|
|
add r0, r2, r0
|
|
str r0, [r4, #0x24]
|
|
mov r0, #0x10
|
|
ldrsh r0, [r4, r0]
|
|
add r0, r0, #1
|
|
strh r0, [r4, #0x10]
|
|
lsl r0, r7, #2
|
|
add r2, r4, r0
|
|
mov r0, #0xcb
|
|
lsl r0, r0, #2
|
|
ldr r0, [r2, r0]
|
|
bl ov87_021E806C
|
|
mov r0, #6
|
|
ldr r1, [r4, #0x1c]
|
|
lsl r0, r0, #0xa
|
|
cmp r1, r0
|
|
bne _021E5DFA
|
|
mov r0, #0
|
|
strh r0, [r4, #0x10]
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
str r0, [r4, #0x1c]
|
|
str r0, [r4, #0x20]
|
|
str r0, [r4, #0x24]
|
|
mov r0, #0x56
|
|
lsl r0, r0, #4
|
|
bl PlaySE
|
|
mov r0, #2
|
|
strb r0, [r4, #8]
|
|
b _021E5DFA
|
|
_021E5D9E:
|
|
mov r0, #0x10
|
|
ldrsh r0, [r4, r0]
|
|
mov r6, #0
|
|
add r5, r4, #0
|
|
add r0, #0x10
|
|
strh r0, [r4, #0x10]
|
|
_021E5DAA:
|
|
mov r0, #0xcb
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
add r1, sp, #4
|
|
add r2, sp, #0
|
|
bl ov87_021E8014
|
|
mov r0, #0xcb
|
|
lsl r0, r0, #2
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [sp]
|
|
add r1, #0x10
|
|
bl ov87_021E7FEC
|
|
add r6, r6, #1
|
|
add r5, r5, #4
|
|
cmp r6, #4
|
|
blt _021E5DAA
|
|
mov r0, #0x10
|
|
ldrsh r1, [r4, r0]
|
|
add r0, #0xf0
|
|
cmp r1, r0
|
|
blt _021E5DFA
|
|
lsl r0, r7, #2
|
|
add r1, r4, r0
|
|
mov r0, #0xcb
|
|
lsl r0, r0, #2
|
|
ldr r0, [r1, r0]
|
|
mov r1, #0
|
|
bl ov87_021E8058
|
|
mov r0, #3
|
|
strb r0, [r4, #8]
|
|
b _021E5DFA
|
|
_021E5DF0:
|
|
mov r0, #0
|
|
strh r0, [r4, #0x10]
|
|
add sp, #8
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E5DFA:
|
|
mov r0, #0
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov87_021E5CEC
|
|
|
|
thumb_func_start ov87_021E5E00
|
|
ov87_021E5E00: ; 0x021E5E00
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r4, r0, #0
|
|
ldrb r1, [r4, #8]
|
|
cmp r1, #3
|
|
bls _021E5E0C
|
|
b _021E606C
|
|
_021E5E0C:
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021E5E18: ; jump table
|
|
.short _021E5E20 - _021E5E18 - 2 ; case 0
|
|
.short _021E5EDE - _021E5E18 - 2 ; case 1
|
|
.short _021E5FCE - _021E5E18 - 2 ; case 2
|
|
.short _021E6062 - _021E5E18 - 2 ; case 3
|
|
_021E5E20:
|
|
bl ov87_021E7A2C
|
|
mov r1, #0
|
|
mov r3, #0xe3
|
|
str r1, [sp]
|
|
lsl r3, r3, #2
|
|
ldr r2, [r4, r3]
|
|
sub r3, r3, #4
|
|
ldr r3, [r4, r3]
|
|
ldr r0, [r4, #0x58]
|
|
ldr r3, [r3, #0x10]
|
|
bl BG_LoadCharTilesData
|
|
ldr r0, [r4, #0x58]
|
|
mov r1, #0
|
|
bl BgCommitTilemapBufferToVram
|
|
mov r0, #1
|
|
lsl r0, r0, #8
|
|
strh r0, [r4, #0x12]
|
|
mov r3, #0x12
|
|
ldrsh r3, [r4, r3]
|
|
ldr r0, [r4, #0x58]
|
|
mov r1, #6
|
|
mov r2, #0
|
|
bl BgSetPosTextAndCommit
|
|
mov r3, #0x12
|
|
mov r1, #0
|
|
ldrsh r3, [r4, r3]
|
|
ldr r0, [r4, #0x58]
|
|
add r2, r1, #0
|
|
bl BgSetPosTextAndCommit
|
|
mov r3, #0x12
|
|
ldrsh r3, [r4, r3]
|
|
ldr r0, [r4, #0x58]
|
|
mov r1, #1
|
|
mov r2, #0
|
|
bl BgSetPosTextAndCommit
|
|
mov r0, #1
|
|
add r1, r0, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #2
|
|
mov r1, #1
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #4
|
|
mov r1, #1
|
|
bl GfGfx_EngineBTogglePlanes
|
|
mov r0, #0xff
|
|
mvn r0, r0
|
|
strh r0, [r4, #0x10]
|
|
ldrb r1, [r4, #0xe]
|
|
mov r0, #0
|
|
mov r2, #0x96
|
|
add r1, r4, r1
|
|
strb r0, [r1, #0x19]
|
|
ldr r1, _021E6070 ; =0x000003FA
|
|
add r5, r0, #0
|
|
lsl r2, r2, #8
|
|
_021E5EA0:
|
|
add r3, r4, r0
|
|
add r0, r0, #1
|
|
strb r5, [r3, r1]
|
|
cmp r0, r2
|
|
blt _021E5EA0
|
|
ldr r0, _021E6074 ; =0x000003A1
|
|
strb r5, [r4, r0]
|
|
add r0, r4, #0
|
|
bl ov87_021E7334
|
|
ldrb r1, [r4, #0xe]
|
|
add r0, r4, #0
|
|
add r1, r4, r1
|
|
ldrb r1, [r1, #0x19]
|
|
bl ov87_021E7324
|
|
ldrb r1, [r4, #0xe]
|
|
add r0, r4, #0
|
|
add r1, r4, r1
|
|
ldrb r1, [r1, #0x19]
|
|
bl ov87_021E734C
|
|
add r0, r4, #0
|
|
bl ov87_021E74B8
|
|
add r0, r4, #0
|
|
bl ov87_021E74D4
|
|
mov r0, #1
|
|
strb r0, [r4, #8]
|
|
b _021E606C
|
|
_021E5EDE:
|
|
mov r7, #0
|
|
mov r6, #0x1a
|
|
add r5, r4, #0
|
|
_021E5EE4:
|
|
mov r1, #0x10
|
|
mov r0, #0xbe
|
|
ldrsh r1, [r4, r1]
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
add r1, #0x3c
|
|
add r2, r6, #0
|
|
bl ov87_021E7FEC
|
|
mov r0, #0xbe
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #1
|
|
bl ov87_021E7FD4
|
|
add r7, r7, #1
|
|
add r6, #0x2a
|
|
add r5, r5, #4
|
|
cmp r7, #4
|
|
blt _021E5EE4
|
|
mov r7, #0xd1
|
|
mov r6, #0
|
|
add r5, r4, #0
|
|
lsl r7, r7, #2
|
|
_021E5F14:
|
|
ldr r0, [r5, r7]
|
|
mov r1, #1
|
|
bl ov87_021E8078
|
|
add r6, r6, #1
|
|
add r5, r5, #4
|
|
cmp r6, #3
|
|
blt _021E5F14
|
|
ldr r0, _021E6078 ; =0x0000039D
|
|
mov r7, #0
|
|
strb r7, [r4, r0]
|
|
add r1, r0, #3
|
|
ldrb r2, [r4, r1]
|
|
mov r1, #1
|
|
ldr r6, _021E607C ; =ov87_021E82E4
|
|
bic r2, r1
|
|
add r1, r0, #3
|
|
strb r2, [r4, r1]
|
|
mov r2, #0xb1
|
|
add r1, r0, #5
|
|
strb r2, [r4, r1]
|
|
add r1, r0, #6
|
|
mov r2, #0xb2
|
|
strb r2, [r4, r1]
|
|
mov r1, #0xb3
|
|
add r0, r0, #7
|
|
strb r1, [r4, r0]
|
|
add r5, r4, #0
|
|
_021E5F4C:
|
|
mov r1, #0x10
|
|
mov r2, #0
|
|
ldrsh r1, [r4, r1]
|
|
ldrsh r2, [r6, r2]
|
|
mov r0, #0xc2
|
|
lsl r0, r0, #2
|
|
add r1, r1, r2
|
|
mov r2, #2
|
|
ldrsh r2, [r6, r2]
|
|
ldr r0, [r5, r0]
|
|
bl ov87_021E7FEC
|
|
mov r0, #0xc2
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #1
|
|
bl ov87_021E7FD4
|
|
mov r1, #0x36
|
|
mov r0, #0xc2
|
|
lsl r0, r0, #2
|
|
add r2, r4, r7
|
|
lsl r1, r1, #4
|
|
ldrb r1, [r2, r1]
|
|
ldr r0, [r5, r0]
|
|
bl ov87_021E803C
|
|
add r7, r7, #1
|
|
add r6, r6, #4
|
|
add r5, r5, #4
|
|
cmp r7, #9
|
|
blt _021E5F4C
|
|
mov r0, #0x18
|
|
str r0, [sp]
|
|
ldrb r2, [r4, #0xe]
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
add r2, r4, r2
|
|
ldrb r2, [r2, #0x15]
|
|
mov r3, #0x20
|
|
add r2, r2, #4
|
|
lsl r2, r2, #0x18
|
|
lsr r2, r2, #0x18
|
|
bl ov87_021E7460
|
|
mov r0, #0x18
|
|
str r0, [sp]
|
|
ldrb r2, [r4, #0xe]
|
|
add r0, r4, #0
|
|
mov r1, #6
|
|
add r2, r4, r2
|
|
ldrb r2, [r2, #0x15]
|
|
mov r3, #0x20
|
|
add r2, r2, #1
|
|
lsl r2, r2, #0x18
|
|
lsr r2, r2, #0x18
|
|
bl ov87_021E7460
|
|
mov r0, #0x56
|
|
lsl r0, r0, #4
|
|
bl PlaySE
|
|
mov r0, #2
|
|
strb r0, [r4, #8]
|
|
b _021E606C
|
|
_021E5FCE:
|
|
mov r3, #0x12
|
|
ldrsh r3, [r4, r3]
|
|
ldr r0, [r4, #0x58]
|
|
mov r1, #6
|
|
mov r2, #0
|
|
bl BgSetPosTextAndCommit
|
|
mov r3, #0x12
|
|
mov r1, #0
|
|
ldrsh r3, [r4, r3]
|
|
ldr r0, [r4, #0x58]
|
|
add r2, r1, #0
|
|
bl BgSetPosTextAndCommit
|
|
mov r3, #0x12
|
|
ldrsh r3, [r4, r3]
|
|
ldr r0, [r4, #0x58]
|
|
mov r1, #1
|
|
mov r2, #0
|
|
bl BgSetPosTextAndCommit
|
|
mov r0, #0x12
|
|
ldrsh r0, [r4, r0]
|
|
sub r0, #0x10
|
|
strh r0, [r4, #0x12]
|
|
mov r0, #0x10
|
|
ldrsh r0, [r4, r0]
|
|
cmp r0, #0
|
|
blt _021E600E
|
|
mov r0, #3
|
|
strb r0, [r4, #8]
|
|
b _021E6058
|
|
_021E600E:
|
|
mov r7, #0
|
|
mov r6, #0x1a
|
|
add r5, r4, #0
|
|
_021E6014:
|
|
mov r1, #0x10
|
|
mov r0, #0xbe
|
|
ldrsh r1, [r4, r1]
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
add r1, #0x3c
|
|
add r2, r6, #0
|
|
bl ov87_021E7FEC
|
|
add r7, r7, #1
|
|
add r6, #0x2a
|
|
add r5, r5, #4
|
|
cmp r7, #4
|
|
blt _021E6014
|
|
ldr r5, _021E607C ; =ov87_021E82E4
|
|
mov r7, #0
|
|
add r6, r4, #0
|
|
_021E6036:
|
|
mov r1, #0x10
|
|
mov r2, #0
|
|
ldrsh r1, [r4, r1]
|
|
ldrsh r2, [r5, r2]
|
|
mov r0, #0xc2
|
|
lsl r0, r0, #2
|
|
add r1, r1, r2
|
|
mov r2, #2
|
|
ldrsh r2, [r5, r2]
|
|
ldr r0, [r6, r0]
|
|
bl ov87_021E7FEC
|
|
add r7, r7, #1
|
|
add r5, r5, #4
|
|
add r6, r6, #4
|
|
cmp r7, #9
|
|
blt _021E6036
|
|
_021E6058:
|
|
mov r0, #0x10
|
|
ldrsh r0, [r4, r0]
|
|
add r0, #0x10
|
|
strh r0, [r4, #0x10]
|
|
b _021E606C
|
|
_021E6062:
|
|
mov r0, #0
|
|
strh r0, [r4, #0x10]
|
|
strh r0, [r4, #0x12]
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E606C:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_021E6070: .word 0x000003FA
|
|
_021E6074: .word 0x000003A1
|
|
_021E6078: .word 0x0000039D
|
|
_021E607C: .word ov87_021E82E4
|
|
thumb_func_end ov87_021E5E00
|
|
|
|
thumb_func_start ov87_021E6080
|
|
ov87_021E6080: ; 0x021E6080
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r4, r0, #0
|
|
ldrb r1, [r4, #8]
|
|
cmp r1, #0xb
|
|
bls _021E608C
|
|
b _021E64F4
|
|
_021E608C:
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021E6098: ; jump table
|
|
.short _021E60B0 - _021E6098 - 2 ; case 0
|
|
.short _021E613E - _021E6098 - 2 ; case 1
|
|
.short _021E6154 - _021E6098 - 2 ; case 2
|
|
.short _021E6184 - _021E6098 - 2 ; case 3
|
|
.short _021E633A - _021E6098 - 2 ; case 4
|
|
.short _021E6356 - _021E6098 - 2 ; case 5
|
|
.short _021E636A - _021E6098 - 2 ; case 6
|
|
.short _021E63BA - _021E6098 - 2 ; case 7
|
|
.short _021E63E4 - _021E6098 - 2 ; case 8
|
|
.short _021E6414 - _021E6098 - 2 ; case 9
|
|
.short _021E647E - _021E6098 - 2 ; case 10
|
|
.short _021E64E8 - _021E6098 - 2 ; case 11
|
|
_021E60B0:
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #2
|
|
bne _021E60E2
|
|
mov r0, #0x4b
|
|
lsl r0, r0, #2
|
|
add r0, r4, r0
|
|
bl ClearWindowTilemapAndCopyToVram
|
|
add r0, r4, #0
|
|
bl ov87_021E71B4
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0x58
|
|
mov r2, #0xa0
|
|
bl ov87_021E7FEC
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E803C
|
|
b _021E60F2
|
|
_021E60E2:
|
|
mov r0, #0x4f
|
|
lsl r0, r0, #2
|
|
add r0, r4, r0
|
|
bl ClearWindowTilemapAndCopyToVram
|
|
add r0, r4, #0
|
|
bl ov87_021E717C
|
|
_021E60F2:
|
|
mov r0, #0x1e
|
|
strb r0, [r4, #0xf]
|
|
mov r0, #0xd
|
|
lsl r0, r0, #6
|
|
ldr r0, [r4, r0]
|
|
mov r1, #1
|
|
bl ov87_021E7FD4
|
|
add r0, r4, #0
|
|
bl ov87_021E708C
|
|
mov r5, #0
|
|
_021E610A:
|
|
lsl r1, r5, #0x18
|
|
add r0, r4, #0
|
|
lsr r1, r1, #0x18
|
|
bl ov87_021E71EC
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
blt _021E610A
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #1
|
|
bl ov87_021E7FD4
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E8084
|
|
ldr r0, _021E63F4 ; =0x00000562
|
|
bl PlaySE
|
|
mov r0, #1
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E613E:
|
|
mov r0, #4
|
|
mov r1, #1
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #1
|
|
add r1, r0, #0
|
|
bl GfGfx_EngineBTogglePlanes
|
|
mov r0, #2
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E6154:
|
|
ldrb r0, [r4, #0xf]
|
|
cmp r0, #0
|
|
bne _021E617E
|
|
mov r0, #0xd
|
|
lsl r0, r0, #6
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add r0, r4, #0
|
|
add r0, #0xfc
|
|
mov r1, #0
|
|
bl FillWindowPixelBuffer
|
|
add r0, r4, #0
|
|
add r0, #0xfc
|
|
bl ScheduleWindowCopyToVram
|
|
mov r0, #3
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E617E:
|
|
sub r0, r0, #1
|
|
strb r0, [r4, #0xf]
|
|
b _021E64F4
|
|
_021E6184:
|
|
mov r0, #0xee
|
|
lsl r0, r0, #2
|
|
add r0, r4, r0
|
|
mov r1, #4
|
|
mov r2, #2
|
|
bl sub_02021280
|
|
ldr r0, _021E63F8 ; =ov87_021E8308
|
|
bl TouchscreenHitbox_FindRectAtTouchHeld
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
mvn r0, r0
|
|
cmp r5, r0
|
|
beq _021E6290
|
|
add r0, r4, #0
|
|
bl ov87_021E7490
|
|
cmp r0, #3
|
|
bhs _021E61B6
|
|
mov r0, #0xe5
|
|
mov r2, #1
|
|
add r1, r4, r5
|
|
lsl r0, r0, #2
|
|
strb r2, [r1, r0]
|
|
_021E61B6:
|
|
mov r0, #0xe5
|
|
add r1, r4, r5
|
|
lsl r0, r0, #2
|
|
ldrb r0, [r1, r0]
|
|
cmp r0, #1
|
|
bne _021E61EA
|
|
add r0, r4, #0
|
|
bl ov87_021E7550
|
|
lsl r1, r5, #0x18
|
|
add r0, r4, #0
|
|
lsr r1, r1, #0x18
|
|
bl ov87_021E75E0
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl ov87_021E74F4
|
|
ldr r0, _021E63FC ; =0x0000055F
|
|
bl IsSEPlaying
|
|
cmp r0, #0
|
|
bne _021E61EA
|
|
ldr r0, _021E63FC ; =0x0000055F
|
|
bl PlaySE
|
|
_021E61EA:
|
|
add r0, r4, #0
|
|
bl ov87_021E7734
|
|
cmp r0, #1
|
|
bne _021E6262
|
|
ldr r0, _021E63FC ; =0x0000055F
|
|
mov r1, #0
|
|
bl StopSE
|
|
mov r0, #0xd
|
|
lsl r0, r0, #6
|
|
ldr r0, [r4, r0]
|
|
mov r1, #1
|
|
bl ov87_021E7FD4
|
|
ldr r1, _021E6400 ; =0x0000039F
|
|
ldrb r0, [r4, r1]
|
|
lsl r0, r0, #1
|
|
add r2, r4, r0
|
|
add r0, r1, #0
|
|
sub r0, #0x35
|
|
ldrh r3, [r2, r0]
|
|
add r0, r1, #0
|
|
sub r0, #0x27
|
|
ldr r2, [r4, r0]
|
|
ldrb r0, [r4, #0xe]
|
|
lsl r0, r0, #1
|
|
strh r3, [r2, r0]
|
|
ldrb r0, [r4, r1]
|
|
lsl r0, r0, #1
|
|
add r2, r4, r0
|
|
add r0, r1, #0
|
|
sub r0, #0x35
|
|
ldrh r0, [r2, r0]
|
|
cmp r0, #0x5c
|
|
bne _021E6236
|
|
mov r2, #1
|
|
b _021E6238
|
|
_021E6236:
|
|
mov r2, #3
|
|
_021E6238:
|
|
ldrb r0, [r4, #0xe]
|
|
sub r1, #0x23
|
|
ldr r1, [r4, r1]
|
|
lsl r0, r0, #1
|
|
strh r2, [r1, r0]
|
|
add r0, r4, #0
|
|
bl ov87_021E788C
|
|
cmp r0, #1
|
|
bne _021E6250
|
|
mov r0, #0x1e
|
|
b _021E6252
|
|
_021E6250:
|
|
mov r0, #0
|
|
_021E6252:
|
|
strb r0, [r4, #0xf]
|
|
add r0, r4, #0
|
|
bl ov87_021E70D0
|
|
mov r0, #4
|
|
strb r0, [r4, #8]
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E6262:
|
|
ldr r0, _021E6404 ; =0x000003A1
|
|
ldrb r0, [r4, r0]
|
|
cmp r0, #3
|
|
blo _021E6298
|
|
ldr r0, _021E63FC ; =0x0000055F
|
|
mov r1, #0
|
|
bl StopSE
|
|
mov r0, #0x3c
|
|
strb r0, [r4, #0xf]
|
|
mov r0, #0xd
|
|
lsl r0, r0, #6
|
|
ldr r0, [r4, r0]
|
|
mov r1, #1
|
|
bl ov87_021E7FD4
|
|
add r0, r4, #0
|
|
bl ov87_021E7134
|
|
mov r0, #7
|
|
strb r0, [r4, #8]
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E6290:
|
|
ldr r0, _021E63FC ; =0x0000055F
|
|
mov r1, #0
|
|
bl StopSE
|
|
_021E6298:
|
|
mov r0, #0x3a
|
|
lsl r0, r0, #4
|
|
ldrb r0, [r4, r0]
|
|
lsl r0, r0, #0x1f
|
|
lsr r0, r0, #0x1f
|
|
cmp r0, #1
|
|
bne _021E62AC
|
|
add r0, r4, #0
|
|
bl ov87_021E7698
|
|
_021E62AC:
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #2
|
|
bne _021E62F6
|
|
ldr r0, _021E6408 ; =ov87_021E8184
|
|
bl TouchscreenHitbox_FindRectAtTouchNew
|
|
mov r1, #0
|
|
mvn r1, r1
|
|
cmp r0, r1
|
|
beq _021E6378
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #1
|
|
bl ov87_021E8084
|
|
add r0, r4, #0
|
|
bl ov87_021E7008
|
|
ldr r0, _021E640C ; =0x000005E4
|
|
bl PlaySE
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E803C
|
|
add r0, r4, #0
|
|
bl ov87_021E6AE0
|
|
add r0, r4, #0
|
|
bl ov87_021E6AF4
|
|
mov r0, #0xa
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E62F6:
|
|
ldr r0, _021E6410 ; =ov87_021E818C
|
|
bl TouchscreenHitbox_FindRectAtTouchNew
|
|
mov r1, #0
|
|
mvn r1, r1
|
|
cmp r0, r1
|
|
beq _021E6378
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #1
|
|
bl ov87_021E8084
|
|
add r0, r4, #0
|
|
bl ov87_021E7008
|
|
ldr r0, _021E640C ; =0x000005E4
|
|
bl PlaySE
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #1
|
|
bl ov87_021E803C
|
|
add r0, r4, #0
|
|
bl ov87_021E6AE0
|
|
add r0, r4, #0
|
|
bl ov87_021E6AF4
|
|
mov r0, #9
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E633A:
|
|
ldrb r1, [r4, #0xf]
|
|
cmp r1, #0
|
|
bne _021E6350
|
|
mov r1, #0
|
|
bl ov87_021E78D8
|
|
cmp r0, #0
|
|
bne _021E6378
|
|
mov r0, #5
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E6350:
|
|
sub r0, r1, #1
|
|
strb r0, [r4, #0xf]
|
|
b _021E64F4
|
|
_021E6356:
|
|
mov r1, #1
|
|
bl ov87_021E78D8
|
|
cmp r0, #0
|
|
bne _021E6378
|
|
mov r0, #0
|
|
strb r0, [r4, #0xf]
|
|
mov r0, #6
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E636A:
|
|
mov r0, #0xd7
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl ov87_021E80B4
|
|
cmp r0, #1
|
|
bne _021E637A
|
|
_021E6378:
|
|
b _021E64F4
|
|
_021E637A:
|
|
ldrb r0, [r4, #0xf]
|
|
cmp r0, #0
|
|
bne _021E63B4
|
|
mov r7, #0x35
|
|
mov r6, #0
|
|
add r5, r4, #0
|
|
lsl r7, r7, #4
|
|
_021E6388:
|
|
ldr r0, [r5, r7]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add r6, r6, #1
|
|
add r5, r5, #4
|
|
cmp r6, #3
|
|
blt _021E6388
|
|
mov r0, #0xd7
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add r0, r4, #0
|
|
bl ov87_021E7998
|
|
add r0, r4, #0
|
|
bl ov87_021E79A0
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E63B4:
|
|
sub r0, r0, #1
|
|
strb r0, [r4, #0xf]
|
|
b _021E64F4
|
|
_021E63BA:
|
|
ldrb r0, [r4, #0xf]
|
|
cmp r0, #0
|
|
bne _021E63DE
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
add r0, r4, #0
|
|
bl ov87_021E7998
|
|
add r0, r4, #0
|
|
bl ov87_021E79A0
|
|
mov r0, #0x1e
|
|
strb r0, [r4, #0xf]
|
|
mov r0, #8
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E63DE:
|
|
sub r0, r0, #1
|
|
strb r0, [r4, #0xf]
|
|
b _021E64F4
|
|
_021E63E4:
|
|
ldrb r0, [r4, #0xf]
|
|
cmp r0, #0
|
|
bne _021E63EE
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E63EE:
|
|
sub r0, r0, #1
|
|
strb r0, [r4, #0xf]
|
|
b _021E64F4
|
|
.balign 4, 0
|
|
_021E63F4: .word 0x00000562
|
|
_021E63F8: .word ov87_021E8308
|
|
_021E63FC: .word 0x0000055F
|
|
_021E6400: .word 0x0000039F
|
|
_021E6404: .word 0x000003A1
|
|
_021E6408: .word ov87_021E8184
|
|
_021E640C: .word 0x000005E4
|
|
_021E6410: .word ov87_021E818C
|
|
_021E6414:
|
|
mov r0, #0x39
|
|
lsl r0, r0, #4
|
|
ldr r0, [r4, r0]
|
|
bl YesNoPrompt_HandleInputForSave
|
|
cmp r0, #1
|
|
bne _021E6450
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E8084
|
|
add r0, r4, #0
|
|
add r0, #0x5c
|
|
mov r1, #0
|
|
bl sub_0200E5D4
|
|
add r0, r4, #0
|
|
add r0, #0x5c
|
|
bl ClearWindowTilemapAndCopyToVram
|
|
add r0, r4, #0
|
|
bl ov87_021E7998
|
|
add r0, r4, #0
|
|
bl ov87_021E6B28
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E6450:
|
|
cmp r0, #2
|
|
bne _021E64F4
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E8084
|
|
add r0, r4, #0
|
|
add r0, #0x5c
|
|
mov r1, #0
|
|
bl sub_0200E5D4
|
|
add r0, r4, #0
|
|
add r0, #0x5c
|
|
bl ClearWindowTilemapAndCopyToVram
|
|
add r0, r4, #0
|
|
bl ov87_021E6B28
|
|
mov r0, #0xb
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E647E:
|
|
mov r0, #0x39
|
|
lsl r0, r0, #4
|
|
ldr r0, [r4, r0]
|
|
bl YesNoPrompt_HandleInputForSave
|
|
cmp r0, #1
|
|
bne _021E64BA
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E8084
|
|
add r0, r4, #0
|
|
add r0, #0x5c
|
|
mov r1, #0
|
|
bl sub_0200E5D4
|
|
add r0, r4, #0
|
|
add r0, #0x5c
|
|
bl ClearWindowTilemapAndCopyToVram
|
|
add r0, r4, #0
|
|
bl ov87_021E7990
|
|
add r0, r4, #0
|
|
bl ov87_021E6B28
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E64BA:
|
|
cmp r0, #2
|
|
bne _021E64F4
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E8084
|
|
add r0, r4, #0
|
|
add r0, #0x5c
|
|
mov r1, #0
|
|
bl sub_0200E5D4
|
|
add r0, r4, #0
|
|
add r0, #0x5c
|
|
bl ClearWindowTilemapAndCopyToVram
|
|
add r0, r4, #0
|
|
bl ov87_021E6B28
|
|
mov r0, #0xb
|
|
strb r0, [r4, #8]
|
|
b _021E64F4
|
|
_021E64E8:
|
|
bl System_GetTouchHeld
|
|
cmp r0, #0
|
|
bne _021E64F4
|
|
mov r0, #3
|
|
strb r0, [r4, #8]
|
|
_021E64F4:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov87_021E6080
|
|
|
|
thumb_func_start ov87_021E64F8
|
|
ov87_021E64F8: ; 0x021E64F8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
ldrb r0, [r5, #8]
|
|
cmp r0, #0
|
|
beq _021E650C
|
|
cmp r0, #1
|
|
beq _021E653C
|
|
cmp r0, #2
|
|
beq _021E65EA
|
|
b _021E65F4
|
|
_021E650C:
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl GfGfx_EngineBTogglePlanes
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
mov r0, #0
|
|
strh r0, [r5, #0x10]
|
|
strh r0, [r5, #0x12]
|
|
mov r0, #0x56
|
|
lsl r0, r0, #4
|
|
bl PlaySE
|
|
mov r0, #1
|
|
strb r0, [r5, #8]
|
|
b _021E65F4
|
|
_021E653C:
|
|
mov r3, #0x12
|
|
ldrsh r3, [r5, r3]
|
|
ldr r0, [r5, #0x58]
|
|
mov r1, #6
|
|
mov r2, #0
|
|
bl BgSetPosTextAndCommit
|
|
mov r3, #0x12
|
|
mov r1, #0
|
|
ldrsh r3, [r5, r3]
|
|
ldr r0, [r5, #0x58]
|
|
add r2, r1, #0
|
|
bl BgSetPosTextAndCommit
|
|
mov r3, #0x12
|
|
ldrsh r3, [r5, r3]
|
|
ldr r0, [r5, #0x58]
|
|
mov r1, #1
|
|
mov r2, #0
|
|
bl BgSetPosTextAndCommit
|
|
mov r0, #0x12
|
|
ldrsh r0, [r5, r0]
|
|
sub r0, #0x10
|
|
strh r0, [r5, #0x12]
|
|
mov r0, #0x10
|
|
ldrsh r1, [r5, r0]
|
|
add r0, #0xf0
|
|
cmp r1, r0
|
|
blt _021E657E
|
|
mov r0, #2
|
|
strb r0, [r5, #8]
|
|
b _021E65E0
|
|
_021E657E:
|
|
mov r7, #0
|
|
mov r6, #0x1a
|
|
add r4, r5, #0
|
|
_021E6584:
|
|
mov r1, #0x10
|
|
mov r0, #0xbe
|
|
ldrsh r1, [r5, r1]
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
add r1, #0x3c
|
|
add r2, r6, #0
|
|
bl ov87_021E7FEC
|
|
add r7, r7, #1
|
|
add r6, #0x2a
|
|
add r4, r4, #4
|
|
cmp r7, #4
|
|
blt _021E6584
|
|
mov r7, #0xd1
|
|
mov r6, #0
|
|
add r4, r5, #0
|
|
lsl r7, r7, #2
|
|
_021E65A8:
|
|
ldr r0, [r4, r7]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add r6, r6, #1
|
|
add r4, r4, #4
|
|
cmp r6, #3
|
|
blt _021E65A8
|
|
ldr r4, _021E65F8 ; =ov87_021E82E4
|
|
mov r7, #0
|
|
add r6, r5, #0
|
|
_021E65BE:
|
|
mov r1, #0x10
|
|
mov r2, #0
|
|
ldrsh r1, [r5, r1]
|
|
ldrsh r2, [r4, r2]
|
|
mov r0, #0xc2
|
|
lsl r0, r0, #2
|
|
add r1, r1, r2
|
|
mov r2, #2
|
|
ldrsh r2, [r4, r2]
|
|
ldr r0, [r6, r0]
|
|
bl ov87_021E7FEC
|
|
add r7, r7, #1
|
|
add r4, r4, #4
|
|
add r6, r6, #4
|
|
cmp r7, #9
|
|
blt _021E65BE
|
|
_021E65E0:
|
|
mov r0, #0x10
|
|
ldrsh r0, [r5, r0]
|
|
add r0, #0x10
|
|
strh r0, [r5, #0x10]
|
|
b _021E65F4
|
|
_021E65EA:
|
|
mov r0, #0
|
|
strh r0, [r5, #0x10]
|
|
strh r0, [r5, #0x12]
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E65F4:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_021E65F8: .word ov87_021E82E4
|
|
thumb_func_end ov87_021E64F8
|
|
|
|
thumb_func_start ov87_021E65FC
|
|
ov87_021E65FC: ; 0x021E65FC
|
|
push {r3, r4, lr}
|
|
sub sp, #0xc
|
|
add r4, r0, #0
|
|
ldrb r0, [r4, #8]
|
|
cmp r0, #0
|
|
beq _021E6612
|
|
cmp r0, #1
|
|
beq _021E661E
|
|
cmp r0, #2
|
|
beq _021E6654
|
|
b _021E6662
|
|
_021E6612:
|
|
mov r0, #0xa
|
|
strb r0, [r4, #0xd]
|
|
ldrb r0, [r4, #8]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #8]
|
|
b _021E6662
|
|
_021E661E:
|
|
ldrb r0, [r4, #0xd]
|
|
sub r0, r0, #1
|
|
strb r0, [r4, #0xd]
|
|
ldrb r0, [r4, #0xd]
|
|
cmp r0, #0
|
|
bne _021E6662
|
|
add r0, r4, #0
|
|
add r0, #0x5c
|
|
mov r1, #0
|
|
bl ClearFrameAndWindow2
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
add r2, r0, #0
|
|
add r3, r0, #0
|
|
bl BeginNormalPaletteFade
|
|
ldrb r0, [r4, #8]
|
|
add r0, r0, #1
|
|
strb r0, [r4, #8]
|
|
b _021E6662
|
|
_021E6654:
|
|
bl IsPaletteFadeFinished
|
|
cmp r0, #1
|
|
bne _021E6662
|
|
add sp, #0xc
|
|
mov r0, #1
|
|
pop {r3, r4, pc}
|
|
_021E6662:
|
|
mov r0, #0
|
|
add sp, #0xc
|
|
pop {r3, r4, pc}
|
|
thumb_func_end ov87_021E65FC
|
|
|
|
thumb_func_start ov87_021E6668
|
|
ov87_021E6668: ; 0x021E6668
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0x5b
|
|
lsl r0, r0, #2
|
|
ldr r4, _021E66B4 ; =ov87_021E82E4
|
|
mov r6, #0
|
|
add r7, r5, r0
|
|
_021E6678:
|
|
ldrh r0, [r4, #2]
|
|
mov r1, #3
|
|
mov r2, #2
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
mov r0, #2
|
|
str r0, [sp, #8]
|
|
mov r0, #0xb
|
|
str r0, [sp, #0xc]
|
|
ldrh r3, [r4]
|
|
add r0, r7, #0
|
|
bl ov87_021E7F6C
|
|
mov r1, #0xd1
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
add r0, r1, #0
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add r6, r6, #1
|
|
add r4, r4, #4
|
|
add r5, r5, #4
|
|
cmp r6, #3
|
|
blt _021E6678
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E66B4: .word ov87_021E82E4
|
|
thumb_func_end ov87_021E6668
|
|
|
|
thumb_func_start ov87_021E66B8
|
|
ov87_021E66B8: ; 0x021E66B8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0x5b
|
|
lsl r0, r0, #2
|
|
ldr r4, _021E6700 ; =ov87_021E8194
|
|
mov r6, #0
|
|
add r7, r5, r0
|
|
_021E66C8:
|
|
ldrh r0, [r4, #2]
|
|
mov r1, #1
|
|
mov r2, #0
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
str r0, [sp, #0xc]
|
|
ldrh r3, [r4]
|
|
add r0, r7, #0
|
|
bl ov87_021E7F6C
|
|
mov r1, #0x35
|
|
lsl r1, r1, #4
|
|
str r0, [r5, r1]
|
|
add r0, r1, #0
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add r6, r6, #1
|
|
add r4, r4, #4
|
|
add r5, r5, #4
|
|
cmp r6, #3
|
|
blt _021E66C8
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E6700: .word ov87_021E8194
|
|
thumb_func_end ov87_021E66B8
|
|
|
|
thumb_func_start ov87_021E6704
|
|
ov87_021E6704: ; 0x021E6704
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
mov r1, #0xa0
|
|
add r4, r0, #0
|
|
str r1, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
mov r2, #1
|
|
str r2, [sp, #8]
|
|
add r1, #0xcc
|
|
str r0, [sp, #0xc]
|
|
add r0, r4, r1
|
|
mov r1, #3
|
|
mov r3, #0x44
|
|
bl ov87_021E7F6C
|
|
mov r1, #0xcf
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
mov r3, #0x44
|
|
str r3, [sp]
|
|
mov r1, #0
|
|
str r1, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #0x5b
|
|
str r1, [sp, #0xc]
|
|
lsl r0, r0, #2
|
|
mov r1, #3
|
|
add r0, r4, r0
|
|
add r2, r1, #0
|
|
bl ov87_021E7F6C
|
|
mov r1, #0xd
|
|
lsl r1, r1, #6
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E6704
|
|
|
|
thumb_func_start ov87_021E6760
|
|
ov87_021E6760: ; 0x021E6760
|
|
push {r4, r5, r6, lr}
|
|
mov r6, #0xcb
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
lsl r6, r6, #2
|
|
_021E676A:
|
|
ldr r0, [r5, r6]
|
|
cmp r0, #0
|
|
beq _021E6774
|
|
bl ov87_021E7FC0
|
|
_021E6774:
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, #4
|
|
blt _021E676A
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E6760
|
|
|
|
thumb_func_start ov87_021E6780
|
|
ov87_021E6780: ; 0x021E6780
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
mov r7, #0xbe
|
|
mov r4, #0
|
|
add r5, r6, #0
|
|
lsl r7, r7, #2
|
|
_021E678C:
|
|
ldr r0, [r5, r7]
|
|
cmp r0, #0
|
|
beq _021E6796
|
|
bl ov87_021E7FC0
|
|
_021E6796:
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, #4
|
|
blt _021E678C
|
|
mov r7, #0xc2
|
|
mov r5, #0
|
|
add r4, r6, #0
|
|
lsl r7, r7, #2
|
|
_021E67A6:
|
|
ldr r0, [r4, r7]
|
|
cmp r0, #0
|
|
beq _021E67B0
|
|
bl ov87_021E7FC0
|
|
_021E67B0:
|
|
add r5, r5, #1
|
|
add r4, r4, #4
|
|
cmp r5, #9
|
|
blt _021E67A6
|
|
mov r0, #0xcf
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
cmp r0, #0
|
|
beq _021E67C6
|
|
bl ov87_021E7FC0
|
|
_021E67C6:
|
|
mov r0, #0xd
|
|
lsl r0, r0, #6
|
|
ldr r0, [r6, r0]
|
|
cmp r0, #0
|
|
beq _021E67D4
|
|
bl ov87_021E7FC0
|
|
_021E67D4:
|
|
mov r7, #0xd1
|
|
mov r5, #0
|
|
add r4, r6, #0
|
|
lsl r7, r7, #2
|
|
_021E67DC:
|
|
ldr r0, [r4, r7]
|
|
cmp r0, #0
|
|
beq _021E67E6
|
|
bl ov87_021E7FC0
|
|
_021E67E6:
|
|
add r5, r5, #1
|
|
add r4, r4, #4
|
|
cmp r5, #3
|
|
blt _021E67DC
|
|
mov r7, #0x35
|
|
mov r5, #0
|
|
add r4, r6, #0
|
|
lsl r7, r7, #4
|
|
_021E67F6:
|
|
ldr r0, [r4, r7]
|
|
cmp r0, #0
|
|
beq _021E6800
|
|
bl ov87_021E7FC0
|
|
_021E6800:
|
|
add r5, r5, #1
|
|
add r4, r4, #4
|
|
cmp r5, #3
|
|
blt _021E67F6
|
|
mov r0, #0xd7
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
cmp r0, #0
|
|
beq _021E6816
|
|
bl ov87_021E7FC0
|
|
_021E6816:
|
|
mov r0, #2
|
|
bl FontID_Release
|
|
mov r0, #0x57
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
mov r1, #2
|
|
bl PaletteData_FreeBuffers
|
|
mov r0, #0x57
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
mov r1, #0
|
|
bl PaletteData_FreeBuffers
|
|
mov r0, #0x57
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
bl PaletteData_Free
|
|
mov r0, #0x57
|
|
mov r1, #0
|
|
lsl r0, r0, #2
|
|
str r1, [r6, r0]
|
|
add r0, #0x10
|
|
add r0, r6, r0
|
|
bl ov87_021E7E98
|
|
ldr r0, [r6, #0x34]
|
|
bl sub_020164C4
|
|
ldr r0, [r6, #0x38]
|
|
bl DestroyMsgData
|
|
ldr r0, [r6, #0x3c]
|
|
bl MessageFormat_Delete
|
|
ldr r0, [r6, #0x40]
|
|
bl String_Delete
|
|
ldr r0, [r6, #0x44]
|
|
bl String_Delete
|
|
mov r0, #0x16
|
|
lsl r0, r0, #4
|
|
ldr r0, [r6, r0]
|
|
bl MessagePrinter_Delete
|
|
mov r0, #0xe1
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
bl FreeToHeap
|
|
mov r0, #0xe3
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
bl FreeToHeap
|
|
add r0, r6, #0
|
|
add r0, #0x5c
|
|
bl ov87_021E80F0
|
|
ldr r0, [r6, #0x58]
|
|
bl ov87_021E6BB8
|
|
mov r0, #0xe
|
|
lsl r0, r0, #6
|
|
ldr r0, [r6, r0]
|
|
bl NARC_Delete
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov87_021E6780
|
|
|
|
thumb_func_start ov87_021E68A4
|
|
ov87_021E68A4: ; 0x021E68A4
|
|
push {r3, lr}
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl Main_SetVBlankIntrCB
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl Main_SetHBlankIntrCB
|
|
bl GfGfx_DisableEngineAPlanes
|
|
bl GfGfx_DisableEngineBPlanes
|
|
mov r2, #1
|
|
lsl r2, r2, #0x1a
|
|
ldr r1, [r2]
|
|
ldr r0, _021E68D4 ; =0xFFFFE0FF
|
|
and r1, r0
|
|
str r1, [r2]
|
|
ldr r2, _021E68D8 ; =0x04001000
|
|
ldr r1, [r2]
|
|
and r0, r1
|
|
str r0, [r2]
|
|
pop {r3, pc}
|
|
.balign 4, 0
|
|
_021E68D4: .word 0xFFFFE0FF
|
|
_021E68D8: .word 0x04001000
|
|
thumb_func_end ov87_021E68A4
|
|
|
|
thumb_func_start ov87_021E68DC
|
|
ov87_021E68DC: ; 0x021E68DC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0xcf
|
|
mov r1, #0x7a
|
|
bl NARC_New
|
|
mov r1, #0xe
|
|
lsl r1, r1, #6
|
|
str r0, [r5, r1]
|
|
add r0, r5, #0
|
|
bl ov87_021E6B38
|
|
add r0, r5, #0
|
|
bl ov87_021E6BA8
|
|
mov r1, #0x1b
|
|
mov r0, #1
|
|
lsl r2, r1, #4
|
|
mov r3, #0x7a
|
|
bl NewMsgDataFromNarc
|
|
str r0, [r5, #0x38]
|
|
mov r0, #0x7a
|
|
bl MessageFormat_New
|
|
str r0, [r5, #0x3c]
|
|
mov r0, #0x96
|
|
lsl r0, r0, #2
|
|
mov r1, #0x7a
|
|
bl String_New
|
|
str r0, [r5, #0x40]
|
|
mov r0, #0x96
|
|
lsl r0, r0, #2
|
|
mov r1, #0x7a
|
|
bl String_New
|
|
mov r1, #0x1a
|
|
str r0, [r5, #0x44]
|
|
mov r0, #0
|
|
lsl r1, r1, #4
|
|
mov r2, #0x7a
|
|
bl LoadFontPal0
|
|
mov r1, #0x1a
|
|
mov r0, #4
|
|
lsl r1, r1, #4
|
|
mov r2, #0x7a
|
|
bl LoadFontPal0
|
|
mov r1, #6
|
|
mov r0, #0
|
|
lsl r1, r1, #6
|
|
mov r2, #0x7a
|
|
bl LoadFontPal1
|
|
mov r1, #6
|
|
mov r0, #4
|
|
lsl r1, r1, #6
|
|
mov r2, #0x7a
|
|
bl LoadFontPal1
|
|
mov r0, #2
|
|
mov r1, #0x7a
|
|
bl FontID_Alloc
|
|
mov r0, #0xf
|
|
mov r1, #0xe
|
|
mov r2, #0
|
|
mov r3, #0x7a
|
|
bl MessagePrinter_New
|
|
mov r1, #0x16
|
|
lsl r1, r1, #4
|
|
str r0, [r5, r1]
|
|
add r1, r5, #0
|
|
ldr r0, [r5, #0x58]
|
|
add r1, #0x5c
|
|
bl ov87_021E80C0
|
|
mov r0, #0
|
|
mov r1, #1
|
|
mov r2, #0xc
|
|
mov r3, #0x7a
|
|
bl sub_020163E0
|
|
str r0, [r5, #0x34]
|
|
add r0, r5, #0
|
|
bl ov87_021E79C4
|
|
add r0, r5, #0
|
|
bl ov87_021E7A04
|
|
add r0, r5, #0
|
|
bl ov87_021E7A2C
|
|
bl GfGfx_BothDispOn
|
|
mov r7, #0
|
|
mov r6, #0x1a
|
|
add r4, r5, #0
|
|
_021E69A8:
|
|
lsl r0, r6, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #0
|
|
str r0, [sp, #8]
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x5b
|
|
lsl r0, r0, #2
|
|
add r0, r5, r0
|
|
mov r1, #0
|
|
add r2, r7, #0
|
|
mov r3, #0x3c
|
|
bl ov87_021E7F6C
|
|
mov r1, #0xbe
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
add r0, r1, #0
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add r7, r7, #1
|
|
add r6, #0x2a
|
|
add r4, r4, #4
|
|
cmp r7, #4
|
|
blt _021E69A8
|
|
ldr r4, _021E6ACC ; =ov87_021E82E4
|
|
mov r7, #0
|
|
add r6, r5, #0
|
|
_021E69E8:
|
|
ldrh r0, [r4, #2]
|
|
mov r1, #1
|
|
mov r2, #0
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
mov r0, #2
|
|
str r0, [sp, #8]
|
|
mov r0, #0xa
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x5b
|
|
lsl r0, r0, #2
|
|
ldrh r3, [r4]
|
|
add r0, r5, r0
|
|
bl ov87_021E7F6C
|
|
mov r1, #0xc2
|
|
lsl r1, r1, #2
|
|
str r0, [r6, r1]
|
|
add r0, r1, #0
|
|
ldr r0, [r6, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add r7, r7, #1
|
|
add r4, r4, #4
|
|
add r6, r6, #4
|
|
cmp r7, #9
|
|
blt _021E69E8
|
|
add r0, r5, #0
|
|
bl ov87_021E6704
|
|
ldr r4, _021E6AD0 ; =ov87_021E81A0
|
|
mov r7, #0
|
|
add r6, r5, #0
|
|
_021E6A2E:
|
|
ldrh r0, [r4, #2]
|
|
mov r1, #2
|
|
add r2, r7, #0
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x5b
|
|
lsl r0, r0, #2
|
|
ldrh r3, [r4]
|
|
add r0, r5, r0
|
|
bl ov87_021E7F6C
|
|
mov r1, #0xcb
|
|
lsl r1, r1, #2
|
|
str r0, [r6, r1]
|
|
add r0, r1, #0
|
|
mov r1, #0
|
|
ldrsh r2, [r4, r1]
|
|
mov r1, #1
|
|
lsl r1, r1, #8
|
|
sub r1, r2, r1
|
|
mov r2, #2
|
|
ldrsh r2, [r4, r2]
|
|
ldr r0, [r6, r0]
|
|
bl ov87_021E7FEC
|
|
mov r0, #0xcb
|
|
lsl r0, r0, #2
|
|
add r1, r7, #0
|
|
ldr r0, [r6, r0]
|
|
add r1, #0x14
|
|
bl ov87_021E7FE0
|
|
add r7, r7, #1
|
|
add r4, r4, #4
|
|
add r6, r6, #4
|
|
cmp r7, #4
|
|
blt _021E6A2E
|
|
mov r0, #0x38
|
|
str r0, [sp]
|
|
mov r2, #0
|
|
str r2, [sp, #4]
|
|
str r2, [sp, #8]
|
|
mov r0, #0xa
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x5b
|
|
lsl r0, r0, #2
|
|
add r0, r5, r0
|
|
mov r1, #4
|
|
mov r3, #0x26
|
|
bl ov87_021E7F6C
|
|
mov r1, #0xd7
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
ldr r0, [r5, r1]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
ldr r2, _021E6AD4 ; =0x04000304
|
|
ldr r0, _021E6AD8 ; =0xFFFF7FFF
|
|
ldrh r1, [r2]
|
|
and r0, r1
|
|
strh r0, [r2]
|
|
bl sub_020210BC
|
|
mov r0, #1
|
|
bl sub_02021148
|
|
ldr r0, _021E6ADC ; =ov87_021E6C04
|
|
add r1, r5, #0
|
|
bl Main_SetVBlankIntrCB
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_021E6ACC: .word ov87_021E82E4
|
|
_021E6AD0: .word ov87_021E81A0
|
|
_021E6AD4: .word 0x04000304
|
|
_021E6AD8: .word 0xFFFF7FFF
|
|
_021E6ADC: .word ov87_021E6C04
|
|
thumb_func_end ov87_021E68DC
|
|
|
|
thumb_func_start ov87_021E6AE0
|
|
ov87_021E6AE0: ; 0x021E6AE0
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r0, #0x7a
|
|
bl YesNoPrompt_Create
|
|
mov r1, #0x39
|
|
lsl r1, r1, #4
|
|
str r0, [r4, r1]
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E6AE0
|
|
|
|
thumb_func_start ov87_021E6AF4
|
|
ov87_021E6AF4: ; 0x021E6AF4
|
|
push {lr}
|
|
sub sp, #0x14
|
|
ldr r1, [r0, #0x58]
|
|
mov r3, #0xe
|
|
str r1, [sp]
|
|
mov r1, #2
|
|
str r1, [sp, #4]
|
|
lsl r3, r3, #6
|
|
mov r1, #9
|
|
str r3, [sp, #8]
|
|
str r1, [sp, #0xc]
|
|
mov r2, #0x18
|
|
add r1, sp, #0
|
|
strb r2, [r1, #0x10]
|
|
mov r2, #8
|
|
strb r2, [r1, #0x11]
|
|
mov r2, #0
|
|
strb r2, [r1, #0x13]
|
|
add r3, #0x10
|
|
ldr r0, [r0, r3]
|
|
add r1, sp, #0
|
|
bl YesNoPrompt_InitFromTemplate
|
|
add sp, #0x14
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E6AF4
|
|
|
|
thumb_func_start ov87_021E6B28
|
|
ov87_021E6B28: ; 0x021E6B28
|
|
mov r1, #0x39
|
|
lsl r1, r1, #4
|
|
ldr r3, _021E6B34 ; =YesNoPrompt_Destroy
|
|
ldr r0, [r0, r1]
|
|
bx r3
|
|
nop
|
|
_021E6B34: .word YesNoPrompt_Destroy
|
|
thumb_func_end ov87_021E6B28
|
|
|
|
thumb_func_start ov87_021E6B38
|
|
ov87_021E6B38: ; 0x021E6B38
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl ov87_021E6C40
|
|
ldr r0, [r4, #0x58]
|
|
bl ov87_021E6C60
|
|
mov r0, #0x7a
|
|
bl PaletteData_Init
|
|
mov r1, #0x57
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
mov r1, #2
|
|
lsl r2, r1, #8
|
|
mov r3, #0x7a
|
|
bl PaletteData_AllocBuffers
|
|
mov r2, #0x57
|
|
lsl r2, r2, #2
|
|
ldr r0, [r4, r2]
|
|
mov r1, #0
|
|
add r2, #0xa4
|
|
mov r3, #0x7a
|
|
bl PaletteData_AllocBuffers
|
|
add r0, r4, #0
|
|
mov r1, #7
|
|
bl ov87_021E6DBC
|
|
bl ov87_021E6E44
|
|
add r0, r4, #0
|
|
mov r1, #6
|
|
bl ov87_021E6E00
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl ov87_021E6EB0
|
|
bl ov87_021E6E78
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl ov87_021E6EF4
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl GfGfx_EngineBTogglePlanes
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E6B38
|
|
|
|
thumb_func_start ov87_021E6BA8
|
|
ov87_021E6BA8: ; 0x021E6BA8
|
|
mov r1, #0x5b
|
|
lsl r1, r1, #2
|
|
ldr r3, _021E6BB4 ; =ov87_021E7AF8
|
|
add r0, r0, r1
|
|
bx r3
|
|
nop
|
|
_021E6BB4: .word ov87_021E7AF8
|
|
thumb_func_end ov87_021E6BA8
|
|
|
|
thumb_func_start ov87_021E6BB8
|
|
ov87_021E6BB8: ; 0x021E6BB8
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r0, #0x1f
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #0x1f
|
|
mov r1, #0
|
|
bl GfGfx_EngineBTogglePlanes
|
|
add r0, r4, #0
|
|
mov r1, #7
|
|
bl FreeBgTilemapBuffer
|
|
add r0, r4, #0
|
|
mov r1, #6
|
|
bl FreeBgTilemapBuffer
|
|
add r0, r4, #0
|
|
mov r1, #4
|
|
bl FreeBgTilemapBuffer
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl FreeBgTilemapBuffer
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl FreeBgTilemapBuffer
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl FreeBgTilemapBuffer
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E6BB8
|
|
|
|
thumb_func_start ov87_021E6C04
|
|
ov87_021E6C04: ; 0x021E6C04
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _021E6C36
|
|
mov r0, #0x57
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #0
|
|
beq _021E6C1C
|
|
bl sub_0200398C
|
|
_021E6C1C:
|
|
ldr r0, [r4, #0x58]
|
|
bl DoScheduledBgGpuUpdates
|
|
bl GF_RunVramTransferTasks
|
|
bl OamManager_ApplyAndResetBuffers
|
|
ldr r3, _021E6C38 ; =0x027E0000
|
|
ldr r1, _021E6C3C ; =0x00003FF8
|
|
mov r0, #1
|
|
ldr r2, [r3, r1]
|
|
orr r0, r2
|
|
str r0, [r3, r1]
|
|
_021E6C36:
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021E6C38: .word 0x027E0000
|
|
_021E6C3C: .word 0x00003FF8
|
|
thumb_func_end ov87_021E6C04
|
|
|
|
thumb_func_start ov87_021E6C40
|
|
ov87_021E6C40: ; 0x021E6C40
|
|
push {r4, lr}
|
|
sub sp, #0x28
|
|
ldr r4, _021E6C5C ; =ov87_021E8330
|
|
add r3, sp, #0
|
|
mov r2, #5
|
|
_021E6C4A:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021E6C4A
|
|
add r0, sp, #0
|
|
bl GfGfx_SetBanks
|
|
add sp, #0x28
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021E6C5C: .word ov87_021E8330
|
|
thumb_func_end ov87_021E6C40
|
|
|
|
thumb_func_start ov87_021E6C60
|
|
ov87_021E6C60: ; 0x021E6C60
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0xb8
|
|
ldr r5, _021E6DA0 ; =ov87_021E81B0
|
|
add r3, sp, #0xa8
|
|
add r4, r0, #0
|
|
add r2, r3, #0
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
add r0, r2, #0
|
|
bl SetBothScreensModesAndDisable
|
|
ldr r5, _021E6DA4 ; =ov87_021E8228
|
|
add r3, sp, #0x8c
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #4
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #4
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
mov r3, #0x7a
|
|
bl BG_ClearCharDataRange
|
|
add r0, r4, #0
|
|
mov r1, #4
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r5, _021E6DA8 ; =ov87_021E8260
|
|
add r3, sp, #0x70
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #7
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
add r0, r4, #0
|
|
mov r1, #7
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r5, _021E6DAC ; =ov87_021E81D4
|
|
add r3, sp, #0x54
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #6
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
add r0, r4, #0
|
|
mov r1, #6
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r5, _021E6DB0 ; =ov87_021E81F0
|
|
add r3, sp, #0x38
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #1
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r5, _021E6DB4 ; =ov87_021E820C
|
|
add r3, sp, #0x1c
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #0
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
add r3, r1, #0
|
|
bl InitBgFromTemplate
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r5, _021E6DB8 ; =ov87_021E8244
|
|
add r3, sp, #0
|
|
ldmia r5!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r5]
|
|
mov r1, #2
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #2
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
mov r3, #0x7a
|
|
bl BG_ClearCharDataRange
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl BgClearTilemapBufferAndCommit
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #2
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl GfGfx_EngineBTogglePlanes
|
|
add sp, #0xb8
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021E6DA0: .word ov87_021E81B0
|
|
_021E6DA4: .word ov87_021E8228
|
|
_021E6DA8: .word ov87_021E8260
|
|
_021E6DAC: .word ov87_021E81D4
|
|
_021E6DB0: .word ov87_021E81F0
|
|
_021E6DB4: .word ov87_021E820C
|
|
_021E6DB8: .word ov87_021E8244
|
|
thumb_func_end ov87_021E6C60
|
|
|
|
thumb_func_start ov87_021E6DBC
|
|
ov87_021E6DBC: ; 0x021E6DBC
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
add r4, r1, #0
|
|
mov r0, #0xe
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, #0x58]
|
|
mov r1, #0x23
|
|
add r3, r4, #0
|
|
bl GfGfxLoader_LoadCharDataFromOpenNarc
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0xe
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, #0x58]
|
|
mov r1, #0x25
|
|
add r3, r4, #0
|
|
bl GfGfxLoader_LoadScrnDataFromOpenNarc
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E6DBC
|
|
|
|
thumb_func_start ov87_021E6E00
|
|
ov87_021E6E00: ; 0x021E6E00
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
add r4, r1, #0
|
|
mov r0, #0xe
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, #0x58]
|
|
mov r1, #0x26
|
|
add r3, r4, #0
|
|
bl GfGfxLoader_LoadCharDataFromOpenNarc
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0xe
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, #0x58]
|
|
mov r1, #0x28
|
|
add r3, r4, #0
|
|
bl GfGfxLoader_LoadScrnDataFromOpenNarc
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E6E00
|
|
|
|
thumb_func_start ov87_021E6E44
|
|
ov87_021E6E44: ; 0x021E6E44
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
mov r0, #0xcf
|
|
mov r1, #0x22
|
|
add r2, sp, #0
|
|
mov r3, #0x7a
|
|
bl GfGfxLoader_GetPlttData
|
|
add r4, r0, #0
|
|
ldr r0, [sp]
|
|
mov r1, #0xa0
|
|
ldr r0, [r0, #0xc]
|
|
bl DC_FlushRange
|
|
ldr r0, [sp]
|
|
mov r1, #0
|
|
ldr r0, [r0, #0xc]
|
|
mov r2, #0xa0
|
|
bl GXS_LoadBGPltt
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E6E44
|
|
|
|
thumb_func_start ov87_021E6E78
|
|
ov87_021E6E78: ; 0x021E6E78
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
mov r0, #0xcf
|
|
mov r1, #0
|
|
add r2, sp, #0
|
|
mov r3, #0x7a
|
|
bl GfGfxLoader_GetPlttData
|
|
add r4, r0, #0
|
|
ldr r0, [sp]
|
|
mov r1, #6
|
|
ldr r0, [r0, #0xc]
|
|
lsl r1, r1, #6
|
|
bl DC_FlushRange
|
|
ldr r0, [sp]
|
|
mov r2, #6
|
|
ldr r0, [r0, #0xc]
|
|
mov r1, #0
|
|
lsl r2, r2, #6
|
|
bl GX_LoadBGPltt
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E6E78
|
|
|
|
thumb_func_start ov87_021E6EB0
|
|
ov87_021E6EB0: ; 0x021E6EB0
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
add r4, r1, #0
|
|
mov r0, #0xe
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, #0x58]
|
|
mov r1, #4
|
|
add r3, r4, #0
|
|
bl GfGfxLoader_LoadCharDataFromOpenNarc
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0xe
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, #0x58]
|
|
mov r1, #6
|
|
add r3, r4, #0
|
|
bl GfGfxLoader_LoadScrnDataFromOpenNarc
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E6EB0
|
|
|
|
thumb_func_start ov87_021E6EF4
|
|
ov87_021E6EF4: ; 0x021E6EF4
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
add r4, r1, #0
|
|
mov r0, #0xe
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, #0x58]
|
|
mov r1, #7
|
|
add r3, r4, #0
|
|
bl GfGfxLoader_LoadCharDataFromOpenNarc
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0xe
|
|
lsl r0, r0, #6
|
|
ldr r0, [r5, r0]
|
|
ldr r2, [r5, #0x58]
|
|
mov r1, #9
|
|
add r3, r4, #0
|
|
bl GfGfxLoader_LoadScrnDataFromOpenNarc
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E6EF4
|
|
|
|
thumb_func_start ov87_021E6F38
|
|
ov87_021E6F38: ; 0x021E6F38
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r4, r1, #0
|
|
add r1, sp, #0x38
|
|
ldrb r1, [r1]
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
add r6, r2, #0
|
|
add r7, r3, #0
|
|
bl FillWindowPixelBuffer
|
|
ldr r0, [r5, #0x38]
|
|
ldr r2, [r5, #0x44]
|
|
add r1, r6, #0
|
|
bl ReadMsgDataIntoString
|
|
ldr r0, [r5, #0x3c]
|
|
ldr r1, [r5, #0x40]
|
|
ldr r2, [r5, #0x44]
|
|
bl StringExpandPlaceholders
|
|
ldr r0, [sp, #0x28]
|
|
add r2, sp, #0x18
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0x2c]
|
|
add r3, r7, #0
|
|
str r0, [sp, #4]
|
|
add r0, sp, #0x38
|
|
ldrb r1, [r0]
|
|
ldrb r0, [r2, #0x18]
|
|
ldrb r2, [r2, #0x1c]
|
|
lsl r0, r0, #0x18
|
|
lsl r2, r2, #0x18
|
|
lsr r0, r0, #8
|
|
lsr r2, r2, #0x10
|
|
orr r0, r2
|
|
orr r0, r1
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
add r1, sp, #0x3c
|
|
ldrb r1, [r1]
|
|
ldr r2, [r5, #0x40]
|
|
add r0, r4, #0
|
|
bl AddTextPrinterParameterizedWithColor
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov87_021E6F38
|
|
|
|
thumb_func_start ov87_021E6F98
|
|
ov87_021E6F98: ; 0x021E6F98
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r4, r1, #0
|
|
add r1, sp, #0x38
|
|
ldrb r1, [r1]
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
add r7, r2, #0
|
|
add r6, r3, #0
|
|
bl FillWindowPixelBuffer
|
|
ldr r0, [r5, #0x38]
|
|
ldr r2, [r5, #0x44]
|
|
add r1, r7, #0
|
|
bl ReadMsgDataIntoString
|
|
ldr r0, [r5, #0x3c]
|
|
ldr r1, [r5, #0x40]
|
|
ldr r2, [r5, #0x44]
|
|
bl StringExpandPlaceholders
|
|
add r0, sp, #0x3c
|
|
ldrb r0, [r0]
|
|
ldr r1, [r5, #0x40]
|
|
mov r2, #0
|
|
bl FontID_String_GetWidth
|
|
add r0, r0, #1
|
|
lsr r0, r0, #1
|
|
sub r3, r6, r0
|
|
ldr r0, [sp, #0x28]
|
|
add r2, sp, #0x18
|
|
str r0, [sp]
|
|
ldr r0, [sp, #0x2c]
|
|
str r0, [sp, #4]
|
|
add r0, sp, #0x38
|
|
ldrb r1, [r0]
|
|
ldrb r0, [r2, #0x18]
|
|
ldrb r2, [r2, #0x1c]
|
|
lsl r0, r0, #0x18
|
|
lsl r2, r2, #0x18
|
|
lsr r0, r0, #8
|
|
lsr r2, r2, #0x10
|
|
orr r0, r2
|
|
orr r0, r1
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
add r1, sp, #0x3c
|
|
ldrb r1, [r1]
|
|
ldr r2, [r5, #0x40]
|
|
add r0, r4, #0
|
|
bl AddTextPrinterParameterizedWithColor
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov87_021E6F98
|
|
|
|
thumb_func_start ov87_021E7008
|
|
ov87_021E7008: ; 0x021E7008
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
add r4, r0, #0
|
|
add r1, r4, #0
|
|
ldr r0, [r4, #0x58]
|
|
add r1, #0x5c
|
|
bl ov87_021E810C
|
|
mov r3, #1
|
|
str r3, [sp]
|
|
mov r1, #0
|
|
str r1, [sp, #4]
|
|
str r3, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0xf
|
|
str r0, [sp, #0x10]
|
|
str r1, [sp, #0x14]
|
|
add r1, r4, #0
|
|
add r0, r4, #0
|
|
add r1, #0x5c
|
|
mov r2, #6
|
|
bl ov87_021E6F38
|
|
add r4, #0x5c
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
bl ScheduleWindowCopyToVram
|
|
add r0, r5, #0
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E7008
|
|
|
|
thumb_func_start ov87_021E7048
|
|
ov87_021E7048: ; 0x021E7048
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
add r5, r0, #0
|
|
ldrb r2, [r5, #0xe]
|
|
mov r1, #0
|
|
add r2, r2, #1
|
|
bl ov87_021E7244
|
|
mov r3, #1
|
|
mov r1, #0x53
|
|
lsl r1, r1, #2
|
|
str r3, [sp]
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
str r3, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0xf
|
|
str r0, [sp, #0x10]
|
|
add r0, r5, #0
|
|
add r1, r5, r1
|
|
mov r2, #0xc
|
|
str r3, [sp, #0x14]
|
|
bl ov87_021E6F38
|
|
add r4, r0, #0
|
|
mov r0, #0x53
|
|
lsl r0, r0, #2
|
|
add r0, r5, r0
|
|
bl ScheduleWindowCopyToVram
|
|
add r0, r4, #0
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E7048
|
|
|
|
thumb_func_start ov87_021E708C
|
|
ov87_021E708C: ; 0x021E708C
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
add r4, r0, #0
|
|
ldrb r2, [r4, #0xe]
|
|
mov r1, #0
|
|
add r2, r2, #1
|
|
bl ov87_021E7244
|
|
mov r0, #5
|
|
str r0, [sp]
|
|
mov r1, #0
|
|
str r1, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
str r1, [sp, #0x10]
|
|
str r1, [sp, #0x14]
|
|
add r1, r4, #0
|
|
add r0, r4, #0
|
|
add r1, #0xfc
|
|
mov r2, #9
|
|
mov r3, #0x30
|
|
bl ov87_021E6F98
|
|
add r4, #0xfc
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
bl ScheduleWindowCopyToVram
|
|
add r0, r5, #0
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E708C
|
|
|
|
thumb_func_start ov87_021E70D0
|
|
ov87_021E70D0: ; 0x021E70D0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
mov r7, #0x35
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
lsl r7, r7, #4
|
|
_021E70DA:
|
|
ldr r1, _021E712C ; =0x000003A2
|
|
add r2, r5, r4
|
|
ldrb r1, [r2, r1]
|
|
lsl r0, r4, #2
|
|
add r6, r5, r0
|
|
add r2, r5, r1
|
|
mov r1, #0x36
|
|
mov r0, #0x35
|
|
lsl r1, r1, #4
|
|
lsl r0, r0, #4
|
|
ldrb r1, [r2, r1]
|
|
ldr r0, [r6, r0]
|
|
bl ov87_021E803C
|
|
ldr r0, [r6, r7]
|
|
mov r1, #1
|
|
bl ov87_021E7FD4
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #3
|
|
blo _021E70DA
|
|
mov r0, #0xd7
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #1
|
|
bl ov87_021E7FD4
|
|
mov r0, #0xd7
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #1
|
|
bl ov87_021E8084
|
|
ldr r0, _021E7130 ; =0x00000561
|
|
bl PlaySE
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E712C: .word 0x000003A2
|
|
_021E7130: .word 0x00000561
|
|
thumb_func_end ov87_021E70D0
|
|
|
|
thumb_func_start ov87_021E7134
|
|
ov87_021E7134: ; 0x021E7134
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
add r5, r0, #0
|
|
ldr r0, _021E7178 ; =0x000005F3
|
|
bl PlaySE
|
|
mov r0, #5
|
|
str r0, [sp]
|
|
mov r1, #0
|
|
str r1, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
str r1, [sp, #0x10]
|
|
str r1, [sp, #0x14]
|
|
mov r1, #0x47
|
|
lsl r1, r1, #2
|
|
add r0, r5, #0
|
|
add r1, r5, r1
|
|
mov r2, #0xb
|
|
mov r3, #0x30
|
|
bl ov87_021E6F98
|
|
add r4, r0, #0
|
|
mov r0, #0x47
|
|
lsl r0, r0, #2
|
|
add r0, r5, r0
|
|
bl ScheduleWindowCopyToVram
|
|
add r0, r4, #0
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021E7178: .word 0x000005F3
|
|
thumb_func_end ov87_021E7134
|
|
|
|
thumb_func_start ov87_021E717C
|
|
ov87_021E717C: ; 0x021E717C
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
mov r2, #1
|
|
str r2, [sp]
|
|
mov r1, #0
|
|
str r1, [sp, #4]
|
|
str r2, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
str r1, [sp, #0x10]
|
|
mov r1, #2
|
|
str r1, [sp, #0x14]
|
|
mov r1, #0x4b
|
|
add r5, r0, #0
|
|
lsl r1, r1, #2
|
|
add r1, r5, r1
|
|
mov r2, #4
|
|
mov r3, #0x30
|
|
bl ov87_021E6F98
|
|
add r4, r0, #0
|
|
mov r0, #0x4b
|
|
lsl r0, r0, #2
|
|
add r0, r5, r0
|
|
bl ScheduleWindowCopyToVram
|
|
add r0, r4, #0
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E717C
|
|
|
|
thumb_func_start ov87_021E71B4
|
|
ov87_021E71B4: ; 0x021E71B4
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
mov r2, #1
|
|
str r2, [sp]
|
|
mov r1, #0
|
|
str r1, [sp, #4]
|
|
str r2, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
str r1, [sp, #0x10]
|
|
mov r1, #2
|
|
str r1, [sp, #0x14]
|
|
mov r1, #0x4f
|
|
add r5, r0, #0
|
|
lsl r1, r1, #2
|
|
add r1, r5, r1
|
|
mov r2, #5
|
|
mov r3, #0x18
|
|
bl ov87_021E6F98
|
|
add r4, r0, #0
|
|
mov r0, #0x4f
|
|
lsl r0, r0, #2
|
|
add r0, r5, r0
|
|
bl ScheduleWindowCopyToVram
|
|
add r0, r4, #0
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E71B4
|
|
|
|
thumb_func_start ov87_021E71EC
|
|
ov87_021E71EC: ; 0x021E71EC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x18
|
|
add r7, r1, #0
|
|
add r6, r0, #0
|
|
lsl r2, r7, #1
|
|
add r3, r6, r2
|
|
ldr r2, _021E723C ; =0x0000036A
|
|
ldr r0, [r6, #0x3c]
|
|
ldrh r2, [r3, r2]
|
|
mov r1, #0
|
|
bl BufferItemName
|
|
add r0, r7, #2
|
|
lsl r4, r0, #4
|
|
ldr r0, _021E7240 ; =ov87_021E8388
|
|
add r5, r6, #0
|
|
ldrb r0, [r0, r7]
|
|
mov r1, #0
|
|
mov r2, #1
|
|
str r0, [sp]
|
|
str r1, [sp, #4]
|
|
str r2, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
str r1, [sp, #0x10]
|
|
add r5, #0x5c
|
|
str r1, [sp, #0x14]
|
|
add r0, r6, #0
|
|
add r1, r5, r4
|
|
mov r3, #0x2c
|
|
bl ov87_021E6F98
|
|
add r6, r0, #0
|
|
add r0, r5, r4
|
|
bl ScheduleWindowCopyToVram
|
|
add r0, r6, #0
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E723C: .word 0x0000036A
|
|
_021E7240: .word ov87_021E8388
|
|
thumb_func_end ov87_021E71EC
|
|
|
|
thumb_func_start ov87_021E7244
|
|
ov87_021E7244: ; 0x021E7244
|
|
push {r3, lr}
|
|
sub sp, #8
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
mov r3, #1
|
|
str r3, [sp, #4]
|
|
ldr r0, [r0, #0x3c]
|
|
bl BufferIntegerAsString
|
|
add sp, #8
|
|
pop {r3, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E7244
|
|
|
|
thumb_func_start ov87_021E725C
|
|
ov87_021E725C: ; 0x021E725C
|
|
mov r3, #0
|
|
strb r3, [r0, #8]
|
|
str r2, [r1]
|
|
bx lr
|
|
thumb_func_end ov87_021E725C
|
|
|
|
thumb_func_start ov87_021E7264
|
|
ov87_021E7264: ; 0x021E7264
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
mov r7, #0x36
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
mov r6, #4
|
|
lsl r7, r7, #4
|
|
_021E7270:
|
|
bl LCRandom
|
|
mov r1, #9
|
|
bl _s32_div_f
|
|
lsl r0, r1, #0x18
|
|
lsr r0, r0, #0x18
|
|
add r1, r5, r0
|
|
ldrb r0, [r1, r7]
|
|
cmp r0, #0xb0
|
|
bne _021E7270
|
|
mov r0, #0x36
|
|
lsl r0, r0, #4
|
|
add r4, r4, #1
|
|
strb r6, [r1, r0]
|
|
cmp r4, #2
|
|
blt _021E7270
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov87_021E7264
|
|
|
|
thumb_func_start ov87_021E7294
|
|
ov87_021E7294: ; 0x021E7294
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
bl LCRandom
|
|
mov r7, #0
|
|
lsr r2, r0, #0x1f
|
|
lsl r1, r0, #0x1e
|
|
sub r1, r1, r2
|
|
mov r0, #0x1e
|
|
ror r1, r0
|
|
add r0, r2, r1
|
|
lsl r0, r0, #0x18
|
|
lsr r6, r0, #0x18
|
|
add r4, r7, #0
|
|
_021E72B0:
|
|
bl LCRandom
|
|
mov r1, #9
|
|
bl _s32_div_f
|
|
mov r0, #0x36
|
|
add r2, r5, r1
|
|
lsl r0, r0, #4
|
|
ldrb r1, [r2, r0]
|
|
cmp r1, #0xb0
|
|
bne _021E72E4
|
|
mov r7, #0
|
|
strb r6, [r2, r0]
|
|
cmp r4, #2
|
|
beq _021E72D6
|
|
cmp r4, #4
|
|
beq _021E72D6
|
|
cmp r4, #6
|
|
bne _021E731C
|
|
_021E72D6:
|
|
add r0, r6, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r6, r0, #0x18
|
|
cmp r6, #4
|
|
bne _021E731C
|
|
mov r6, #0
|
|
b _021E731C
|
|
_021E72E4:
|
|
add r7, r7, #1
|
|
cmp r7, #0x1e
|
|
blt _021E72B0
|
|
mov r7, #0
|
|
add r3, r7, #0
|
|
_021E72EE:
|
|
add r2, r5, r3
|
|
ldrb r1, [r2, r0]
|
|
cmp r1, #0xb0
|
|
bne _021E7316
|
|
mov r0, #0x36
|
|
lsl r0, r0, #4
|
|
strb r6, [r2, r0]
|
|
cmp r4, #2
|
|
beq _021E7308
|
|
cmp r4, #4
|
|
beq _021E7308
|
|
cmp r4, #6
|
|
bne _021E731C
|
|
_021E7308:
|
|
add r0, r6, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r6, r0, #0x18
|
|
cmp r6, #4
|
|
bne _021E731C
|
|
mov r6, #0
|
|
b _021E731C
|
|
_021E7316:
|
|
add r3, r3, #1
|
|
cmp r3, #9
|
|
blt _021E72EE
|
|
_021E731C:
|
|
add r4, r4, #1
|
|
cmp r4, #9
|
|
blt _021E72B0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov87_021E7294
|
|
|
|
thumb_func_start ov87_021E7324
|
|
ov87_021E7324: ; 0x021E7324
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl ov87_021E7264
|
|
add r0, r4, #0
|
|
bl ov87_021E7294
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E7324
|
|
|
|
thumb_func_start ov87_021E7334
|
|
ov87_021E7334: ; 0x021E7334
|
|
push {r3, r4}
|
|
mov r1, #0x36
|
|
mov r4, #0
|
|
mov r3, #0xb0
|
|
lsl r1, r1, #4
|
|
_021E733E:
|
|
add r2, r0, r4
|
|
add r4, r4, #1
|
|
strb r3, [r2, r1]
|
|
cmp r4, #9
|
|
blt _021E733E
|
|
pop {r3, r4}
|
|
bx lr
|
|
thumb_func_end ov87_021E7334
|
|
|
|
thumb_func_start ov87_021E734C
|
|
ov87_021E734C: ; 0x021E734C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
str r0, [sp]
|
|
mov r1, #0
|
|
add r2, sp, #8
|
|
mov r0, #0xff
|
|
_021E7358:
|
|
add r1, r1, #1
|
|
strh r0, [r2]
|
|
add r2, r2, #2
|
|
cmp r1, #4
|
|
blt _021E7358
|
|
bl LCRandom
|
|
lsr r2, r0, #0x1f
|
|
lsl r1, r0, #0x1e
|
|
add r4, sp, #8
|
|
sub r1, r1, r2
|
|
mov r0, #0x1e
|
|
ror r1, r0
|
|
add r0, r2, r1
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp, #4]
|
|
mov r5, #0
|
|
add r6, r4, #0
|
|
mov r7, #0x17
|
|
_021E7380:
|
|
ldr r0, [sp, #4]
|
|
cmp r5, r0
|
|
bne _021E7390
|
|
ldr r1, [sp]
|
|
ldr r0, _021E73D8 ; =0x0000036A
|
|
mov r2, #0x5c
|
|
strh r2, [r1, r0]
|
|
b _021E73C6
|
|
_021E7390:
|
|
bl LCRandom
|
|
add r1, r7, #0
|
|
bl _u32_div_f
|
|
strh r1, [r4]
|
|
mov r1, #0
|
|
cmp r5, #0
|
|
ble _021E73B4
|
|
ldrh r3, [r4]
|
|
add r2, r6, #0
|
|
_021E73A6:
|
|
ldrh r0, [r2]
|
|
cmp r0, r3
|
|
beq _021E73B4
|
|
add r1, r1, #1
|
|
add r2, r2, #2
|
|
cmp r1, r5
|
|
blt _021E73A6
|
|
_021E73B4:
|
|
cmp r1, r5
|
|
bne _021E7390
|
|
ldrh r0, [r4]
|
|
lsl r1, r0, #1
|
|
ldr r0, _021E73DC ; =ov87_021E8358
|
|
ldrh r2, [r0, r1]
|
|
ldr r1, [sp]
|
|
ldr r0, _021E73D8 ; =0x0000036A
|
|
strh r2, [r1, r0]
|
|
_021E73C6:
|
|
ldr r0, [sp]
|
|
add r5, r5, #1
|
|
add r0, r0, #2
|
|
add r4, r4, #2
|
|
str r0, [sp]
|
|
cmp r5, #4
|
|
blt _021E7380
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_021E73D8: .word 0x0000036A
|
|
_021E73DC: .word ov87_021E8358
|
|
thumb_func_end ov87_021E734C
|
|
|
|
thumb_func_start ov87_021E73E0
|
|
ov87_021E73E0: ; 0x021E73E0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0x3a
|
|
lsl r0, r0, #4
|
|
add r4, r1, #0
|
|
ldrb r1, [r5, r0]
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x19
|
|
cmp r1, #8
|
|
blo _021E73FC
|
|
add sp, #0x10
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E73FC:
|
|
sub r0, #0x74
|
|
add r0, r5, r0
|
|
str r0, [sp]
|
|
ldr r1, [sp]
|
|
lsl r0, r4, #2
|
|
str r0, [sp, #4]
|
|
ldr r0, [r1, r0]
|
|
add r1, sp, #0xc
|
|
add r2, sp, #8
|
|
bl ov87_021E8014
|
|
mov r0, #0x3a
|
|
lsl r0, r0, #4
|
|
ldrb r0, [r5, r0]
|
|
lsl r2, r4, #3
|
|
ldr r4, _021E7458 ; =ov87_021E838C
|
|
lsl r1, r0, #0x18
|
|
lsr r6, r1, #0x19
|
|
ldrsb r7, [r4, r6]
|
|
mov r4, #0xfe
|
|
bic r0, r4
|
|
add r4, r6, #1
|
|
lsl r4, r4, #0x18
|
|
lsr r4, r4, #0x18
|
|
ldr r1, _021E745C ; =ov87_021E827C
|
|
lsl r4, r4, #0x19
|
|
add r1, r1, r2
|
|
lsr r4, r4, #0x18
|
|
ldr r2, [sp, #8]
|
|
orr r4, r0
|
|
mov r0, #0x3a
|
|
ldr r3, [sp, #0xc]
|
|
lsl r0, r0, #4
|
|
strb r4, [r5, r0]
|
|
ldrsb r1, [r6, r1]
|
|
ldr r4, [sp]
|
|
ldr r0, [sp, #4]
|
|
add r1, r3, r1
|
|
ldr r0, [r4, r0]
|
|
add r2, r2, r7
|
|
bl ov87_021E7FEC
|
|
mov r0, #0
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E7458: .word ov87_021E838C
|
|
_021E745C: .word ov87_021E827C
|
|
thumb_func_end ov87_021E73E0
|
|
|
|
thumb_func_start ov87_021E7460
|
|
ov87_021E7460: ; 0x021E7460
|
|
push {r4, r5, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0
|
|
str r3, [sp]
|
|
add r0, sp, #8
|
|
ldrb r0, [r0, #0x10]
|
|
add r4, r1, #0
|
|
lsl r1, r4, #0x18
|
|
str r0, [sp, #4]
|
|
str r2, [sp, #8]
|
|
mov r2, #0
|
|
ldr r0, [r5, #0x58]
|
|
lsr r1, r1, #0x18
|
|
add r3, r2, #0
|
|
bl BgTilemapRectChangePalette
|
|
lsl r1, r4, #0x18
|
|
ldr r0, [r5, #0x58]
|
|
lsr r1, r1, #0x18
|
|
bl ScheduleBgTilemapBufferTransfer
|
|
add sp, #0xc
|
|
pop {r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E7460
|
|
|
|
thumb_func_start ov87_021E7490
|
|
ov87_021E7490: ; 0x021E7490
|
|
push {r3, r4}
|
|
mov r4, #0
|
|
mov r2, #0xe5
|
|
add r3, r4, #0
|
|
lsl r2, r2, #2
|
|
_021E749A:
|
|
add r1, r0, r3
|
|
ldrb r1, [r1, r2]
|
|
cmp r1, #1
|
|
bne _021E74A8
|
|
add r1, r4, #1
|
|
lsl r1, r1, #0x18
|
|
lsr r4, r1, #0x18
|
|
_021E74A8:
|
|
add r1, r3, #1
|
|
lsl r1, r1, #0x18
|
|
lsr r3, r1, #0x18
|
|
cmp r3, #9
|
|
blo _021E749A
|
|
add r0, r4, #0
|
|
pop {r3, r4}
|
|
bx lr
|
|
thumb_func_end ov87_021E7490
|
|
|
|
thumb_func_start ov87_021E74B8
|
|
ov87_021E74B8: ; 0x021E74B8
|
|
push {r3, r4}
|
|
mov r4, #0
|
|
mov r1, #0xe5
|
|
add r3, r4, #0
|
|
lsl r1, r1, #2
|
|
_021E74C2:
|
|
add r2, r0, r4
|
|
strb r3, [r2, r1]
|
|
add r2, r4, #1
|
|
lsl r2, r2, #0x18
|
|
lsr r4, r2, #0x18
|
|
cmp r4, #9
|
|
blo _021E74C2
|
|
pop {r3, r4}
|
|
bx lr
|
|
thumb_func_end ov87_021E74B8
|
|
|
|
thumb_func_start ov87_021E74D4
|
|
ov87_021E74D4: ; 0x021E74D4
|
|
push {r3, r4}
|
|
mov r4, #0
|
|
ldr r1, _021E74F0 ; =0x000003A5
|
|
add r3, r4, #0
|
|
_021E74DC:
|
|
add r2, r0, r4
|
|
strb r3, [r2, r1]
|
|
add r2, r4, #1
|
|
lsl r2, r2, #0x18
|
|
lsr r4, r2, #0x18
|
|
cmp r4, #9
|
|
blo _021E74DC
|
|
pop {r3, r4}
|
|
bx lr
|
|
nop
|
|
_021E74F0: .word 0x000003A5
|
|
thumb_func_end ov87_021E74D4
|
|
|
|
thumb_func_start ov87_021E74F4
|
|
ov87_021E74F4: ; 0x021E74F4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
mov r0, #0xee
|
|
lsl r0, r0, #2
|
|
ldrh r0, [r7, r0]
|
|
mov r6, #0
|
|
cmp r0, #0
|
|
ble _021E7544
|
|
ldr r2, _021E7548 ; =ov87_021E829C
|
|
lsl r0, r1, #2
|
|
add r5, r2, r0
|
|
ldrb r0, [r5, #2]
|
|
add r4, r7, #0
|
|
str r0, [sp]
|
|
_021E7510:
|
|
ldr r0, _021E754C ; =0x000003BA
|
|
ldrh r1, [r4, r0]
|
|
add r0, r0, #2
|
|
ldrh r2, [r4, r0]
|
|
ldr r0, [sp]
|
|
cmp r0, r1
|
|
bgt _021E7536
|
|
ldrb r0, [r5, #3]
|
|
cmp r1, r0
|
|
bgt _021E7536
|
|
ldrb r0, [r5]
|
|
cmp r0, r2
|
|
bgt _021E7536
|
|
ldrb r0, [r5, #1]
|
|
cmp r2, r0
|
|
bgt _021E7536
|
|
add r0, r7, #0
|
|
bl ov87_021E7A44
|
|
_021E7536:
|
|
mov r0, #0xee
|
|
lsl r0, r0, #2
|
|
ldrh r0, [r7, r0]
|
|
add r6, r6, #1
|
|
add r4, #8
|
|
cmp r6, r0
|
|
blt _021E7510
|
|
_021E7544:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E7548: .word ov87_021E829C
|
|
_021E754C: .word 0x000003BA
|
|
thumb_func_end ov87_021E74F4
|
|
|
|
thumb_func_start ov87_021E7550
|
|
ov87_021E7550: ; 0x021E7550
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
mov r0, #0xee
|
|
lsl r0, r0, #2
|
|
ldrh r0, [r5, r0]
|
|
mov r6, #0
|
|
cmp r0, #0
|
|
ble _021E7588
|
|
mov r7, #0xee
|
|
add r4, r5, #0
|
|
lsl r7, r7, #2
|
|
_021E7566:
|
|
ldr r1, _021E758C ; =0x000003BA
|
|
mov r2, #0xef
|
|
lsl r2, r2, #2
|
|
ldrh r1, [r4, r1]
|
|
ldrh r2, [r4, r2]
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0x18
|
|
lsl r2, r2, #0x18
|
|
lsr r1, r1, #0x18
|
|
lsr r2, r2, #0x18
|
|
bl ov87_021E7590
|
|
ldrh r0, [r5, r7]
|
|
add r6, r6, #1
|
|
add r4, #8
|
|
cmp r6, r0
|
|
blt _021E7566
|
|
_021E7588:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E758C: .word 0x000003BA
|
|
thumb_func_end ov87_021E7550
|
|
|
|
thumb_func_start ov87_021E7590
|
|
ov87_021E7590: ; 0x021E7590
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r3, r1, #0
|
|
mov r7, #2
|
|
mvn r7, r7
|
|
add r0, r0, r3
|
|
ldr r6, _021E75DC ; =0x000003FA
|
|
str r2, [sp]
|
|
mov lr, r0
|
|
mov r5, #1
|
|
mov ip, r7
|
|
_021E75A4:
|
|
ldr r1, [sp]
|
|
mov r2, #0xf0
|
|
add r1, r1, r7
|
|
add r4, r1, #0
|
|
mul r4, r2
|
|
mov r2, lr
|
|
add r2, r2, r4
|
|
mov r0, ip
|
|
sub r4, r2, #3
|
|
_021E75B6:
|
|
add r2, r3, r0
|
|
cmp r2, #0
|
|
ble _021E75CA
|
|
cmp r2, #0xf0
|
|
bge _021E75CA
|
|
cmp r1, #0
|
|
ble _021E75CA
|
|
cmp r1, #0xa0
|
|
bge _021E75CA
|
|
strb r5, [r4, r6]
|
|
_021E75CA:
|
|
add r0, r0, #1
|
|
add r4, r4, #1
|
|
cmp r0, #3
|
|
blt _021E75B6
|
|
add r7, r7, #1
|
|
cmp r7, #3
|
|
blt _021E75A4
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E75DC: .word 0x000003FA
|
|
thumb_func_end ov87_021E7590
|
|
|
|
thumb_func_start ov87_021E75E0
|
|
ov87_021E75E0: ; 0x021E75E0
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0xc
|
|
str r1, [sp, #4]
|
|
str r0, [sp]
|
|
ldr r0, [sp, #4]
|
|
mov r4, #0
|
|
lsl r1, r0, #2
|
|
ldr r0, _021E7680 ; =ov87_021E82C0
|
|
ldrsh r7, [r0, r1]
|
|
ldr r0, _021E7684 ; =ov87_021E82C2
|
|
ldrsh r0, [r0, r1]
|
|
str r0, [sp, #8]
|
|
add r0, #0x14
|
|
ldr r1, [sp, #8]
|
|
mov ip, r0
|
|
cmp r1, r0
|
|
bge _021E763A
|
|
ldr r0, [sp, #8]
|
|
add r2, r7, #0
|
|
add r6, r0, #0
|
|
mov r1, #0xf0
|
|
ldr r0, _021E7688 ; =0x000003FA
|
|
mul r6, r1
|
|
add r2, #0x19
|
|
_021E7610:
|
|
add r3, r7, #0
|
|
cmp r7, r2
|
|
bge _021E762C
|
|
ldr r1, [sp]
|
|
add r1, r1, r6
|
|
add r5, r1, r7
|
|
_021E761C:
|
|
ldrb r1, [r5, r0]
|
|
cmp r1, #1
|
|
bne _021E7624
|
|
add r4, r4, #1
|
|
_021E7624:
|
|
add r3, r3, #1
|
|
add r5, r5, #1
|
|
cmp r3, r2
|
|
blt _021E761C
|
|
_021E762C:
|
|
ldr r1, [sp, #8]
|
|
add r6, #0xf0
|
|
add r3, r1, #1
|
|
mov r1, ip
|
|
str r3, [sp, #8]
|
|
cmp r3, r1
|
|
blt _021E7610
|
|
_021E763A:
|
|
mov r0, #0x5f
|
|
lsl r0, r0, #2
|
|
cmp r4, r0
|
|
blt _021E7678
|
|
ldr r1, _021E768C ; =0x000003A5
|
|
ldr r0, [sp]
|
|
add r4, r0, r1
|
|
ldr r0, [sp, #4]
|
|
ldrb r0, [r4, r0]
|
|
cmp r0, #0
|
|
bne _021E766E
|
|
ldr r0, _021E7690 ; =0x000005E2
|
|
bl PlaySE
|
|
ldr r0, _021E7694 ; =0x000003A1
|
|
ldr r1, [sp]
|
|
ldrb r2, [r1, r0]
|
|
add r3, r1, r2
|
|
ldr r1, [sp, #4]
|
|
add r2, r0, #1
|
|
strb r1, [r3, r2]
|
|
ldr r1, [sp]
|
|
ldrb r1, [r1, r0]
|
|
add r2, r1, #1
|
|
ldr r1, [sp]
|
|
strb r2, [r1, r0]
|
|
_021E766E:
|
|
ldr r1, [sp, #4]
|
|
mov r0, #1
|
|
add sp, #0xc
|
|
strb r0, [r4, r1]
|
|
pop {r4, r5, r6, r7, pc}
|
|
_021E7678:
|
|
mov r0, #0
|
|
add sp, #0xc
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E7680: .word ov87_021E82C0
|
|
_021E7684: .word ov87_021E82C2
|
|
_021E7688: .word 0x000003FA
|
|
_021E768C: .word 0x000003A5
|
|
_021E7690: .word 0x000005E2
|
|
_021E7694: .word 0x000003A1
|
|
thumb_func_end ov87_021E75E0
|
|
|
|
thumb_func_start ov87_021E7698
|
|
ov87_021E7698: ; 0x021E7698
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
ldr r2, _021E7720 ; =0x0000039E
|
|
add r6, r0, #0
|
|
ldrb r0, [r6, r2]
|
|
add r0, r0, #1
|
|
strb r0, [r6, r2]
|
|
ldrb r0, [r6, r2]
|
|
cmp r0, #1
|
|
blo _021E771C
|
|
mov r0, #0
|
|
strb r0, [r6, r2]
|
|
sub r1, r2, #1
|
|
ldrb r1, [r6, r1]
|
|
add r3, r1, #1
|
|
sub r1, r2, #1
|
|
strb r3, [r6, r1]
|
|
ldrb r1, [r6, r1]
|
|
cmp r1, #8
|
|
blo _021E76C2
|
|
sub r1, r2, #1
|
|
strb r0, [r6, r1]
|
|
_021E76C2:
|
|
ldr r0, _021E7724 ; =0x000003A1
|
|
ldrb r0, [r6, r0]
|
|
cmp r0, #2
|
|
bne _021E770E
|
|
ldr r7, _021E7728 ; =ov87_021E82E4
|
|
mov r4, #0
|
|
add r5, r6, #0
|
|
_021E76D0:
|
|
mov r0, #0xd1
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #3
|
|
bl ov87_021E8078
|
|
mov r0, #0xd1
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
mov r1, #1
|
|
bl ov87_021E7FD4
|
|
ldr r0, _021E772C ; =0x000003A2
|
|
add r1, r6, r4
|
|
ldrb r0, [r1, r0]
|
|
mov r2, #2
|
|
lsl r1, r0, #2
|
|
add r3, r7, r1
|
|
mov r0, #0xd1
|
|
ldrsh r1, [r7, r1]
|
|
ldrsh r2, [r3, r2]
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
sub r1, #0x24
|
|
sub r2, #0xa
|
|
bl ov87_021E7FEC
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, #2
|
|
blt _021E76D0
|
|
_021E770E:
|
|
ldr r1, _021E7730 ; =0x0000039D
|
|
mov r0, #0x5b
|
|
ldrb r1, [r6, r1]
|
|
lsl r0, r0, #2
|
|
add r0, r6, r0
|
|
bl ov87_021E7F28
|
|
_021E771C:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E7720: .word 0x0000039E
|
|
_021E7724: .word 0x000003A1
|
|
_021E7728: .word ov87_021E82E4
|
|
_021E772C: .word 0x000003A2
|
|
_021E7730: .word 0x0000039D
|
|
thumb_func_end ov87_021E7698
|
|
|
|
thumb_func_start ov87_021E7734
|
|
ov87_021E7734: ; 0x021E7734
|
|
push {r4, r5}
|
|
ldr r1, _021E7880 ; =0x000003A1
|
|
mov r3, #0
|
|
ldrb r2, [r0, r1]
|
|
cmp r2, #1
|
|
bhi _021E7746
|
|
add r0, r3, #0
|
|
pop {r4, r5}
|
|
bx lr
|
|
_021E7746:
|
|
add r2, r1, #2
|
|
ldrb r2, [r0, r2]
|
|
add r4, r0, r2
|
|
add r2, r1, #0
|
|
sub r2, #0x41
|
|
ldrb r2, [r4, r2]
|
|
add r4, r1, #1
|
|
ldrb r4, [r0, r4]
|
|
add r5, r0, r4
|
|
add r4, r1, #0
|
|
sub r4, #0x41
|
|
ldrb r4, [r5, r4]
|
|
cmp r4, r2
|
|
bne _021E7774
|
|
sub r2, r1, #1
|
|
ldrb r4, [r0, r2]
|
|
mov r2, #1
|
|
sub r1, r1, #1
|
|
bic r4, r2
|
|
mov r2, #1
|
|
orr r2, r4
|
|
strb r2, [r0, r1]
|
|
b _021E779E
|
|
_021E7774:
|
|
cmp r4, #4
|
|
bne _021E778A
|
|
sub r2, r1, #1
|
|
ldrb r4, [r0, r2]
|
|
mov r2, #1
|
|
sub r1, r1, #1
|
|
bic r4, r2
|
|
mov r2, #1
|
|
orr r2, r4
|
|
strb r2, [r0, r1]
|
|
b _021E779E
|
|
_021E778A:
|
|
cmp r2, #4
|
|
bne _021E779E
|
|
sub r2, r1, #1
|
|
ldrb r4, [r0, r2]
|
|
mov r2, #1
|
|
sub r1, r1, #1
|
|
bic r4, r2
|
|
mov r2, #1
|
|
orr r2, r4
|
|
strb r2, [r0, r1]
|
|
_021E779E:
|
|
ldr r1, _021E7880 ; =0x000003A1
|
|
ldrb r2, [r0, r1]
|
|
cmp r2, #2
|
|
bhi _021E77AC
|
|
mov r0, #0
|
|
pop {r4, r5}
|
|
bx lr
|
|
_021E77AC:
|
|
add r2, r1, #2
|
|
ldrb r2, [r0, r2]
|
|
add r4, r0, r2
|
|
add r2, r1, #0
|
|
sub r2, #0x41
|
|
ldrb r4, [r4, r2]
|
|
add r2, r1, #1
|
|
ldrb r2, [r0, r2]
|
|
add r5, r0, r2
|
|
add r2, r1, #0
|
|
sub r2, #0x41
|
|
ldrb r2, [r5, r2]
|
|
cmp r2, r4
|
|
bne _021E77D8
|
|
add r5, r1, #3
|
|
ldrb r5, [r0, r5]
|
|
sub r1, #0x41
|
|
add r5, r0, r5
|
|
ldrb r1, [r5, r1]
|
|
cmp r2, r1
|
|
bne _021E77D8
|
|
mov r3, #1
|
|
_021E77D8:
|
|
cmp r2, #4
|
|
bne _021E77E2
|
|
cmp r4, #4
|
|
bne _021E77E2
|
|
mov r3, #1
|
|
_021E77E2:
|
|
cmp r2, #4
|
|
bne _021E77F8
|
|
mov r1, #0xe9
|
|
lsl r1, r1, #2
|
|
ldrb r5, [r0, r1]
|
|
sub r1, #0x44
|
|
add r5, r0, r5
|
|
ldrb r1, [r5, r1]
|
|
cmp r1, #4
|
|
bne _021E77F8
|
|
mov r3, #1
|
|
_021E77F8:
|
|
cmp r4, #4
|
|
bne _021E780E
|
|
mov r1, #0xe9
|
|
lsl r1, r1, #2
|
|
ldrb r5, [r0, r1]
|
|
sub r1, #0x44
|
|
add r5, r0, r5
|
|
ldrb r1, [r5, r1]
|
|
cmp r1, #4
|
|
bne _021E780E
|
|
mov r3, #1
|
|
_021E780E:
|
|
cmp r2, #4
|
|
bne _021E7824
|
|
mov r1, #0xe9
|
|
lsl r1, r1, #2
|
|
ldrb r5, [r0, r1]
|
|
sub r1, #0x44
|
|
add r5, r0, r5
|
|
ldrb r1, [r5, r1]
|
|
cmp r4, r1
|
|
bne _021E7824
|
|
mov r3, #1
|
|
_021E7824:
|
|
cmp r4, #4
|
|
bne _021E783A
|
|
mov r1, #0xe9
|
|
lsl r1, r1, #2
|
|
ldrb r5, [r0, r1]
|
|
sub r1, #0x44
|
|
add r5, r0, r5
|
|
ldrb r1, [r5, r1]
|
|
cmp r2, r1
|
|
bne _021E783A
|
|
mov r3, #1
|
|
_021E783A:
|
|
mov r1, #0xe9
|
|
lsl r1, r1, #2
|
|
ldrb r5, [r0, r1]
|
|
sub r1, #0x44
|
|
add r5, r0, r5
|
|
ldrb r1, [r5, r1]
|
|
cmp r1, #4
|
|
bne _021E7850
|
|
cmp r2, r4
|
|
bne _021E7850
|
|
mov r3, #1
|
|
_021E7850:
|
|
cmp r3, #1
|
|
bne _021E787A
|
|
ldr r1, _021E7884 ; =0x000003A2
|
|
mov r4, #0
|
|
add r2, r1, #0
|
|
sub r2, #0x42
|
|
_021E785C:
|
|
add r3, r0, r4
|
|
ldrb r3, [r3, r1]
|
|
add r3, r0, r3
|
|
ldrb r3, [r3, r2]
|
|
cmp r3, #4
|
|
beq _021E786E
|
|
ldr r1, _021E7888 ; =0x0000039F
|
|
strb r3, [r0, r1]
|
|
b _021E7874
|
|
_021E786E:
|
|
add r4, r4, #1
|
|
cmp r4, #3
|
|
blt _021E785C
|
|
_021E7874:
|
|
mov r0, #1
|
|
pop {r4, r5}
|
|
bx lr
|
|
_021E787A:
|
|
mov r0, #0
|
|
pop {r4, r5}
|
|
bx lr
|
|
.balign 4, 0
|
|
_021E7880: .word 0x000003A1
|
|
_021E7884: .word 0x000003A2
|
|
_021E7888: .word 0x0000039F
|
|
thumb_func_end ov87_021E7734
|
|
|
|
thumb_func_start ov87_021E788C
|
|
ov87_021E788C: ; 0x021E788C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
mov r0, #0
|
|
mov r7, #0x36
|
|
add r4, r0, #0
|
|
add r5, r6, #0
|
|
lsl r7, r7, #4
|
|
_021E789A:
|
|
ldr r1, _021E78D0 ; =0x000003A2
|
|
add r2, r6, r4
|
|
ldrb r1, [r2, r1]
|
|
add r1, r6, r1
|
|
ldrb r1, [r1, r7]
|
|
cmp r1, #4
|
|
bne _021E78B6
|
|
mov r0, #0x35
|
|
lsl r0, r0, #4
|
|
ldr r0, [r5, r0]
|
|
mov r1, #1
|
|
bl ov87_021E80A8
|
|
mov r0, #1
|
|
_021E78B6:
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, #3
|
|
blt _021E789A
|
|
mov r1, #0
|
|
strb r1, [r6, #0x14]
|
|
ldrb r2, [r6, #0x14]
|
|
lsl r1, r2, #4
|
|
orr r2, r1
|
|
ldr r1, _021E78D4 ; =0x0400004D
|
|
strb r2, [r1]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E78D0: .word 0x000003A2
|
|
_021E78D4: .word 0x0400004D
|
|
thumb_func_end ov87_021E788C
|
|
|
|
thumb_func_start ov87_021E78D8
|
|
ov87_021E78D8: ; 0x021E78D8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
ldr r2, _021E7980 ; =0x000003A2
|
|
add r5, r0, #0
|
|
add r3, r2, #0
|
|
mov r0, #0
|
|
sub r3, #0x42
|
|
_021E78E4:
|
|
add r4, r5, r0
|
|
ldrb r4, [r4, r2]
|
|
add r4, r5, r4
|
|
ldrb r4, [r4, r3]
|
|
cmp r4, #4
|
|
beq _021E78F6
|
|
add r0, r0, #1
|
|
cmp r0, #3
|
|
blt _021E78E4
|
|
_021E78F6:
|
|
cmp r0, #3
|
|
bne _021E78FE
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E78FE:
|
|
cmp r1, #0
|
|
ldrb r0, [r5, #0x14]
|
|
bne _021E794A
|
|
cmp r0, #0
|
|
bne _021E790E
|
|
ldr r0, _021E7984 ; =0x00000563
|
|
bl PlaySE
|
|
_021E790E:
|
|
ldrb r0, [r5, #0x14]
|
|
cmp r0, #4
|
|
bhs _021E791A
|
|
add r0, r0, #1
|
|
strb r0, [r5, #0x14]
|
|
b _021E7970
|
|
_021E791A:
|
|
mov r7, #0x36
|
|
mov r4, #0
|
|
add r6, r5, #0
|
|
lsl r7, r7, #4
|
|
_021E7922:
|
|
ldr r0, _021E7980 ; =0x000003A2
|
|
add r1, r5, r4
|
|
ldrb r0, [r1, r0]
|
|
add r0, r5, r0
|
|
ldrb r0, [r0, r7]
|
|
cmp r0, #4
|
|
bne _021E793E
|
|
ldr r1, _021E7988 ; =0x0000039F
|
|
mov r0, #0x35
|
|
lsl r0, r0, #4
|
|
ldrb r1, [r5, r1]
|
|
ldr r0, [r6, r0]
|
|
bl ov87_021E803C
|
|
_021E793E:
|
|
add r4, r4, #1
|
|
add r6, r6, #4
|
|
cmp r4, #3
|
|
blt _021E7922
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E794A:
|
|
cmp r0, #0
|
|
beq _021E7954
|
|
sub r0, r0, #1
|
|
strb r0, [r5, #0x14]
|
|
b _021E7970
|
|
_021E7954:
|
|
mov r4, #0
|
|
mov r6, #0x35
|
|
add r7, r4, #0
|
|
lsl r6, r6, #4
|
|
_021E795C:
|
|
ldr r0, [r5, r6]
|
|
add r1, r7, #0
|
|
bl ov87_021E80A8
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, #3
|
|
blt _021E795C
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E7970:
|
|
ldrb r1, [r5, #0x14]
|
|
lsl r0, r1, #4
|
|
orr r1, r0
|
|
ldr r0, _021E798C ; =0x0400004D
|
|
strb r1, [r0]
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E7980: .word 0x000003A2
|
|
_021E7984: .word 0x00000563
|
|
_021E7988: .word 0x0000039F
|
|
_021E798C: .word 0x0400004D
|
|
thumb_func_end ov87_021E78D8
|
|
|
|
thumb_func_start ov87_021E7990
|
|
ov87_021E7990: ; 0x021E7990
|
|
ldrb r1, [r0, #0xe]
|
|
add r1, r1, #1
|
|
strb r1, [r0, #0xe]
|
|
bx lr
|
|
thumb_func_end ov87_021E7990
|
|
|
|
thumb_func_start ov87_021E7998
|
|
ov87_021E7998: ; 0x021E7998
|
|
ldrb r1, [r0, #0xe]
|
|
add r1, r1, #1
|
|
strb r1, [r0, #0xe]
|
|
bx lr
|
|
thumb_func_end ov87_021E7998
|
|
|
|
thumb_func_start ov87_021E79A0
|
|
ov87_021E79A0: ; 0x021E79A0
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r0, #0xd
|
|
lsl r0, r0, #6
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl ov87_021E7FD4
|
|
add r0, r4, #0
|
|
add r0, #0xfc
|
|
mov r1, #0
|
|
bl FillWindowPixelBuffer
|
|
add r4, #0xfc
|
|
add r0, r4, #0
|
|
bl ScheduleWindowCopyToVram
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E79A0
|
|
|
|
thumb_func_start ov87_021E79C4
|
|
ov87_021E79C4: ; 0x021E79C4
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
mov r3, #0xe2
|
|
add r4, r0, #0
|
|
mov r0, #0x7a
|
|
lsl r3, r3, #2
|
|
str r0, [sp]
|
|
mov r0, #0xcf
|
|
mov r1, #7
|
|
mov r2, #0
|
|
add r3, r4, r3
|
|
bl GfGfxLoader_GetCharData
|
|
mov r1, #0xe1
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
add r0, r1, #4
|
|
ldr r3, [r4, r0]
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r2, [r3, #0x14]
|
|
ldr r0, [r4, #0x58]
|
|
ldr r3, [r3, #0x10]
|
|
bl BG_LoadCharTilesData
|
|
ldr r0, [r4, #0x58]
|
|
mov r1, #0
|
|
bl BgCommitTilemapBufferToVram
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E79C4
|
|
|
|
thumb_func_start ov87_021E7A04
|
|
ov87_021E7A04: ; 0x021E7A04
|
|
push {r4, lr}
|
|
mov r1, #0xe2
|
|
add r4, r0, #0
|
|
lsl r1, r1, #2
|
|
ldr r1, [r4, r1]
|
|
mov r0, #0x7a
|
|
ldr r1, [r1, #0x10]
|
|
bl AllocFromHeap
|
|
mov r1, #0xe3
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
cmp r0, #0
|
|
bne _021E7A28
|
|
bne _021E7A28
|
|
bl GF_AssertFail
|
|
_021E7A28:
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E7A04
|
|
|
|
thumb_func_start ov87_021E7A2C
|
|
ov87_021E7A2C: ; 0x021E7A2C
|
|
mov r1, #0xe2
|
|
lsl r1, r1, #2
|
|
ldr r2, [r0, r1]
|
|
add r1, r1, #4
|
|
ldr r0, [r0, r1]
|
|
ldr r1, [r2, #0x14]
|
|
ldr r3, _021E7A40 ; =memcpy
|
|
ldr r2, [r2, #0x10]
|
|
bx r3
|
|
nop
|
|
_021E7A40: .word memcpy
|
|
thumb_func_end ov87_021E7A2C
|
|
|
|
thumb_func_start ov87_021E7A44
|
|
ov87_021E7A44: ; 0x021E7A44
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r6, r0, #0
|
|
mov r0, #2
|
|
mvn r0, r0
|
|
add r7, r1, #0
|
|
str r2, [sp, #4]
|
|
str r0, [sp, #8]
|
|
str r0, [sp, #0xc]
|
|
_021E7A56:
|
|
ldr r1, [sp, #4]
|
|
ldr r0, [sp, #8]
|
|
ldr r4, [sp, #0xc]
|
|
add r5, r1, r0
|
|
_021E7A5E:
|
|
add r1, r7, r4
|
|
cmp r1, #0
|
|
ble _021E7A7C
|
|
mov r0, #1
|
|
lsl r0, r0, #8
|
|
cmp r1, r0
|
|
bge _021E7A7C
|
|
cmp r5, #0
|
|
ble _021E7A7C
|
|
cmp r5, #0xc0
|
|
bge _021E7A7C
|
|
add r0, r6, #0
|
|
add r2, r5, #0
|
|
bl ov87_021E7AB0
|
|
_021E7A7C:
|
|
add r4, r4, #1
|
|
cmp r4, #3
|
|
blt _021E7A5E
|
|
ldr r0, [sp, #8]
|
|
add r0, r0, #1
|
|
str r0, [sp, #8]
|
|
cmp r0, #3
|
|
blt _021E7A56
|
|
mov r1, #0
|
|
mov r3, #0xe3
|
|
str r1, [sp]
|
|
lsl r3, r3, #2
|
|
ldr r2, [r6, r3]
|
|
sub r3, r3, #4
|
|
ldr r3, [r6, r3]
|
|
ldr r0, [r6, #0x58]
|
|
ldr r3, [r3, #0x10]
|
|
bl BG_LoadCharTilesData
|
|
ldr r0, [r6, #0x58]
|
|
mov r1, #0
|
|
bl BgCommitTilemapBufferToVram
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E7A44
|
|
|
|
thumb_func_start ov87_021E7AB0
|
|
ov87_021E7AB0: ; 0x021E7AB0
|
|
push {r3, r4, r5, r6}
|
|
mov r3, #1
|
|
mov r4, #0xff
|
|
tst r3, r1
|
|
bne _021E7ABE
|
|
mov r3, #0xf
|
|
b _021E7AC0
|
|
_021E7ABE:
|
|
mov r3, #0xf0
|
|
_021E7AC0:
|
|
eor r3, r4
|
|
lsl r3, r3, #0x18
|
|
lsr r4, r1, #3
|
|
mov r6, #7
|
|
lsr r5, r2, #3
|
|
and r1, r6
|
|
lsr r3, r3, #0x18
|
|
lsl r4, r4, #5
|
|
lsl r5, r5, #0xa
|
|
lsr r1, r1, #1
|
|
cmp r2, #8
|
|
bhs _021E7ADC
|
|
lsl r2, r2, #2
|
|
b _021E7AE0
|
|
_021E7ADC:
|
|
lsl r2, r2, #0x1d
|
|
lsr r2, r2, #0x1b
|
|
_021E7AE0:
|
|
mov r6, #0xe3
|
|
lsl r6, r6, #2
|
|
add r4, r5, r4
|
|
add r1, r1, r4
|
|
ldr r0, [r0, r6]
|
|
add r2, r2, r1
|
|
ldrb r1, [r0, r2]
|
|
and r1, r3
|
|
strb r1, [r0, r2]
|
|
pop {r3, r4, r5, r6}
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E7AB0
|
|
|
|
thumb_func_start ov87_021E7AF8
|
|
ov87_021E7AF8: ; 0x021E7AF8
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
add r5, r0, #0
|
|
mov r0, #0x20
|
|
mov r1, #0x7a
|
|
bl GF_CreateVramTransferManager
|
|
bl ov87_021E7EF0
|
|
bl NNS_G2dInitOamManagerModule
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r1, #0x80
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r3, #0x20
|
|
str r3, [sp, #0xc]
|
|
mov r2, #0x7a
|
|
str r2, [sp, #0x10]
|
|
add r2, r0, #0
|
|
bl OamManager_Create
|
|
mov r0, #0x28
|
|
add r1, r5, #4
|
|
mov r2, #0x7a
|
|
bl G2dRenderer_Init
|
|
mov r2, #2
|
|
str r0, [r5]
|
|
add r0, r5, #4
|
|
mov r1, #0
|
|
lsl r2, r2, #0x14
|
|
bl G2dRenderer_SetSubSurfaceCoords
|
|
ldr r4, _021E7BC0 ; =ov87_021E8394
|
|
mov r7, #0
|
|
add r6, r5, #0
|
|
_021E7B44:
|
|
ldrb r0, [r4]
|
|
add r1, r7, #0
|
|
mov r2, #0x7a
|
|
bl Create2DGfxResObjMan
|
|
mov r1, #0x4b
|
|
lsl r1, r1, #2
|
|
str r0, [r6, r1]
|
|
add r7, r7, #1
|
|
add r4, r4, #1
|
|
add r6, r6, #4
|
|
cmp r7, #4
|
|
blt _021E7B44
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl ov87_021E7BC4
|
|
mov r1, #1
|
|
add r0, r5, #0
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl ov87_021E7C50
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl ov87_021E7CE0
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl ov87_021E7D6C
|
|
mov r1, #0
|
|
add r0, r5, #0
|
|
add r2, r1, #0
|
|
mov r3, #2
|
|
bl ov87_021E7C50
|
|
mov r7, #0x4f
|
|
lsl r7, r7, #2
|
|
mov r4, #0
|
|
add r6, r7, #4
|
|
_021E7B96:
|
|
ldr r0, [r5, r7]
|
|
bl sub_0200ACF0
|
|
ldr r0, [r5, r6]
|
|
bl sub_0200AF94
|
|
add r4, r4, #1
|
|
add r5, #0x10
|
|
cmp r4, #5
|
|
blt _021E7B96
|
|
mov r0, #0x10
|
|
mov r1, #1
|
|
bl GfGfx_EngineBTogglePlanes
|
|
mov r0, #0x10
|
|
mov r1, #1
|
|
bl GfGfx_EngineATogglePlanes
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E7BC0: .word ov87_021E8394
|
|
thumb_func_end ov87_021E7AF8
|
|
|
|
thumb_func_start ov87_021E7BC4
|
|
ov87_021E7BC4: ; 0x021E7BC4
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
add r4, r0, #0
|
|
mov r0, #2
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xb2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0xc
|
|
mov r3, #0
|
|
bl AddCharResObjFromNarc
|
|
mov r1, #0x57
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
mov r0, #2
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #4
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
add r0, #0xb6
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0xd
|
|
mov r3, #0
|
|
bl AddPlttResObjFromNarc
|
|
mov r1, #0x16
|
|
lsl r1, r1, #4
|
|
str r0, [r4, r1]
|
|
mov r0, #2
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xba
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0xb
|
|
mov r3, #0
|
|
bl AddCellOrAnimResObjFromNarc
|
|
mov r1, #0x59
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
mov r0, #2
|
|
str r0, [sp]
|
|
mov r0, #3
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xbe
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0xa
|
|
mov r3, #0
|
|
bl AddCellOrAnimResObjFromNarc
|
|
mov r1, #0x5a
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E7BC4
|
|
|
|
thumb_func_start ov87_021E7C50
|
|
ov87_021E7C50: ; 0x021E7C50
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r6, r2, #0
|
|
add r7, r3, #0
|
|
str r6, [sp]
|
|
add r5, r0, #0
|
|
str r7, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xb2
|
|
lsl r4, r1, #4
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x20
|
|
mov r3, #0
|
|
bl AddCharResObjFromNarc
|
|
mov r1, #0x4f
|
|
add r2, r5, r4
|
|
lsl r1, r1, #2
|
|
str r0, [r2, r1]
|
|
str r6, [sp]
|
|
str r7, [sp, #4]
|
|
mov r0, #5
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
add r0, #0xb6
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x21
|
|
mov r3, #0
|
|
bl AddPlttResObjFromNarc
|
|
mov r1, #5
|
|
add r2, r5, r4
|
|
lsl r1, r1, #6
|
|
str r0, [r2, r1]
|
|
str r6, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xba
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x1f
|
|
mov r3, #0
|
|
bl AddCellOrAnimResObjFromNarc
|
|
mov r1, #0x51
|
|
add r2, r5, r4
|
|
lsl r1, r1, #2
|
|
str r0, [r2, r1]
|
|
str r6, [sp]
|
|
mov r0, #3
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xbe
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x1e
|
|
mov r3, #0
|
|
bl AddCellOrAnimResObjFromNarc
|
|
mov r1, #0x52
|
|
add r2, r5, r4
|
|
lsl r1, r1, #2
|
|
str r0, [r2, r1]
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov87_021E7C50
|
|
|
|
thumb_func_start ov87_021E7CE0
|
|
ov87_021E7CE0: ; 0x021E7CE0
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
add r4, r0, #0
|
|
mov r0, #3
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xb2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x10
|
|
mov r3, #0
|
|
bl AddCharResObjFromNarc
|
|
mov r1, #0x5b
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
mov r0, #3
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #4
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
add r0, #0xb6
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x11
|
|
mov r3, #0
|
|
bl AddPlttResObjFromNarc
|
|
mov r1, #0x17
|
|
lsl r1, r1, #4
|
|
str r0, [r4, r1]
|
|
mov r0, #3
|
|
str r0, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xba
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0xf
|
|
mov r3, #0
|
|
bl AddCellOrAnimResObjFromNarc
|
|
mov r1, #0x5d
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
mov r0, #3
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xbe
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0xe
|
|
mov r3, #0
|
|
bl AddCellOrAnimResObjFromNarc
|
|
mov r1, #0x5e
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E7CE0
|
|
|
|
thumb_func_start ov87_021E7D6C
|
|
ov87_021E7D6C: ; 0x021E7D6C
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
add r4, r0, #0
|
|
mov r0, #4
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xb2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x14
|
|
mov r3, #0
|
|
bl AddCharResObjFromNarc
|
|
mov r1, #0x5f
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
mov r0, #4
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0xc]
|
|
add r0, #0xb6
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x15
|
|
mov r3, #0
|
|
bl AddPlttResObjFromNarc
|
|
mov r1, #6
|
|
lsl r1, r1, #6
|
|
str r0, [r4, r1]
|
|
mov r0, #4
|
|
str r0, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xba
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x13
|
|
mov r3, #0
|
|
bl AddCellOrAnimResObjFromNarc
|
|
mov r1, #0x61
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
mov r0, #4
|
|
str r0, [sp]
|
|
mov r0, #3
|
|
str r0, [sp, #4]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #8]
|
|
add r0, #0xbe
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xcf
|
|
mov r2, #0x12
|
|
mov r3, #0
|
|
bl AddCellOrAnimResObjFromNarc
|
|
mov r1, #0x62
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E7D6C
|
|
|
|
thumb_func_start ov87_021E7DF8
|
|
ov87_021E7DF8: ; 0x021E7DF8
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x80
|
|
add r4, r0, #0
|
|
mov r0, #0
|
|
str r1, [sp]
|
|
mvn r0, r0
|
|
str r0, [sp, #4]
|
|
add r5, r2, #0
|
|
str r0, [sp, #8]
|
|
mov r2, #0
|
|
mov r0, #0x4b
|
|
str r2, [sp, #0xc]
|
|
lsl r0, r0, #2
|
|
str r3, [sp, #0x10]
|
|
ldr r3, [r4, r0]
|
|
str r3, [sp, #0x14]
|
|
add r3, r0, #4
|
|
ldr r3, [r4, r3]
|
|
str r3, [sp, #0x18]
|
|
add r3, r0, #0
|
|
add r3, #8
|
|
ldr r3, [r4, r3]
|
|
add r0, #0xc
|
|
str r3, [sp, #0x1c]
|
|
ldr r0, [r4, r0]
|
|
add r3, r1, #0
|
|
str r0, [sp, #0x20]
|
|
str r2, [sp, #0x24]
|
|
str r2, [sp, #0x28]
|
|
add r0, sp, #0x5c
|
|
add r2, r1, #0
|
|
bl CreateSpriteResourcesHeader
|
|
ldr r0, [r4]
|
|
mov r1, #0
|
|
str r0, [sp, #0x2c]
|
|
add r0, sp, #0x5c
|
|
str r0, [sp, #0x30]
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
str r1, [sp, #0x34]
|
|
str r1, [sp, #0x38]
|
|
str r1, [sp, #0x3c]
|
|
str r0, [sp, #0x40]
|
|
str r0, [sp, #0x44]
|
|
str r0, [sp, #0x48]
|
|
add r0, sp, #0x2c
|
|
strh r1, [r0, #0x20]
|
|
ldr r0, [sp, #0x90]
|
|
str r0, [sp, #0x50]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #0x58]
|
|
add r0, sp, #0x80
|
|
ldrb r0, [r0, #0x14]
|
|
cmp r0, #0
|
|
bne _021E7E6E
|
|
mov r0, #1
|
|
str r0, [sp, #0x54]
|
|
b _021E7E72
|
|
_021E7E6E:
|
|
mov r0, #2
|
|
str r0, [sp, #0x54]
|
|
_021E7E72:
|
|
add r0, sp, #0x2c
|
|
bl CreateSprite
|
|
mov r1, #0
|
|
add r4, r0, #0
|
|
bl Set2dSpriteAnimActiveFlag
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xc
|
|
bl sub_02024868
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl Set2dSpriteAnimSeqNo
|
|
add r0, r4, #0
|
|
add sp, #0x80
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov87_021E7DF8
|
|
|
|
thumb_func_start ov87_021E7E98
|
|
ov87_021E7E98: ; 0x021E7E98
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
mov r7, #5
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
lsl r7, r7, #6
|
|
_021E7EA2:
|
|
lsl r0, r4, #4
|
|
add r6, r5, r0
|
|
mov r0, #0x4f
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
bl sub_0200AEB0
|
|
ldr r0, [r6, r7]
|
|
bl sub_0200B0A8
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #5
|
|
blo _021E7EA2
|
|
mov r6, #0x4b
|
|
mov r4, #0
|
|
lsl r6, r6, #2
|
|
_021E7EC6:
|
|
lsl r0, r4, #2
|
|
add r0, r5, r0
|
|
ldr r0, [r0, r6]
|
|
bl Destroy2DGfxResObjMan
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #4
|
|
blo _021E7EC6
|
|
ldr r0, [r5]
|
|
bl SpriteList_Delete
|
|
bl OamManager_Free
|
|
bl sub_0202168C
|
|
bl sub_02022608
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E7E98
|
|
|
|
thumb_func_start ov87_021E7EF0
|
|
ov87_021E7EF0: ; 0x021E7EF0
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
ldr r4, _021E7F20 ; =ov87_021E8398
|
|
add r3, sp, #0
|
|
add r2, r3, #0
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r1, _021E7F24 ; =0x00200010
|
|
add r0, r2, #0
|
|
add r2, r1, #0
|
|
bl sub_020215C0
|
|
mov r0, #0xe
|
|
mov r1, #0x7a
|
|
bl sub_02022588
|
|
bl sub_020216C8
|
|
bl sub_02022638
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021E7F20: .word ov87_021E8398
|
|
_021E7F24: .word 0x00200010
|
|
thumb_func_end ov87_021E7EF0
|
|
|
|
thumb_func_start ov87_021E7F28
|
|
ov87_021E7F28: ; 0x021E7F28
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #8
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
cmp r4, #8
|
|
blt _021E7F38
|
|
bl GF_AssertFail
|
|
_021E7F38:
|
|
mov r0, #0x13
|
|
lsl r0, r0, #4
|
|
ldr r0, [r5, r0]
|
|
mov r1, #3
|
|
bl Get2DGfxResObjById
|
|
add r6, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #4]
|
|
ldr r3, _021E7F68 ; =ov87_021E84C0
|
|
add r0, #0xb6
|
|
ldrb r3, [r3, r4]
|
|
ldr r0, [r5, r0]
|
|
add r1, r6, #0
|
|
mov r2, #0xcf
|
|
bl ReplacePlttResObjFromNarc
|
|
add r0, r6, #0
|
|
bl sub_0200B084
|
|
add sp, #8
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_021E7F68: .word ov87_021E84C0
|
|
thumb_func_end ov87_021E7F28
|
|
|
|
thumb_func_start ov87_021E7F6C
|
|
ov87_021E7F6C: ; 0x021E7F6C
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0
|
|
add r6, r1, #0
|
|
mov r0, #0x7a
|
|
mov r1, #0x10
|
|
add r7, r2, #0
|
|
str r3, [sp, #8]
|
|
bl AllocFromHeap
|
|
add r4, r0, #0
|
|
add r2, r4, #0
|
|
mov r1, #0x10
|
|
mov r0, #0
|
|
_021E7F88:
|
|
strb r0, [r2]
|
|
add r2, r2, #1
|
|
sub r1, r1, #1
|
|
bne _021E7F88
|
|
ldr r0, [sp, #0x2c]
|
|
ldr r3, [sp, #0x28]
|
|
str r0, [sp]
|
|
add r0, sp, #0x10
|
|
ldrb r0, [r0, #0x14]
|
|
add r1, r6, #0
|
|
add r2, r7, #0
|
|
str r0, [sp, #4]
|
|
add r0, r5, #0
|
|
bl ov87_021E7DF8
|
|
add r2, sp, #0x10
|
|
str r0, [r4, #0xc]
|
|
ldrb r0, [r2, #0x14]
|
|
strb r0, [r4, #2]
|
|
ldrh r2, [r2, #0x10]
|
|
ldr r1, [sp, #8]
|
|
add r0, r4, #0
|
|
bl ov87_021E7FEC
|
|
add r0, r4, #0
|
|
add sp, #0xc
|
|
pop {r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E7F6C
|
|
|
|
thumb_func_start ov87_021E7FC0
|
|
ov87_021E7FC0: ; 0x021E7FC0
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0xc]
|
|
bl Sprite_Delete
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E7FC0
|
|
|
|
thumb_func_start ov87_021E7FD4
|
|
ov87_021E7FD4: ; 0x021E7FD4
|
|
ldr r3, _021E7FDC ; =Set2dSpriteVisibleFlag
|
|
ldr r0, [r0, #0xc]
|
|
bx r3
|
|
nop
|
|
_021E7FDC: .word Set2dSpriteVisibleFlag
|
|
thumb_func_end ov87_021E7FD4
|
|
|
|
thumb_func_start ov87_021E7FE0
|
|
ov87_021E7FE0: ; 0x021E7FE0
|
|
ldr r3, _021E7FE8 ; =Sprite_SetDrawPriority
|
|
ldr r0, [r0, #0xc]
|
|
bx r3
|
|
nop
|
|
_021E7FE8: .word Sprite_SetDrawPriority
|
|
thumb_func_end ov87_021E7FE0
|
|
|
|
thumb_func_start ov87_021E7FEC
|
|
ov87_021E7FEC: ; 0x021E7FEC
|
|
push {lr}
|
|
sub sp, #0xc
|
|
lsl r2, r2, #0xc
|
|
lsl r1, r1, #0xc
|
|
str r2, [sp, #4]
|
|
str r1, [sp]
|
|
ldrb r1, [r0, #2]
|
|
cmp r1, #1
|
|
bne _021E8006
|
|
mov r1, #2
|
|
lsl r1, r1, #0x14
|
|
add r1, r2, r1
|
|
str r1, [sp, #4]
|
|
_021E8006:
|
|
ldr r0, [r0, #0xc]
|
|
add r1, sp, #0
|
|
bl Sprite_SetMatrix
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E7FEC
|
|
|
|
thumb_func_start ov87_021E8014
|
|
ov87_021E8014: ; 0x021E8014
|
|
push {r3, r4, r5, lr}
|
|
ldr r0, [r0, #0xc]
|
|
add r5, r1, #0
|
|
add r4, r2, #0
|
|
bl Sprite_GetMatrixPtr
|
|
ldr r2, [r0]
|
|
asr r1, r2, #0xb
|
|
lsr r1, r1, #0x14
|
|
add r1, r2, r1
|
|
asr r1, r1, #0xc
|
|
str r1, [r5]
|
|
ldr r1, [r0, #4]
|
|
asr r0, r1, #0xb
|
|
lsr r0, r0, #0x14
|
|
add r0, r1, r0
|
|
asr r0, r0, #0xc
|
|
str r0, [r4]
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E8014
|
|
|
|
thumb_func_start ov87_021E803C
|
|
ov87_021E803C: ; 0x021E803C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
add r4, r1, #0
|
|
mov r1, #1
|
|
ldr r0, [r5, #0xc]
|
|
lsl r1, r1, #0xc
|
|
bl sub_02024868
|
|
ldr r0, [r5, #0xc]
|
|
add r1, r4, #0
|
|
bl TryChange2dSpriteAnimSeqNo
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E803C
|
|
|
|
thumb_func_start ov87_021E8058
|
|
ov87_021E8058: ; 0x021E8058
|
|
ldr r3, _021E8064 ; =sub_02024804
|
|
ldr r0, [r0, #0xc]
|
|
ldr r1, _021E8068 ; =ov87_021E83A8
|
|
mov r2, #1
|
|
bx r3
|
|
nop
|
|
_021E8064: .word sub_02024804
|
|
_021E8068: .word ov87_021E83A8
|
|
thumb_func_end ov87_021E8058
|
|
|
|
thumb_func_start ov87_021E806C
|
|
ov87_021E806C: ; 0x021E806C
|
|
ldr r3, _021E8074 ; =sub_02024804
|
|
ldr r0, [r0, #0xc]
|
|
mov r2, #2
|
|
bx r3
|
|
.balign 4, 0
|
|
_021E8074: .word sub_02024804
|
|
thumb_func_end ov87_021E806C
|
|
|
|
thumb_func_start ov87_021E8078
|
|
ov87_021E8078: ; 0x021E8078
|
|
ldr r3, _021E8080 ; =sub_02024A48
|
|
ldr r0, [r0, #0xc]
|
|
bx r3
|
|
nop
|
|
_021E8080: .word sub_02024A48
|
|
thumb_func_end ov87_021E8078
|
|
|
|
thumb_func_start ov87_021E8084
|
|
ov87_021E8084: ; 0x021E8084
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0xc]
|
|
bl Set2dSpriteAnimActiveFlag
|
|
mov r1, #1
|
|
ldr r0, [r4, #0xc]
|
|
lsl r1, r1, #0xc
|
|
bl sub_02024868
|
|
ldr r0, [r4, #0xc]
|
|
bl Get2dSpriteCurrentAnimSeqNo
|
|
add r1, r0, #0
|
|
ldr r0, [r4, #0xc]
|
|
bl Set2dSpriteAnimSeqNo
|
|
pop {r4, pc}
|
|
thumb_func_end ov87_021E8084
|
|
|
|
thumb_func_start ov87_021E80A8
|
|
ov87_021E80A8: ; 0x021E80A8
|
|
ldr r3, _021E80B0 ; =sub_02024B38
|
|
ldr r0, [r0, #0xc]
|
|
bx r3
|
|
nop
|
|
_021E80B0: .word sub_02024B38
|
|
thumb_func_end ov87_021E80A8
|
|
|
|
thumb_func_start ov87_021E80B4
|
|
ov87_021E80B4: ; 0x021E80B4
|
|
ldr r3, _021E80BC ; =Sprite_IsCellAnimationFinished
|
|
ldr r0, [r0, #0xc]
|
|
bx r3
|
|
nop
|
|
_021E80BC: .word Sprite_IsCellAnimationFinished
|
|
thumb_func_end ov87_021E80B4
|
|
|
|
thumb_func_start ov87_021E80C0
|
|
ov87_021E80C0: ; 0x021E80C0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r7, r0, #0
|
|
add r5, r1, #0
|
|
mov r4, #0
|
|
_021E80C8:
|
|
ldr r2, _021E80EC ; =ov87_021E842C
|
|
lsl r6, r4, #4
|
|
lsl r3, r4, #3
|
|
add r0, r7, #0
|
|
add r1, r5, r6
|
|
add r2, r2, r3
|
|
bl AddWindow
|
|
add r0, r5, r6
|
|
mov r1, #0
|
|
bl FillWindowPixelBuffer
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #0x10
|
|
blo _021E80C8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_021E80EC: .word ov87_021E842C
|
|
thumb_func_end ov87_021E80C0
|
|
|
|
thumb_func_start ov87_021E80F0
|
|
ov87_021E80F0: ; 0x021E80F0
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
_021E80F6:
|
|
lsl r0, r4, #4
|
|
add r0, r5, r0
|
|
bl RemoveWindow
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x10
|
|
lsr r4, r0, #0x10
|
|
cmp r4, #0x10
|
|
blo _021E80F6
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov87_021E80F0
|
|
|
|
thumb_func_start ov87_021E810C
|
|
ov87_021E810C: ; 0x021E810C
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
add r4, r1, #0
|
|
mov r1, #0x7a
|
|
str r1, [sp]
|
|
ldr r2, _021E8130 ; =0x000003F7
|
|
mov r1, #2
|
|
mov r3, #0
|
|
bl sub_0200E398
|
|
ldr r2, _021E8130 ; =0x000003F7
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
mov r3, #0xb
|
|
bl DrawFrameAndWindow1
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
.balign 4, 0
|
|
_021E8130: .word 0x000003F7
|
|
thumb_func_end ov87_021E810C
|
|
|
|
thumb_func_start ov87_021E8134
|
|
ov87_021E8134: ; 0x021E8134
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #8
|
|
add r5, r1, #0
|
|
add r4, r0, #0
|
|
bl GetWindowBgId
|
|
add r1, r0, #0
|
|
lsl r0, r5, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp]
|
|
mov r0, #0x7a
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4]
|
|
ldr r2, _021E8170 ; =0x000003D9
|
|
mov r3, #0xa
|
|
bl LoadUserFrameGfx2
|
|
add r0, r4, #0
|
|
mov r1, #0xf
|
|
bl FillWindowPixelBuffer
|
|
ldr r2, _021E8170 ; =0x000003D9
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
mov r3, #0xa
|
|
bl DrawFrameAndWindow2
|
|
add sp, #8
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021E8170: .word 0x000003D9
|
|
thumb_func_end ov87_021E8134
|
|
|
|
.rodata
|
|
|
|
_021E8174:
|
|
.byte 0x58, 0x00, 0xA0, 0x00, 0x44, 0x00, 0xA0, 0x00, 0x26, 0x00, 0x38, 0x00
|
|
.byte 0x44, 0x00, 0x44, 0x00
|
|
|
|
ov87_021E8184: ; 0x021E8184
|
|
.byte 0xA4, 0xBF, 0x5E, 0xA4, 0xFF, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E818C: ; 0x021E818C
|
|
.byte 0xA4, 0xBF, 0x4C, 0xB4
|
|
.byte 0xFF, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E8194: ; 0x021E8194
|
|
.byte 0x34, 0x00, 0x44, 0x00, 0x6C, 0x00, 0x44, 0x00, 0xA4, 0x00, 0x44, 0x00
|
|
|
|
ov87_021E81A0: ; 0x021E81A0
|
|
.byte 0x00, 0x00
|
|
|
|
ov87_021E81A2: ; 0x021E81A2
|
|
.byte 0x24, 0x00, 0x38, 0x00, 0x24, 0x00, 0x70, 0x00, 0x24, 0x00, 0xA8, 0x00, 0x24, 0x00
|
|
|
|
ov87_021E81B0: ; 0x021E81B0
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E81C0: ; 0x021E81C0
|
|
.byte 0x2A, 0x9A, 0x00, 0x50, 0x2A, 0x9A, 0x58, 0x8A, 0x2A, 0x9A, 0x90, 0xC3, 0x2A, 0x9A, 0xCC, 0xFE
|
|
.byte 0xFF, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E81D4: ; 0x021E81D4
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x06, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E81F0: ; 0x021E81F0
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x03, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E820C: ; 0x021E820C
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x02, 0x03
|
|
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E8228: ; 0x021E8228
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E8244: ; 0x021E8244
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E8260: ; 0x021E8260
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x02, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E827C: ; 0x021E827C
|
|
.byte 0x09, 0x09, 0x09, 0x08
|
|
.byte 0x07, 0x06, 0x05, 0x04, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0xF8, 0xF8, 0xF8, 0xF9
|
|
.byte 0xF9, 0xFA, 0xFB, 0xFC, 0xEE, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF6, 0xF8
|
|
|
|
ov87_021E829C: ; 0x021E829C
|
|
.byte 0x15, 0x36, 0x20, 0x59
|
|
.byte 0x15, 0x36, 0x66, 0x9D, 0x15, 0x36, 0xAA, 0xE3, 0x44, 0x64, 0x20, 0x59, 0x44, 0x64, 0x66, 0x9D
|
|
.byte 0x44, 0x64, 0xAA, 0xE3, 0x72, 0x94, 0x20, 0x59, 0x72, 0x94, 0x66, 0x9D, 0x72, 0x94, 0xAA, 0xE3
|
|
|
|
ov87_021E82C0: ; 0x021E82C0
|
|
.byte 0x2A, 0x00
|
|
|
|
ov87_021E82C2: ; 0x021E82C2
|
|
.byte 0x1B, 0x00, 0x75, 0x00, 0x1B, 0x00, 0xBD, 0x00, 0x1B, 0x00, 0x2A, 0x00, 0x4A, 0x00
|
|
.byte 0x75, 0x00, 0x4A, 0x00, 0xBD, 0x00, 0x4A, 0x00, 0x2A, 0x00, 0x78, 0x00, 0x75, 0x00, 0x78, 0x00
|
|
.byte 0xBD, 0x00, 0x78, 0x00
|
|
|
|
ov87_021E82E4: ; 0x021E82E4
|
|
.byte 0x39, 0x00, 0x12, 0x00, 0x7C, 0x00, 0x12, 0x00, 0xBF, 0x00, 0x12, 0x00
|
|
.byte 0x39, 0x00, 0x42, 0x00, 0x7C, 0x00, 0x42, 0x00, 0xBF, 0x00, 0x42, 0x00, 0x39, 0x00, 0x72, 0x00
|
|
.byte 0x7C, 0x00, 0x72, 0x00, 0xBF, 0x00, 0x72, 0x00
|
|
|
|
ov87_021E8308: ; 0x021E8308
|
|
.byte 0x15, 0x36, 0x20, 0x59, 0x15, 0x36, 0x66, 0x9D
|
|
.byte 0x15, 0x36, 0xAA, 0xE3, 0x44, 0x64, 0x20, 0x59, 0x44, 0x64, 0x66, 0x9D, 0x44, 0x64, 0xAA, 0xE3
|
|
.byte 0x72, 0x94, 0x20, 0x59, 0x72, 0x94, 0x66, 0x9D, 0x72, 0x94, 0xAA, 0xE3, 0xFF, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E8330: ; 0x021E8330
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E8358: ; 0x021E8358
|
|
.byte 0xA9, 0x00, 0xAA, 0x00, 0xAB, 0x00, 0xAC, 0x00
|
|
.byte 0xAD, 0x00, 0xAE, 0x00, 0xB8, 0x00, 0xB9, 0x00, 0xBA, 0x00, 0xBB, 0x00, 0xBC, 0x00, 0xBD, 0x00
|
|
.byte 0xBE, 0x00, 0xBF, 0x00, 0xC0, 0x00, 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, 0xC4, 0x00, 0xC5, 0x00
|
|
.byte 0xC6, 0x00, 0xC7, 0x00, 0xC8, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E8388: ; 0x021E8388
|
|
.byte 0x0A, 0x0C, 0x06, 0x08
|
|
|
|
ov87_021E838C: ; 0x021E838C
|
|
.byte 0xFC, 0xFC, 0xFC, 0xFC
|
|
.byte 0xFC, 0xFC, 0xFC, 0xFC
|
|
|
|
ov87_021E8394: ; 0x021E8394
|
|
.byte 0x05, 0x05, 0x05, 0x05
|
|
|
|
ov87_021E8398: ; 0x021E8398
|
|
.byte 0x05, 0x00, 0x00, 0x00, 0xB8, 0x0B, 0x00, 0x00
|
|
.byte 0x00, 0x14, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00
|
|
|
|
ov87_021E83A8: ; 0x021E83A8
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x33, 0x13, 0x00, 0x00, 0x33, 0x13, 0x00, 0x00, 0x33, 0x13, 0x00, 0x00
|
|
.byte 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x55, 0x15, 0x00, 0x00
|
|
.byte 0x55, 0x15, 0x00, 0x00, 0x55, 0x15, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00
|
|
.byte 0x00, 0x18, 0x00, 0x00, 0xCD, 0x1C, 0x00, 0x00, 0xCD, 0x1C, 0x00, 0x00, 0xCD, 0x1C, 0x00, 0x00
|
|
.byte 0x49, 0x12, 0x00, 0x00, 0x49, 0x12, 0x00, 0x00, 0x49, 0x12, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
|
|
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00
|
|
.byte 0x00, 0x0C, 0x00, 0x00, 0xCD, 0x0C, 0x00, 0x00, 0xCD, 0x0C, 0x00, 0x00, 0xCD, 0x0C, 0x00, 0x00
|
|
.byte 0xB7, 0x0D, 0x00, 0x00, 0xB7, 0x0D, 0x00, 0x00, 0xB7, 0x0D, 0x00, 0x00
|
|
|
|
ov87_021E842C: ; 0x021E842C
|
|
.byte 0x02, 0x02, 0x01, 0x1B
|
|
.byte 0x04, 0x0C, 0x01, 0x00, 0x04, 0x18, 0x0D, 0x07, 0x04, 0x0D, 0x6D, 0x00, 0x04, 0x11, 0x03, 0x0B
|
|
.byte 0x05, 0x0D, 0x89, 0x00, 0x04, 0x11, 0x08, 0x0B, 0x05, 0x0D, 0xC0, 0x00, 0x04, 0x11, 0x0E, 0x0B
|
|
.byte 0x05, 0x0D, 0xF7, 0x00, 0x04, 0x11, 0x13, 0x0B, 0x05, 0x0D, 0x2E, 0x01, 0x04, 0x0A, 0x03, 0x05
|
|
.byte 0x03, 0x0D, 0x65, 0x01, 0x04, 0x0A, 0x08, 0x05, 0x03, 0x0D, 0x74, 0x01, 0x04, 0x0A, 0x0E, 0x05
|
|
.byte 0x03, 0x0D, 0x83, 0x01, 0x04, 0x0A, 0x13, 0x05, 0x03, 0x0D, 0x92, 0x01, 0x02, 0x0A, 0x09, 0x0C
|
|
.byte 0x04, 0x0D, 0xA1, 0x01, 0x02, 0x0A, 0x09, 0x0C, 0x04, 0x0D, 0xA1, 0x01, 0x02, 0x0A, 0x09, 0x0C
|
|
.byte 0x04, 0x0D, 0xA1, 0x01, 0x02, 0x0A, 0x15, 0x0D, 0x03, 0x0D, 0xD1, 0x01, 0x02, 0x0D, 0x15, 0x0D
|
|
.byte 0x03, 0x0D, 0xD1, 0x01, 0x04, 0x02, 0x13, 0x1B, 0x04, 0x0C, 0x01, 0x00
|
|
|
|
.data
|
|
|
|
|
|
ov87_021E84C0: ; 0x021E84C0
|
|
.byte 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x00, 0x00, 0x00, 0x00
|
|
; 0x021E84AC
|