mirror of
https://github.com/pret/pokeheartgold.git
synced 2024-12-04 19:17:13 +00:00
1712 lines
32 KiB
ArmAsm
1712 lines
32 KiB
ArmAsm
#include "constants/sndseq.h"
|
|
#include "constants/moves.h"
|
|
#include "constants/std_script.h"
|
|
#include "constants/species.h"
|
|
#include "constants/sprites.h"
|
|
#include "constants/maps.h"
|
|
#include "constants/mmodel.h"
|
|
#include "constants/items.h"
|
|
#include "msgdata/msg/msg_0096_D31R0201.h"
|
|
#include "msgdata/msg/msg_0066_D23R0102.h"
|
|
.include "asm/macros.inc"
|
|
.include "overlay_01_021E5900.inc"
|
|
.include "global.inc"
|
|
|
|
.public ov01_02208BFC
|
|
|
|
.text
|
|
|
|
thumb_func_start ov01_021E5900
|
|
ov01_021E5900: ; 0x021E5900
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #8]
|
|
bl DoScheduledBgGpuUpdates
|
|
bl GF_RunVramTransferTasks
|
|
bl OamManager_ApplyAndResetBuffers
|
|
ldr r0, [r4, #0x3c]
|
|
bl sub_0205F1A0
|
|
bl ov01_021FA1D0
|
|
bl sub_02023910
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E5900
|
|
|
|
thumb_func_start ov01_021E5924
|
|
ov01_021E5924: ; 0x021E5924
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r6, r1, #0
|
|
mov r1, #0
|
|
ldr r5, _021E5B9C ; =0x00DCE6A1
|
|
str r1, [sp, #4]
|
|
bl OverlayManager_GetArgs
|
|
ldr r1, [r6]
|
|
add r4, r0, #0
|
|
cmp r1, #3
|
|
bls _021E593E
|
|
b _021E5B8E
|
|
_021E593E:
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_021E594A: ; jump table
|
|
.short _021E5952 - _021E594A - 2 ; case 0
|
|
.short _021E5AB6 - _021E594A - 2 ; case 1
|
|
.short _021E5B5C - _021E594A - 2 ; case 2
|
|
.short _021E5B62 - _021E594A - 2 ; case 3
|
|
_021E5952:
|
|
ldr r1, _021E5BA0 ; =FS_OVERLAY_ID(OVY_123)
|
|
mov r0, #0
|
|
bl FS_LoadOverlay
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl Main_SetVBlankIntrCB
|
|
bl HBlankInterruptDisable
|
|
ldr r0, _021E5BA4 ; =0x04000050
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
ldr r0, _021E5BA8 ; =0x04001050
|
|
strh r1, [r0]
|
|
ldr r0, _021E5BAC ; =ov01_021E66A8
|
|
bl ov123_0225F610
|
|
ldr r1, _021E5BB0 ; =0x000004CF
|
|
mul r1, r0
|
|
mov r0, #0
|
|
add r5, r5, r1
|
|
bl sub_0200FBDC
|
|
mov r0, #1
|
|
bl sub_0200FBDC
|
|
add r0, r4, #0
|
|
bl ov01_021E6364
|
|
ldr r0, _021E5BB4 ; =ov01_021E66D8
|
|
bl ov123_0225F598
|
|
cmp r0, #0
|
|
bne _021E599C
|
|
mov r1, #1
|
|
b _021E599E
|
|
_021E599C:
|
|
mov r1, #0
|
|
_021E599E:
|
|
mov r0, #0x6b
|
|
mul r0, r1
|
|
add r5, r5, r0
|
|
add r0, r4, #0
|
|
bl sub_02053018
|
|
mov r0, #0x47
|
|
mov r1, #8
|
|
lsl r0, r0, #2
|
|
str r1, [r4, r0]
|
|
ldr r0, [r4, #0x74]
|
|
ldr r0, [r0]
|
|
lsl r0, r0, #8
|
|
lsr r0, r0, #0x1c
|
|
beq _021E59F0
|
|
ldr r0, _021E5BB8 ; =FS_OVERLAY_ID(OVY_2)
|
|
mov r1, #2
|
|
bl HandleLoadOverlay
|
|
add r0, r4, #0
|
|
bl ov01_021E5EB8
|
|
cmp r0, #0
|
|
beq _021E59D4
|
|
cmp r0, #1
|
|
beq _021E59DE
|
|
b _021E59E8
|
|
_021E59D4:
|
|
ldr r0, _021E5BBC ; =FS_OVERLAY_ID(OVY_4)
|
|
mov r1, #2
|
|
bl HandleLoadOverlay
|
|
b _021E59F0
|
|
_021E59DE:
|
|
ldr r0, _021E5BC0 ; =FS_OVERLAY_ID(OVY_3)
|
|
mov r1, #2
|
|
bl HandleLoadOverlay
|
|
b _021E59F0
|
|
_021E59E8:
|
|
ldr r0, _021E5BC0 ; =FS_OVERLAY_ID(OVY_3)
|
|
mov r1, #2
|
|
bl HandleLoadOverlay
|
|
_021E59F0:
|
|
ldr r0, _021E5BC4 ; =ov01_021E66B8
|
|
bl ov123_0225F430
|
|
ldr r2, [r4, #0x74]
|
|
add r7, r0, #0
|
|
ldr r1, _021E5BC8 ; =0x000003A1
|
|
ldr r2, [r2, #4]
|
|
mul r7, r1
|
|
mov r0, #3
|
|
mov r1, #4
|
|
bl CreateHeap
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _021E5A12
|
|
bl GF_AssertFail
|
|
_021E5A12:
|
|
ldr r1, _021E5BA0 ; =FS_OVERLAY_ID(OVY_123)
|
|
mov r0, #0
|
|
bl FS_UnloadOverlay
|
|
mov r0, #4
|
|
mov r1, #0x28
|
|
bl AllocFromHeap
|
|
mov r1, #0
|
|
mov r2, #0x28
|
|
str r0, [r4, #4]
|
|
bl MI_CpuFill8
|
|
add r0, r4, #0
|
|
mov r1, #4
|
|
mov r2, #8
|
|
bl ov01_021E66E4
|
|
ldr r1, [r4, #4]
|
|
str r0, [r1, #4]
|
|
ldr r1, _021E5BCC ; =0x00000D69
|
|
add r0, r5, r7
|
|
bl _u32_div_f
|
|
cmp r1, #0
|
|
beq _021E5A50
|
|
ldr r0, _021E5BD0 ; =sub_0203E348
|
|
mov r1, #0
|
|
mov r2, #0x7b
|
|
bl SysTask_CreateOnMainQueue
|
|
_021E5A50:
|
|
bl ov01_021E6028
|
|
mov r0, #0x80
|
|
mov r1, #4
|
|
bl GF_CreateVramTransferManager
|
|
mov r0, #4
|
|
add r1, r0, #0
|
|
bl sub_02023738
|
|
mov r0, #4
|
|
bl sub_0201F590
|
|
bl ov01_021E61E0
|
|
bl ov01_021E6178
|
|
bl GfGfx_SwapDisplay
|
|
mov r0, #4
|
|
bl BgConfig_Alloc
|
|
str r0, [r4, #8]
|
|
bl ov01_021E6058
|
|
mov r0, #0
|
|
mov r1, #1
|
|
bl sub_0205B4EC
|
|
add r0, r4, #0
|
|
mov r1, #4
|
|
bl TryStartMapScriptByType
|
|
ldr r1, _021E5BD4 ; =0x00001079
|
|
add r0, r5, r7
|
|
bl _u32_div_f
|
|
cmp r1, #0
|
|
beq _021E5AA8
|
|
ldr r0, _021E5BD0 ; =sub_0203E348
|
|
ldr r2, _021E5BD8 ; =0x00000315
|
|
mov r1, #0
|
|
bl SysTask_CreateOnMainQueue
|
|
_021E5AA8:
|
|
mov r0, #4
|
|
bl ov02_0224F864
|
|
mov r1, #0x12
|
|
lsl r1, r1, #4
|
|
str r0, [r4, r1]
|
|
b _021E5B8E
|
|
_021E5AB6:
|
|
bl ov01_021E63B8
|
|
mov r0, #0x41
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
add r1, r4, #0
|
|
str r0, [sp]
|
|
add r3, r4, #0
|
|
add r1, #0xc0
|
|
add r3, #0xcc
|
|
ldr r0, [r4, #0x34]
|
|
ldr r1, [r1]
|
|
ldr r2, [r4, #0x54]
|
|
ldr r3, [r3]
|
|
bl ov01_021FBA3C
|
|
add r1, r4, #0
|
|
add r1, #0xc0
|
|
ldr r1, [r1]
|
|
mov r0, #4
|
|
bl ov01_021F3638
|
|
add r1, r4, #0
|
|
add r1, #0x9c
|
|
str r0, [r1]
|
|
add r0, r4, #0
|
|
bl ov01_021E6460
|
|
add r0, r4, #0
|
|
bl ov01_021E64A4
|
|
add r0, r4, #0
|
|
bl ov01_021E6580
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_LocalFieldData_Get
|
|
bl LocalFieldData_GetWeatherType
|
|
add r1, r0, #0
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #0xc]
|
|
bl ov01_021EB260
|
|
ldr r1, [r4, #0x20]
|
|
add r0, r4, #0
|
|
ldr r1, [r1]
|
|
bl sub_02055164
|
|
cmp r0, #0
|
|
bne _021E5B2A
|
|
add r0, r4, #0
|
|
add r0, #0xc4
|
|
ldr r1, [r0]
|
|
mov r0, #1
|
|
mvn r0, r0
|
|
cmp r1, r0
|
|
bne _021E5B32
|
|
_021E5B2A:
|
|
add r0, r4, #0
|
|
mov r1, #0
|
|
bl ov01_021E7F00
|
|
_021E5B32:
|
|
add r0, r4, #0
|
|
mov r1, #3
|
|
bl TryStartMapScriptByType
|
|
mov r0, #4
|
|
bl ov01_021FB4C0
|
|
ldr r1, [r4, #4]
|
|
str r0, [r1, #0x1c]
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #0x1c]
|
|
bl ov01_021FB4F4
|
|
ldr r1, [r4, #4]
|
|
mov r0, #4
|
|
ldr r1, [r1, #0x1c]
|
|
bl ov01_021FB5D4
|
|
ldr r1, [r4, #4]
|
|
str r0, [r1, #0x20]
|
|
b _021E5B8E
|
|
_021E5B5C:
|
|
bl ov01_021EAF18
|
|
b _021E5B8E
|
|
_021E5B62:
|
|
bl ov01_021EAF34
|
|
cmp r0, #0
|
|
beq _021E5B70
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
str r0, [r4, #0x6c]
|
|
_021E5B70:
|
|
bl ov01_021E662C
|
|
cmp r0, #0
|
|
bne _021E5B8E
|
|
mov r2, #0xfa
|
|
ldr r0, _021E5BDC ; =sub_02096594
|
|
mov r1, #0
|
|
lsl r2, r2, #2
|
|
bl SysTask_CreateOnMainQueue
|
|
ldr r0, _021E5BDC ; =sub_02096594
|
|
ldr r2, _021E5BE0 ; =0x00000578
|
|
mov r1, #0
|
|
bl SysTask_CreateOnMainQueue
|
|
_021E5B8E:
|
|
ldr r0, [r6]
|
|
add r0, r0, #1
|
|
str r0, [r6]
|
|
ldr r0, [sp, #4]
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E5B9C: .word 0x00DCE6A1
|
|
_021E5BA0: .word FS_OVERLAY_ID(OVY_123)
|
|
_021E5BA4: .word 0x04000050
|
|
_021E5BA8: .word 0x04001050
|
|
_021E5BAC: .word ov01_021E66A8
|
|
_021E5BB0: .word 0x000004CF
|
|
_021E5BB4: .word ov01_021E66D8
|
|
_021E5BB8: .word FS_OVERLAY_ID(OVY_2)
|
|
_021E5BBC: .word FS_OVERLAY_ID(OVY_4)
|
|
_021E5BC0: .word FS_OVERLAY_ID(OVY_3)
|
|
_021E5BC4: .word ov01_021E66B8
|
|
_021E5BC8: .word 0x000003A1
|
|
_021E5BCC: .word 0x00000D69
|
|
_021E5BD0: .word sub_0203E348
|
|
_021E5BD4: .word 0x00001079
|
|
_021E5BD8: .word 0x00000315
|
|
_021E5BDC: .word sub_02096594
|
|
_021E5BE0: .word 0x00000578
|
|
thumb_func_end ov01_021E5924
|
|
|
|
thumb_func_start ov01_021E5BE4
|
|
ov01_021E5BE4: ; 0x021E5BE4
|
|
push {r4, lr}
|
|
bl OverlayManager_GetArgs
|
|
add r4, r0, #0
|
|
bl ov01_021E5ED4
|
|
cmp r0, #0
|
|
beq _021E5C04
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
add r2, r1, #0
|
|
bl ov01_021F6830
|
|
add r0, r4, #0
|
|
bl ov01_021E5F04
|
|
_021E5C04:
|
|
add r1, r4, #0
|
|
add r1, #0xbc
|
|
ldr r1, [r1]
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
bl ov01_021E5FC0
|
|
ldr r0, [r4, #0x6c]
|
|
cmp r0, #0
|
|
beq _021E5C1E
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_021E5C1E:
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E5BE4
|
|
|
|
thumb_func_start ov01_021E5C24
|
|
ov01_021E5C24: ; 0x021E5C24
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r1, #0
|
|
ldr r5, _021E5E7C ; =0x002AAACF
|
|
bl OverlayManager_GetArgs
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x2c]
|
|
bl ov01_021F50F0
|
|
ldr r0, [r6]
|
|
cmp r0, #0
|
|
beq _021E5C4A
|
|
cmp r0, #1
|
|
bne _021E5C42
|
|
b _021E5D82
|
|
_021E5C42:
|
|
cmp r0, #2
|
|
bne _021E5C48
|
|
b _021E5E12
|
|
_021E5C48:
|
|
b _021E5E76
|
|
_021E5C4A:
|
|
ldr r1, _021E5E80 ; =FS_OVERLAY_ID(OVY_123)
|
|
mov r0, #0
|
|
bl FS_LoadOverlay
|
|
add r0, r4, #0
|
|
bl sub_02064910
|
|
ldr r0, _021E5E84 ; =ov01_021E66C8
|
|
bl ov123_0225F610
|
|
ldr r1, _021E5E88 ; =0x0000023B
|
|
mul r1, r0
|
|
ldr r0, [r4, #0x2c]
|
|
add r5, r5, r1
|
|
bl ov01_021F6304
|
|
ldr r0, [r4, #0x40]
|
|
bl GetPlayerXCoord
|
|
ldr r1, [r4, #0x20]
|
|
str r0, [r1, #8]
|
|
ldr r0, [r4, #0x40]
|
|
bl GetPlayerYCoord
|
|
ldr r1, [r4, #0x20]
|
|
str r0, [r1, #0xc]
|
|
ldr r0, [r4, #0x40]
|
|
bl PlayerAvatar_GetFacingDirection
|
|
ldr r1, [r4, #0x20]
|
|
str r0, [r1, #0x10]
|
|
add r0, r4, #0
|
|
add r0, #0x98
|
|
ldr r0, [r0]
|
|
bl ov01_021FB418
|
|
ldr r0, [r4, #0x54]
|
|
cmp r0, #0
|
|
bne _021E5C9C
|
|
bl GF_AssertFail
|
|
_021E5C9C:
|
|
ldr r0, [r4, #0x2c]
|
|
bl ov01_021F61F8
|
|
ldr r0, _021E5E8C ; =ov01_021E66DC
|
|
bl ov123_0225F4A8
|
|
cmp r0, #0
|
|
bne _021E5CB0
|
|
mov r1, #1
|
|
b _021E5CB2
|
|
_021E5CB0:
|
|
mov r1, #0
|
|
_021E5CB2:
|
|
ldr r0, _021E5E90 ; =0x0000018D
|
|
mul r0, r1
|
|
add r5, r5, r0
|
|
ldr r0, [r4, #0x54]
|
|
bl ov01_021E8A28
|
|
ldr r0, [r4, #0x54]
|
|
bl ov01_021E8AEC
|
|
add r0, r4, #0
|
|
add r0, #0x58
|
|
bl ov01_021E8DD4
|
|
mov r0, #0x41
|
|
lsl r0, r0, #2
|
|
ldr r0, [r4, r0]
|
|
bl ov01_02204764
|
|
add r0, r4, #0
|
|
add r0, #0xcc
|
|
ldr r0, [r0]
|
|
bl ov01_02204634
|
|
add r0, r4, #0
|
|
add r0, #0xc8
|
|
ldr r0, [r0]
|
|
bl ov01_02204278
|
|
ldr r0, _021E5E94 ; =ov01_021E66E0
|
|
bl ov123_0225F598
|
|
cmp r0, #0
|
|
bne _021E5CF8
|
|
mov r1, #1
|
|
b _021E5CFA
|
|
_021E5CF8:
|
|
mov r1, #0
|
|
_021E5CFA:
|
|
mov r0, #0x8b
|
|
add r7, r1, #0
|
|
mul r7, r0
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #0x10]
|
|
bl ov01_021EB1BC
|
|
ldr r1, _021E5E80 ; =FS_OVERLAY_ID(OVY_123)
|
|
mov r0, #0
|
|
bl FS_UnloadOverlay
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #0x10]
|
|
bl ov01_021EB1DC
|
|
ldr r0, [r4, #4]
|
|
mov r1, #0
|
|
str r1, [r0, #0x10]
|
|
ldr r1, _021E5E98 ; =0x000008AD
|
|
add r0, r5, r7
|
|
bl _u32_div_f
|
|
cmp r1, #0
|
|
beq _021E5D34
|
|
ldr r0, _021E5E9C ; =sub_0203E348
|
|
ldr r2, _021E5EA0 ; =0x00001EA5
|
|
mov r1, #0
|
|
bl SysTask_CreateOnMainQueue
|
|
_021E5D34:
|
|
ldr r0, [r4, #0x3c]
|
|
bl sub_0205E4C8
|
|
ldr r0, [r4, #0x3c]
|
|
bl ov01_021F9250
|
|
ldr r0, [r4, #0x3c]
|
|
bl sub_0205F55C
|
|
ldr r0, [r4, #0x44]
|
|
bl ov01_021F13F4
|
|
add r0, r4, #0
|
|
bl ov01_02205424
|
|
ldr r0, [r4, #0x38]
|
|
bl ov01_021E66A0
|
|
mov r0, #0
|
|
str r0, [r4, #0x38]
|
|
ldr r1, _021E5EA4 ; =0x000004EB
|
|
add r0, r5, r7
|
|
bl _u32_div_f
|
|
cmp r1, #0
|
|
beq _021E5D72
|
|
ldr r0, _021E5E9C ; =sub_0203E348
|
|
ldr r2, _021E5EA8 ; =0x000004DD
|
|
mov r1, #0
|
|
bl SysTask_CreateOnMainQueue
|
|
_021E5D72:
|
|
add r4, #0x9c
|
|
ldr r0, [r4]
|
|
bl ov01_021F3660
|
|
ldr r0, [r6]
|
|
add r0, r0, #1
|
|
str r0, [r6]
|
|
b _021E5E76
|
|
_021E5D82:
|
|
ldr r0, [r4, #0x2c]
|
|
bl ov01_021F62CC
|
|
cmp r0, #1
|
|
bne _021E5E76
|
|
add r0, r4, #0
|
|
add r0, #0xc0
|
|
ldr r0, [r0]
|
|
bl ov01_02204084
|
|
add r0, r4, #0
|
|
add r0, #0x34
|
|
bl ov01_021FB944
|
|
ldr r0, [r4, #0x2c]
|
|
bl ov01_021F62B0
|
|
add r0, r4, #0
|
|
bl ov01_021EAC30
|
|
add r0, r4, #0
|
|
add r0, #0x50
|
|
bl ov01_021EA284
|
|
ldr r0, [r4, #0x68]
|
|
bl ov01_021F3D50
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #8]
|
|
bl ov01_021EFA1C
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #0xc]
|
|
bl ov01_021EB234
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #0x20]
|
|
bl ov01_021FB610
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #0x1c]
|
|
bl ov01_021FB4D4
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #0x18]
|
|
bl sub_020556A8
|
|
add r0, r4, #0
|
|
add r0, #0x4c
|
|
bl ov01_021EA840
|
|
add r0, r4, #0
|
|
add r0, #0x48
|
|
bl ov01_021EA8FC
|
|
bl ov01_021E619C
|
|
mov r0, #0x12
|
|
lsl r0, r0, #4
|
|
ldr r0, [r4, r0]
|
|
bl ov02_0224F8F4
|
|
ldr r0, [r4, #8]
|
|
bl ov01_021E6138
|
|
add r0, r4, #0
|
|
bl ov01_021EAF54
|
|
ldr r0, [r6]
|
|
add r0, r0, #1
|
|
str r0, [r6]
|
|
b _021E5E76
|
|
_021E5E12:
|
|
add r0, r4, #0
|
|
bl ov01_021EAF70
|
|
cmp r0, #0
|
|
beq _021E5E76
|
|
bl ov01_021E6214
|
|
bl sub_02023778
|
|
bl GF_DestroyVramTransferManager
|
|
bl sub_0201F63C
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #4]
|
|
bl ov01_021E6734
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl Main_SetVBlankIntrCB
|
|
ldr r0, [r4, #8]
|
|
bl FreeToHeap
|
|
ldr r0, [r4, #4]
|
|
bl FreeToHeap
|
|
mov r0, #0
|
|
str r0, [r4, #4]
|
|
mov r0, #4
|
|
bl DestroyHeap
|
|
ldr r0, [r4, #0x74]
|
|
ldr r0, [r0]
|
|
lsl r0, r0, #8
|
|
lsr r0, r0, #0x1c
|
|
beq _021E5E6E
|
|
ldr r0, _021E5EAC ; =FS_OVERLAY_ID(OVY_2)
|
|
bl UnloadOverlayByID
|
|
ldr r0, _021E5EB0 ; =FS_OVERLAY_ID(OVY_4)
|
|
bl UnloadOverlayByID
|
|
ldr r0, _021E5EB4 ; =FS_OVERLAY_ID(OVY_3)
|
|
bl UnloadOverlayByID
|
|
_021E5E6E:
|
|
bl sub_02005D00
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E5E76:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_021E5E7C: .word 0x002AAACF
|
|
_021E5E80: .word FS_OVERLAY_ID(OVY_123)
|
|
_021E5E84: .word ov01_021E66C8
|
|
_021E5E88: .word 0x0000023B
|
|
_021E5E8C: .word ov01_021E66DC
|
|
_021E5E90: .word 0x0000018D
|
|
_021E5E94: .word ov01_021E66E0
|
|
_021E5E98: .word 0x000008AD
|
|
_021E5E9C: .word sub_0203E348
|
|
_021E5EA0: .word 0x00001EA5
|
|
_021E5EA4: .word 0x000004EB
|
|
_021E5EA8: .word 0x000004DD
|
|
_021E5EAC: .word FS_OVERLAY_ID(OVY_2)
|
|
_021E5EB0: .word FS_OVERLAY_ID(OVY_4)
|
|
_021E5EB4: .word FS_OVERLAY_ID(OVY_3)
|
|
thumb_func_end ov01_021E5C24
|
|
|
|
thumb_func_start ov01_021E5EB8
|
|
ov01_021E5EB8: ; 0x021E5EB8
|
|
push {r3, lr}
|
|
bl FieldSystem_GetSaveData
|
|
bl Save_GetGymmickPtr
|
|
bl Save_Gymmick_GetType
|
|
cmp r0, #0
|
|
bne _021E5ECE
|
|
mov r0, #1
|
|
pop {r3, pc}
|
|
_021E5ECE:
|
|
mov r0, #0
|
|
pop {r3, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E5EB8
|
|
|
|
thumb_func_start ov01_021E5ED4
|
|
ov01_021E5ED4: ; 0x021E5ED4
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x40]
|
|
bl GetPlayerXCoord
|
|
add r4, r0, #0
|
|
ldr r0, [r5, #0x40]
|
|
bl GetPlayerYCoord
|
|
ldr r2, [r5, #0x20]
|
|
ldr r1, [r2, #8]
|
|
cmp r4, r1
|
|
bne _021E5EF4
|
|
ldr r1, [r2, #0xc]
|
|
cmp r0, r1
|
|
beq _021E5EFE
|
|
_021E5EF4:
|
|
str r4, [r2, #8]
|
|
ldr r1, [r5, #0x20]
|
|
str r0, [r1, #0xc]
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
_021E5EFE:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E5ED4
|
|
|
|
thumb_func_start ov01_021E5F04
|
|
ov01_021E5F04: ; 0x021E5F04
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x40]
|
|
bl GetPlayerXCoord
|
|
asr r1, r0, #4
|
|
lsr r1, r1, #0x1b
|
|
add r1, r0, r1
|
|
ldr r0, [r5, #0x40]
|
|
asr r4, r1, #5
|
|
bl GetPlayerYCoord
|
|
asr r1, r0, #4
|
|
lsr r1, r1, #0x1b
|
|
add r1, r0, r1
|
|
asr r2, r1, #5
|
|
ldr r0, [r5, #0x30]
|
|
add r1, r4, #0
|
|
bl MapMatrix_GetMapHeader
|
|
add r4, r0, #0
|
|
ldr r0, [r5, #0x20]
|
|
ldr r6, [r0]
|
|
cmp r4, r6
|
|
bne _021E5F3E
|
|
add sp, #8
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_021E5F3E:
|
|
ldr r0, [r5, #0xc]
|
|
bl Save_LocalFieldData_Get
|
|
add r7, r0, #0
|
|
ldr r0, [r5, #0x20]
|
|
add r1, r4, #0
|
|
str r4, [r0]
|
|
add r0, r5, #0
|
|
bl Field_InitMapEvents
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl sub_02053038
|
|
add r0, r5, #0
|
|
bl Field_GetNumObjectEvents
|
|
str r0, [sp, #4]
|
|
add r0, r5, #0
|
|
bl Field_GetObjectEvents
|
|
str r0, [sp]
|
|
ldr r0, [r5, #0x3c]
|
|
ldr r3, [sp, #4]
|
|
add r1, r6, #0
|
|
add r2, r4, #0
|
|
bl sub_0205E104
|
|
ldr r1, [r5, #0x20]
|
|
add r0, r5, #0
|
|
ldr r1, [r1]
|
|
bl FieldSystem_GetOverriddenMusicId
|
|
add r1, r0, #0
|
|
add r0, r5, #0
|
|
mov r2, #1
|
|
bl FieldSystem_PlayOrFadeToNewMusicId
|
|
add r0, r5, #0
|
|
bl Field_InitMapObjectsFromZoneEventData
|
|
add r0, r7, #0
|
|
bl LocalFieldData_GetWeatherType
|
|
add r1, r0, #0
|
|
ldr r0, [r5, #4]
|
|
ldr r0, [r0, #0xc]
|
|
bl FieldWeatherUpdate_UsedFlash
|
|
add r0, r6, #0
|
|
bl MapHeader_GetMapSec
|
|
add r6, r0, #0
|
|
add r0, r4, #0
|
|
bl MapHeader_GetMapSec
|
|
cmp r6, r0
|
|
beq _021E5FB8
|
|
add r0, r5, #0
|
|
bl ov01_021EFAF8
|
|
_021E5FB8:
|
|
mov r0, #1
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E5F04
|
|
|
|
thumb_func_start ov01_021E5FC0
|
|
ov01_021E5FC0: ; 0x021E5FC0
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
add r4, r1, #0
|
|
bl FieldSystem_TaskIsRunning
|
|
cmp r0, #0
|
|
bne _021E5FD4
|
|
add r0, r5, #0
|
|
bl FieldSystem_StartBugContestTimer
|
|
_021E5FD4:
|
|
ldr r0, [r5, #0x50]
|
|
bl ov01_021EA2A4
|
|
mov r0, #0x41
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
bl ov01_022047DC
|
|
ldr r0, [r5, #0x28]
|
|
bl ov01_021EAD8C
|
|
add r0, r5, #0
|
|
bl ov01_021F3D98
|
|
mov r0, #1
|
|
tst r0, r4
|
|
beq _021E5FFE
|
|
ldr r0, [r5, #4]
|
|
ldr r0, [r0, #0x10]
|
|
bl ov01_021EB114
|
|
_021E5FFE:
|
|
mov r0, #8
|
|
tst r0, r4
|
|
beq _021E600E
|
|
add r0, r5, #0
|
|
add r0, #0xc8
|
|
ldr r0, [r0]
|
|
bl ov01_02204350
|
|
_021E600E:
|
|
mov r0, #2
|
|
tst r0, r4
|
|
beq _021E601A
|
|
ldr r0, [r5, #0x2c]
|
|
bl ov01_021F50F0
|
|
_021E601A:
|
|
mov r0, #4
|
|
tst r0, r4
|
|
beq _021E6026
|
|
add r0, r5, #0
|
|
bl ov01_021E6220
|
|
_021E6026:
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end ov01_021E5FC0
|
|
|
|
thumb_func_start ov01_021E6028
|
|
ov01_021E6028: ; 0x021E6028
|
|
push {r4, lr}
|
|
sub sp, #0x28
|
|
ldr r4, _021E6044 ; =ov01_02206350
|
|
add r3, sp, #0
|
|
mov r2, #5
|
|
_021E6032:
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _021E6032
|
|
add r0, sp, #0
|
|
bl GfGfx_SetBanks
|
|
add sp, #0x28
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021E6044: .word ov01_02206350
|
|
thumb_func_end ov01_021E6028
|
|
|
|
thumb_func_start ov01_021E6048
|
|
ov01_021E6048: ; 0x021E6048
|
|
ldr r3, _021E604C ; =ov01_021E6058
|
|
bx r3
|
|
.balign 4, 0
|
|
_021E604C: .word ov01_021E6058
|
|
thumb_func_end ov01_021E6048
|
|
|
|
thumb_func_start ov01_021E6050
|
|
ov01_021E6050: ; 0x021E6050
|
|
ldr r3, _021E6054 ; =ov01_021E6138
|
|
bx r3
|
|
.balign 4, 0
|
|
_021E6054: .word ov01_021E6138
|
|
thumb_func_end ov01_021E6050
|
|
|
|
thumb_func_start ov01_021E6058
|
|
ov01_021E6058: ; 0x021E6058
|
|
push {r3, r4, r5, lr}
|
|
sub sp, #0x68
|
|
ldr r5, _021E6128 ; =ov01_022062EC
|
|
add r3, sp, #0x58
|
|
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, _021E612C ; =ov01_02206318
|
|
add r3, sp, #0x3c
|
|
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
|
|
mov r0, #1
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
mov r3, #4
|
|
bl BG_ClearCharDataRange
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r5, _021E6130 ; =ov01_022062FC
|
|
add r3, sp, #0x20
|
|
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, #4
|
|
bl BG_ClearCharDataRange
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl BgClearTilemapBufferAndCommit
|
|
ldr r5, _021E6134 ; =ov01_02206334
|
|
add r3, sp, #4
|
|
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, #3
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
mov r3, #0
|
|
bl InitBgFromTemplate
|
|
mov r0, #3
|
|
mov r1, #0x20
|
|
mov r2, #0
|
|
mov r3, #4
|
|
bl BG_ClearCharDataRange
|
|
add r0, r4, #0
|
|
mov r1, #3
|
|
bl BgClearTilemapBufferAndCommit
|
|
mov r0, #0
|
|
add r1, sp, #0
|
|
strh r0, [r1]
|
|
mov r1, #2
|
|
bl DC_FlushRange
|
|
add r0, sp, #0
|
|
mov r1, #0
|
|
mov r2, #2
|
|
bl GX_LoadBGPltt
|
|
add sp, #0x68
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
_021E6128: .word ov01_022062EC
|
|
_021E612C: .word ov01_02206318
|
|
_021E6130: .word ov01_022062FC
|
|
_021E6134: .word ov01_02206334
|
|
thumb_func_end ov01_021E6058
|
|
|
|
thumb_func_start ov01_021E6138
|
|
ov01_021E6138: ; 0x021E6138
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
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_EngineATogglePlanes
|
|
mov r0, #8
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl FreeBgTilemapBuffer
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
bl FreeBgTilemapBuffer
|
|
add r0, r4, #0
|
|
mov r1, #3
|
|
bl FreeBgTilemapBuffer
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E6138
|
|
|
|
thumb_func_start ov01_021E6178
|
|
ov01_021E6178: ; 0x021E6178
|
|
push {lr}
|
|
sub sp, #0x14
|
|
bl NNS_G2dInitOamManagerModule
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r1, #0x7c
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #8]
|
|
mov r3, #0x1f
|
|
str r3, [sp, #0xc]
|
|
mov r2, #4
|
|
str r2, [sp, #0x10]
|
|
add r2, r0, #0
|
|
bl OamManager_Create
|
|
add sp, #0x14
|
|
pop {pc}
|
|
thumb_func_end ov01_021E6178
|
|
|
|
thumb_func_start ov01_021E619C
|
|
ov01_021E619C: ; 0x021E619C
|
|
ldr r3, _021E61A0 ; =OamManager_Free
|
|
bx r3
|
|
.balign 4, 0
|
|
_021E61A0: .word OamManager_Free
|
|
thumb_func_end ov01_021E619C
|
|
|
|
thumb_func_start ov01_021E61A4
|
|
ov01_021E61A4: ; 0x021E61A4
|
|
push {r4, lr}
|
|
mov r1, #0
|
|
add r4, r0, #0
|
|
add r2, r1, #0
|
|
bl ov01_021EAB44
|
|
add r0, r4, #0
|
|
mov r1, #2
|
|
mov r2, #0
|
|
bl ov01_021EAB58
|
|
add r0, r4, #0
|
|
mov r1, #0x1f
|
|
mov r2, #0
|
|
bl ov01_021EAB6C
|
|
mov r1, #2
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0xe
|
|
mov r2, #1
|
|
mov r3, #0
|
|
bl ov01_021EAB80
|
|
mov r1, #1
|
|
add r0, r4, #0
|
|
lsl r1, r1, #0x16
|
|
bl ov01_021EA910
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E61A4
|
|
|
|
thumb_func_start ov01_021E61E0
|
|
ov01_021E61E0: ; 0x021E61E0
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
ldr r4, _021E6210 ; =ov01_022062DC
|
|
add r3, sp, #0
|
|
add r2, r3, #0
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
ldmia r4!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
mov r1, #0x10
|
|
add r0, r2, #0
|
|
add r2, r1, #0
|
|
bl sub_020215C0
|
|
mov r0, #0x14
|
|
mov r1, #4
|
|
bl sub_02022588
|
|
bl sub_020216C8
|
|
bl sub_02022638
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_021E6210: .word ov01_022062DC
|
|
thumb_func_end ov01_021E61E0
|
|
|
|
thumb_func_start ov01_021E6214
|
|
ov01_021E6214: ; 0x021E6214
|
|
push {r3, lr}
|
|
bl sub_0202168C
|
|
bl sub_02022608
|
|
pop {r3, pc}
|
|
thumb_func_end ov01_021E6214
|
|
|
|
thumb_func_start ov01_021E6220
|
|
ov01_021E6220: ; 0x021E6220
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #0x88
|
|
add r4, r0, #0
|
|
bl Thunk_G3X_Reset
|
|
bl Camera_PushLookAtToNNSGlb
|
|
ldr r0, [r4, #0x2c]
|
|
ldr r1, [r4, #0x48]
|
|
bl ov01_021F61A8
|
|
add r0, r4, #0
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
ldr r1, [r4, #0x34]
|
|
bl ov01_021F3C9C
|
|
ldr r1, [r4, #0x24]
|
|
add r0, sp, #0
|
|
bl Camera_GetAngle
|
|
add r2, sp, #0
|
|
ldrh r2, [r2]
|
|
mov r0, #0x47
|
|
lsl r0, r0, #2
|
|
neg r2, r2
|
|
lsl r2, r2, #0x10
|
|
lsr r2, r2, #0x10
|
|
asr r2, r2, #4
|
|
lsl r2, r2, #1
|
|
add r2, r2, #1
|
|
lsl r3, r2, #1
|
|
ldr r2, _021E630C ; =FX_SinCosTable_
|
|
ldr r0, [r4, r0]
|
|
ldrsh r2, [r2, r3]
|
|
lsl r0, r0, #0xc
|
|
asr r1, r0, #0x1f
|
|
asr r3, r2, #0x1f
|
|
bl _ll_mul
|
|
mov r2, #2
|
|
mov r3, #0
|
|
lsl r2, r2, #0xa
|
|
add r2, r0, r2
|
|
adc r1, r3
|
|
lsl r0, r1, #0x14
|
|
lsr r2, r2, #0xc
|
|
ldr r6, _021E6310 ; =NNS_G3dGlb + 0x8
|
|
orr r2, r0
|
|
add r5, sp, #0x48
|
|
mov r3, #8
|
|
_021E6286:
|
|
ldmia r6!, {r0, r1}
|
|
stmia r5!, {r0, r1}
|
|
sub r3, r3, #1
|
|
bne _021E6286
|
|
add r6, sp, #0x48
|
|
add r5, sp, #8
|
|
mov r3, #8
|
|
_021E6294:
|
|
ldmia r6!, {r0, r1}
|
|
stmia r5!, {r0, r1}
|
|
sub r3, r3, #1
|
|
bne _021E6294
|
|
ldr r0, [sp, #0x30]
|
|
asr r3, r2, #0x1f
|
|
asr r1, r0, #0x1f
|
|
bl _ll_mul
|
|
mov r3, #2
|
|
mov r5, #0
|
|
lsl r3, r3, #0xa
|
|
add r3, r0, r3
|
|
adc r1, r5
|
|
lsl r0, r1, #0x14
|
|
lsr r1, r3, #0xc
|
|
ldr r2, [sp, #0x40]
|
|
orr r1, r0
|
|
add r0, r2, r1
|
|
str r0, [sp, #0x40]
|
|
ldr r1, _021E6310 ; =NNS_G3dGlb + 0x8
|
|
add r0, sp, #8
|
|
mov r2, #0x40
|
|
bl MIi_CpuCopyFast
|
|
ldr r1, _021E6314 ; =NNS_G3dGlb + 0x80
|
|
mov r0, #0x50
|
|
ldr r2, [r1, #0x7c]
|
|
bic r2, r0
|
|
str r2, [r1, #0x7c]
|
|
bl NNS_G3dGlbFlushP
|
|
ldr r0, [r4, #0x44]
|
|
bl ov01_021F13EC
|
|
bl sub_020237B0
|
|
ldr r1, _021E6310 ; =NNS_G3dGlb + 0x8
|
|
add r0, sp, #0x48
|
|
mov r2, #0x40
|
|
bl MIi_CpuCopyFast
|
|
ldr r1, _021E6314 ; =NNS_G3dGlb + 0x80
|
|
mov r0, #0x50
|
|
ldr r2, [r1, #0x7c]
|
|
bic r2, r0
|
|
str r2, [r1, #0x7c]
|
|
bl NNS_G3dGlbFlushP
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #4]
|
|
bl ov01_021E6768
|
|
ldr r1, _021E6318 ; =gG3dDepthBufferingMode
|
|
add r0, r5, #0
|
|
ldr r1, [r1]
|
|
bl sub_02026E50
|
|
add sp, #0x88
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_021E630C: .word FX_SinCosTable_
|
|
_021E6310: .word NNS_G3dGlb + 0x8
|
|
_021E6314: .word NNS_G3dGlb + 0x80
|
|
_021E6318: .word gG3dDepthBufferingMode
|
|
thumb_func_end ov01_021E6220
|
|
|
|
thumb_func_start ov01_021E631C
|
|
ov01_021E631C: ; 0x021E631C
|
|
cmp r1, #1
|
|
bne _021E6330
|
|
add r1, r0, #0
|
|
add r1, #0xbc
|
|
ldr r2, [r1]
|
|
mov r1, #4
|
|
orr r1, r2
|
|
add r0, #0xbc
|
|
str r1, [r0]
|
|
bx lr
|
|
_021E6330:
|
|
add r1, r0, #0
|
|
add r1, #0xbc
|
|
ldr r2, [r1]
|
|
mov r1, #4
|
|
bic r2, r1
|
|
add r0, #0xbc
|
|
str r2, [r0]
|
|
bx lr
|
|
thumb_func_end ov01_021E631C
|
|
|
|
thumb_func_start ov01_021E6340
|
|
ov01_021E6340: ; 0x021E6340
|
|
cmp r1, #1
|
|
bne _021E6354
|
|
add r1, r0, #0
|
|
add r1, #0xbc
|
|
ldr r2, [r1]
|
|
mov r1, #1
|
|
orr r1, r2
|
|
add r0, #0xbc
|
|
str r1, [r0]
|
|
bx lr
|
|
_021E6354:
|
|
add r1, r0, #0
|
|
add r1, #0xbc
|
|
ldr r2, [r1]
|
|
mov r1, #1
|
|
bic r2, r1
|
|
add r0, #0xbc
|
|
str r2, [r0]
|
|
bx lr
|
|
thumb_func_end ov01_021E6340
|
|
|
|
thumb_func_start ov01_021E6364
|
|
ov01_021E6364: ; 0x021E6364
|
|
mov r1, #0xf
|
|
add r0, #0xbc
|
|
str r1, [r0]
|
|
bx lr
|
|
thumb_func_end ov01_021E6364
|
|
|
|
thumb_func_start ov01_021E636C
|
|
ov01_021E636C: ; 0x021E636C
|
|
push {lr}
|
|
sub sp, #0xc
|
|
cmp r0, #1
|
|
bne _021E638E
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r1, #1
|
|
str r1, [sp, #4]
|
|
mov r0, #4
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
add r2, r1, #0
|
|
add r3, r0, #0
|
|
bl BeginNormalPaletteFade
|
|
add sp, #0xc
|
|
pop {pc}
|
|
_021E638E:
|
|
cmp r0, #0
|
|
bne _021E63AE
|
|
mov r0, #6
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #4
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
add r2, r0, #0
|
|
add r3, r0, #0
|
|
bl BeginNormalPaletteFade
|
|
add sp, #0xc
|
|
pop {pc}
|
|
_021E63AE:
|
|
bl GF_AssertFail
|
|
add sp, #0xc
|
|
pop {pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E636C
|
|
|
|
thumb_func_start ov01_021E63B8
|
|
ov01_021E63B8: ; 0x021E63B8
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
ldr r0, _021E6454 ; =gG3dDepthBufferingMode
|
|
ldr r0, [r0]
|
|
lsl r1, r0, #1
|
|
ldr r0, _021E6458 ; =0x04000540
|
|
str r1, [r0]
|
|
ldr r0, [r5, #0x20]
|
|
ldr r0, [r0]
|
|
bl MapHeader_GetAreaDataBank
|
|
bl ov01_021FB888
|
|
str r0, [r5, #0x34]
|
|
bl ov01_021FB934
|
|
add r3, r0, #0
|
|
ldr r1, _021E645C ; =0x00000226
|
|
mov r0, #4
|
|
mov r2, #0x80
|
|
bl ov01_02204004
|
|
add r1, r5, #0
|
|
add r1, #0xc0
|
|
str r0, [r1]
|
|
ldr r0, [r5, #0x20]
|
|
ldr r0, [r0]
|
|
bl MapHeader_GetMoveModelBank
|
|
add r4, r0, #0
|
|
ldr r0, [r5, #0x38]
|
|
cmp r0, #0
|
|
beq _021E6406
|
|
bl GF_AssertFail
|
|
_021E6406:
|
|
mov r0, #4
|
|
add r1, r4, #0
|
|
bl ov01_021E6644
|
|
str r0, [r5, #0x38]
|
|
mov r0, #4
|
|
bl ov01_022041C4
|
|
add r1, r5, #0
|
|
add r1, #0xc8
|
|
str r0, [r1]
|
|
add r0, r5, #0
|
|
add r0, #0xc8
|
|
ldr r0, [r0]
|
|
bl ov01_0220460C
|
|
add r1, r5, #0
|
|
add r1, #0xcc
|
|
str r0, [r1]
|
|
mov r0, #4
|
|
bl ov01_02204744
|
|
mov r1, #0x41
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
ldr r0, [r5, #0x34]
|
|
bl ov01_021FB904
|
|
add r1, r5, #0
|
|
add r1, #0xc8
|
|
ldr r1, [r1]
|
|
bl ov01_021E87E4
|
|
str r0, [r5, #0x54]
|
|
bl ov01_021E8DB4
|
|
str r0, [r5, #0x58]
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021E6454: .word gG3dDepthBufferingMode
|
|
_021E6458: .word 0x04000540
|
|
_021E645C: .word 0x00000226
|
|
thumb_func_end ov01_021E63B8
|
|
|
|
thumb_func_start ov01_021E6460
|
|
ov01_021E6460: ; 0x021E6460
|
|
push {r3, r4, lr}
|
|
sub sp, #0xc
|
|
add r4, r0, #0
|
|
add r0, #0xcc
|
|
ldr r0, [r0]
|
|
add r2, r4, #0
|
|
str r0, [sp]
|
|
ldr r0, [r4, #0x64]
|
|
add r2, #0xc0
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #0xc]
|
|
str r0, [sp, #8]
|
|
ldr r0, [r4, #0x30]
|
|
ldr r1, [r4, #0x34]
|
|
ldr r2, [r2]
|
|
ldr r3, [r4, #0x54]
|
|
bl ov01_021F6020
|
|
str r0, [r4, #0x2c]
|
|
mov r0, #8
|
|
mov r1, #4
|
|
bl ov01_021FB3A4
|
|
add r1, r4, #0
|
|
add r1, #0x98
|
|
str r0, [r1]
|
|
ldr r2, [r4, #0x20]
|
|
ldr r0, [r4, #0x2c]
|
|
ldr r1, [r2, #8]
|
|
ldr r2, [r2, #0xc]
|
|
bl ov01_021F6118
|
|
add sp, #0xc
|
|
pop {r3, r4, pc}
|
|
thumb_func_end ov01_021E6460
|
|
|
|
thumb_func_start ov01_021E64A4
|
|
ov01_021E64A4: ; 0x021E64A4
|
|
push {r3, r4, r5, r6, lr}
|
|
sub sp, #0x14
|
|
mov r1, #0x17
|
|
mov r2, #4
|
|
add r5, r0, #0
|
|
bl ov01_021F1348
|
|
mov r1, #0x50
|
|
str r0, [r5, #0x44]
|
|
bl ov01_021F1384
|
|
mov r2, #0x20
|
|
str r2, [sp]
|
|
mov r0, #5
|
|
str r2, [sp, #4]
|
|
lsl r0, r0, #0xc
|
|
str r0, [sp, #8]
|
|
lsl r0, r2, #6
|
|
str r0, [sp, #0xc]
|
|
lsl r0, r2, #0xb
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [r5, #0x44]
|
|
mov r1, #4
|
|
add r3, r2, #0
|
|
bl ov01_021F1390
|
|
add r0, r5, #0
|
|
mov r1, #4
|
|
bl sub_02055680
|
|
ldr r1, [r5, #4]
|
|
str r0, [r1, #0x18]
|
|
ldr r0, [r5, #0x70]
|
|
cmp r0, #2
|
|
bne _021E64F2
|
|
ldr r0, [r5, #0x3c]
|
|
mov r1, #0
|
|
bl sub_0205F5F8
|
|
_021E64F2:
|
|
ldr r0, [r5, #0x44]
|
|
ldr r1, _021E657C ; =ov01_02208BFC
|
|
bl ov01_021F13D0
|
|
ldr r0, [r5, #0x70]
|
|
mov r4, #0xa
|
|
cmp r0, #2
|
|
bne _021E6504
|
|
mov r4, #5
|
|
_021E6504:
|
|
ldr r0, [r5, #0x38]
|
|
bl ov01_021E669C
|
|
add r6, r0, #0
|
|
ldr r0, [r5, #0x38]
|
|
bl ov01_021E6698
|
|
str r4, [sp]
|
|
add r3, r0, #0
|
|
ldr r0, [r5, #0x3c]
|
|
mov r1, #0x20
|
|
add r2, r6, #3
|
|
bl ov01_021F91F8
|
|
ldr r0, [r5, #0x3c]
|
|
bl ov01_022057DC
|
|
ldr r0, [r5, #0x44]
|
|
bl ov01_021FD3F8
|
|
ldr r0, [r5, #0x40]
|
|
bl sub_0205C46C
|
|
add r0, r5, #0
|
|
add r0, #0xac
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldr r0, [r5, #0x3c]
|
|
beq _021E6544
|
|
bl sub_0205E580
|
|
b _021E654E
|
|
_021E6544:
|
|
bl sub_0205E520
|
|
add r0, r5, #0
|
|
bl ov01_022059AC
|
|
_021E654E:
|
|
bl sub_02057FA4
|
|
add r0, r5, #0
|
|
add r0, #0xac
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldr r0, [r5, #0x3c]
|
|
beq _021E6566
|
|
mov r1, #2
|
|
bl MapObjectManager_ClearFlagsBits
|
|
b _021E656A
|
|
_021E6566:
|
|
bl sub_0205F568
|
|
_021E656A:
|
|
ldr r0, [r5, #0x40]
|
|
bl PlayerAvatar_GetPositionVecConst
|
|
ldr r1, [r5, #0x2c]
|
|
bl ov01_021F62E8
|
|
add sp, #0x14
|
|
pop {r3, r4, r5, r6, pc}
|
|
nop
|
|
_021E657C: .word ov01_02208BFC
|
|
thumb_func_end ov01_021E64A4
|
|
|
|
thumb_func_start ov01_021E6580
|
|
ov01_021E6580: ; 0x021E6580
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
mov r0, #1
|
|
add r1, r0, #0
|
|
bl GfGfx_EngineATogglePlanes
|
|
bl GfGfx_BothDispOn
|
|
bl ov01_021EA8E0
|
|
str r0, [r4, #0x48]
|
|
bl ov01_021E61A4
|
|
bl ov01_021EA824
|
|
str r0, [r4, #0x4c]
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_LocalFieldData_Get
|
|
bl LocalFieldData_GetCameraType
|
|
add r5, r0, #0
|
|
ldr r0, [r4, #0x40]
|
|
bl PlayerAvatar_GetPositionVecConst
|
|
add r1, r4, #0
|
|
add r2, r5, #0
|
|
mov r3, #1
|
|
bl ov01_021EABA8
|
|
ldr r0, [r4, #0x34]
|
|
bl ov01_021FBA14
|
|
add r5, r0, #0
|
|
cmp r5, #3
|
|
bne _021E65D8
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_VarsFlags_Get
|
|
bl CheckFlag96A
|
|
cmp r0, #0
|
|
beq _021E65D8
|
|
mov r5, #4
|
|
_021E65D8:
|
|
ldr r0, [r4, #0x48]
|
|
add r1, r5, #0
|
|
bl ov01_021EA220
|
|
str r0, [r4, #0x50]
|
|
add r0, r4, #0
|
|
bl ov01_021EB1F4
|
|
ldr r1, [r4, #4]
|
|
str r0, [r1, #0xc]
|
|
ldr r0, [r4, #8]
|
|
bl ov01_021EF9E0
|
|
ldr r1, [r4, #4]
|
|
str r0, [r1, #8]
|
|
mov r0, #4
|
|
bl ov01_021F3D38
|
|
str r0, [r4, #0x68]
|
|
bl ov01_021EAFD4
|
|
ldr r1, [r4, #4]
|
|
str r0, [r1, #0x10]
|
|
ldr r0, [r4, #0x34]
|
|
bl ov01_021FB9CC
|
|
add r1, r0, #0
|
|
ldr r0, [r4, #4]
|
|
ldr r0, [r0, #0x10]
|
|
bl ov01_021EB00C
|
|
add r0, r4, #0
|
|
bl sub_020648EC
|
|
ldr r0, _021E6628 ; =ov01_021E5900
|
|
add r1, r4, #0
|
|
bl Main_SetVBlankIntrCB
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_021E6628: .word ov01_021E5900
|
|
thumb_func_end ov01_021E6580
|
|
|
|
thumb_func_start ov01_021E662C
|
|
ov01_021E662C: ; 0x021E662C
|
|
push {r3, lr}
|
|
bl CARD_SpiWaitGetStatus
|
|
bl CARD_SpiWaitGetStatus
|
|
cmp r0, #0xaa
|
|
bne _021E663E
|
|
mov r0, #1
|
|
pop {r3, pc}
|
|
_021E663E:
|
|
mov r0, #0
|
|
pop {r3, pc}
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E662C
|
|
|
|
thumb_func_start ov01_021E6644
|
|
ov01_021E6644: ; 0x021E6644
|
|
push {r4, r5, r6, lr}
|
|
add r6, r1, #0
|
|
add r5, r0, #0
|
|
mov r1, #0x64
|
|
bl AllocFromHeap
|
|
add r4, r0, #0
|
|
mov r0, #0x5c
|
|
add r1, r6, #0
|
|
add r2, r5, #0
|
|
bl AllocAtEndAndReadWholeNarcMemberByIdPair
|
|
ldr r1, _021E6694 ; =0x0000FFFF
|
|
mov r2, #0
|
|
add r3, r4, #0
|
|
_021E6662:
|
|
add r2, r2, #1
|
|
str r1, [r3, #4]
|
|
add r3, r3, #4
|
|
cmp r2, #0x18
|
|
blt _021E6662
|
|
ldr r5, _021E6694 ; =0x0000FFFF
|
|
mov r3, #0
|
|
add r1, r0, #0
|
|
add r2, r4, #0
|
|
_021E6674:
|
|
ldrh r6, [r1]
|
|
str r6, [r2, #4]
|
|
ldrh r6, [r1]
|
|
cmp r6, r5
|
|
beq _021E6688
|
|
add r3, r3, #1
|
|
add r1, r1, #2
|
|
add r2, r2, #4
|
|
cmp r3, #0x18
|
|
blt _021E6674
|
|
_021E6688:
|
|
strh r3, [r4]
|
|
bl FreeToHeap
|
|
add r0, r4, #0
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_021E6694: .word 0x0000FFFF
|
|
thumb_func_end ov01_021E6644
|
|
|
|
thumb_func_start ov01_021E6698
|
|
ov01_021E6698: ; 0x021E6698
|
|
add r0, r0, #4
|
|
bx lr
|
|
thumb_func_end ov01_021E6698
|
|
|
|
thumb_func_start ov01_021E669C
|
|
ov01_021E669C: ; 0x021E669C
|
|
ldrh r0, [r0]
|
|
bx lr
|
|
thumb_func_end ov01_021E669C
|
|
|
|
thumb_func_start ov01_021E66A0
|
|
ov01_021E66A0: ; 0x021E66A0
|
|
ldr r3, _021E66A4 ; =FreeToHeap
|
|
bx r3
|
|
.balign 4, 0
|
|
_021E66A4: .word FreeToHeap
|
|
thumb_func_end ov01_021E66A0
|
|
|
|
thumb_func_start ov01_021E66A8
|
|
ov01_021E66A8: ; 0x021E66A8
|
|
ldr r3, _021E66B4 ; =AllocFromHeapAtEnd
|
|
mov r1, #0xfa
|
|
mov r0, #3
|
|
lsl r1, r1, #2
|
|
bx r3
|
|
nop
|
|
_021E66B4: .word AllocFromHeapAtEnd
|
|
thumb_func_end ov01_021E66A8
|
|
|
|
thumb_func_start ov01_021E66B8
|
|
ov01_021E66B8: ; 0x021E66B8
|
|
ldr r3, _021E66C4 ; =AllocFromHeapAtEnd
|
|
mov r1, #0xfa
|
|
mov r0, #3
|
|
lsl r1, r1, #2
|
|
bx r3
|
|
nop
|
|
_021E66C4: .word AllocFromHeapAtEnd
|
|
thumb_func_end ov01_021E66B8
|
|
|
|
thumb_func_start ov01_021E66C8
|
|
ov01_021E66C8: ; 0x021E66C8
|
|
ldr r3, _021E66D4 ; =AllocFromHeapAtEnd
|
|
mov r1, #0xfa
|
|
mov r0, #3
|
|
lsl r1, r1, #2
|
|
bx r3
|
|
nop
|
|
_021E66D4: .word AllocFromHeapAtEnd
|
|
thumb_func_end ov01_021E66C8
|
|
|
|
thumb_func_start ov01_021E66D8
|
|
ov01_021E66D8: ; 0x021E66D8
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E66D8
|
|
|
|
thumb_func_start ov01_021E66DC
|
|
ov01_021E66DC: ; 0x021E66DC
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E66DC
|
|
|
|
thumb_func_start ov01_021E66E0
|
|
ov01_021E66E0: ; 0x021E66E0
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end ov01_021E66E0
|
|
|
|
.rodata
|
|
|
|
ov01_022062DC:
|
|
.byte 0x14, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00
|
|
|
|
ov01_022062EC: ; 0x022062EC
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
|
|
ov01_022062FC: ; 0x022062FC
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x05
|
|
.byte 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov01_02206318: ; 0x02206318
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov01_02206334: ; 0x02206334
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
ov01_02206350: ; 0x02206350
|
|
.byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x03, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
|