pokediamond/arm9/asm/unk_020476CC.s

1260 lines
22 KiB
ArmAsm

.include "asm/macros.inc"
.include "global.inc"
.section .rodata
.global UNK_020F45F8
UNK_020F45F8: ; 0x020F45F8
.byte 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
.byte 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00
.byte 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00
.text
thumb_func_start BattleSetup_New
BattleSetup_New: ; 0x020476CC
push {r3-r7, lr}
add r4, r1, #0x0
mov r1, #0x67
lsl r1, r1, #0x2
add r5, r0, #0x0
bl Heap_Alloc
mov r2, #0x67
mov r1, #0x0
lsl r2, r2, #0x2
add r7, r0, #0x0
bl MI_CpuFill8
mov r1, #0x63
str r4, [r7, #0x0]
mov r0, #0x0
lsl r1, r1, #0x2
str r0, [r7, r1]
add r4, r7, #0x0
str r0, [sp, #0x0]
str r0, [r7, #0x14]
add r6, r7, #0x0
add r4, #0x28
_020476FA:
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x34
str r0, [r6, #0x18]
bl MIi_CpuClear32
ldr r0, [sp, #0x0]
add r6, r6, #0x4
add r0, r0, #0x1
add r4, #0x34
str r0, [sp, #0x0]
cmp r0, #0x4
blt _020476FA
mov r0, #0x15
lsl r0, r0, #0x4
mov r6, #0x0
str r6, [r7, r0]
mov r2, #0xc
add r1, r0, #0x4
str r2, [r7, r1]
add r1, r0, #0x0
add r1, #0x8
str r6, [r7, r1]
add r1, r0, #0x0
add r1, #0x10
str r6, [r7, r1]
add r1, r0, #0x0
add r1, #0x14
str r6, [r7, r1]
add r1, r0, #0x0
mov r2, #0x1
add r1, #0x18
str r2, [r7, r1]
add r1, r0, #0x0
add r1, #0x1c
str r2, [r7, r1]
add r0, #0x24
str r6, [r7, r0]
add r4, r7, #0x0
_02047748:
add r0, r5, #0x0
bl SaveArray_Party_Alloc
str r0, [r4, #0x4]
add r6, r6, #0x1
add r4, r4, #0x4
cmp r6, #0x4
blt _02047748
mov r6, #0x0
add r4, r7, #0x0
_0204775C:
add r0, r5, #0x0
bl PlayerProfile_New
add r1, r4, #0x0
add r1, #0xf8
add r6, r6, #0x1
add r4, r4, #0x4
str r0, [r1, #0x0]
cmp r6, #0x4
blt _0204775C
mov r6, #0x0
add r4, r7, #0x0
_02047774:
add r0, r5, #0x0
bl Chatot_New
mov r1, #0x46
lsl r1, r1, #0x2
str r0, [r4, r1]
add r6, r6, #0x1
add r4, r4, #0x4
cmp r6, #0x4
blt _02047774
add r0, r5, #0x0
bl Save_Bag_New
mov r1, #0x42
lsl r1, r1, #0x2
str r0, [r7, r1]
add r0, r5, #0x0
bl Save_Pokedex_New
mov r1, #0x11
lsl r1, r1, #0x4
str r0, [r7, r1]
add r0, r5, #0x0
bl Options_New
mov r1, #0x13
lsl r1, r1, #0x4
str r0, [r7, r1]
add r0, r5, #0x0
bl sub_02061008
mov r2, #0x4d
lsl r2, r2, #0x2
str r0, [r7, r2]
add r0, r2, #0x0
mov r1, #0x0
sub r0, #0x28
str r1, [r7, r0]
add r0, r2, #0x0
add r0, #0x5c
str r1, [r7, r0]
add r0, r2, #0x0
sub r0, #0x8
str r1, [r7, r0]
add r0, r2, #0x0
add r0, #0x10
str r1, [r7, r0]
add r0, r2, #0x0
add r0, #0x14
str r1, [r7, r0]
add r0, r2, #0x0
add r0, #0x60
str r1, [r7, r0]
add r0, r2, #0x4
add r0, r7, r0
mov r2, #0xc
bl MI_CpuFill8
add r0, r7, #0x0
pop {r3-r7, pc}
thumb_func_start sub_020477EC
sub_020477EC: ; 0x020477EC
push {r4, lr}
add r4, r1, #0x0
mov r1, #0x20
bl BattleSetup_New
mov r1, #0x19
lsl r1, r1, #0x4
str r4, [r0, r1]
pop {r4, pc}
.balign 4
thumb_func_start sub_02047800
sub_02047800: ; 0x02047800
push {r4, lr}
add r4, r1, #0x0
mov r1, #0x2
lsl r1, r1, #0x8
bl BattleSetup_New
mov r1, #0x19
lsl r1, r1, #0x4
str r4, [r0, r1]
pop {r4, pc}
thumb_func_start sub_02047814
sub_02047814: ; 0x02047814
push {r4-r7, lr}
sub sp, #0x1c
add r5, r1, #0x0
add r6, r0, #0x0
ldr r0, [r5, #0xc]
bl Save_PlayerData_GetProfile
str r0, [sp, #0x10]
ldr r0, [r5, #0xc]
bl Save_PlayerData_GetOptionsAddr
mov r1, #0x1
str r0, [sp, #0x14]
add r0, r6, #0x0
lsl r1, r1, #0xa
bl BattleSetup_New
add r4, r0, #0x0
ldr r2, _0204795C ; =0x000001F1
mov r0, #0x1
mov r1, #0x1a
add r3, r6, #0x0
bl NewMsgDataFromNarc
str r0, [sp, #0x18]
mov r0, #0x8
add r1, r6, #0x0
bl String_New
add r7, r0, #0x0
ldr r0, [sp, #0x10]
bl PlayerProfile_GetTrainerGender
add r2, r0, #0x0
mov r1, #0x1
eor r1, r2
ldr r0, [sp, #0x18]
add r2, r7, #0x0
bl ReadMsgDataIntoString
add r0, r7, #0x0
bl String_c_str
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
bl CopyPlayerName
add r0, r7, #0x0
bl String_Delete
ldr r0, [sp, #0x18]
bl DestroyMsgData
ldr r0, [sp, #0x10]
bl PlayerProfile_GetTrainerGender
add r2, r0, #0x0
add r0, r4, #0x0
add r0, #0xf8
mov r1, #0x1
ldr r0, [r0, #0x0]
eor r1, r2
bl PlayerProfile_SetTrainerGender
add r0, r4, #0x0
add r1, r5, #0x0
bl sub_0204806C
mov r1, #0x13
lsl r1, r1, #0x4
ldr r0, [sp, #0x14]
ldr r1, [r4, r1]
bl Options_Copy
add r0, r5, #0x0
bl Script_GetTimeOfDay
mov r1, #0x16
lsl r1, r1, #0x4
str r0, [r4, r1]
sub r1, #0x58
ldr r0, [r4, r1]
mov r1, #0x4
mov r2, #0x14
add r3, r6, #0x0
bl Bag_AddItem
add r0, r6, #0x0
bl AllocMonZeroed
add r6, r0, #0x0
ldr r0, [r5, #0xc]
bl Save_VarsFlags_Get
bl sub_0205F3C0
mov r2, #0x0
str r2, [sp, #0x0]
add r1, r0, #0x0
str r2, [sp, #0x4]
mov r0, #0x2
str r0, [sp, #0x8]
str r2, [sp, #0xc]
add r0, r6, #0x0
mov r2, #0x5
mov r3, #0x20
bl CreateMon
ldr r0, [r4, #0x4]
add r1, r6, #0x0
bl Party_AddMon
mov r0, #0x0
str r0, [sp, #0x0]
str r0, [sp, #0x4]
mov r2, #0x2
str r2, [sp, #0x8]
str r0, [sp, #0xc]
ldr r1, _02047960 ; =0x0000018F
add r0, r6, #0x0
mov r3, #0x20
bl CreateMon
ldr r0, [r4, #0x8]
add r1, r6, #0x0
bl Party_AddMon
add r0, r6, #0x0
bl Heap_Free
ldr r0, [r5, #0xc]
bl SaveArray_PCStorage_Get
mov r1, #0x45
lsl r1, r1, #0x2
str r0, [r4, r1]
add r0, r5, #0x0
add r0, #0x94
ldr r0, [r0, #0x0]
sub r1, #0x8
str r0, [r4, r1]
ldr r0, [r5, #0xc]
bl Save_GameStats_Get
mov r1, #0x51
lsl r1, r1, #0x2
str r0, [r4, r1]
add r0, r5, #0x0
add r0, #0x98
ldr r2, [r0, #0x0]
add r0, r1, #0x4
str r2, [r4, r0]
ldr r0, [r5, #0x1c]
add r1, #0x18
ldr r0, [r0, #0x0]
str r0, [r4, r1]
add r0, r4, #0x0
bl sub_020480E4
add r0, r4, #0x0
add sp, #0x1c
pop {r4-r7, pc}
.balign 4
_0204795C: .word 0x000001F1
_02047960: .word 0x0000018F
thumb_func_start BattleSetup_Delete
BattleSetup_Delete: ; 0x02047964
push {r3-r7, lr}
add r7, r0, #0x0
mov r4, #0x0
add r5, r7, #0x0
_0204796C:
ldr r0, [r5, #0x4]
cmp r0, #0x0
bne _02047976
bl GF_AssertFail
_02047976:
ldr r0, [r5, #0x4]
bl Heap_Free
add r4, r4, #0x1
add r5, r5, #0x4
cmp r4, #0x4
blt _0204796C
mov r5, #0x0
add r4, r7, #0x0
_02047988:
add r0, r4, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
cmp r0, #0x0
bne _02047996
bl GF_AssertFail
_02047996:
add r0, r4, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
bl Heap_Free
add r5, r5, #0x1
add r4, r4, #0x4
cmp r5, #0x4
blt _02047988
mov r6, #0x46
mov r5, #0x0
add r4, r7, #0x0
lsl r6, r6, #0x2
_020479B0:
ldr r0, [r4, r6]
cmp r0, #0x0
bne _020479BA
bl GF_AssertFail
_020479BA:
mov r0, #0x46
lsl r0, r0, #0x2
ldr r0, [r4, r0]
bl Heap_Free
add r5, r5, #0x1
add r4, r4, #0x4
cmp r5, #0x4
blt _020479B0
mov r0, #0x42
lsl r0, r0, #0x2
ldr r0, [r7, r0]
bl Heap_Free
mov r0, #0x11
lsl r0, r0, #0x4
ldr r0, [r7, r0]
bl Heap_Free
mov r0, #0x13
lsl r0, r0, #0x4
ldr r0, [r7, r0]
bl Heap_Free
mov r0, #0x4d
lsl r0, r0, #0x2
ldr r0, [r7, r0]
bl sub_02061020
add r0, r7, #0x0
bl Heap_Free
pop {r3-r7, pc}
thumb_func_start sub_020479FC
sub_020479FC: ; 0x020479FC
push {r4-r6, lr}
add r4, r2, #0x0
add r5, r0, #0x0
add r6, r1, #0x0
cmp r4, #0x4
blt _02047A0C
bl GF_AssertFail
_02047A0C:
lsl r0, r4, #0x2
add r0, r5, r0
ldr r0, [r0, #0x4]
add r1, r6, #0x0
bl Party_AddMon
cmp r0, #0x0
bne _02047A20
bl GF_AssertFail
_02047A20:
pop {r4-r6, pc}
.balign 4
thumb_func_start sub_02047A24
sub_02047A24: ; 0x02047A24
push {r4-r6, lr}
add r4, r2, #0x0
add r5, r0, #0x0
add r6, r1, #0x0
cmp r4, #0x4
blt _02047A34
bl GF_AssertFail
_02047A34:
lsl r1, r4, #0x2
add r1, r5, r1
ldr r1, [r1, #0x4]
add r0, r6, #0x0
bl CopyParty
pop {r4-r6, pc}
.balign 4
thumb_func_start sub_02047A44
sub_02047A44: ; 0x02047A44
push {r4-r6, lr}
add r4, r2, #0x0
add r5, r0, #0x0
add r6, r1, #0x0
cmp r4, #0x4
blt _02047A54
bl GF_AssertFail
_02047A54:
lsl r1, r4, #0x2
add r1, r5, r1
add r1, #0xf8
ldr r1, [r1, #0x0]
add r0, r6, #0x0
bl PlayerProfile_Copy
pop {r4-r6, pc}
thumb_func_start sub_02047A64
sub_02047A64: ; 0x02047A64
lsl r2, r2, #0x2
add r2, r0, r2
mov r0, #0x46
lsl r0, r0, #0x2
ldr r3, _02047A74 ; =Chatot_Copy
ldr r0, [r2, r0]
bx r3
nop
_02047A74: .word Chatot_Copy
thumb_func_start sub_02047A78
sub_02047A78: ; 0x02047A78
push {r4-r7, lr}
sub sp, #0x14
add r4, r1, #0x0
add r5, r0, #0x0
ldr r0, [r4, #0xc]
bl Save_PlayerData_GetProfile
add r6, r0, #0x0
ldr r0, [r4, #0xc]
bl SaveArray_Party_Get
add r7, r0, #0x0
ldr r0, [r4, #0xc]
bl Save_Bag_Get
str r0, [sp, #0x0]
ldr r0, [r4, #0xc]
bl Save_Pokedex_Get
str r0, [sp, #0x4]
ldr r0, [r4, #0xc]
bl Save_Chatot_Get
str r0, [sp, #0x8]
ldr r0, [r4, #0xc]
bl Save_PlayerData_GetOptionsAddr
str r0, [sp, #0xc]
ldr r0, [r4, #0xc]
bl Save_LocalFieldData_Get
str r0, [sp, #0x10]
add r0, r5, #0x0
add r1, r4, #0x0
bl sub_0204806C
add r0, r5, #0x0
add r1, r6, #0x0
mov r2, #0x0
bl sub_02047A44
add r0, r5, #0x0
add r1, r7, #0x0
mov r2, #0x0
bl sub_02047A24
mov r1, #0x42
lsl r1, r1, #0x2
ldr r0, [sp, #0x0]
ldr r1, [r5, r1]
bl Save_Bag_Copy
mov r1, #0x11
lsl r1, r1, #0x4
ldr r0, [sp, #0x4]
ldr r1, [r5, r1]
bl Save_Pokedex_Copy
mov r1, #0x13
lsl r1, r1, #0x4
ldr r0, [sp, #0xc]
ldr r1, [r5, r1]
bl Options_Copy
ldr r1, [sp, #0x8]
add r0, r5, #0x0
mov r2, #0x0
bl sub_02047A64
ldr r0, [r4, #0xc]
bl SaveArray_PCStorage_Get
mov r1, #0x45
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
bl MapHeader_GetMapSec
mov r1, #0x56
lsl r1, r1, #0x2
str r0, [r5, r1]
add r0, r4, #0x0
bl Script_GetTimeOfDay
mov r1, #0x16
lsl r1, r1, #0x4
str r0, [r5, r1]
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
bl MapHeader_GetMapEvolutionMethod
mov r1, #0x59
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [r4, #0xc]
bl sub_02079C70
mov r1, #0x5a
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [r4, #0xc]
bl Save_VarsFlags_Get
bl sub_0205F1B4
mov r1, #0x5b
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [sp, #0x10]
bl LocalFieldData_GetWeatherType
mov r1, #0x5d
lsl r1, r1, #0x2
str r0, [r5, r1]
add r0, r4, #0x0
add r0, #0x94
ldr r0, [r0, #0x0]
sub r1, #0x68
str r0, [r5, r1]
ldr r0, [r4, #0xc]
bl Save_Poketch_Get
mov r1, #0x4a
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [r4, #0xc]
bl sub_02029AFC
mov r1, #0x4b
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [r4, #0xc]
bl Save_GameStats_Get
mov r1, #0x51
lsl r1, r1, #0x2
str r0, [r5, r1]
add r0, r4, #0x0
add r0, #0x98
ldr r2, [r0, #0x0]
add r0, r1, #0x4
str r2, [r5, r0]
ldr r0, [r4, #0xc]
bl sub_020254C0
mov r1, #0x53
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [r4, #0x1c]
add r1, #0x10
ldr r0, [r0, #0x0]
str r0, [r5, r1]
add sp, #0x14
pop {r4-r7, pc}
.balign 4
thumb_func_start BattleSetup_InitFromFieldSystem
BattleSetup_InitFromFieldSystem: ; 0x02047BB0
push {r4, lr}
add r4, r0, #0x0
bl sub_02047A78
add r0, r4, #0x0
bl sub_020480E4
pop {r4, pc}
thumb_func_start sub_02047BC0
sub_02047BC0: ; 0x02047BC0
push {r4-r7, lr}
sub sp, #0x1c
add r6, r0, #0x0
add r0, r1, #0x0
ldr r0, [r0, #0xc]
str r1, [sp, #0x0]
add r7, r2, #0x0
bl Save_PlayerData_GetProfile
add r4, r0, #0x0
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl SaveArray_Party_Get
str r0, [sp, #0x14]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_Bag_Get
str r0, [sp, #0x10]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_Pokedex_Get
str r0, [sp, #0xc]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_Chatot_Get
str r0, [sp, #0x8]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_PlayerData_GetOptionsAddr
str r0, [sp, #0x4]
mov r0, #0x15
mov r1, #0x6
lsl r0, r0, #0x4
str r1, [r6, r0]
mov r1, #0x9
add r0, r0, #0x4
str r1, [r6, r0]
add r0, r6, #0x0
add r1, r4, #0x0
mov r2, #0x0
bl sub_02047A44
mov r0, #0xb
bl AllocMonZeroed
add r5, r0, #0x0
ldr r0, [sp, #0x14]
bl Party_GetCount
add r1, r0, #0x0
ldr r0, [r6, #0x4]
bl Party_InitWithMaxSize
ldr r0, [sp, #0x14]
mov r4, #0x0
bl Party_GetCount
cmp r0, #0x0
ble _02047C98
_02047C40:
ldr r0, [sp, #0x14]
add r1, r4, #0x0
bl Party_GetMonByIndex
add r1, r5, #0x0
bl CopyPokemonToPokemon
add r0, r5, #0x0
mov r1, #0xa0
mov r2, #0x0
bl GetMonData
cmp r7, r0
beq _02047C82
cmp r7, #0x0
beq _02047C82
add r0, r5, #0x0
mov r1, #0x5
mov r2, #0x0
bl GetMonData
add r1, r7, #0x0
bl GetMonExpBySpeciesAndLevel
str r0, [sp, #0x18]
add r0, r5, #0x0
mov r1, #0x8
add r2, sp, #0x18
bl SetMonData
add r0, r5, #0x0
bl CalcMonLevelAndStats
_02047C82:
add r0, r6, #0x0
add r1, r5, #0x0
mov r2, #0x0
bl sub_020479FC
ldr r0, [sp, #0x14]
add r4, r4, #0x1
bl Party_GetCount
cmp r4, r0
blt _02047C40
_02047C98:
add r0, r5, #0x0
bl Heap_Free
mov r1, #0x42
lsl r1, r1, #0x2
ldr r0, [sp, #0x10]
ldr r1, [r6, r1]
bl Save_Bag_Copy
mov r1, #0x11
lsl r1, r1, #0x4
ldr r0, [sp, #0xc]
ldr r1, [r6, r1]
bl Save_Pokedex_Copy
mov r1, #0x13
lsl r1, r1, #0x4
ldr r0, [sp, #0x4]
ldr r1, [r6, r1]
bl Options_Copy
ldr r1, [sp, #0x8]
add r0, r6, #0x0
mov r2, #0x0
bl sub_02047A64
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl SaveArray_PCStorage_Get
mov r1, #0x45
lsl r1, r1, #0x2
str r0, [r6, r1]
ldr r0, [sp, #0x0]
bl Script_GetTimeOfDay
mov r1, #0x16
lsl r1, r1, #0x4
str r0, [r6, r1]
ldr r0, [sp, #0x0]
sub r1, #0x54
add r0, #0x94
ldr r0, [r0, #0x0]
str r0, [r6, r1]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_Poketch_Get
mov r1, #0x4a
lsl r1, r1, #0x2
str r0, [r6, r1]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl sub_02029AFC
mov r1, #0x4b
lsl r1, r1, #0x2
str r0, [r6, r1]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_GameStats_Get
mov r1, #0x51
lsl r1, r1, #0x2
str r0, [r6, r1]
ldr r0, [sp, #0x0]
add r0, #0x98
ldr r2, [r0, #0x0]
add r0, r1, #0x4
str r2, [r6, r0]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl sub_020254C0
mov r1, #0x53
lsl r1, r1, #0x2
str r0, [r6, r1]
ldr r0, [sp, #0x0]
add r1, #0x10
ldr r0, [r0, #0x1c]
ldr r0, [r0, #0x0]
str r0, [r6, r1]
add r0, r6, #0x0
bl sub_020480E4
add sp, #0x1c
pop {r4-r7, pc}
.balign 4
thumb_func_start sub_02047D48
sub_02047D48: ; 0x02047D48
push {r4-r7, lr}
sub sp, #0x24
add r5, r0, #0x0
add r0, r1, #0x0
ldr r0, [r0, #0xc]
str r1, [sp, #0x0]
str r2, [sp, #0x4]
add r7, r3, #0x0
bl Save_PlayerData_GetProfile
str r0, [sp, #0x20]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_Bag_Get
str r0, [sp, #0x1c]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_Pokedex_Get
str r0, [sp, #0x18]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_Chatot_Get
str r0, [sp, #0x14]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_PlayerData_GetOptionsAddr
str r0, [sp, #0x10]
ldr r0, [sp, #0x0]
mov r1, #0x6
add r0, #0xac
ldr r0, [r0, #0x0]
mov r2, #0x0
str r0, [sp, #0xc]
mov r0, #0x15
lsl r0, r0, #0x4
str r1, [r5, r0]
mov r1, #0x9
add r0, r0, #0x4
str r1, [r5, r0]
ldr r1, [sp, #0x20]
add r0, r5, #0x0
bl sub_02047A44
cmp r7, #0x0
bne _02047DB6
ldr r1, [sp, #0x4]
add r0, r5, #0x0
mov r2, #0x0
bl sub_02047A24
b _02047E14
_02047DB6:
mov r4, #0x0
add r1, r4, #0x0
_02047DBA:
ldrb r0, [r7, r1]
cmp r0, #0x0
beq _02047DC2
add r4, r4, #0x1
_02047DC2:
add r1, r1, #0x1
cmp r1, #0x6
blt _02047DBA
cmp r4, #0x0
bne _02047DD8
ldr r1, [sp, #0x4]
add r0, r5, #0x0
mov r2, #0x0
bl sub_02047A24
b _02047E14
_02047DD8:
mov r0, #0xb
bl AllocMonZeroed
str r0, [sp, #0x8]
ldr r0, [r5, #0x4]
add r1, r4, #0x0
bl Party_InitWithMaxSize
mov r6, #0x0
cmp r4, #0x0
ble _02047E0E
_02047DEE:
ldrb r1, [r7, r6]
ldr r0, [sp, #0x4]
sub r1, r1, #0x1
bl Party_GetMonByIndex
ldr r1, [sp, #0x8]
bl CopyPokemonToPokemon
ldr r1, [sp, #0x8]
add r0, r5, #0x0
mov r2, #0x0
bl sub_020479FC
add r6, r6, #0x1
cmp r6, r4
blt _02047DEE
_02047E0E:
ldr r0, [sp, #0x8]
bl Heap_Free
_02047E14:
ldr r0, [sp, #0xc]
cmp r0, #0x0
beq _02047E2C
mov r1, #0xc
bl sub_02023B0C
cmp r0, #0x0
beq _02047E2C
mov r0, #0x65
mov r1, #0x1
lsl r0, r0, #0x2
str r1, [r5, r0]
_02047E2C:
mov r1, #0x42
lsl r1, r1, #0x2
ldr r0, [sp, #0x1c]
ldr r1, [r5, r1]
bl Save_Bag_Copy
mov r1, #0x11
lsl r1, r1, #0x4
ldr r0, [sp, #0x18]
ldr r1, [r5, r1]
bl Save_Pokedex_Copy
mov r1, #0x13
lsl r1, r1, #0x4
ldr r0, [sp, #0x10]
ldr r1, [r5, r1]
bl Options_Copy
ldr r1, [sp, #0x14]
add r0, r5, #0x0
mov r2, #0x0
bl sub_02047A64
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl SaveArray_PCStorage_Get
mov r1, #0x45
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [sp, #0x0]
bl Script_GetTimeOfDay
mov r1, #0x16
lsl r1, r1, #0x4
str r0, [r5, r1]
ldr r0, [sp, #0x0]
sub r1, #0x54
add r0, #0x94
ldr r0, [r0, #0x0]
str r0, [r5, r1]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl sub_02029AFC
mov r1, #0x4b
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl Save_GameStats_Get
mov r1, #0x51
lsl r1, r1, #0x2
str r0, [r5, r1]
ldr r0, [sp, #0x0]
add r0, #0x98
ldr r2, [r0, #0x0]
add r0, r1, #0x4
str r2, [r5, r0]
ldr r0, [sp, #0x0]
add r1, #0x18
ldr r0, [r0, #0x1c]
ldr r0, [r0, #0x0]
str r0, [r5, r1]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
bl sub_020254C0
mov r1, #0x53
lsl r1, r1, #0x2
str r0, [r5, r1]
bl sub_02033534
bl sub_0202D8B0
cmp r0, #0x0
beq _02047F10
ldr r0, [sp, #0x20]
bl PlayerProfile_GetAvatar
add r4, r0, #0x0
ldr r0, [sp, #0x20]
bl PlayerProfile_GetTrainerGender
add r1, r4, #0x0
mov r2, #0x1
bl sub_020536D0
add r1, r5, #0x0
add r1, #0x29
strb r0, [r1, #0x0]
add r0, r5, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
bl PlayerProfile_GetNamePtr
add r1, r0, #0x0
add r0, r5, #0x0
add r0, #0x3c
bl CopyU16StringArray
add r3, r5, #0x0
add r3, #0x28
add r5, #0x90
mov r2, #0x6
_02047F00:
ldmia r3!, {r0-r1}
stmia r5!, {r0-r1}
sub r2, r2, #0x1
bne _02047F00
ldr r0, [r3, #0x0]
add sp, #0x24
str r0, [r5, #0x0]
pop {r4-r7, pc}
_02047F10:
add r0, r5, #0x0
bl sub_020480E4
add sp, #0x24
pop {r4-r7, pc}
.balign 4
thumb_func_start sub_02047F1C
sub_02047F1C: ; 0x02047F1C
push {r4-r6, lr}
add r4, r1, #0x0
add r5, r0, #0x0
ldr r0, [r4, #0xc]
add r6, r2, #0x0
bl SaveArray_Party_Get
add r2, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
add r3, r6, #0x0
bl sub_02047D48
pop {r4-r6, pc}
thumb_func_start sub_02047F38
sub_02047F38: ; 0x02047F38
push {r3-r7, lr}
sub sp, #0x8
add r5, r1, #0x0
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl Save_PlayerData_GetProfile
add r6, r0, #0x0
ldr r0, [r5, #0xc]
bl SaveArray_Party_Get
add r7, r0, #0x0
ldr r0, [r5, #0xc]
bl Save_Bag_Get
str r0, [sp, #0x0]
ldr r0, [r5, #0xc]
bl Save_Pokedex_Get
str r0, [sp, #0x4]
ldr r0, [r5, #0xc]
bl Save_LocalFieldData_Get
bl LocalFieldData_GetSafariBallsCounter
add r5, r0, #0x0
add r0, r4, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
add r1, r6, #0x0
bl PlayerProfile_Copy
ldr r0, [r4, #0x4]
add r1, r7, #0x0
bl CopyParty
mov r0, #0x42
lsl r0, r0, #0x2
ldr r0, [r4, r0]
ldr r1, [sp, #0x0]
bl Save_Bag_Copy
mov r0, #0x11
lsl r0, r0, #0x4
ldr r0, [r4, r0]
ldr r1, [sp, #0x4]
bl Save_Pokedex_Copy
mov r0, #0x19
lsl r0, r0, #0x4
ldr r0, [r4, r0]
strh r0, [r5, #0x0]
add sp, #0x8
pop {r3-r7, pc}
thumb_func_start sub_02047FA4
sub_02047FA4: ; 0x02047FA4
push {r3-r5, lr}
add r5, r1, #0x0
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl Save_PlayerData_GetProfile
ldr r0, [r5, #0xc]
bl SaveArray_Party_Get
ldr r0, [r5, #0xc]
bl Save_Bag_Get
ldr r0, [r5, #0xc]
bl Save_Pokedex_Get
add r1, r0, #0x0
mov r0, #0x11
lsl r0, r0, #0x4
ldr r0, [r4, r0]
bl Save_Pokedex_Copy
pop {r3-r5, pc}
thumb_func_start sub_02047FD0
sub_02047FD0: ; 0x02047FD0
push {r3-r5, lr}
ldr r2, [r0, #0x1c]
add r4, r1, #0x0
ldr r1, [r2, #0x8]
ldr r2, [r2, #0xc]
bl GetMetatileBehavior
add r5, r0, #0x0
bl sub_020548F0
cmp r0, #0x0
beq _02047FEC
mov r0, #0x8
pop {r3-r5, pc}
_02047FEC:
add r0, r5, #0x0
bl sub_0205478C
cmp r0, #0x0
bne _02048000
add r0, r5, #0x0
bl sub_02054798
cmp r0, #0x0
beq _02048004
_02048000:
mov r0, #0x2
pop {r3-r5, pc}
_02048004:
add r0, r5, #0x0
bl sub_02054830
cmp r0, #0x0
beq _02048012
mov r0, #0x1
pop {r3-r5, pc}
_02048012:
add r0, r5, #0x0
bl sub_020549AC
cmp r0, #0x0
beq _02048020
mov r0, #0x6
pop {r3-r5, pc}
_02048020:
add r0, r5, #0x0
bl sub_02054974
cmp r0, #0x0
bne _02048034
add r0, r5, #0x0
bl sub_02054990
cmp r0, #0x0
beq _02048038
_02048034:
mov r0, #0xa
pop {r3-r5, pc}
_02048038:
add r0, r5, #0x0
bl sub_02054A3C
cmp r0, #0x0
beq _02048046
mov r0, #0x5
pop {r3-r5, pc}
_02048046:
add r0, r5, #0x0
bl sub_0205481C
cmp r0, #0x0
beq _02048054
mov r0, #0x7
pop {r3-r5, pc}
_02048054:
cmp r4, #0xc
bhs _02048060
ldr r0, _02048068 ; =UNK_020F45F8
lsl r1, r4, #0x2
ldr r0, [r0, r1]
pop {r3-r5, pc}
_02048060:
bl GF_AssertFail
mov r0, #0xc
pop {r3-r5, pc}
.balign 4
_02048068: .word UNK_020F45F8
thumb_func_start sub_0204806C
sub_0204806C: ; 0x0204806C
push {r4-r6, lr}
add r4, r1, #0x0
add r5, r0, #0x0
ldr r0, [r4, #0xc]
bl Save_LocalFieldData_Get
bl sub_02034E20
add r6, r0, #0x0
ldr r0, [r4, #0x1c]
ldr r0, [r0, #0x0]
bl MapHeader_GetBattleBg
mov r1, #0x15
lsl r1, r1, #0x4
str r0, [r5, r1]
ldr r0, [r6, #0x4]
cmp r0, #0x2
bne _02048096
mov r0, #0x1
str r0, [r5, r1]
_02048096:
mov r1, #0x15
lsl r1, r1, #0x4
ldr r1, [r5, r1]
add r0, r4, #0x0
bl sub_02047FD0
mov r1, #0x55
lsl r1, r1, #0x2
str r0, [r5, r1]
pop {r4-r6, pc}
.balign 4
thumb_func_start sub_020480AC
sub_020480AC: ; 0x020480AC
mov r1, #0x55
mov r2, #0x7
lsl r1, r1, #0x2
str r2, [r0, r1]
bx lr
.balign 4
thumb_func_start IsBattleResultWin
IsBattleResultWin: ; 0x020480B8
cmp r0, #0x2
beq _020480C0
cmp r0, #0x3
bne _020480C4
_020480C0:
mov r0, #0x0
bx lr
_020480C4:
mov r0, #0x1
bx lr
thumb_func_start sub_020480C8
sub_020480C8: ; 0x020480C8
cmp r0, #0x1
beq _020480D0
cmp r0, #0x4
bne _020480D4
_020480D0:
mov r0, #0x0
bx lr
_020480D4:
mov r0, #0x1
bx lr
thumb_func_start sub_020480D8
sub_020480D8: ; 0x020480D8
cmp r0, #0x4
bne _020480E0
mov r0, #0x0
bx lr
_020480E0:
mov r0, #0x1
bx lr
thumb_func_start sub_020480E4
sub_020480E4: ; 0x020480E4
push {r4, lr}
add r4, r0, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
bl PlayerProfile_GetTrainerGender
add r1, r4, #0x0
add r1, #0x29
strb r0, [r1, #0x0]
add r0, r4, #0x0
add r0, #0xf8
ldr r0, [r0, #0x0]
bl PlayerProfile_GetNamePtr
add r1, r0, #0x0
add r0, r4, #0x0
add r0, #0x3c
bl CopyU16StringArray
add r3, r4, #0x0
add r3, #0x28
add r4, #0x90
mov r2, #0x6
_02048112:
ldmia r3!, {r0-r1}
stmia r4!, {r0-r1}
sub r2, r2, #0x1
bne _02048112
ldr r0, [r3, #0x0]
str r0, [r4, #0x0]
pop {r4, pc}