mirror of
https://github.com/pret/pokeheartgold.git
synced 2024-12-11 22:57:18 +00:00
3296 lines
58 KiB
ArmAsm
3296 lines
58 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.text
|
|
|
|
thumb_func_start ov61_021E5900
|
|
ov61_021E5900: ; 0x021E5900
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x10
|
|
mov r2, #1
|
|
add r5, r0, #0
|
|
mov r0, #3
|
|
mov r1, #0x2e
|
|
lsl r2, r2, #0x12
|
|
bl CreateHeap
|
|
ldr r1, _021E5A20 ; =0x00000598
|
|
add r0, r5, #0
|
|
mov r2, #0x2e
|
|
bl OverlayManager_CreateAndGetData
|
|
ldr r2, _021E5A20 ; =0x00000598
|
|
add r4, r0, #0
|
|
mov r1, #0
|
|
bl MI_CpuFill8
|
|
add r0, r4, #0
|
|
mov r1, #0x2e
|
|
add r0, #0x20
|
|
mov r2, #0x20
|
|
str r1, [r4, #4]
|
|
bl GF_ExpHeap_FndInitAllocator
|
|
add r0, r5, #0
|
|
bl OverlayManager_GetField18
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #4]
|
|
bl Options_GetFrame
|
|
mov r1, #0xe9
|
|
lsl r1, r1, #2
|
|
strb r0, [r4, r1]
|
|
ldr r0, _021E5A24 ; =0x00000578
|
|
mov r1, #0
|
|
add r5, #8
|
|
add r2, r4, #0
|
|
_021E5950:
|
|
add r1, r1, #1
|
|
str r5, [r2, r0]
|
|
add r5, #0xec
|
|
add r2, r2, #4
|
|
cmp r1, #3
|
|
blt _021E5950
|
|
ldr r0, _021E5A28 ; =0x000003A5
|
|
mov r1, #1
|
|
strb r1, [r4, r0]
|
|
ldr r0, _021E5A2C ; =ov61_021E60B8
|
|
add r1, r4, #0
|
|
bl Main_SetVBlankIntrCB
|
|
bl sub_0201A108
|
|
bl ov61_021E60C8
|
|
ldr r0, [r4, #4]
|
|
bl ov61_021E60E8
|
|
add r0, r4, #0
|
|
bl ov61_021E6140
|
|
ldr r0, [r4, #4]
|
|
bl BgConfig_Alloc
|
|
str r0, [r4, #8]
|
|
mov r1, #1
|
|
mov r0, #0
|
|
str r0, [sp, #4]
|
|
str r1, [sp]
|
|
str r1, [sp, #8]
|
|
str r1, [sp, #0xc]
|
|
add r0, sp, #0
|
|
bl SetBothScreensModesAndDisable
|
|
ldr r0, [r4, #8]
|
|
ldr r1, [r4, #4]
|
|
bl ov61_021E6350
|
|
mov r0, #1
|
|
add r1, r0, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #2
|
|
mov r1, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl GX_EngineAToggleLayers
|
|
ldr r0, _021E5A30 ; =gMain + 0x60
|
|
mov r1, #1
|
|
strb r1, [r0, #9]
|
|
bl GX_SwapDisplay
|
|
bl sub_02020080
|
|
add r0, r4, #0
|
|
bl ov61_021E6B6C
|
|
ldr r0, [r4, #8]
|
|
ldr r1, [r4, #4]
|
|
bl ov61_021E6C3C
|
|
add r0, r4, #0
|
|
bl ov61_021E6508
|
|
add r0, r4, #0
|
|
bl ov61_021E6564
|
|
ldr r0, [r4, #4]
|
|
bl sub_02023114
|
|
str r0, [r4, #0x10]
|
|
ldr r0, [r4, #4]
|
|
ldr r1, [r4, #0x10]
|
|
bl sub_02019014
|
|
ldr r1, _021E5A34 ; =0x00000574
|
|
str r0, [r4, r1]
|
|
add r0, r4, #0
|
|
bl ov61_021E6488
|
|
add r0, r4, #0
|
|
bl ov61_021E6944
|
|
add r0, r4, #0
|
|
bl ov61_021E6FC4
|
|
mov r0, #0
|
|
bl TextFlags_SetCanABSpeedUpPrint
|
|
mov r0, #1
|
|
bl sub_02002B50
|
|
mov r0, #0
|
|
bl sub_02002B8C
|
|
mov r0, #1
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021E5A20: .word 0x00000598
|
|
_021E5A24: .word 0x00000578
|
|
_021E5A28: .word 0x000003A5
|
|
_021E5A2C: .word ov61_021E60B8
|
|
_021E5A30: .word gMain + 0x60
|
|
_021E5A34: .word 0x00000574
|
|
thumb_func_end ov61_021E5900
|
|
|
|
thumb_func_start ov61_021E5A38
|
|
ov61_021E5A38: ; 0x021E5A38
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x40
|
|
add r5, r1, #0
|
|
bl OverlayManager_GetData
|
|
ldr r1, [r5]
|
|
add r4, r0, #0
|
|
mov r6, #0
|
|
cmp r1, #0xc
|
|
bls _021E5A4E
|
|
b _021E5E86
|
|
_021E5A4E:
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021E5A5A: ; jump table
|
|
.short _021E5A74 - _021E5A5A - 2 ; case 0
|
|
.short _021E5AA6 - _021E5A5A - 2 ; case 1
|
|
.short _021E5AB4 - _021E5A5A - 2 ; case 2
|
|
.short _021E5AFE - _021E5A5A - 2 ; case 3
|
|
.short _021E5B4C - _021E5A5A - 2 ; case 4
|
|
.short _021E5B70 - _021E5A5A - 2 ; case 5
|
|
.short _021E5CF2 - _021E5A5A - 2 ; case 6
|
|
.short _021E5D72 - _021E5A5A - 2 ; case 7
|
|
.short _021E5D8C - _021E5A5A - 2 ; case 8
|
|
.short _021E5DA2 - _021E5A5A - 2 ; case 9
|
|
.short _021E5DBC - _021E5A5A - 2 ; case 10
|
|
.short _021E5E52 - _021E5A5A - 2 ; case 11
|
|
.short _021E5E78 - _021E5A5A - 2 ; case 12
|
|
_021E5A74:
|
|
mov r1, #7
|
|
bl ov61_021E6DFC
|
|
mov r0, #2
|
|
add r1, r6, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
add r1, r6, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #6
|
|
mov r1, #1
|
|
str r0, [sp]
|
|
str r1, [sp, #4]
|
|
ldr r0, [r4, #4]
|
|
add r2, r1, #0
|
|
str r0, [sp, #8]
|
|
add r0, r6, #0
|
|
add r3, r0, #0
|
|
bl sub_0200FA24
|
|
mov r0, #1
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5AA6:
|
|
bl sub_0200FB5C
|
|
cmp r0, #0
|
|
beq _021E5B94
|
|
mov r0, #2
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5AB4:
|
|
ldr r0, _021E5E0C ; =0x00000574
|
|
ldr r0, [r4, r0]
|
|
bl sub_020190E8
|
|
cmp r0, #0
|
|
beq _021E5B94
|
|
add r0, r6, #0
|
|
str r0, [sp]
|
|
ldr r0, _021E5E10 ; =0x0001020F
|
|
ldr r1, _021E5E14 ; =0x000003A5
|
|
str r0, [sp, #4]
|
|
ldrb r0, [r4, r1]
|
|
mov r2, #1
|
|
mov r3, #0xbe
|
|
str r0, [sp, #8]
|
|
add r0, r1, #0
|
|
add r0, #0xb
|
|
add r0, r4, r0
|
|
str r0, [sp, #0xc]
|
|
sub r1, #9
|
|
ldr r0, [r4, r1]
|
|
ldr r1, [r4, #4]
|
|
bl ov61_021E6D78
|
|
ldr r1, _021E5E18 ; =0x000003A6
|
|
strb r0, [r4, r1]
|
|
mov r0, #2
|
|
add r1, r6, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
add r1, r6, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5AFE:
|
|
mov r1, #0xe5
|
|
lsl r1, r1, #2
|
|
ldr r0, [r4, r1]
|
|
mov r2, #1
|
|
add r0, r0, #1
|
|
str r0, [sp]
|
|
ldr r0, _021E5E10 ; =0x0001020F
|
|
mov r3, #0xbe
|
|
str r0, [sp, #4]
|
|
add r0, r1, #0
|
|
add r0, #0x11
|
|
ldrb r0, [r4, r0]
|
|
str r0, [sp, #8]
|
|
add r0, r1, #0
|
|
add r0, #0x1c
|
|
add r0, r4, r0
|
|
str r0, [sp, #0xc]
|
|
add r1, #8
|
|
ldr r0, [r4, r1]
|
|
ldr r1, [r4, #4]
|
|
bl ov61_021E6D78
|
|
ldr r1, _021E5E18 ; =0x000003A6
|
|
strb r0, [r4, r1]
|
|
add r0, r4, #0
|
|
mov r1, #8
|
|
bl ov61_021E6DFC
|
|
mov r0, #2
|
|
mov r1, #1
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
mov r1, #1
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5B4C:
|
|
ldr r0, _021E5E18 ; =0x000003A6
|
|
ldrb r0, [r4, r0]
|
|
bl sub_02020094
|
|
cmp r0, #0
|
|
bne _021E5B94
|
|
mov r0, #0x3b
|
|
lsl r0, r0, #4
|
|
ldr r0, [r4, r0]
|
|
bl String_dtor
|
|
mov r0, #0x3b
|
|
add r1, r6, #0
|
|
lsl r0, r0, #4
|
|
str r1, [r4, r0]
|
|
mov r0, #5
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5B70:
|
|
ldr r0, _021E5E0C ; =0x00000574
|
|
ldr r0, [r4, r0]
|
|
bl sub_020190E8
|
|
cmp r0, #0
|
|
beq _021E5B94
|
|
add r0, r4, #0
|
|
bl ov61_021E6E40
|
|
cmp r0, #7
|
|
beq _021E5B8E
|
|
cmp r0, #8
|
|
bne _021E5B90
|
|
mov r6, #1
|
|
b _021E5B90
|
|
_021E5B8E:
|
|
mov r6, #2
|
|
_021E5B90:
|
|
cmp r0, #8
|
|
bls _021E5B96
|
|
_021E5B94:
|
|
b _021E5E86
|
|
_021E5B96:
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_021E5BA2: ; jump table
|
|
.short _021E5E86 - _021E5BA2 - 2 ; case 0
|
|
.short _021E5C1E - _021E5BA2 - 2 ; case 1
|
|
.short _021E5C32 - _021E5BA2 - 2 ; case 2
|
|
.short _021E5C1E - _021E5BA2 - 2 ; case 3
|
|
.short _021E5C32 - _021E5BA2 - 2 ; case 4
|
|
.short _021E5BB4 - _021E5BA2 - 2 ; case 5
|
|
.short _021E5C5E - _021E5BA2 - 2 ; case 6
|
|
.short _021E5C48 - _021E5BA2 - 2 ; case 7
|
|
.short _021E5CB2 - _021E5BA2 - 2 ; case 8
|
|
_021E5BB4:
|
|
ldr r0, _021E5E1C ; =0x00000584
|
|
mov r1, #2
|
|
str r1, [r4, r0]
|
|
mov r2, #0
|
|
mov r0, #0xe5
|
|
str r2, [sp, #0x14]
|
|
lsl r0, r0, #2
|
|
ldr r1, [r4, r0]
|
|
add r0, #8
|
|
add r1, r1, #4
|
|
str r1, [sp]
|
|
ldr r1, _021E5E10 ; =0x0001020F
|
|
mov r3, #0xbe
|
|
str r1, [sp, #4]
|
|
str r2, [sp, #8]
|
|
add r1, sp, #0x14
|
|
str r1, [sp, #0xc]
|
|
ldr r0, [r4, r0]
|
|
ldr r1, [r4, #4]
|
|
bl ov61_021E6D78
|
|
ldr r0, [sp, #0x14]
|
|
bl String_dtor
|
|
mov r0, #0xe5
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
lsl r1, r0, #2
|
|
ldr r0, _021E5E20 ; =0x021E7398
|
|
ldr r0, [r0, r1]
|
|
mov r1, #0
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl PlayCry
|
|
add r0, r4, #0
|
|
mov r1, #7
|
|
bl ov61_021E6DFC
|
|
mov r0, #2
|
|
mov r1, #1
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
mov r1, #1
|
|
bl GX_EngineAToggleLayers
|
|
add r0, r4, #0
|
|
bl ov61_021E7220
|
|
mov r0, #5
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5C1E:
|
|
ldr r1, _021E5E24 ; =0xFFFFF800
|
|
ldr r0, _021E5E28 ; =0x0000039A
|
|
strh r1, [r4, r0]
|
|
mov r0, #6
|
|
str r0, [r5]
|
|
ldr r0, _021E5E2C ; =0x00000607
|
|
asr r1, r1, #2
|
|
bl sub_02006134
|
|
b _021E5E86
|
|
_021E5C32:
|
|
mov r1, #2
|
|
ldr r0, _021E5E28 ; =0x0000039A
|
|
lsl r1, r1, #0xa
|
|
strh r1, [r4, r0]
|
|
mov r0, #6
|
|
str r0, [r5]
|
|
ldr r0, _021E5E2C ; =0x00000607
|
|
ldr r1, _021E5E30 ; =0xFFFFFE00
|
|
bl sub_02006134
|
|
b _021E5E86
|
|
_021E5C48:
|
|
mov r0, #2
|
|
mov r1, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #7
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5C5E:
|
|
mov r2, #0xe5
|
|
lsl r2, r2, #2
|
|
ldr r7, [r4, r2]
|
|
add r0, r4, #0
|
|
add r3, r7, #3
|
|
mov r1, #0x78
|
|
sub r2, #0x54
|
|
add r0, #0x70
|
|
mul r1, r3
|
|
add r0, r0, r1
|
|
add r2, r4, r2
|
|
lsl r1, r7, #3
|
|
add r1, r2, r1
|
|
bl ov61_021E6820
|
|
mov r2, #0xe5
|
|
lsl r2, r2, #2
|
|
ldr r1, [r4, r2]
|
|
add r0, r4, #0
|
|
add r3, r1, #3
|
|
mov r1, #0x78
|
|
add r0, #0x70
|
|
mul r1, r3
|
|
sub r2, #0x3c
|
|
add r0, r0, r1
|
|
add r1, r4, r2
|
|
bl ov61_021E6814
|
|
mov r1, #0x36
|
|
add r0, r4, #0
|
|
lsl r1, r1, #4
|
|
add r0, #0x70
|
|
add r1, r4, r1
|
|
bl ov61_021E6814
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
add r0, #0xc8
|
|
str r1, [r0]
|
|
mov r0, #0xa
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5CB2:
|
|
mov r0, #0xea
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #2
|
|
bne _021E5D7E
|
|
ldr r0, _021E5E1C ; =0x00000584
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
add r0, r4, #0
|
|
mov r1, #7
|
|
bl ov61_021E6DFC
|
|
mov r0, #2
|
|
mov r1, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #0xed
|
|
lsl r0, r0, #2
|
|
add r0, r4, r0
|
|
bl ov61_021E7248
|
|
mov r0, #0xea
|
|
mov r1, #0
|
|
lsl r0, r0, #2
|
|
str r1, [r4, r0]
|
|
mov r0, #9
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5CF2:
|
|
ldr r1, _021E5E28 ; =0x0000039A
|
|
ldrsh r1, [r4, r1]
|
|
bl ov61_021E6AE0
|
|
cmp r0, #0
|
|
beq _021E5D7E
|
|
ldr r0, _021E5E1C ; =0x00000584
|
|
mov r1, #2
|
|
str r1, [r4, r0]
|
|
add r2, r6, #0
|
|
mov r0, #0xe5
|
|
str r2, [sp, #0x10]
|
|
lsl r0, r0, #2
|
|
ldr r1, [r4, r0]
|
|
add r0, #8
|
|
add r1, r1, #4
|
|
str r1, [sp]
|
|
ldr r1, _021E5E10 ; =0x0001020F
|
|
mov r3, #0xbe
|
|
str r1, [sp, #4]
|
|
str r2, [sp, #8]
|
|
add r1, sp, #0x10
|
|
str r1, [sp, #0xc]
|
|
ldr r0, [r4, r0]
|
|
ldr r1, [r4, #4]
|
|
bl ov61_021E6D78
|
|
ldr r0, [sp, #0x10]
|
|
bl String_dtor
|
|
mov r0, #0xe5
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
lsl r1, r0, #2
|
|
ldr r0, _021E5E20 ; =0x021E7398
|
|
ldr r0, [r0, r1]
|
|
add r1, r6, #0
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl PlayCry
|
|
mov r0, #0xea
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #1
|
|
beq _021E5D5E
|
|
mov r0, #2
|
|
mov r1, #1
|
|
bl GX_EngineAToggleLayers
|
|
mov r0, #4
|
|
mov r1, #1
|
|
bl GX_EngineAToggleLayers
|
|
_021E5D5E:
|
|
add r0, r4, #0
|
|
bl ov61_021E7220
|
|
mov r0, #0xea
|
|
mov r1, #1
|
|
lsl r0, r0, #2
|
|
str r1, [r4, r0]
|
|
mov r0, #5
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5D72:
|
|
ldr r2, _021E5E34 ; =0xFFFFEA20
|
|
add r1, r6, #0
|
|
bl ov61_021E7268
|
|
cmp r0, #0
|
|
bne _021E5D80
|
|
_021E5D7E:
|
|
b _021E5E86
|
|
_021E5D80:
|
|
add r0, r4, #0
|
|
bl ov61_021E7220
|
|
mov r0, #8
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5D8C:
|
|
bl ov61_021E68E4
|
|
cmp r0, #0
|
|
beq _021E5E86
|
|
mov r0, #0xea
|
|
mov r1, #2
|
|
lsl r0, r0, #2
|
|
str r1, [r4, r0]
|
|
mov r0, #3
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5DA2:
|
|
ldr r1, _021E5E34 ; =0xFFFFEA20
|
|
add r2, r6, #0
|
|
bl ov61_021E7268
|
|
cmp r0, #0
|
|
beq _021E5E86
|
|
add r0, r4, #0
|
|
add r1, r6, #0
|
|
bl ov61_021E6B2C
|
|
mov r0, #2
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5DBC:
|
|
mov r0, #0xa
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #4]
|
|
ldr r3, _021E5E38 ; =0x00007FFF
|
|
str r0, [sp, #8]
|
|
mov r0, #4
|
|
add r1, r6, #0
|
|
add r2, r6, #0
|
|
bl sub_0200FA24
|
|
ldr r7, _021E5E1C ; =0x00000584
|
|
mov r0, #1
|
|
str r0, [r4, r7]
|
|
ldr r1, _021E5E3C ; =0x0000DCC0
|
|
add r0, sp, #0x10
|
|
strh r1, [r0, #0x1c]
|
|
ldr r1, _021E5E40 ; =0x000011A4
|
|
ldr r3, _021E5E44 ; =0x021E73A4
|
|
strh r1, [r0, #0x1e]
|
|
ldmia r3!, {r0, r1}
|
|
add r2, sp, #0x30
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
sub r7, #0x10
|
|
str r0, [r2]
|
|
mov r0, #0x19
|
|
lsl r0, r0, #0xe
|
|
str r0, [sp, #0x3c]
|
|
ldr r0, [r4, r7]
|
|
add r1, sp, #0x2c
|
|
mov r2, #8
|
|
bl sub_02019040
|
|
mov r0, #0xb
|
|
str r0, [r5]
|
|
ldr r0, _021E5E48 ; =0x000005F8
|
|
b _021E5E4C
|
|
nop
|
|
_021E5E0C: .word 0x00000574
|
|
_021E5E10: .word 0x0001020F
|
|
_021E5E14: .word 0x000003A5
|
|
_021E5E18: .word 0x000003A6
|
|
_021E5E1C: .word 0x00000584
|
|
_021E5E20: .word 0x021E7398
|
|
_021E5E24: .word 0xFFFFF800
|
|
_021E5E28: .word 0x0000039A
|
|
_021E5E2C: .word 0x00000607
|
|
_021E5E30: .word 0xFFFFFE00
|
|
_021E5E34: .word 0xFFFFEA20
|
|
_021E5E38: .word 0x00007FFF
|
|
_021E5E3C: .word 0x0000DCC0
|
|
_021E5E40: .word 0x000011A4
|
|
_021E5E44: .word 0x021E73A4
|
|
_021E5E48: .word 0x000005F8
|
|
_021E5E4C:
|
|
bl PlaySE
|
|
b _021E5E86
|
|
_021E5E52:
|
|
bl sub_0200FB5C
|
|
cmp r0, #0
|
|
beq _021E5E86
|
|
mov r0, #0x10
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #4]
|
|
add r1, r6, #0
|
|
str r0, [sp, #8]
|
|
ldr r3, _021E5F50 ; =0x00007FFF
|
|
mov r0, #3
|
|
add r2, r1, #0
|
|
bl sub_0200FA24
|
|
mov r0, #0xc
|
|
str r0, [r5]
|
|
b _021E5E86
|
|
_021E5E78:
|
|
bl sub_0200FB5C
|
|
cmp r0, #0
|
|
beq _021E5E86
|
|
add sp, #0x40
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E5E86:
|
|
cmp r6, #0
|
|
beq _021E5EDC
|
|
cmp r6, #1
|
|
add r0, sp, #0x10
|
|
bne _021E5EAE
|
|
ldr r1, _021E5F54 ; =0x0000DCC0
|
|
ldr r3, _021E5F58 ; =_021E7380
|
|
strh r1, [r0, #8]
|
|
ldr r1, _021E5F5C ; =0x000011A4
|
|
add r2, sp, #0x1c
|
|
strh r1, [r0, #0xa]
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
mov r1, #0
|
|
str r0, [r2]
|
|
mov r0, #0x19
|
|
lsl r0, r0, #0xe
|
|
str r0, [sp, #0x28]
|
|
b _021E5ECA
|
|
_021E5EAE:
|
|
ldr r1, _021E5F60 ; =0x0000EA20
|
|
ldr r3, _021E5F64 ; =0x021E73BC
|
|
strh r1, [r0, #8]
|
|
ldr r1, _021E5F68 ; =0x00001024
|
|
add r2, sp, #0x1c
|
|
strh r1, [r0, #0xa]
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
mov r1, #2
|
|
str r0, [r2]
|
|
mov r0, #0xf
|
|
lsl r0, r0, #0xe
|
|
str r0, [sp, #0x28]
|
|
_021E5ECA:
|
|
mov r0, #0xeb
|
|
lsl r0, r0, #2
|
|
str r1, [r4, r0]
|
|
ldr r0, _021E5F6C ; =0x00000574
|
|
add r1, sp, #0x18
|
|
ldr r0, [r4, r0]
|
|
mov r2, #8
|
|
bl sub_02019040
|
|
_021E5EDC:
|
|
ldr r0, _021E5F70 ; =0x00000584
|
|
ldr r0, [r4, r0]
|
|
cmp r0, #1
|
|
bne _021E5EFA
|
|
mov r0, #0xd6
|
|
lsl r0, r0, #2
|
|
add r0, r4, r0
|
|
bl ov61_021E682C
|
|
mov r0, #0x36
|
|
lsl r0, r0, #4
|
|
add r0, r4, r0
|
|
bl ov61_021E682C
|
|
b _021E5F1E
|
|
_021E5EFA:
|
|
cmp r0, #2
|
|
bne _021E5F06
|
|
add r0, r4, #0
|
|
bl ov61_021E6894
|
|
b _021E5F1E
|
|
_021E5F06:
|
|
mov r1, #0xd1
|
|
lsl r1, r1, #2
|
|
ldr r0, [r4, r1]
|
|
mov r2, #0
|
|
str r2, [r0]
|
|
add r0, r1, #0
|
|
add r0, #8
|
|
ldr r0, [r4, r0]
|
|
add r1, #0x10
|
|
str r2, [r0]
|
|
ldr r0, [r4, r1]
|
|
str r2, [r0]
|
|
_021E5F1E:
|
|
mov r0, #0xda
|
|
lsl r0, r0, #2
|
|
add r3, r4, r0
|
|
ldr r2, [r3, #4]
|
|
mov r0, #1
|
|
ldr r1, [r2]
|
|
lsl r0, r0, #0xc
|
|
add r0, r1, r0
|
|
str r0, [r2]
|
|
ldr r2, [r3, #4]
|
|
ldr r0, [r2, #8]
|
|
ldr r1, [r2]
|
|
ldrh r0, [r0, #4]
|
|
lsl r0, r0, #0xc
|
|
cmp r1, r0
|
|
blt _021E5F42
|
|
mov r0, #0
|
|
str r0, [r2]
|
|
_021E5F42:
|
|
add r0, r4, #0
|
|
bl ov61_021E61FC
|
|
mov r0, #0
|
|
add sp, #0x40
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E5F50: .word 0x00007FFF
|
|
_021E5F54: .word 0x0000DCC0
|
|
_021E5F58: .word _021E7380
|
|
_021E5F5C: .word 0x000011A4
|
|
_021E5F60: .word 0x0000EA20
|
|
_021E5F64: .word 0x021E73BC
|
|
_021E5F68: .word 0x00001024
|
|
_021E5F6C: .word 0x00000574
|
|
_021E5F70: .word 0x00000584
|
|
thumb_func_end ov61_021E5A38
|
|
|
|
thumb_func_start ov61_021E5F74
|
|
ov61_021E5F74: ; 0x021E5F74
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
bl OverlayManager_GetData
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl OverlayManager_GetField18
|
|
add r6, r0, #0
|
|
mov r0, #0
|
|
bl TextFlags_SetCanABSpeedUpPrint
|
|
mov r0, #0
|
|
bl sub_02002B50
|
|
mov r0, #0
|
|
bl sub_02002B8C
|
|
mov r0, #0xe5
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
str r0, [r6]
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl Main_SetVBlankIntrCB
|
|
ldr r0, _021E6060 ; =0x00000574
|
|
ldr r0, [r4, r0]
|
|
bl sub_02019030
|
|
ldr r0, [r4, #0x10]
|
|
bl sub_02023120
|
|
add r0, r4, #0
|
|
bl ov61_021E6730
|
|
add r0, r4, #0
|
|
bl ov61_021E6750
|
|
mov r0, #0xed
|
|
lsl r0, r0, #2
|
|
add r0, r4, r0
|
|
bl ov61_021E6068
|
|
ldr r0, _021E6064 ; =0x0000043C
|
|
ldr r0, [r4, r0]
|
|
bl sub_02024504
|
|
mov r0, #0xed
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl sub_0200A0D0
|
|
mov r0, #0xee
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl sub_0200A0D0
|
|
mov r0, #0xef
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl sub_0200A0D0
|
|
mov r0, #0xf
|
|
lsl r0, r0, #6
|
|
ldr r0, [r4, r0]
|
|
bl sub_0200A0D0
|
|
bl sub_0200B244
|
|
bl sub_0202168C
|
|
bl sub_02022608
|
|
mov r0, #0xe7
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl ov61_021E6E30
|
|
mov r0, #0x3a
|
|
lsl r0, r0, #4
|
|
ldr r0, [r4, r0]
|
|
bl ov61_021E6E30
|
|
ldr r0, [r4, #8]
|
|
mov r1, #1
|
|
bl FreeBgTilemapBuffer
|
|
ldr r0, [r4, #8]
|
|
mov r1, #2
|
|
bl FreeBgTilemapBuffer
|
|
ldr r0, [r4, #8]
|
|
mov r1, #4
|
|
bl FreeBgTilemapBuffer
|
|
ldr r0, [r4, #8]
|
|
mov r1, #5
|
|
bl FreeBgTilemapBuffer
|
|
ldr r0, [r4, #8]
|
|
mov r1, #6
|
|
bl FreeBgTilemapBuffer
|
|
ldr r0, [r4, #8]
|
|
bl FreeToHeap
|
|
ldr r0, [r4, #0xc]
|
|
bl sub_02026F54
|
|
add r0, r5, #0
|
|
bl OverlayManager_FreeData
|
|
mov r0, #0x2e
|
|
bl DestroyHeap
|
|
mov r0, #1
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_021E6060: .word 0x00000574
|
|
_021E6064: .word 0x0000043C
|
|
thumb_func_end ov61_021E5F74
|
|
|
|
thumb_func_start ov61_021E6068
|
|
ov61_021E6068: ; 0x021E6068
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
mov r7, #0
|
|
add r4, r5, #0
|
|
add r6, r5, #0
|
|
_021E6072:
|
|
ldr r0, [r4, #0x18]
|
|
bl sub_0200AEB0
|
|
ldr r0, [r4, #0x1c]
|
|
bl sub_0200B0A8
|
|
ldr r0, [r5]
|
|
ldr r1, [r4, #0x18]
|
|
bl sub_0200A75C
|
|
ldr r0, [r5, #4]
|
|
ldr r1, [r4, #0x1c]
|
|
bl sub_0200A75C
|
|
ldr r0, [r5, #8]
|
|
ldr r1, [r4, #0x20]
|
|
bl sub_0200A75C
|
|
ldr r0, [r5, #0xc]
|
|
ldr r1, [r4, #0x24]
|
|
bl sub_0200A75C
|
|
ldr r0, [r6, #0x60]
|
|
bl FreeToHeap
|
|
ldr r0, [r6, #0x6c]
|
|
bl FreeToHeap
|
|
add r7, r7, #1
|
|
add r4, #0x18
|
|
add r6, r6, #4
|
|
cmp r7, #3
|
|
blt _021E6072
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E6068
|
|
|
|
thumb_func_start ov61_021E60B8
|
|
ov61_021E60B8: ; 0x021E60B8
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl sub_0200B224
|
|
ldr r0, [r4, #8]
|
|
bl sub_0201EEB4
|
|
pop {r4, pc}
|
|
thumb_func_end ov61_021E60B8
|
|
|
|
thumb_func_start ov61_021E60C8
|
|
ov61_021E60C8: ; 0x021E60C8
|
|
push {r4, lr}
|
|
sub sp, #0x28
|
|
ldr r4, _021E60E4 ; =0x021E7494
|
|
add r3, sp, #0
|
|
mov r2, #5
|
|
_021E60D2:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021E60D2
|
|
add r0, sp, #0
|
|
bl GX_SetBanks
|
|
add sp, #0x28
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021E60E4: .word 0x021E7494
|
|
thumb_func_end ov61_021E60C8
|
|
|
|
thumb_func_start ov61_021E60E8
|
|
ov61_021E60E8: ; 0x021E60E8
|
|
push {r4, r5, lr}
|
|
sub sp, #0x24
|
|
add r4, r0, #0
|
|
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]
|
|
add r2, r0, #0
|
|
str r4, [sp, #0x10]
|
|
bl sub_0200B150
|
|
ldr r5, _021E6138 ; =0x021E73F8
|
|
add r3, sp, #0x14
|
|
add r2, r3, #0
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
add r0, r2, #0
|
|
ldr r1, _021E613C ; =0x00200010
|
|
mov r2, #0x10
|
|
str r4, [sp, #0x20]
|
|
bl sub_020215C0
|
|
mov r0, #3
|
|
add r1, r4, #0
|
|
bl sub_02022588
|
|
bl sub_020216C8
|
|
bl sub_02022638
|
|
add sp, #0x24
|
|
pop {r4, r5, pc}
|
|
nop
|
|
_021E6138: .word 0x021E73F8
|
|
_021E613C: .word 0x00200010
|
|
thumb_func_end ov61_021E60E8
|
|
|
|
thumb_func_start ov61_021E6140
|
|
ov61_021E6140: ; 0x021E6140
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
mov r0, #4
|
|
mov r1, #0
|
|
str r0, [sp]
|
|
str r1, [sp, #4]
|
|
ldr r0, [r4, #4]
|
|
mov r2, #2
|
|
add r3, r1, #0
|
|
bl sub_02026EB4
|
|
str r0, [r4, #0xc]
|
|
ldr r0, _021E61DC ; =0x04000060
|
|
ldr r2, _021E61E0 ; =0xFFFFCFFF
|
|
ldrh r1, [r0]
|
|
add r3, r1, #0
|
|
and r3, r2
|
|
mov r1, #0x10
|
|
orr r1, r3
|
|
strh r1, [r0]
|
|
ldrh r3, [r0]
|
|
ldr r1, _021E61E4 ; =0x0000CFFB
|
|
and r1, r3
|
|
strh r1, [r0]
|
|
ldrh r1, [r0]
|
|
add r3, r1, #0
|
|
and r3, r2
|
|
mov r1, #8
|
|
orr r1, r3
|
|
strh r1, [r0]
|
|
ldrh r1, [r0]
|
|
add r3, r4, #0
|
|
and r2, r1
|
|
mov r1, #0x20
|
|
orr r1, r2
|
|
strh r1, [r0]
|
|
ldr r1, _021E61E8 ; =0x00001084
|
|
ldr r0, _021E61EC ; =0x00000588
|
|
mov r2, #0
|
|
_021E6190:
|
|
add r2, r2, #1
|
|
strh r1, [r3, r0]
|
|
add r3, r3, #2
|
|
cmp r2, #8
|
|
blt _021E6190
|
|
ldr r0, _021E61EC ; =0x00000588
|
|
add r0, r4, r0
|
|
bl G3X_SetEdgeColorTable
|
|
mov r1, #0
|
|
ldr r0, _021E61F0 ; =0x000043FF
|
|
ldr r2, _021E61F4 ; =0x00007FFF
|
|
mov r3, #0x3f
|
|
str r1, [sp]
|
|
bl G3X_SetClearColor
|
|
mov r0, #0
|
|
ldr r2, _021E61F8 ; =0xFFFFF000
|
|
add r1, r0, #0
|
|
add r3, r0, #0
|
|
bl NNS_G3dGlbLightVector
|
|
ldr r1, _021E61F4 ; =0x00007FFF
|
|
mov r0, #0
|
|
bl NNS_G3dGlbLightColor
|
|
ldr r0, _021E61F4 ; =0x00007FFF
|
|
mov r2, #0
|
|
add r1, r0, #0
|
|
bl NNS_G3dGlbMaterialColorDiffAmb
|
|
ldr r0, _021E61F4 ; =0x00007FFF
|
|
mov r2, #0
|
|
add r1, r0, #0
|
|
bl NNS_G3dGlbMaterialColorSpecEmi
|
|
add sp, #8
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021E61DC: .word 0x04000060
|
|
_021E61E0: .word 0xFFFFCFFF
|
|
_021E61E4: .word 0x0000CFFB
|
|
_021E61E8: .word 0x00001084
|
|
_021E61EC: .word 0x00000588
|
|
_021E61F0: .word 0x000043FF
|
|
_021E61F4: .word 0x00007FFF
|
|
_021E61F8: .word 0xFFFFF000
|
|
thumb_func_end ov61_021E6140
|
|
|
|
thumb_func_start ov61_021E61FC
|
|
ov61_021E61FC: ; 0x021E61FC
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
add r4, r0, #0
|
|
ldr r0, _021E623C ; =0x0000043C
|
|
ldr r0, [r4, r0]
|
|
bl sub_0202457C
|
|
bl sub_02026E48
|
|
mov r1, #0
|
|
mov r0, #0x11
|
|
add r2, r1, #0
|
|
bl NNS_G3dGeBufferOP_N
|
|
bl sub_02023154
|
|
add r0, r4, #0
|
|
bl ov61_021E6240
|
|
mov r2, #1
|
|
mov r0, #0x12
|
|
add r1, sp, #0
|
|
str r2, [sp]
|
|
bl NNS_G3dGeBufferOP_N
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl sub_02026E50
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
nop
|
|
_021E623C: .word 0x0000043C
|
|
thumb_func_end ov61_021E61FC
|
|
|
|
thumb_func_start ov61_021E6240
|
|
ov61_021E6240: ; 0x021E6240
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x98
|
|
ldr r3, _021E633C ; =0x021E73EC
|
|
add r5, r0, #0
|
|
ldmia r3!, {r0, r1}
|
|
add r2, sp, #0x8c
|
|
str r2, [sp]
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
add r4, r5, #0
|
|
str r0, [r2]
|
|
mov r6, #0
|
|
add r4, #0x70
|
|
add r7, sp, #0x68
|
|
_021E625C:
|
|
ldr r0, [r4, #0x58]
|
|
cmp r0, #0
|
|
beq _021E629C
|
|
add r0, r7, #0
|
|
bl MTX_Identity33_
|
|
add r0, r4, #0
|
|
add r0, #0x74
|
|
ldrh r0, [r0]
|
|
ldr r1, _021E6340 ; =0x021094DC
|
|
asr r0, r0, #4
|
|
lsl r3, r0, #2
|
|
ldr r0, _021E6340 ; =0x021094DC
|
|
ldrsh r1, [r1, r3]
|
|
add r2, r0, r3
|
|
mov r3, #2
|
|
ldrsh r2, [r2, r3]
|
|
add r0, sp, #0x44
|
|
bl MTX_RotY33_
|
|
add r0, sp, #0x44
|
|
add r1, r7, #0
|
|
add r2, r7, #0
|
|
bl MTX_Concat33
|
|
add r1, r4, #0
|
|
ldr r3, [sp]
|
|
add r0, r4, #0
|
|
add r1, #0x5c
|
|
add r2, r7, #0
|
|
bl sub_0201F554
|
|
_021E629C:
|
|
add r6, r6, #1
|
|
add r4, #0x78
|
|
cmp r6, #2
|
|
blt _021E625C
|
|
add r2, sp, #0x14
|
|
mov r0, #0
|
|
str r0, [r2]
|
|
str r0, [r2, #4]
|
|
ldr r4, _021E6344 ; =0x021E73E0
|
|
str r0, [r2, #8]
|
|
ldmia r4!, {r0, r1}
|
|
add r3, sp, #8
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r4]
|
|
str r0, [r3]
|
|
add r0, r2, #0
|
|
bl NNS_G3dGlbSetBaseTrans
|
|
mov r0, #0xe6
|
|
lsl r0, r0, #2
|
|
ldrh r4, [r5, r0]
|
|
add r0, sp, #0x20
|
|
bl MTX_Identity33_
|
|
asr r0, r4, #4
|
|
lsl r2, r0, #1
|
|
lsl r1, r2, #1
|
|
ldr r3, _021E6340 ; =0x021094DC
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #0x20
|
|
bl MTX_RotY33_
|
|
ldr r1, _021E6348 ; =0x021DA558
|
|
add r0, sp, #0x20
|
|
bl MI_Copy36B
|
|
ldr r1, _021E634C ; =0x021DA51C
|
|
mov r0, #0xa4
|
|
ldr r2, [r1, #0x7c]
|
|
bic r2, r0
|
|
add r0, sp, #8
|
|
str r2, [r1, #0x7c]
|
|
bl NNS_G3dGlbSetBaseScale
|
|
bl NNS_G3dGlbFlushP
|
|
add r5, #0x70
|
|
mov r4, #2
|
|
add r5, #0xf0
|
|
mov r6, #0x11
|
|
mov r7, #1
|
|
_021E6308:
|
|
ldr r0, [r5, #0x58]
|
|
cmp r0, #0
|
|
beq _021E632E
|
|
mov r1, #0
|
|
add r0, r6, #0
|
|
add r2, r1, #0
|
|
bl NNS_G3dGeBufferOP_N
|
|
add r0, r5, #0
|
|
bl ov61_021E6A28
|
|
mov r0, #0x12
|
|
add r1, sp, #4
|
|
add r2, r7, #0
|
|
str r7, [sp, #4]
|
|
bl NNS_G3dGeBufferOP_N
|
|
bl NNS_G3dGlbFlushP
|
|
_021E632E:
|
|
add r4, r4, #1
|
|
add r5, #0x78
|
|
cmp r4, #6
|
|
blt _021E6308
|
|
add sp, #0x98
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E633C: .word 0x021E73EC
|
|
_021E6340: .word 0x021094DC
|
|
_021E6344: .word 0x021E73E0
|
|
_021E6348: .word 0x021DA558
|
|
_021E634C: .word 0x021DA51C
|
|
thumb_func_end ov61_021E6240
|
|
|
|
thumb_func_start ov61_021E6350
|
|
ov61_021E6350: ; 0x021E6350
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #0x8c
|
|
add r4, r1, #0
|
|
ldr r1, _021E6470 ; =0x04000008
|
|
add r5, r0, #0
|
|
ldrh r2, [r1]
|
|
mov r0, #3
|
|
ldr r6, _021E6474 ; =0x021E745C
|
|
bic r2, r0
|
|
mov r0, #2
|
|
orr r0, r2
|
|
strh r0, [r1]
|
|
add r3, sp, #0x70
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
mov r1, #1
|
|
str r0, [r3]
|
|
add r0, r5, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #1
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
add r3, r4, #0
|
|
bl BG_ClearCharDataRange
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r6, _021E6478 ; =0x021E7478
|
|
add r3, sp, #0x54
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
mov r1, #2
|
|
str r0, [r3]
|
|
add r0, r5, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #2
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
add r3, r4, #0
|
|
bl BG_ClearCharDataRange
|
|
add r0, r5, #0
|
|
mov r1, #2
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r6, _021E647C ; =0x021E7408
|
|
add r3, sp, #0x38
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
mov r1, #4
|
|
str r0, [r3]
|
|
add r0, r5, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #4
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
add r3, r4, #0
|
|
bl BG_ClearCharDataRange
|
|
add r0, r5, #0
|
|
mov r1, #4
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r6, _021E6480 ; =0x021E7424
|
|
add r3, sp, #0x1c
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
mov r1, #5
|
|
str r0, [r3]
|
|
add r0, r5, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #5
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
add r3, r4, #0
|
|
bl BG_ClearCharDataRange
|
|
add r0, r5, #0
|
|
mov r1, #5
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r6, _021E6484 ; =0x021E7440
|
|
add r3, sp, #0
|
|
ldmia r6!, {r0, r1}
|
|
add r2, r3, #0
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r6!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldr r0, [r6]
|
|
mov r1, #6
|
|
str r0, [r3]
|
|
add r0, r5, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #6
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
add r3, r4, #0
|
|
bl BG_ClearCharDataRange
|
|
add r0, r5, #0
|
|
mov r1, #6
|
|
bl BgClearTilemapBufferAndCommit
|
|
add sp, #0x8c
|
|
pop {r3, r4, r5, r6, pc}
|
|
nop
|
|
_021E6470: .word 0x04000008
|
|
_021E6474: .word 0x021E745C
|
|
_021E6478: .word 0x021E7478
|
|
_021E647C: .word 0x021E7408
|
|
_021E6480: .word 0x021E7424
|
|
_021E6484: .word 0x021E7440
|
|
thumb_func_end ov61_021E6350
|
|
|
|
thumb_func_start ov61_021E6488
|
|
ov61_021E6488: ; 0x021E6488
|
|
push {r3, r4, lr}
|
|
sub sp, #0x2c
|
|
ldr r3, _021E64FC ; =0x021E73C8
|
|
add r4, r0, #0
|
|
ldmia r3!, {r0, r1}
|
|
add r2, sp, #0x14
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
ldr r1, _021E6500 ; =0x0000DCC0
|
|
str r0, [r2]
|
|
mov r2, #0
|
|
mov r0, #0xf
|
|
str r2, [r4, #0x14]
|
|
lsl r0, r0, #0xc
|
|
str r0, [r4, #0x18]
|
|
str r2, [r4, #0x1c]
|
|
add r0, sp, #0xc
|
|
strh r1, [r0]
|
|
strh r2, [r0, #2]
|
|
strh r2, [r0, #4]
|
|
str r2, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #0x10]
|
|
mov r1, #0x19
|
|
str r0, [sp, #8]
|
|
add r0, r4, #0
|
|
ldr r3, _021E6504 ; =0x000011A4
|
|
add r0, #0x14
|
|
lsl r1, r1, #0xe
|
|
add r2, sp, #0xc
|
|
bl sub_02023254
|
|
ldr r1, [r4, #0x10]
|
|
add r0, sp, #0x14
|
|
bl sub_02023514
|
|
mov r0, #1
|
|
lsl r0, r0, #0xe
|
|
ldr r2, [r4, #0x10]
|
|
lsl r1, r0, #6
|
|
bl sub_02023240
|
|
mov r1, #0
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #0x24]
|
|
str r1, [sp, #0x20]
|
|
str r1, [sp, #0x28]
|
|
ldr r1, [r4, #0x10]
|
|
add r0, sp, #0x20
|
|
bl sub_02023204
|
|
ldr r0, [r4, #0x10]
|
|
bl sub_0202313C
|
|
add sp, #0x2c
|
|
pop {r3, r4, pc}
|
|
.balign 4, 0
|
|
_021E64FC: .word 0x021E73C8
|
|
_021E6500: .word 0x0000DCC0
|
|
_021E6504: .word 0x000011A4
|
|
thumb_func_end ov61_021E6488
|
|
|
|
thumb_func_start ov61_021E6508
|
|
ov61_021E6508: ; 0x021E6508
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #0xed
|
|
lsl r0, r0, #2
|
|
add r4, r5, r0
|
|
add r1, r4, #0
|
|
ldr r2, [r5, #4]
|
|
mov r0, #3
|
|
add r1, #0x8c
|
|
bl sub_02009F40
|
|
add r1, r4, #0
|
|
add r1, #0x88
|
|
str r0, [r1]
|
|
ldr r2, [r5, #4]
|
|
mov r0, #3
|
|
mov r1, #0
|
|
bl sub_0200A090
|
|
mov r1, #0xed
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
ldr r2, [r5, #4]
|
|
mov r0, #3
|
|
mov r1, #1
|
|
bl sub_0200A090
|
|
str r0, [r4, #4]
|
|
ldr r2, [r5, #4]
|
|
mov r0, #3
|
|
mov r1, #2
|
|
bl sub_0200A090
|
|
str r0, [r4, #8]
|
|
mov r0, #3
|
|
ldr r2, [r5, #4]
|
|
add r1, r0, #0
|
|
bl sub_0200A090
|
|
str r0, [r4, #0xc]
|
|
mov r0, #0x10
|
|
mov r1, #1
|
|
bl sub_02022CC8
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E6508
|
|
|
|
thumb_func_start ov61_021E6564
|
|
ov61_021E6564: ; 0x021E6564
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
ldr r2, [r5, #4]
|
|
mov r1, #3
|
|
add r0, #0x30
|
|
bl ov61_021E6768
|
|
add r0, r5, #0
|
|
mov r2, #0xe
|
|
mov r3, #2
|
|
add r0, #0x70
|
|
mov r1, #0
|
|
lsl r2, r2, #0xc
|
|
lsl r3, r3, #0x10
|
|
bl ov61_021E6934
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
add r0, r5, #0
|
|
add r0, #0x70
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl ov61_021E693C
|
|
add r0, r5, #0
|
|
ldr r2, [r5, #4]
|
|
add r0, #0x40
|
|
mov r1, #0
|
|
bl ov61_021E6768
|
|
mov r1, #0
|
|
add r0, r5, #0
|
|
add r0, #0xe8
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl ov61_021E6934
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
add r0, r5, #0
|
|
add r0, #0xe8
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl ov61_021E693C
|
|
add r0, r5, #0
|
|
ldr r2, [r5, #4]
|
|
add r0, #0x50
|
|
mov r1, #1
|
|
bl ov61_021E6768
|
|
mov r1, #0
|
|
mov r0, #0x16
|
|
lsl r0, r0, #4
|
|
add r0, r5, r0
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl ov61_021E6934
|
|
mov r0, #0x16
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
lsl r0, r0, #4
|
|
add r0, r5, r0
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl ov61_021E693C
|
|
add r0, r5, #0
|
|
ldr r2, [r5, #4]
|
|
add r0, #0x60
|
|
mov r1, #2
|
|
bl ov61_021E6768
|
|
add r0, r5, #0
|
|
add r1, r5, #0
|
|
add r0, #0x70
|
|
add r1, #0x30
|
|
bl ov61_021E67BC
|
|
add r0, r5, #0
|
|
add r1, r5, #0
|
|
add r0, #0xe8
|
|
add r1, #0x40
|
|
bl ov61_021E67BC
|
|
mov r0, #0x16
|
|
lsl r0, r0, #4
|
|
add r1, r5, #0
|
|
add r0, r5, r0
|
|
add r1, #0x50
|
|
bl ov61_021E67BC
|
|
add r6, r5, #0
|
|
add r7, r5, #0
|
|
mov r4, #0
|
|
add r6, #0x70
|
|
add r7, #0x60
|
|
_021E6628:
|
|
add r1, r4, #3
|
|
mov r0, #0x78
|
|
mul r0, r1
|
|
add r0, r6, r0
|
|
add r1, r7, #0
|
|
bl ov61_021E67BC
|
|
add r4, r4, #1
|
|
cmp r4, #3
|
|
blt _021E6628
|
|
add r0, r5, #0
|
|
mov r1, #0
|
|
add r0, #0xc8
|
|
str r1, [r0]
|
|
mov r1, #0x6e
|
|
lsl r1, r1, #2
|
|
mov r2, #1
|
|
add r0, r1, #0
|
|
str r2, [r5, r1]
|
|
sub r0, #0x78
|
|
str r2, [r5, r0]
|
|
add r0, r1, #0
|
|
add r0, #0x78
|
|
str r2, [r5, r0]
|
|
add r1, #0xf0
|
|
mov r0, #0x32
|
|
add r3, r5, #0
|
|
str r2, [r5, r1]
|
|
lsl r0, r0, #4
|
|
str r2, [r5, r0]
|
|
add r0, #0x48
|
|
add r0, r5, r0
|
|
str r0, [sp]
|
|
add r2, r5, #0
|
|
ldr r1, [r5, #4]
|
|
mov r0, #7
|
|
add r2, #0x20
|
|
add r3, #0x50
|
|
bl ov61_021E67D4
|
|
mov r0, #0xd
|
|
lsl r0, r0, #6
|
|
add r0, r5, r0
|
|
str r0, [sp]
|
|
add r2, r5, #0
|
|
add r3, r5, #0
|
|
ldr r1, [r5, #4]
|
|
mov r0, #6
|
|
add r2, #0x20
|
|
add r3, #0x60
|
|
bl ov61_021E67D4
|
|
mov r0, #0xd2
|
|
lsl r0, r0, #2
|
|
add r0, r5, r0
|
|
str r0, [sp]
|
|
add r2, r5, #0
|
|
add r3, r5, #0
|
|
ldr r1, [r5, #4]
|
|
mov r0, #6
|
|
add r2, #0x20
|
|
add r3, #0x60
|
|
bl ov61_021E67D4
|
|
mov r0, #0x35
|
|
lsl r0, r0, #4
|
|
add r0, r5, r0
|
|
str r0, [sp]
|
|
add r2, r5, #0
|
|
add r3, r5, #0
|
|
ldr r1, [r5, #4]
|
|
mov r0, #6
|
|
add r2, #0x20
|
|
add r3, #0x60
|
|
bl ov61_021E67D4
|
|
mov r0, #0xd6
|
|
lsl r0, r0, #2
|
|
add r0, r5, r0
|
|
str r0, [sp]
|
|
add r2, r5, #0
|
|
add r3, r5, #0
|
|
ldr r1, [r5, #4]
|
|
mov r0, #5
|
|
add r2, #0x20
|
|
add r3, #0x60
|
|
bl ov61_021E67D4
|
|
mov r0, #0x36
|
|
lsl r0, r0, #4
|
|
add r0, r5, r0
|
|
str r0, [sp]
|
|
add r2, r5, #0
|
|
add r3, r5, #0
|
|
ldr r1, [r5, #4]
|
|
mov r0, #4
|
|
add r2, #0x20
|
|
add r3, #0x30
|
|
bl ov61_021E67D4
|
|
mov r0, #0x16
|
|
mov r1, #0xda
|
|
lsl r0, r0, #4
|
|
lsl r1, r1, #2
|
|
add r0, r5, r0
|
|
add r1, r5, r1
|
|
bl ov61_021E6814
|
|
mov r0, #0x76
|
|
mov r1, #0xd
|
|
lsl r0, r0, #2
|
|
lsl r1, r1, #6
|
|
add r0, r5, r0
|
|
add r1, r5, r1
|
|
bl ov61_021E6814
|
|
mov r1, #0x25
|
|
lsl r1, r1, #4
|
|
add r0, r5, r1
|
|
add r1, #0xf8
|
|
add r1, r5, r1
|
|
bl ov61_021E6814
|
|
mov r1, #0xb2
|
|
lsl r1, r1, #2
|
|
add r0, r5, r1
|
|
add r1, #0x88
|
|
add r1, r5, r1
|
|
bl ov61_021E6814
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E6564
|
|
|
|
thumb_func_start ov61_021E6730
|
|
ov61_021E6730: ; 0x021E6730
|
|
push {r4, r5, r6, lr}
|
|
mov r1, #0xd
|
|
lsl r1, r1, #6
|
|
add r6, r0, #0
|
|
mov r4, #0
|
|
add r5, r0, r1
|
|
add r6, #0x20
|
|
_021E673E:
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
bl ov61_021E6918
|
|
add r4, r4, #1
|
|
add r5, #8
|
|
cmp r4, #6
|
|
blt _021E673E
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end ov61_021E6730
|
|
|
|
thumb_func_start ov61_021E6750
|
|
ov61_021E6750: ; 0x021E6750
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
add r5, #0x30
|
|
_021E6758:
|
|
add r0, r5, #0
|
|
bl ov61_021E6908
|
|
add r4, r4, #1
|
|
add r5, #0x10
|
|
cmp r4, #4
|
|
blt _021E6758
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov61_021E6750
|
|
|
|
thumb_func_start ov61_021E6768
|
|
ov61_021E6768: ; 0x021E6768
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
add r3, r2, #0
|
|
mov r2, #0
|
|
add r4, r0, #0
|
|
str r2, [sp]
|
|
mov r0, #0x52
|
|
bl GfGfxLoader_LoadFromNarc
|
|
str r0, [r4]
|
|
bl NNS_G3dGetMdlSet
|
|
str r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _021E67A6
|
|
add r2, r0, #0
|
|
add r2, #8
|
|
beq _021E679A
|
|
ldrb r1, [r0, #9]
|
|
cmp r1, #0
|
|
bls _021E679A
|
|
ldrh r1, [r0, #0xe]
|
|
add r1, r2, r1
|
|
add r1, r1, #4
|
|
b _021E679C
|
|
_021E679A:
|
|
mov r1, #0
|
|
_021E679C:
|
|
cmp r1, #0
|
|
beq _021E67A6
|
|
ldr r1, [r1]
|
|
add r0, r0, r1
|
|
b _021E67A8
|
|
_021E67A6:
|
|
mov r0, #0
|
|
_021E67A8:
|
|
str r0, [r4, #8]
|
|
ldr r0, [r4]
|
|
bl NNS_G3dGetTex
|
|
str r0, [r4, #0xc]
|
|
bl sub_0201F668
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E6768
|
|
|
|
thumb_func_start ov61_021E67BC
|
|
ov61_021E67BC: ; 0x021E67BC
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
ldr r0, [r4]
|
|
ldr r1, [r4, #0xc]
|
|
bl sub_0201F64C
|
|
ldr r1, [r4, #8]
|
|
add r0, r5, #0
|
|
bl NNS_G3dRenderObjInit
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov61_021E67BC
|
|
|
|
thumb_func_start ov61_021E67D4
|
|
ov61_021E67D4: ; 0x021E67D4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r6, r0, #0
|
|
add r7, r1, #0
|
|
str r2, [sp, #4]
|
|
mov r2, #0
|
|
add r5, r3, #0
|
|
ldr r4, [sp, #0x20]
|
|
str r2, [sp]
|
|
mov r0, #0x52
|
|
add r1, r6, #0
|
|
add r3, r7, #0
|
|
bl GfGfxLoader_LoadFromNarc
|
|
str r0, [r4]
|
|
mov r1, #0
|
|
bl NNS_G3dGetAnmByIdx
|
|
add r6, r0, #0
|
|
ldr r0, [sp, #4]
|
|
ldr r2, [r5, #8]
|
|
add r1, r6, #0
|
|
bl NNS_G3dAllocAnmObj
|
|
str r0, [r4, #4]
|
|
ldr r2, [r5, #8]
|
|
ldr r3, [r5, #0xc]
|
|
add r1, r6, #0
|
|
bl NNS_G3dAnmObjInit
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov61_021E67D4
|
|
|
|
thumb_func_start ov61_021E6814
|
|
ov61_021E6814: ; 0x021E6814
|
|
ldr r3, _021E681C ; =NNS_G3dRenderObjAddAnmObj
|
|
ldr r1, [r1, #4]
|
|
bx r3
|
|
nop
|
|
_021E681C: .word NNS_G3dRenderObjAddAnmObj
|
|
thumb_func_end ov61_021E6814
|
|
|
|
thumb_func_start ov61_021E6820
|
|
ov61_021E6820: ; 0x021E6820
|
|
ldr r3, _021E6828 ; =NNS_G3dRenderObjRemoveAnmObj
|
|
ldr r1, [r1, #4]
|
|
bx r3
|
|
nop
|
|
_021E6828: .word NNS_G3dRenderObjRemoveAnmObj
|
|
thumb_func_end ov61_021E6820
|
|
|
|
thumb_func_start ov61_021E682C
|
|
ov61_021E682C: ; 0x021E682C
|
|
ldr r3, [r0, #4]
|
|
mov r0, #1
|
|
ldr r2, [r3]
|
|
lsl r0, r0, #0xc
|
|
add r2, r2, r0
|
|
ldr r0, [r3, #8]
|
|
mov r1, #0
|
|
ldrh r0, [r0, #4]
|
|
lsl r0, r0, #0xc
|
|
cmp r2, r0
|
|
beq _021E6846
|
|
str r2, [r3]
|
|
b _021E6848
|
|
_021E6846:
|
|
mov r1, #1
|
|
_021E6848:
|
|
add r0, r1, #0
|
|
bx lr
|
|
thumb_func_end ov61_021E682C
|
|
|
|
thumb_func_start ov61_021E684C
|
|
ov61_021E684C: ; 0x021E684C
|
|
push {r3, r4}
|
|
ldr r4, [r0, #4]
|
|
mov r2, #1
|
|
ldr r3, [r4]
|
|
lsl r2, r2, #0xc
|
|
add r2, r3, r2
|
|
str r2, [r4]
|
|
cmp r1, #2
|
|
bne _021E686E
|
|
ldr r4, [r0, #4]
|
|
mov r2, #0xa
|
|
ldr r3, [r4]
|
|
lsl r2, r2, #0xe
|
|
cmp r3, r2
|
|
bne _021E686E
|
|
lsl r2, r2, #1
|
|
str r2, [r4]
|
|
_021E686E:
|
|
ldr r3, [r0, #4]
|
|
ldr r0, [r3, #8]
|
|
ldr r2, [r3]
|
|
ldrh r0, [r0, #4]
|
|
lsl r0, r0, #0xc
|
|
cmp r2, r0
|
|
blt _021E688E
|
|
cmp r1, #2
|
|
bne _021E688A
|
|
mov r0, #5
|
|
lsl r0, r0, #0x10
|
|
str r0, [r3]
|
|
pop {r3, r4}
|
|
bx lr
|
|
_021E688A:
|
|
mov r0, #0
|
|
str r0, [r3]
|
|
_021E688E:
|
|
pop {r3, r4}
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E684C
|
|
|
|
thumb_func_start ov61_021E6894
|
|
ov61_021E6894: ; 0x021E6894
|
|
push {r3, r4, r5, lr}
|
|
mov r1, #0xe5
|
|
add r5, r0, #0
|
|
lsl r1, r1, #2
|
|
add r0, r1, #0
|
|
ldr r4, [r5, r1]
|
|
sub r0, #0x54
|
|
add r2, r5, r0
|
|
lsl r0, r4, #0x18
|
|
add r1, #0x18
|
|
lsr r0, r0, #0x15
|
|
ldr r1, [r5, r1]
|
|
add r0, r2, r0
|
|
bl ov61_021E684C
|
|
add r0, r4, #1
|
|
mov r1, #3
|
|
bl _u32_div_f
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x15
|
|
add r2, r5, r1
|
|
mov r1, #0xd1
|
|
lsl r1, r1, #2
|
|
ldr r1, [r2, r1]
|
|
mov r0, #0
|
|
str r0, [r1]
|
|
add r0, r4, #2
|
|
mov r1, #3
|
|
bl _u32_div_f
|
|
lsl r0, r1, #0x18
|
|
lsr r0, r0, #0x15
|
|
add r1, r5, r0
|
|
mov r0, #0xd1
|
|
lsl r0, r0, #2
|
|
ldr r0, [r1, r0]
|
|
mov r2, #0
|
|
str r2, [r0]
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov61_021E6894
|
|
|
|
thumb_func_start ov61_021E68E4
|
|
ov61_021E68E4: ; 0x021E68E4
|
|
mov r2, #0xe5
|
|
lsl r2, r2, #2
|
|
ldr r1, [r0, r2]
|
|
sub r2, #0x50
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x15
|
|
add r0, r0, r1
|
|
ldr r0, [r0, r2]
|
|
ldr r1, [r0]
|
|
mov r0, #5
|
|
lsl r0, r0, #0x10
|
|
cmp r1, r0
|
|
blt _021E6902
|
|
mov r0, #1
|
|
bx lr
|
|
_021E6902:
|
|
mov r0, #0
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E68E4
|
|
|
|
thumb_func_start ov61_021E6908
|
|
ov61_021E6908: ; 0x021E6908
|
|
push {r3, lr}
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _021E6914
|
|
bl FreeToHeap
|
|
_021E6914:
|
|
pop {r3, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E6908
|
|
|
|
thumb_func_start ov61_021E6918
|
|
ov61_021E6918: ; 0x021E6918
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _021E6930
|
|
add r0, r1, #0
|
|
ldr r1, [r4, #4]
|
|
bl NNS_G3dFreeAnmObj
|
|
ldr r0, [r4]
|
|
bl FreeToHeap
|
|
_021E6930:
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E6918
|
|
|
|
thumb_func_start ov61_021E6934
|
|
ov61_021E6934: ; 0x021E6934
|
|
str r1, [r0, #0x5c]
|
|
str r2, [r0, #0x60]
|
|
str r3, [r0, #0x64]
|
|
bx lr
|
|
thumb_func_end ov61_021E6934
|
|
|
|
thumb_func_start ov61_021E693C
|
|
ov61_021E693C: ; 0x021E693C
|
|
str r1, [r0, #0x68]
|
|
str r2, [r0, #0x6c]
|
|
str r3, [r0, #0x70]
|
|
bx lr
|
|
thumb_func_end ov61_021E693C
|
|
|
|
thumb_func_start ov61_021E6944
|
|
ov61_021E6944: ; 0x021E6944
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x4c
|
|
ldr r3, _021E6A20 ; =0x021E73B0
|
|
add r7, r0, #0
|
|
ldmia r3!, {r0, r1}
|
|
add r2, sp, #0x34
|
|
str r2, [sp, #8]
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
mov r5, #0
|
|
str r0, [r2]
|
|
mov r0, #0xe5
|
|
lsl r0, r0, #2
|
|
ldr r0, [r7, r0]
|
|
str r5, [sp, #4]
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
add r0, r7, #0
|
|
str r0, [sp, #0xc]
|
|
add r0, #0x70
|
|
str r0, [sp, #0xc]
|
|
_021E696E:
|
|
add r0, r5, #0
|
|
mov r1, #3
|
|
bl _s32_div_f
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp]
|
|
asr r0, r0, #4
|
|
lsl r1, r0, #2
|
|
ldr r0, _021E6A24 ; =0x021094DC
|
|
ldr r3, _021E6A24 ; =0x021094DC
|
|
add r2, r0, r1
|
|
ldrsh r1, [r3, r1]
|
|
mov r3, #2
|
|
ldrsh r2, [r2, r3]
|
|
add r0, sp, #0x10
|
|
bl MTX_RotY33_
|
|
ldr r0, [sp, #8]
|
|
add r1, sp, #0x10
|
|
add r2, sp, #0x40
|
|
bl MTX_MultVec33
|
|
mov r0, #0xc
|
|
mul r0, r4
|
|
add r6, r7, r0
|
|
mov r0, #0x37
|
|
lsl r0, r0, #4
|
|
add r3, sp, #0x40
|
|
add r2, r6, r0
|
|
ldmia r3!, {r0, r1}
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
str r0, [r2]
|
|
mov r0, #0xdd
|
|
lsl r0, r0, #2
|
|
ldr r1, [r6, r0]
|
|
mov r0, #0xd
|
|
lsl r0, r0, #0xc
|
|
add r1, r1, r0
|
|
mov r0, #0xdd
|
|
lsl r0, r0, #2
|
|
str r1, [r6, r0]
|
|
add r1, r4, #3
|
|
add r6, r1, #0
|
|
mov r0, #0x78
|
|
mul r6, r0
|
|
ldr r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x40]
|
|
ldr r2, [sp, #0x44]
|
|
ldr r3, [sp, #0x48]
|
|
add r0, r0, r6
|
|
bl ov61_021E6934
|
|
ldr r0, [sp, #0xc]
|
|
mov r1, #1
|
|
lsl r1, r1, #0xc
|
|
add r0, r0, r6
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl ov61_021E693C
|
|
mov r0, #0x78
|
|
mul r0, r4
|
|
mov r1, #0x93
|
|
ldr r2, [sp]
|
|
add r0, r7, r0
|
|
lsl r1, r1, #2
|
|
strh r2, [r0, r1]
|
|
mov r2, #0
|
|
add r1, r1, #2
|
|
strh r2, [r0, r1]
|
|
add r0, r4, #1
|
|
mov r1, #3
|
|
bl _s32_div_f
|
|
lsl r0, r1, #0x18
|
|
lsr r4, r0, #0x18
|
|
mov r0, #1
|
|
lsl r0, r0, #0x10
|
|
add r5, r5, r0
|
|
ldr r0, [sp, #4]
|
|
add r0, r0, #1
|
|
str r0, [sp, #4]
|
|
cmp r0, #3
|
|
blt _021E696E
|
|
add sp, #0x4c
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E6A20: .word 0x021E73B0
|
|
_021E6A24: .word 0x021094DC
|
|
thumb_func_end ov61_021E6944
|
|
|
|
thumb_func_start ov61_021E6A28
|
|
ov61_021E6A28: ; 0x021E6A28
|
|
push {r4, lr}
|
|
sub sp, #0x30
|
|
add r1, sp, #0
|
|
add r4, r0, #0
|
|
bl ov61_021E6A48
|
|
mov r0, #0x19
|
|
add r1, sp, #0
|
|
mov r2, #0xc
|
|
bl NNS_G3dGeBufferOP_N
|
|
add r0, r4, #0
|
|
bl NNS_G3dDraw
|
|
add sp, #0x30
|
|
pop {r4, pc}
|
|
thumb_func_end ov61_021E6A28
|
|
|
|
thumb_func_start ov61_021E6A48
|
|
ov61_021E6A48: ; 0x021E6A48
|
|
push {r4, r5, lr}
|
|
sub sp, #0x94
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
bl MTX_Identity43_
|
|
ldr r0, [r5, #0x64]
|
|
add r1, r4, #0
|
|
str r0, [sp]
|
|
ldr r2, [r5, #0x5c]
|
|
ldr r3, [r5, #0x60]
|
|
add r0, r4, #0
|
|
bl MTX_TransApply43
|
|
add r0, sp, #0x64
|
|
bl MTX_Identity43_
|
|
add r0, r5, #0
|
|
add r0, #0x76
|
|
ldrh r0, [r0]
|
|
ldr r3, _021E6ADC ; =0x021094DC
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #4
|
|
bl MTX_RotX43_
|
|
add r1, sp, #0x64
|
|
add r0, sp, #4
|
|
add r2, r1, #0
|
|
bl MTX_Concat43
|
|
add r0, r5, #0
|
|
add r0, #0x74
|
|
ldrh r0, [r0]
|
|
ldr r3, _021E6ADC ; =0x021094DC
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
lsl r1, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r1, [r3, r1]
|
|
ldrsh r2, [r3, r2]
|
|
add r0, sp, #4
|
|
bl MTX_RotY43_
|
|
add r1, sp, #0x64
|
|
add r0, sp, #4
|
|
add r2, r1, #0
|
|
bl MTX_Concat43
|
|
ldr r1, [r5, #0x68]
|
|
ldr r2, [r5, #0x6c]
|
|
ldr r3, [r5, #0x70]
|
|
add r0, sp, #0x34
|
|
bl MTX_Scale43_
|
|
add r0, sp, #0x64
|
|
add r1, r4, #0
|
|
add r2, r4, #0
|
|
bl MTX_Concat43
|
|
add r0, sp, #0x34
|
|
add r1, r4, #0
|
|
add r2, r4, #0
|
|
bl MTX_Concat43
|
|
add sp, #0x94
|
|
pop {r4, r5, pc}
|
|
.balign 4, 0
|
|
_021E6ADC: .word 0x021094DC
|
|
thumb_func_end ov61_021E6A48
|
|
|
|
thumb_func_start ov61_021E6AE0
|
|
ov61_021E6AE0: ; 0x021E6AE0
|
|
push {r4, lr}
|
|
mov r3, #0xe6
|
|
lsl r3, r3, #2
|
|
ldrsh r4, [r0, r3]
|
|
mov r2, #0
|
|
add r4, r4, r1
|
|
strh r4, [r0, r3]
|
|
cmp r1, #0
|
|
ldrsh r4, [r0, r3]
|
|
blt _021E6B0A
|
|
ldr r1, _021E6B24 ; =0x00005555
|
|
cmp r4, r1
|
|
blt _021E6B1E
|
|
strh r2, [r0, r3]
|
|
add r1, r3, #2
|
|
strh r2, [r0, r1]
|
|
mov r1, #1
|
|
bl ov61_021E6B2C
|
|
mov r2, #1
|
|
b _021E6B1E
|
|
_021E6B0A:
|
|
ldr r1, _021E6B28 ; =0xFFFFAAAB
|
|
cmp r4, r1
|
|
bgt _021E6B1E
|
|
strh r2, [r0, r3]
|
|
add r1, r3, #2
|
|
strh r2, [r0, r1]
|
|
mov r1, #2
|
|
bl ov61_021E6B2C
|
|
mov r2, #1
|
|
_021E6B1E:
|
|
add r0, r2, #0
|
|
pop {r4, pc}
|
|
nop
|
|
_021E6B24: .word 0x00005555
|
|
_021E6B28: .word 0xFFFFAAAB
|
|
thumb_func_end ov61_021E6AE0
|
|
|
|
thumb_func_start ov61_021E6B2C
|
|
ov61_021E6B2C: ; 0x021E6B2C
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
cmp r1, #2
|
|
bne _021E6B4A
|
|
mov r0, #0xe5
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #3
|
|
add r0, r0, #1
|
|
bl _u32_div_f
|
|
mov r0, #0xe5
|
|
lsl r0, r0, #2
|
|
str r1, [r4, r0]
|
|
b _021E6B64
|
|
_021E6B4A:
|
|
cmp r1, #1
|
|
bne _021E6B64
|
|
mov r0, #0xe5
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
sub r0, r0, #1
|
|
lsl r0, r0, #0x18
|
|
asr r1, r0, #0x18
|
|
bpl _021E6B5E
|
|
mov r1, #2
|
|
_021E6B5E:
|
|
mov r0, #0xe5
|
|
lsl r0, r0, #2
|
|
str r1, [r4, r0]
|
|
_021E6B64:
|
|
add r0, r4, #0
|
|
bl ov61_021E6944
|
|
pop {r4, pc}
|
|
thumb_func_end ov61_021E6B2C
|
|
|
|
thumb_func_start ov61_021E6B6C
|
|
ov61_021E6B6C: ; 0x021E6B6C
|
|
push {r3, r4, lr}
|
|
sub sp, #0x14
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #4]
|
|
mov r1, #1
|
|
bl AllocWindows
|
|
mov r1, #0xe7
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, #4]
|
|
mov r1, #1
|
|
bl AllocWindows
|
|
mov r1, #0x3a
|
|
lsl r1, r1, #4
|
|
str r0, [r4, r1]
|
|
mov r0, #0x13
|
|
str r0, [sp]
|
|
mov r0, #0x1b
|
|
str r0, [sp, #4]
|
|
mov r2, #4
|
|
str r2, [sp, #8]
|
|
mov r3, #2
|
|
str r3, [sp, #0xc]
|
|
mov r0, #0x1f
|
|
str r0, [sp, #0x10]
|
|
sub r1, r1, #4
|
|
ldr r0, [r4, #8]
|
|
ldr r1, [r4, r1]
|
|
bl AddWindowParameterized
|
|
mov r0, #0x13
|
|
str r0, [sp]
|
|
mov r1, #0x1d
|
|
str r1, [sp, #4]
|
|
mov r0, #4
|
|
str r0, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x1f
|
|
str r0, [sp, #0x10]
|
|
lsl r1, r1, #5
|
|
mov r2, #1
|
|
ldr r0, [r4, #8]
|
|
ldr r1, [r4, r1]
|
|
add r3, r2, #0
|
|
bl AddWindowParameterized
|
|
mov r0, #0xe7
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0xf
|
|
bl FillWindowPixelBuffer
|
|
mov r0, #0x3a
|
|
lsl r0, r0, #4
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0
|
|
bl FillWindowPixelBuffer
|
|
mov r0, #0xe9
|
|
lsl r0, r0, #2
|
|
ldrb r0, [r4, r0]
|
|
mov r1, #4
|
|
lsl r2, r1, #7
|
|
str r0, [sp]
|
|
ldr r0, [r4, #4]
|
|
mov r3, #0
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #8]
|
|
bl sub_0200E644
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
ldr r0, [r4, #4]
|
|
mov r1, #8
|
|
str r0, [sp, #4]
|
|
mov r0, #0x52
|
|
mov r2, #4
|
|
mov r3, #0x40
|
|
bl GfGfxLoader_GXLoadPal
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
ldr r0, [r4, #4]
|
|
mov r1, #8
|
|
str r0, [sp, #4]
|
|
mov r0, #0x52
|
|
mov r2, #0
|
|
mov r3, #0x40
|
|
bl GfGfxLoader_GXLoadPal
|
|
mov r0, #0xe7
|
|
lsl r0, r0, #2
|
|
mov r1, #0
|
|
mov r2, #2
|
|
ldr r0, [r4, r0]
|
|
lsl r2, r2, #8
|
|
add r3, r1, #0
|
|
bl DrawFrameAndWindow2
|
|
add sp, #0x14
|
|
pop {r3, r4, pc}
|
|
thumb_func_end ov61_021E6B6C
|
|
|
|
thumb_func_start ov61_021E6C3C
|
|
ov61_021E6C3C: ; 0x021E6C3C
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
add r4, r1, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #0x52
|
|
mov r1, #0xd
|
|
add r2, r5, #0
|
|
mov r3, #2
|
|
str r4, [sp, #0xc]
|
|
bl GfGfxLoader_LoadCharData
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x52
|
|
mov r1, #0xa
|
|
add r2, r5, #0
|
|
mov r3, #5
|
|
str r4, [sp, #0xc]
|
|
bl GfGfxLoader_LoadCharData
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x52
|
|
mov r1, #0x10
|
|
add r2, r5, #0
|
|
mov r3, #6
|
|
str r4, [sp, #0xc]
|
|
bl GfGfxLoader_LoadCharData
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x52
|
|
mov r1, #0xe
|
|
add r2, r5, #0
|
|
mov r3, #2
|
|
str r4, [sp, #0xc]
|
|
bl GfGfxLoader_LoadScrnData
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x52
|
|
mov r1, #0xb
|
|
add r2, r5, #0
|
|
mov r3, #5
|
|
str r4, [sp, #0xc]
|
|
bl GfGfxLoader_LoadScrnData
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0x52
|
|
mov r1, #0x11
|
|
add r2, r5, #0
|
|
mov r3, #6
|
|
str r4, [sp, #0xc]
|
|
bl GfGfxLoader_LoadScrnData
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
mov r0, #0x52
|
|
mov r1, #0xc
|
|
mov r2, #0
|
|
mov r3, #0x60
|
|
str r4, [sp, #4]
|
|
bl GfGfxLoader_GXLoadPal
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
mov r0, #0x52
|
|
mov r1, #9
|
|
mov r2, #4
|
|
mov r3, #0x60
|
|
str r4, [sp, #4]
|
|
bl GfGfxLoader_GXLoadPal
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
mov r0, #0x52
|
|
mov r1, #0xf
|
|
mov r2, #4
|
|
mov r3, #0x80
|
|
str r4, [sp, #4]
|
|
bl GfGfxLoader_GXLoadPal
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
mov r0, #0x18
|
|
str r0, [sp, #4]
|
|
mov r0, #3
|
|
mov r2, #0
|
|
str r0, [sp, #8]
|
|
add r0, r5, #0
|
|
mov r1, #2
|
|
add r3, r2, #0
|
|
bl sub_0201CA4C
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
mov r0, #0x18
|
|
str r0, [sp, #4]
|
|
mov r0, #3
|
|
mov r2, #0
|
|
str r0, [sp, #8]
|
|
add r0, r5, #0
|
|
mov r1, #5
|
|
add r3, r2, #0
|
|
bl sub_0201CA4C
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
mov r0, #0x18
|
|
str r0, [sp, #4]
|
|
mov r0, #4
|
|
mov r2, #0
|
|
str r0, [sp, #8]
|
|
add r0, r5, #0
|
|
mov r1, #6
|
|
add r3, r2, #0
|
|
bl sub_0201CA4C
|
|
add r0, r5, #0
|
|
mov r1, #2
|
|
bl BgCommitTilemapBufferToVram
|
|
add r0, r5, #0
|
|
mov r1, #5
|
|
bl BgCommitTilemapBufferToVram
|
|
add r0, r5, #0
|
|
mov r1, #6
|
|
bl BgCommitTilemapBufferToVram
|
|
mov r0, #0xb
|
|
str r0, [sp]
|
|
ldr r0, _021E6D74 ; =0x04001050
|
|
mov r1, #4
|
|
mov r2, #0x22
|
|
mov r3, #5
|
|
bl G2x_SetBlendAlpha_
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021E6D74: .word 0x04001050
|
|
thumb_func_end ov61_021E6C3C
|
|
|
|
thumb_func_start ov61_021E6D78
|
|
ov61_021E6D78: ; 0x021E6D78
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
ldr r4, [sp, #0x34]
|
|
add r5, r0, #0
|
|
ldr r0, [r4]
|
|
add r7, r1, #0
|
|
add r6, r2, #0
|
|
str r3, [sp, #0x10]
|
|
cmp r0, #0
|
|
beq _021E6D90
|
|
bl GF_AssertFail
|
|
_021E6D90:
|
|
ldr r2, [sp, #0x10]
|
|
mov r0, #0
|
|
mov r1, #0x1b
|
|
add r3, r7, #0
|
|
bl NewMsgDataFromNarc
|
|
add r7, r0, #0
|
|
bne _021E6DA4
|
|
bl GF_AssertFail
|
|
_021E6DA4:
|
|
ldr r1, [sp, #0x28]
|
|
add r0, r7, #0
|
|
bl NewString_ReadMsgData
|
|
ldr r1, [sp, #0x2c]
|
|
str r0, [r4]
|
|
lsl r1, r1, #0x18
|
|
add r0, r5, #0
|
|
lsr r1, r1, #0x18
|
|
bl FillWindowPixelBuffer
|
|
mov r3, #0
|
|
ldr r0, [sp, #0x30]
|
|
str r3, [sp]
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #0x2c]
|
|
mov r1, #1
|
|
str r0, [sp, #8]
|
|
str r3, [sp, #0xc]
|
|
ldr r2, [r4]
|
|
add r0, r5, #0
|
|
bl AddTextPrinterParameterized2
|
|
add r4, r0, #0
|
|
cmp r6, #0
|
|
beq _021E6DE8
|
|
mov r1, #0
|
|
mov r2, #2
|
|
add r0, r5, #0
|
|
lsl r2, r2, #8
|
|
add r3, r1, #0
|
|
bl DrawFrameAndWindow2
|
|
b _021E6DEE
|
|
_021E6DE8:
|
|
add r0, r5, #0
|
|
bl CopyWindowToVram
|
|
_021E6DEE:
|
|
add r0, r7, #0
|
|
bl DestroyMsgData
|
|
add r0, r4, #0
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E6D78
|
|
|
|
thumb_func_start ov61_021E6DFC
|
|
ov61_021E6DFC: ; 0x021E6DFC
|
|
push {lr}
|
|
sub sp, #0x14
|
|
mov r2, #0
|
|
add r3, r0, #0
|
|
str r2, [sp, #0x10]
|
|
ldr r0, _021E6E2C ; =0x00010200
|
|
str r1, [sp]
|
|
str r0, [sp, #4]
|
|
str r2, [sp, #8]
|
|
add r0, sp, #0x10
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x3a
|
|
lsl r0, r0, #4
|
|
ldr r0, [r3, r0]
|
|
ldr r1, [r3, #4]
|
|
mov r3, #0xbe
|
|
bl ov61_021E6D78
|
|
ldr r0, [sp, #0x10]
|
|
bl String_dtor
|
|
add sp, #0x14
|
|
pop {pc}
|
|
nop
|
|
_021E6E2C: .word 0x00010200
|
|
thumb_func_end ov61_021E6DFC
|
|
|
|
thumb_func_start ov61_021E6E30
|
|
ov61_021E6E30: ; 0x021E6E30
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bl RemoveWindow
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
thumb_func_end ov61_021E6E30
|
|
|
|
thumb_func_start ov61_021E6E40
|
|
ov61_021E6E40: ; 0x021E6E40
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x18
|
|
add r5, r0, #0
|
|
mov r4, #0
|
|
bl sub_0202534C
|
|
cmp r0, #0
|
|
bne _021E6EB6
|
|
ldr r0, _021E6F74 ; =gMain
|
|
mov r1, #1
|
|
ldr r2, [r0, #0x48]
|
|
add r0, r2, #0
|
|
tst r0, r1
|
|
beq _021E6E78
|
|
mov r0, #0xea
|
|
lsl r0, r0, #2
|
|
ldr r2, [r5, r0]
|
|
cmp r2, #2
|
|
bne _021E6E6A
|
|
mov r4, #6
|
|
b _021E6F62
|
|
_021E6E6A:
|
|
cmp r2, #1
|
|
bne _021E6E72
|
|
mov r4, #7
|
|
b _021E6F62
|
|
_021E6E72:
|
|
str r1, [r5, r0]
|
|
mov r4, #5
|
|
b _021E6F62
|
|
_021E6E78:
|
|
mov r0, #2
|
|
add r3, r2, #0
|
|
tst r3, r0
|
|
beq _021E6E8E
|
|
mov r0, #0xea
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
cmp r0, #2
|
|
bne _021E6F62
|
|
mov r4, #8
|
|
b _021E6F62
|
|
_021E6E8E:
|
|
mov r3, #0x20
|
|
tst r3, r2
|
|
beq _021E6EA2
|
|
mov r0, #0xea
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
cmp r0, #2
|
|
beq _021E6F62
|
|
add r4, r1, #0
|
|
b _021E6F62
|
|
_021E6EA2:
|
|
mov r1, #0x10
|
|
tst r1, r2
|
|
beq _021E6F62
|
|
mov r1, #0xea
|
|
lsl r1, r1, #2
|
|
ldr r1, [r5, r1]
|
|
cmp r1, #2
|
|
beq _021E6F62
|
|
add r4, r0, #0
|
|
b _021E6F62
|
|
_021E6EB6:
|
|
ldr r0, _021E6F74 ; =gMain
|
|
ldr r0, [r0, #0x44]
|
|
cmp r0, #0
|
|
bne _021E6F62
|
|
bl sub_02025358
|
|
cmp r0, #0
|
|
beq _021E6F62
|
|
ldr r1, _021E6F78 ; =gMain + 0x40
|
|
add r2, sp, #0xc
|
|
ldrh r0, [r1, #0x20]
|
|
ldrh r1, [r1, #0x22]
|
|
add r3, sp, #0
|
|
bl NNS_G3dScrPosToWorldLine
|
|
mov r0, #0xea
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
cmp r0, #2
|
|
bne _021E6EE2
|
|
mov r3, #6
|
|
b _021E6EE4
|
|
_021E6EE2:
|
|
mov r3, #0xd
|
|
_021E6EE4:
|
|
mov r0, #0x37
|
|
lsl r0, r0, #4
|
|
lsl r3, r3, #0xc
|
|
add r0, r5, r0
|
|
add r1, sp, #0xc
|
|
add r2, sp, #0
|
|
bl ov61_021E6F98
|
|
cmp r0, #3
|
|
beq _021E6F56
|
|
mov r2, #0xea
|
|
lsl r2, r2, #2
|
|
ldr r1, [r5, r2]
|
|
cmp r1, #2
|
|
bne _021E6F12
|
|
sub r2, #0x14
|
|
ldr r1, [r5, r2]
|
|
cmp r0, r1
|
|
bne _021E6F0E
|
|
mov r4, #6
|
|
b _021E6F62
|
|
_021E6F0E:
|
|
mov r4, #8
|
|
b _021E6F62
|
|
_021E6F12:
|
|
cmp r1, #1
|
|
bne _021E6F34
|
|
add r1, r2, #0
|
|
sub r1, #0x14
|
|
ldr r1, [r5, r1]
|
|
cmp r0, r1
|
|
bne _021E6F24
|
|
mov r4, #7
|
|
b _021E6F62
|
|
_021E6F24:
|
|
add r2, r2, #4
|
|
lsl r1, r1, #0x18
|
|
ldr r2, [r5, r2]
|
|
lsr r1, r1, #0x18
|
|
bl ov61_021E6F80
|
|
add r4, r0, #0
|
|
b _021E6F62
|
|
_021E6F34:
|
|
add r1, r2, #0
|
|
sub r1, #0x14
|
|
ldr r1, [r5, r1]
|
|
cmp r0, r1
|
|
bne _021E6F46
|
|
mov r0, #1
|
|
str r0, [r5, r2]
|
|
mov r4, #5
|
|
b _021E6F62
|
|
_021E6F46:
|
|
add r2, r2, #4
|
|
lsl r1, r1, #0x18
|
|
ldr r2, [r5, r2]
|
|
lsr r1, r1, #0x18
|
|
bl ov61_021E6F80
|
|
add r4, r0, #0
|
|
b _021E6F62
|
|
_021E6F56:
|
|
mov r0, #0xea
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
cmp r0, #2
|
|
bne _021E6F62
|
|
mov r4, #8
|
|
_021E6F62:
|
|
cmp r4, #6
|
|
bne _021E6F6C
|
|
ldr r0, _021E6F7C ; =0x000005EA
|
|
bl PlaySE
|
|
_021E6F6C:
|
|
add r0, r4, #0
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021E6F74: .word gMain
|
|
_021E6F78: .word gMain + 0x40
|
|
_021E6F7C: .word 0x000005EA
|
|
thumb_func_end ov61_021E6E40
|
|
|
|
thumb_func_start ov61_021E6F80
|
|
ov61_021E6F80: ; 0x021E6F80
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
add r0, r1, #1
|
|
mov r1, #3
|
|
bl _s32_div_f
|
|
cmp r1, r4
|
|
bne _021E6F94
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
_021E6F94:
|
|
mov r0, #2
|
|
pop {r4, pc}
|
|
thumb_func_end ov61_021E6F80
|
|
|
|
thumb_func_start ov61_021E6F98
|
|
ov61_021E6F98: ; 0x021E6F98
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
add r7, r1, #0
|
|
str r2, [sp]
|
|
add r6, r3, #0
|
|
mov r4, #0
|
|
_021E6FA4:
|
|
mov r0, #0xc
|
|
mul r0, r4
|
|
ldr r2, [sp]
|
|
add r0, r5, r0
|
|
add r1, r7, #0
|
|
bl sub_02020B9C
|
|
cmp r0, r6
|
|
ble _021E6FC0
|
|
add r0, r4, #1
|
|
lsl r0, r0, #0x18
|
|
lsr r4, r0, #0x18
|
|
cmp r4, #3
|
|
blo _021E6FA4
|
|
_021E6FC0:
|
|
add r0, r4, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end ov61_021E6F98
|
|
|
|
thumb_func_start ov61_021E6FC4
|
|
ov61_021E6FC4: ; 0x021E6FC4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x28
|
|
add r6, r0, #0
|
|
ldr r1, [r6, #4]
|
|
mov r0, #0x5d
|
|
bl NARC_ctor
|
|
str r0, [sp, #0x18]
|
|
mov r0, #0xed
|
|
lsl r0, r0, #2
|
|
add r5, r6, r0
|
|
add r0, r5, #0
|
|
str r0, [sp, #0x24]
|
|
add r0, #0x78
|
|
mov r4, #0
|
|
str r5, [sp, #0x14]
|
|
str r6, [sp, #0x10]
|
|
add r7, r5, #0
|
|
str r0, [sp, #0x24]
|
|
_021E6FEA:
|
|
str r4, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
ldr r0, [r6, #4]
|
|
ldr r1, [sp, #0x18]
|
|
str r0, [sp, #8]
|
|
ldr r0, [r5]
|
|
mov r2, #9
|
|
mov r3, #0
|
|
bl sub_0200A3C8
|
|
ldr r1, [sp, #0x14]
|
|
mov r2, #6
|
|
str r0, [r1, #0x18]
|
|
str r4, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
ldr r0, [r6, #4]
|
|
ldr r1, [sp, #0x18]
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r5, #4]
|
|
mov r3, #0
|
|
bl sub_0200A480
|
|
ldr r1, [sp, #0x14]
|
|
mov r2, #0xa
|
|
str r0, [r1, #0x1c]
|
|
str r4, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
ldr r0, [r6, #4]
|
|
ldr r1, [sp, #0x18]
|
|
str r0, [sp, #8]
|
|
ldr r0, [r5, #8]
|
|
mov r3, #0
|
|
bl sub_0200A540
|
|
ldr r1, [sp, #0x14]
|
|
mov r2, #0x10
|
|
str r0, [r1, #0x20]
|
|
str r4, [sp]
|
|
mov r0, #3
|
|
str r0, [sp, #4]
|
|
ldr r0, [r6, #4]
|
|
ldr r1, [sp, #0x18]
|
|
str r0, [sp, #8]
|
|
ldr r0, [r5, #0xc]
|
|
mov r3, #0
|
|
bl sub_0200A540
|
|
ldr r1, [sp, #0x14]
|
|
mov r2, #0
|
|
str r0, [r1, #0x24]
|
|
ldr r1, [sp, #0x10]
|
|
ldr r0, _021E7104 ; =0x00000578
|
|
ldr r0, [r1, r0]
|
|
mov r1, #5
|
|
bl GetMonData
|
|
str r0, [sp, #0x1c]
|
|
ldr r1, [sp, #0x10]
|
|
ldr r0, _021E7104 ; =0x00000578
|
|
mov r2, #0
|
|
ldr r0, [r1, r0]
|
|
mov r1, #0x6f
|
|
bl GetMonData
|
|
str r0, [sp, #0x20]
|
|
ldr r1, [sp, #0x10]
|
|
ldr r0, _021E7104 ; =0x00000578
|
|
ldr r0, [r1, r0]
|
|
bl MonIsShiny
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
ldr r1, [sp, #0x1c]
|
|
ldr r2, [sp, #0x20]
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
lsl r1, r1, #0x10
|
|
lsl r2, r2, #0x18
|
|
ldr r0, [sp, #0x24]
|
|
lsr r1, r1, #0x10
|
|
lsr r2, r2, #0x18
|
|
mov r3, #2
|
|
bl sub_020701E4
|
|
add r0, r5, #0
|
|
add r1, r5, #0
|
|
add r0, #0x78
|
|
add r1, #0x7a
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r1]
|
|
ldr r2, [r6, #4]
|
|
bl sub_0201442C
|
|
str r0, [r7, #0x60]
|
|
add r0, r5, #0
|
|
add r1, r5, #0
|
|
add r0, #0x78
|
|
add r1, #0x7c
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r1]
|
|
ldr r2, [r6, #4]
|
|
bl sub_02014450
|
|
str r0, [r7, #0x6c]
|
|
lsl r0, r4, #0x18
|
|
lsr r0, r0, #0x18
|
|
str r0, [sp]
|
|
ldr r0, [r5]
|
|
ldr r1, [r5, #4]
|
|
ldr r2, [r7, #0x60]
|
|
ldr r3, [r7, #0x6c]
|
|
bl ov61_021E7108
|
|
lsl r1, r4, #0x18
|
|
ldr r2, [r6, #4]
|
|
add r0, r5, #0
|
|
lsr r1, r1, #0x18
|
|
bl ov61_021E7188
|
|
ldr r0, [sp, #0x14]
|
|
add r4, r4, #1
|
|
add r0, #0x18
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [sp, #0x10]
|
|
add r7, r7, #4
|
|
add r0, r0, #4
|
|
str r0, [sp, #0x10]
|
|
cmp r4, #3
|
|
bge _021E70F8
|
|
b _021E6FEA
|
|
_021E70F8:
|
|
ldr r0, [sp, #0x18]
|
|
bl NARC_dtor
|
|
add sp, #0x28
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E7104: .word 0x00000578
|
|
thumb_func_end ov61_021E6FC4
|
|
|
|
thumb_func_start ov61_021E7108
|
|
ov61_021E7108: ; 0x021E7108
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r7, r1, #0
|
|
add r1, sp, #0x10
|
|
ldrb r1, [r1, #0x10]
|
|
add r4, r2, #0
|
|
add r6, r3, #0
|
|
str r1, [sp]
|
|
bl sub_0200A7BC
|
|
add r5, r0, #0
|
|
ldr r1, [sp]
|
|
add r0, r7, #0
|
|
bl sub_0200A7BC
|
|
add r7, r0, #0
|
|
add r0, r5, #0
|
|
bl sub_0200ADA4
|
|
add r0, r7, #0
|
|
bl sub_0200B00C
|
|
add r0, r5, #0
|
|
bl sub_0200AF00
|
|
add r5, r0, #0
|
|
add r0, r7, #0
|
|
add r1, r5, #0
|
|
bl sub_0200B0F8
|
|
add r7, r0, #0
|
|
add r0, r5, #0
|
|
mov r1, #2
|
|
bl NNS_G2dGetImageLocation
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
mov r1, #2
|
|
bl NNS_G2dGetImagePaletteLocation
|
|
mov r1, #0x32
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
lsl r1, r1, #6
|
|
bl DC_FlushRange
|
|
mov r2, #0x32
|
|
ldr r1, [sp, #4]
|
|
add r0, r4, #0
|
|
lsl r2, r2, #6
|
|
bl GXS_LoadOBJ
|
|
add r0, r6, #0
|
|
mov r1, #0x20
|
|
bl DC_FlushRange
|
|
add r0, r6, #0
|
|
add r1, r5, #0
|
|
mov r2, #0x20
|
|
bl GXS_LoadOBJPltt
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E7108
|
|
|
|
thumb_func_start ov61_021E7188
|
|
ov61_021E7188: ; 0x021E7188
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x80
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
str r4, [sp]
|
|
mvn r0, r0
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
str r0, [sp, #0x10]
|
|
add r6, r2, #0
|
|
ldr r2, [r5]
|
|
add r3, r4, #0
|
|
str r2, [sp, #0x14]
|
|
ldr r2, [r5, #4]
|
|
str r2, [sp, #0x18]
|
|
ldr r2, [r5, #8]
|
|
str r2, [sp, #0x1c]
|
|
ldr r2, [r5, #0xc]
|
|
str r2, [sp, #0x20]
|
|
str r0, [sp, #0x24]
|
|
str r0, [sp, #0x28]
|
|
add r0, sp, #0x5c
|
|
add r2, r4, #0
|
|
bl sub_02009D48
|
|
add r0, r5, #0
|
|
add r0, #0x88
|
|
ldr r0, [r0]
|
|
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]
|
|
mov r0, #2
|
|
str r0, [sp, #0x54]
|
|
lsl r0, r0, #0x12
|
|
str r0, [sp, #0x34]
|
|
mov r0, #0x12
|
|
lsl r0, r0, #0x10
|
|
str r0, [sp, #0x38]
|
|
mov r0, #0x6d
|
|
lsl r0, r0, #2
|
|
add r5, r5, r0
|
|
str r1, [sp, #0x50]
|
|
str r6, [sp, #0x58]
|
|
lsl r4, r4, #2
|
|
add r0, sp, #0x2c
|
|
bl sub_02024624
|
|
str r0, [r5, r4]
|
|
ldr r0, [r5, r4]
|
|
mov r1, #0
|
|
bl sub_0202484C
|
|
ldr r0, [r5, r4]
|
|
mov r1, #0
|
|
bl sub_020248F0
|
|
ldr r0, [r5, r4]
|
|
mov r1, #0
|
|
bl sub_02024830
|
|
add sp, #0x80
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end ov61_021E7188
|
|
|
|
thumb_func_start ov61_021E7220
|
|
ov61_021E7220: ; 0x021E7220
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r0, #0xed
|
|
lsl r0, r0, #2
|
|
add r0, r4, r0
|
|
bl ov61_021E7248
|
|
mov r0, #0xe5
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
lsl r0, r0, #2
|
|
add r1, r4, r0
|
|
ldr r0, _021E7244 ; =0x00000568
|
|
ldr r0, [r1, r0]
|
|
mov r1, #1
|
|
bl sub_02024830
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021E7244: .word 0x00000568
|
|
thumb_func_end ov61_021E7220
|
|
|
|
thumb_func_start ov61_021E7248
|
|
ov61_021E7248: ; 0x021E7248
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
mov r4, #0
|
|
mov r6, #0x6d
|
|
add r5, r0, #0
|
|
add r7, r4, #0
|
|
lsl r6, r6, #2
|
|
_021E7254:
|
|
ldr r0, [r5, r6]
|
|
add r1, r7, #0
|
|
bl sub_02024830
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, #3
|
|
blt _021E7254
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E7248
|
|
|
|
thumb_func_start ov61_021E7268
|
|
ov61_021E7268: ; 0x021E7268
|
|
push {r0, r1, r2, r3}
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x3c
|
|
mov r2, #0xe5
|
|
lsl r2, r2, #2
|
|
add r4, r0, #0
|
|
add r0, r2, #0
|
|
add r0, #0x13
|
|
ldrb r0, [r4, r0]
|
|
ldr r5, [r4, r2]
|
|
mov r3, #8
|
|
add r1, r0, #1
|
|
add r0, r2, #0
|
|
add r0, #0x13
|
|
strb r1, [r4, r0]
|
|
add r2, #0x13
|
|
ldrb r2, [r4, r2]
|
|
add r0, sp, #0x54
|
|
add r1, sp, #0x58
|
|
bl ov61_021E7348
|
|
add r2, sp, #0xc
|
|
ldr r3, _021E7330 ; =0x021E73D4
|
|
add r6, r0, #0
|
|
ldmia r3!, {r0, r1}
|
|
add r7, r2, #0
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
ldr r3, _021E7334 ; =0x021E738C
|
|
str r0, [r2]
|
|
add r2, sp, #0
|
|
ldmia r3!, {r0, r1}
|
|
mov ip, r2
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
str r0, [r2]
|
|
ldr r1, [sp, #4]
|
|
ldr r0, _021E7338 ; =0x0000D73F
|
|
add r2, r7, #0
|
|
add r0, r1, r0
|
|
str r0, [sp, #4]
|
|
add r0, r7, #0
|
|
mov r1, ip
|
|
bl VEC_Subtract
|
|
asr r0, r6, #4
|
|
lsl r3, r0, #1
|
|
lsl r1, r3, #1
|
|
ldr r2, _021E733C ; =0x021094DC
|
|
add r3, r3, #1
|
|
lsl r3, r3, #1
|
|
ldrsh r1, [r2, r1]
|
|
ldrsh r2, [r2, r3]
|
|
add r0, sp, #0x18
|
|
bl MTX_RotX33_
|
|
add r0, r7, #0
|
|
add r1, sp, #0x18
|
|
add r2, r0, #0
|
|
bl MTX_MultVec33
|
|
add r0, r7, #0
|
|
add r1, sp, #0
|
|
add r2, r0, #0
|
|
bl VEC_Add
|
|
add r2, r4, #0
|
|
add r1, r5, #3
|
|
mov r0, #0x78
|
|
mul r0, r1
|
|
add r2, #0x70
|
|
add r0, r2, r0
|
|
ldr r1, [sp, #0xc]
|
|
ldr r2, [sp, #0x10]
|
|
ldr r3, [sp, #0x14]
|
|
bl ov61_021E6934
|
|
mov r0, #0x78
|
|
mul r0, r5
|
|
add r1, r4, r0
|
|
ldr r0, _021E7340 ; =0x0000024E
|
|
strh r6, [r1, r0]
|
|
ldr r0, _021E7344 ; =0x000003A7
|
|
ldrb r1, [r4, r0]
|
|
cmp r1, #8
|
|
blo _021E7324
|
|
mov r1, #0
|
|
strb r1, [r4, r0]
|
|
add sp, #0x3c
|
|
mov r0, #1
|
|
pop {r4, r5, r6, r7}
|
|
pop {r3}
|
|
add sp, #0x10
|
|
bx r3
|
|
_021E7324:
|
|
mov r0, #0
|
|
add sp, #0x3c
|
|
pop {r4, r5, r6, r7}
|
|
pop {r3}
|
|
add sp, #0x10
|
|
bx r3
|
|
.balign 4, 0
|
|
_021E7330: .word 0x021E73D4
|
|
_021E7334: .word 0x021E738C
|
|
_021E7338: .word 0x0000D73F
|
|
_021E733C: .word 0x021094DC
|
|
_021E7340: .word 0x0000024E
|
|
_021E7344: .word 0x000003A7
|
|
thumb_func_end ov61_021E7268
|
|
|
|
thumb_func_start ov61_021E7348
|
|
ov61_021E7348: ; 0x021E7348
|
|
push {r4, lr}
|
|
ldr r4, [r0]
|
|
ldr r0, [r1]
|
|
cmp r0, r4
|
|
blt _021E7364
|
|
sub r0, r0, r4
|
|
lsl r0, r0, #0x10
|
|
lsr r1, r0, #0x10
|
|
add r0, r1, #0
|
|
mul r0, r2
|
|
add r1, r3, #0
|
|
bl _s32_div_f
|
|
b _021E7376
|
|
_021E7364:
|
|
sub r0, r4, r0
|
|
lsl r0, r0, #0x10
|
|
lsr r1, r0, #0x10
|
|
add r0, r1, #0
|
|
mul r0, r2
|
|
add r1, r3, #0
|
|
bl _s32_div_f
|
|
neg r0, r0
|
|
_021E7376:
|
|
add r0, r4, r0
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov61_021E7348
|
|
|
|
.rodata
|
|
|
|
_021E7380:
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x00
|
|
.byte 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00
|
|
.byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00
|
|
; 0x021E74BC
|