mirror of
https://github.com/pret/pokediamond.git
synced 2026-03-21 17:54:29 -05:00
529 lines
10 KiB
ArmAsm
529 lines
10 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.section .rodata
|
|
|
|
.global UNK_020F4684
|
|
UNK_020F4684: ; 0x020F4684
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
.global UNK_020F4694
|
|
UNK_020F4694: ; 0x020F4694
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
.global UNK_020F46B0
|
|
UNK_020F46B0: ; 0x020F46B0
|
|
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_020484A8
|
|
sub_020484A8: ; 0x020484A8
|
|
push {r3-r6, lr}
|
|
sub sp, #0x14
|
|
add r5, r0, #0x0
|
|
ldr r0, [r5, #0xc]
|
|
add r6, r1, #0x0
|
|
mov r1, #0xb
|
|
add r2, sp, #0x0
|
|
bl LoadHallOfFame
|
|
add r4, r0, #0x0
|
|
ldr r0, [sp, #0x0]
|
|
cmp r0, #0x1
|
|
bne _020484C6
|
|
cmp r6, #0x0
|
|
bne _020484CC
|
|
_020484C6:
|
|
add r0, r4, #0x0
|
|
bl Save_HOF_Init
|
|
_020484CC:
|
|
ldr r0, [r5, #0xc]
|
|
bl SaveArray_Party_Get
|
|
add r6, r0, #0x0
|
|
add r0, sp, #0x4
|
|
bl GF_RTC_CopyDate
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
add r2, sp, #0x4
|
|
bl Save_HOF_RecordParty
|
|
ldr r0, [r5, #0xc]
|
|
add r1, r4, #0x0
|
|
bl SaveHallOfFame
|
|
add r0, r4, #0x0
|
|
bl Heap_Free
|
|
add sp, #0x14
|
|
pop {r3-r6, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020484F8
|
|
sub_020484F8: ; 0x020484F8
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
add r4, r0, #0x0
|
|
bl TaskManager_GetFieldSystem
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl TaskManager_GetEnvironment
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl TaskManager_GetStatePtr
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x9
|
|
bhi _02048554
|
|
add r1, r0, r0
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02048526: ; jump table (using 16-bit offset)
|
|
.short _0204853A - _02048526 - 2; case 0
|
|
.short _0204854A - _02048526 - 2; case 1
|
|
.short _02048586 - _02048526 - 2; case 2
|
|
.short _020485AE - _02048526 - 2; case 3
|
|
.short _020485C0 - _02048526 - 2; case 4
|
|
.short _020485F6 - _02048526 - 2; case 5
|
|
.short _02048612 - _02048526 - 2; case 6
|
|
.short _02048624 - _02048526 - 2; case 7
|
|
.short _02048644 - _02048526 - 2; case 8
|
|
.short _02048666 - _02048526 - 2; case 9
|
|
_0204853A:
|
|
add r0, r6, #0x0
|
|
add r1, r5, #0x4
|
|
bl sub_02038814
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_0204854A:
|
|
add r0, r6, #0x0
|
|
bl FieldSystem_ApplicationIsRunning
|
|
cmp r0, #0x0
|
|
beq _02048556
|
|
_02048554:
|
|
b _02048688
|
|
_02048556:
|
|
mov r1, #0x4
|
|
mov r0, #0x3
|
|
lsl r2, r1, #0xf
|
|
bl Heap_Create
|
|
add r0, r6, #0x0
|
|
add r1, r5, #0x0
|
|
bl sub_02048764
|
|
mov r0, #0x8
|
|
str r0, [sp, #0x0]
|
|
mov r1, #0x1
|
|
str r1, [sp, #0x4]
|
|
mov r0, #0x20
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x3
|
|
add r2, r1, #0x0
|
|
mov r3, #0x0
|
|
bl BeginNormalPaletteFade
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_02048586:
|
|
bl IsPaletteFadeFinished
|
|
cmp r0, #0x0
|
|
beq _02048688
|
|
ldr r0, [r6, #0xc]
|
|
bl Save_FileDoesNotBelongToPlayer
|
|
cmp r0, #0x0
|
|
bne _020485A8
|
|
add r0, r6, #0x0
|
|
add r1, r5, #0x0
|
|
bl sub_020487E4
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_020485A8:
|
|
mov r0, #0x7
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_020485AE:
|
|
add r0, r5, #0x0
|
|
bl sub_02048838
|
|
cmp r0, #0x0
|
|
beq _02048688
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_020485C0:
|
|
ldr r0, [r6, #0xc]
|
|
bl SaveArray_Party_Get
|
|
bl HealParty
|
|
bl Save_SetDirtyBit
|
|
ldr r0, [r6, #0xc]
|
|
bl SaveGame
|
|
add r7, r0, #0x0
|
|
ldr r1, [r5, #0x0]
|
|
add r0, r6, #0x0
|
|
bl sub_020484A8
|
|
add r0, r5, #0x0
|
|
bl sub_02048848
|
|
add r0, r6, #0x0
|
|
add r1, r5, #0x0
|
|
add r2, r7, #0x0
|
|
bl sub_02048864
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_020485F6:
|
|
add r0, r5, #0x0
|
|
bl sub_02048838
|
|
cmp r0, #0x0
|
|
beq _02048688
|
|
ldr r0, _02048690 ; =0x0000061B
|
|
bl PlaySE
|
|
mov r0, #0x12
|
|
str r0, [r5, #0x38]
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_02048612:
|
|
ldr r1, [r5, #0x38]
|
|
cmp r1, #0x0
|
|
beq _0204861E
|
|
sub r0, r1, #0x1
|
|
str r0, [r5, #0x38]
|
|
b _02048688
|
|
_0204861E:
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_02048624:
|
|
mov r0, #0x8
|
|
str r0, [sp, #0x0]
|
|
mov r1, #0x0
|
|
mov r0, #0x1
|
|
str r0, [sp, #0x4]
|
|
mov r0, #0x20
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x3
|
|
add r2, r1, #0x0
|
|
add r3, r1, #0x0
|
|
bl BeginNormalPaletteFade
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_02048644:
|
|
bl IsPaletteFadeFinished
|
|
cmp r0, #0x0
|
|
beq _02048688
|
|
add r0, r6, #0x0
|
|
add r1, r5, #0x0
|
|
bl sub_020488D4
|
|
add r5, #0x10
|
|
add r0, r6, #0x0
|
|
add r1, r5, #0x0
|
|
bl sub_02038854
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02048688
|
|
_02048666:
|
|
add r0, r6, #0x0
|
|
bl FieldSystem_ApplicationIsRunning
|
|
cmp r0, #0x0
|
|
bne _02048688
|
|
add r0, r5, #0x0
|
|
bl Heap_Free
|
|
mov r0, #0x4
|
|
bl Heap_Destroy
|
|
mov r0, #0x0
|
|
bl OS_ResetSystem
|
|
add sp, #0xc
|
|
mov r0, #0x1
|
|
pop {r4-r7, pc}
|
|
_02048688:
|
|
mov r0, #0x0
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
nop
|
|
_02048690: .word 0x0000061B
|
|
|
|
thumb_func_start CallTask_GameClear
|
|
CallTask_GameClear: ; 0x02048694
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
add r7, r0, #0x0
|
|
bl TaskManager_GetFieldSystem
|
|
add r4, r0, #0x0
|
|
mov r0, #0x20
|
|
mov r1, #0x3c
|
|
bl Heap_Alloc
|
|
add r5, r0, #0x0
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_VarsFlags_Get
|
|
add r6, r0, #0x0
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_PlayerData_GetProfile
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_LocalFieldData_Get
|
|
bl LocalFieldData_GetDynamicWarp
|
|
str r0, [sp, #0x8]
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_LocalFieldData_Get
|
|
bl LocalFieldData_GetSpecialSpawnWarpPtr
|
|
str r0, [sp, #0x4]
|
|
add r0, r6, #0x0
|
|
bl sub_0205ED0C
|
|
str r0, [r5, #0x0]
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_PlayerData_GetProfile
|
|
str r0, [r5, #0x4]
|
|
ldr r0, [r4, #0xc]
|
|
bl SaveArray_Party_Get
|
|
str r0, [r5, #0x8]
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_PlayerData_GetIGTAddr
|
|
str r0, [r5, #0xc]
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_PlayerData_GetProfile
|
|
bl PlayerProfile_GetTrainerGender
|
|
str r0, [r5, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_0205ED0C
|
|
str r0, [r5, #0x14]
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_Pokedex_Get
|
|
str r0, [r5, #0x18]
|
|
add r0, r6, #0x0
|
|
bl sub_0205ED0C
|
|
cmp r0, #0x0
|
|
bne _0204871E
|
|
add r0, r4, #0x0
|
|
bl Script_SavRTC_DateTimeTox2C
|
|
_0204871E:
|
|
ldr r0, [r4, #0xc]
|
|
bl SaveArray_Party_Get
|
|
bl GiveAllMonsTheSinnohChampRibbon
|
|
ldr r0, [sp, #0x8]
|
|
bl sub_020377B0
|
|
ldr r0, [sp, #0x4]
|
|
bl sub_020377C8
|
|
add r0, r6, #0x0
|
|
bl sub_0205F154
|
|
add r0, r6, #0x0
|
|
bl sub_0205ECFC
|
|
ldr r0, [sp, #0x0]
|
|
bl PlayerProfile_SetGameClearFlag
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x2e
|
|
bl GameStats_Inc
|
|
ldr r1, _02048760 ; =sub_020484F8
|
|
add r0, r7, #0x0
|
|
add r2, r5, #0x0
|
|
bl TaskManager_Call
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
.balign 4
|
|
_02048760: .word sub_020484F8
|
|
|
|
thumb_func_start sub_02048764
|
|
sub_02048764: ; 0x02048764
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
add r4, r0, #0x0
|
|
mov r0, #0x0
|
|
str r0, [r1, #0x2c]
|
|
str r0, [r1, #0x30]
|
|
add r1, #0x1c
|
|
add r0, r1, #0x0
|
|
bl InitWindow
|
|
ldr r0, _020487D4 ; =UNK_020F46B0
|
|
bl GfGfx_SetBanks
|
|
ldr r2, _020487D8 ; =0x04000304
|
|
ldrh r1, [r2, #0x0]
|
|
lsr r0, r2, #0xb
|
|
orr r0, r1
|
|
strh r0, [r2, #0x0]
|
|
ldr r0, _020487DC ; =UNK_020F4684
|
|
bl SetBothScreensModesAndDisable
|
|
mov r0, #0x3
|
|
mov r1, #0x0
|
|
bl BG_SetMaskColor
|
|
ldr r0, [r4, #0x8]
|
|
ldr r2, _020487E0 ; =UNK_020F4694
|
|
mov r1, #0x3
|
|
mov r3, #0x0
|
|
bl InitBgFromTemplate
|
|
mov r1, #0x20
|
|
mov r0, #0x3
|
|
mov r2, #0x0
|
|
add r3, r1, #0x0
|
|
bl BG_ClearCharDataRange
|
|
mov r2, #0x0
|
|
str r2, [sp, #0x0]
|
|
mov r0, #0x20
|
|
str r0, [sp, #0x4]
|
|
str r0, [sp, #0x8]
|
|
mov r0, #0x11
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [r4, #0x8]
|
|
mov r1, #0x3
|
|
add r3, r2, #0x0
|
|
bl FillBgTilemapRect
|
|
ldr r0, [r4, #0x8]
|
|
mov r1, #0x3
|
|
bl BgCommitTilemapBufferToVram
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
nop
|
|
_020487D4: .word UNK_020F46B0
|
|
_020487D8: .word 0x04000304
|
|
_020487DC: .word UNK_020F4684
|
|
_020487E0: .word UNK_020F4694
|
|
|
|
thumb_func_start sub_020487E4
|
|
sub_020487E4: ; 0x020487E4
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
ldr r0, [r5, #0xc]
|
|
add r4, r1, #0x0
|
|
bl Save_PlayerData_GetOptionsAddr
|
|
add r6, r0, #0x0
|
|
mov r0, #0x1a
|
|
mov r1, #0xc7
|
|
mov r2, #0xf
|
|
mov r3, #0x20
|
|
bl ReadMsgData_NewNarc_NewString
|
|
str r0, [r4, #0x2c]
|
|
add r1, r4, #0x0
|
|
ldr r0, [r5, #0x8]
|
|
add r1, #0x1c
|
|
mov r2, #0x3
|
|
bl sub_020545B8
|
|
add r0, r4, #0x0
|
|
add r0, #0x1c
|
|
add r1, r6, #0x0
|
|
bl sub_02054608
|
|
add r0, r4, #0x0
|
|
ldr r1, [r4, #0x2c]
|
|
add r0, #0x1c
|
|
add r2, r6, #0x0
|
|
mov r3, #0x1
|
|
bl sub_02054658
|
|
str r0, [r4, #0x34]
|
|
add r0, r4, #0x0
|
|
ldr r1, _02048834 ; =0x000003E2
|
|
add r0, #0x1c
|
|
bl WaitingIcon_New
|
|
str r0, [r4, #0x30]
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
_02048834: .word 0x000003E2
|
|
|
|
thumb_func_start sub_02048838
|
|
sub_02048838: ; 0x02048838
|
|
ldr r0, [r0, #0x34]
|
|
ldr r3, _02048844 ; =sub_020546C8
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
bx r3
|
|
nop
|
|
_02048844: .word sub_020546C8
|
|
|
|
thumb_func_start sub_02048848
|
|
sub_02048848: ; 0x02048848
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x2c]
|
|
bl String_Delete
|
|
ldr r0, [r4, #0x30]
|
|
bl sub_0200DBFC
|
|
add r4, #0x1c
|
|
add r0, r4, #0x0
|
|
bl sub_0205464C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02048864
|
|
sub_02048864: ; 0x02048864
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
add r4, r1, #0x0
|
|
add r6, r2, #0x0
|
|
mov r0, #0x1
|
|
mov r1, #0x1a
|
|
mov r2, #0xc7
|
|
mov r3, #0x4
|
|
bl NewMsgDataFromNarc
|
|
add r7, r0, #0x0
|
|
cmp r6, #0x2
|
|
bne _020488AC
|
|
mov r0, #0x4
|
|
bl MessageFormat_New
|
|
add r6, r0, #0x0
|
|
ldr r0, [r5, #0xc]
|
|
bl Save_PlayerData_GetProfile
|
|
add r2, r0, #0x0
|
|
add r0, r6, #0x0
|
|
mov r1, #0x0
|
|
bl BufferPlayersName
|
|
add r0, r6, #0x0
|
|
add r1, r7, #0x0
|
|
mov r2, #0x10
|
|
mov r3, #0x4
|
|
bl ReadMsgData_ExpandPlaceholders
|
|
str r0, [r4, #0x2c]
|
|
add r0, r6, #0x0
|
|
bl MessageFormat_Delete
|
|
b _020488B4
|
|
_020488AC:
|
|
mov r1, #0x12
|
|
bl NewString_ReadMsgData
|
|
str r0, [r4, #0x2c]
|
|
_020488B4:
|
|
add r0, r7, #0x0
|
|
bl DestroyMsgData
|
|
ldr r0, [r5, #0xc]
|
|
bl Save_PlayerData_GetOptionsAddr
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
ldr r1, [r4, #0x2c]
|
|
add r0, #0x1c
|
|
mov r3, #0x1
|
|
bl sub_02054658
|
|
str r0, [r4, #0x34]
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020488D4
|
|
sub_020488D4: ; 0x020488D4
|
|
push {r3-r5, lr}
|
|
add r4, r1, #0x0
|
|
add r5, r0, #0x0
|
|
ldr r0, [r4, #0x2c]
|
|
cmp r0, #0x0
|
|
beq _020488E4
|
|
bl String_Delete
|
|
_020488E4:
|
|
add r0, r4, #0x0
|
|
add r0, #0x1c
|
|
bl WindowIsInUse
|
|
cmp r0, #0x0
|
|
beq _020488F8
|
|
add r4, #0x1c
|
|
add r0, r4, #0x0
|
|
bl RemoveWindow
|
|
_020488F8:
|
|
ldr r0, [r5, #0x8]
|
|
mov r1, #0x3
|
|
bl FreeBgTilemapBuffer
|
|
pop {r3-r5, pc}
|
|
.balign 4
|