mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-26 08:17:27 -05:00
1260 lines
22 KiB
ArmAsm
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}
|