diff options
author | red031000 <rubenru09@aol.com> | 2020-08-30 23:45:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-30 23:45:35 +0100 |
commit | 656e4a2fee9ff86d678d6a7477611bfaca5171d4 (patch) | |
tree | b3060e2576d1572c1a8aeb63f300f43ba0d13131 | |
parent | 62e3afdea1f62da948dd9d3926f712dbbe7af039 (diff) | |
parent | 73aecdbbbff398c27734f8ed793bb495a5391a4b (diff) |
Merge pull request #273 from PikalaxALT/pikalax_work
Decompile mail
51 files changed, 901 insertions, 1033 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index f2ac2c77..4459fd8c 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -94,7 +94,7 @@ Static arm9 Object unk_020250A4.o Object unk_02025484.o Object unk_020254B8.o - Object unk_02025658.o + Object mail.o Object unk_02025954.o Object unk_02026CD0.o Object unk_02027E30.o diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s index 482f814b..b874b757 100644 --- a/arm9/asm/scrcmd.s +++ b/arm9/asm/scrcmd.s @@ -6714,7 +6714,7 @@ FUN_0203CF04: ; 0x0203CF04 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r4, r0, #0x0 add r0, r5, #0x0 bl ScriptReadHalfword @@ -6724,7 +6724,7 @@ FUN_0203CF04: ; 0x0203CF04 bl GetVarPointer add r5, r0, #0x0 add r0, r4, #0x0 - bl FUN_020244A4 + bl Pokedex_CountSinnohDexSeenMons strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} @@ -6737,7 +6737,7 @@ FUN_0203CF34: ; 0x0203CF34 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r4, r0, #0x0 add r0, r5, #0x0 bl ScriptReadHalfword @@ -6747,7 +6747,7 @@ FUN_0203CF34: ; 0x0203CF34 bl GetVarPointer add r5, r0, #0x0 add r0, r4, #0x0 - bl FUN_0202445C + bl Pokedex_CountSinnohDexCaughtMons strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} @@ -6760,7 +6760,7 @@ FUN_0203CF64: ; 0x0203CF64 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r4, r0, #0x0 add r0, r5, #0x0 bl ScriptReadHalfword @@ -6770,7 +6770,7 @@ FUN_0203CF64: ; 0x0203CF64 bl GetVarPointer add r5, r0, #0x0 add r0, r4, #0x0 - bl FUN_02024404 + bl Pokedex_CountNationalDexSeenMons strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} @@ -6783,7 +6783,7 @@ FUN_0203CF94: ; 0x0203CF94 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r4, r0, #0x0 add r0, r5, #0x0 bl ScriptReadHalfword @@ -6793,7 +6793,7 @@ FUN_0203CF94: ; 0x0203CF94 bl GetVarPointer add r5, r0, #0x0 add r0, r4, #0x0 - bl FUN_020243C8 + bl Pokedex_CountNationalDexCaughtMons strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} @@ -6811,7 +6811,7 @@ FUN_0203CFC8: ; 0x0203CFC8 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r7, r0, #0x0 add r0, r5, #0x0 add r0, #0x80 @@ -6834,7 +6834,7 @@ FUN_0203CFC8: ; 0x0203CFC8 cmp r6, #0x0 bne _0203D02E add r0, r7, #0x0 - bl FUN_02024550 + bl Pokedex_CountSinnohDexSeenMons_OmitMythicals add r5, #0x80 add r6, r0, #0x0 ldr r0, [r5, #0x0] @@ -6851,7 +6851,7 @@ FUN_0203CFC8: ; 0x0203CFC8 b _0203D048 _0203D02E: add r0, r7, #0x0 - bl FUN_02024518 + bl Pokedex_CountNationalDexCaughtMons_OmitMythicals add r5, r0, #0x0 ldr r0, [sp, #0x0] bl PlayerProfile_GetTrainerGender @@ -8765,9 +8765,9 @@ FUN_0203DF38: ; 0x0203DF38 bl GetVarPointer add r5, r0, #0x0 ldr r0, [r4, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get mov r1, #0x0 - bl FUN_0202589C + bl Mailbox_CountMessages strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} @@ -9305,7 +9305,7 @@ FUN_0203E3D0: ; 0x0203E3D0 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r5, r0, #0x0 add r0, r4, #0x0 bl ScriptReadHalfword @@ -9317,7 +9317,7 @@ FUN_0203E3D0: ; 0x0203E3D0 mov r0, #0x0 strh r0, [r4, #0x0] add r0, r5, #0x0 - bl FUN_02024504 + bl Pokedex_HasCompletedSinnohDex cmp r0, #0x1 bne _0203E404 mov r0, #0x1 @@ -9333,7 +9333,7 @@ FUN_0203E408: ; 0x0203E408 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r5, r0, #0x0 add r0, r4, #0x0 bl ScriptReadHalfword @@ -9345,7 +9345,7 @@ FUN_0203E408: ; 0x0203E408 mov r0, #0x0 strh r0, [r4, #0x0] add r0, r5, #0x0 - bl FUN_020244EC + bl Pokedex_HasCompletedNationalDex cmp r0, #0x1 bne _0203E43C mov r0, #0x1 @@ -9765,7 +9765,7 @@ FUN_0203E774: ; 0x0203E774 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r7, r0, #0x0 add r0, r4, #0x0 bl ScriptReadHalfword @@ -9775,7 +9775,7 @@ FUN_0203E774: ; 0x0203E774 bl GetVarPointer str r0, [sp, #0x0] add r0, r7, #0x0 - bl FUN_020244A4 + bl Pokedex_CountSinnohDexSeenMons add r4, r0, #0x0 bl LCRandom add r1, r4, #0x0 @@ -9790,7 +9790,7 @@ FUN_0203E774: ; 0x0203E774 _0203E7B6: add r0, r7, #0x0 add r1, r4, #0x0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0x1 bne _0203E7DC add r0, r4, #0x0 @@ -9994,7 +9994,7 @@ FUN_0203E940: ; 0x0203E940 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl FUN_02024D4C mov r0, #0x0 pop {r3, pc} @@ -10005,7 +10005,7 @@ FUN_0203E954: ; 0x0203E954 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl FUN_02024CE0 mov r0, #0x0 pop {r3, pc} @@ -10033,7 +10033,7 @@ FUN_0203E968: ; 0x0203E968 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_SetNatDexFlag add r5, #0x80 ldr r0, [r5, #0x0] @@ -10047,7 +10047,7 @@ _0203E9AE: add r5, #0x80 ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_GetNatDexFlag strh r0, [r6, #0x0] b _0203E9C8 @@ -10472,7 +10472,7 @@ FUN_0203ED2C: ; 0x0203ED2C sub sp, #0x10 ldr r0, [r0, #0xc] add r5, r1, #0x0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r6, r0, #0x0 mov r0, #0x20 bl AllocMonZeroed @@ -10490,7 +10490,7 @@ FUN_0203ED2C: ; 0x0203ED2C bl CreateMon add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_0202498C + bl Pokedex_SetMonSeenFlag add r0, r4, #0x0 bl FreeToHeap add sp, #0x10 @@ -10709,7 +10709,7 @@ FUN_0203EED8: ; 0x0203EED8 add r6, r0, #0x0 ldr r0, [r4, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r7, r0, #0x0 mov r5, #0x0 cmp r6, #0x0 @@ -10733,7 +10733,7 @@ _0203EF18: bl CalcMonLevelAndStats add r0, r7, #0x0 add r1, r4, #0x0 - bl FUN_02024AF0 + bl Pokedex_SetMonCaughtFlag _0203EF48: add r5, r5, #0x1 cmp r5, r6 @@ -11442,7 +11442,7 @@ FUN_0203F4D8: ; 0x0203F4D8 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r4, r0, #0x0 add r0, r5, #0x0 bl ScriptReadHalfword @@ -11452,7 +11452,7 @@ FUN_0203F4D8: ; 0x0203F4D8 bl GetVarPointer add r5, r0, #0x0 add r0, r4, #0x0 - bl FUN_0202471C + bl Pokedex_CountSeenUnown strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} diff --git a/arm9/asm/scrcmd_13.s b/arm9/asm/scrcmd_13.s index 0a7c9697..1b31ce71 100644 --- a/arm9/asm/scrcmd_13.s +++ b/arm9/asm/scrcmd_13.s @@ -107,7 +107,7 @@ FUN_02043918: ; 0x02043918 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get mov r5, #0x0 _0204395C: add r0, r7, #0x0 diff --git a/arm9/asm/scrcmd_21.s b/arm9/asm/scrcmd_21.s index 900a2f2b..e1f03c4a 100644 --- a/arm9/asm/scrcmd_21.s +++ b/arm9/asm/scrcmd_21.s @@ -16,7 +16,7 @@ FUN_020453F4: ; 0x020453F4 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r4, r0, #0x0 add r0, r5, #0x0 bl ScriptReadHalfword @@ -26,7 +26,7 @@ FUN_020453F4: ; 0x020453F4 bl GetVarPointer add r5, r0, #0x0 add r0, r4, #0x0 - bl FUN_02024D64 + bl Pokedex_GetSinnohDexFlag strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} @@ -38,8 +38,8 @@ FUN_02045424: ; 0x02045424 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 - bl FUN_02024D80 + bl Sav2_Pokedex_get + bl Pokedex_SetSinnohDexFlag mov r0, #0x0 pop {r3, pc} diff --git a/arm9/asm/scrcmd_3.s b/arm9/asm/scrcmd_3.s index 4d4d924c..28cbd7ac 100644 --- a/arm9/asm/scrcmd_3.s +++ b/arm9/asm/scrcmd_3.s @@ -144,7 +144,7 @@ FUN_0203FF10: ; 0x0203FF10 add r0, #0x80 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_GetNatDexFlag add r1, sp, #0x14 strb r0, [r1, #0x4] diff --git a/arm9/asm/unk_02025658.s b/arm9/asm/unk_02025658.s deleted file mode 100644 index 4c6c4960..00000000 --- a/arm9/asm/unk_02025658.s +++ /dev/null @@ -1,454 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern gGameLanguage - .extern gGameVersion - - .text - - thumb_func_start InitSealsObject -InitSealsObject: ; 0x02025658 - push {r3-r5, lr} - add r4, r0, #0x0 - mov r0, #0x0 - str r0, [r4, #0x0] - strb r0, [r4, #0x4] - ldr r0, _020256A0 ; =gGameLanguage - mov r1, #0x8 - ldrb r0, [r0, #0x0] - strb r0, [r4, #0x5] - ldr r0, _020256A4 ; =gGameVersion - ldrb r0, [r0, #0x0] - strb r0, [r4, #0x6] - mov r0, #0xff - strb r0, [r4, #0x7] - add r0, r4, #0x0 - add r0, #0x8 - bl StringFillEOS - ldr r0, _020256A8 ; =0x0000FFFF - mov r1, #0x0 - add r2, r4, #0x0 -_02025682: - add r1, r1, #0x1 - strh r0, [r2, #0x18] - add r2, r2, #0x2 - cmp r1, #0x3 - blt _02025682 - mov r5, #0x0 - add r4, #0x20 -_02025690: - add r0, r4, #0x0 - bl FUN_02013724 - add r5, r5, #0x1 - add r4, #0x8 - cmp r5, #0x3 - blt _02025690 - pop {r3-r5, pc} - .balign 4 -_020256A0: .word gGameLanguage -_020256A4: .word gGameVersion -_020256A8: .word 0x0000FFFF - - thumb_func_start FUN_020256AC -FUN_020256AC: ; 0x020256AC - ldrb r0, [r0, #0x7] - cmp r0, #0xb - bhi _020256B6 - mov r0, #0x1 - bx lr -_020256B6: - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start CreateNewSealsObject -CreateNewSealsObject: ; 0x020256BC - push {r4, lr} - mov r1, #0x38 - bl AllocFromHeapAtEnd - add r4, r0, #0x0 - bl InitSealsObject - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start CopySealsObject -CopySealsObject: ; 0x020256D0 - ldr r3, _020256D8 ; =MI_CpuCopy8 - mov r2, #0x38 - bx r3 - nop -_020256D8: .word MI_CpuCopy8 - - thumb_func_start FUN_020256DC -FUN_020256DC: ; 0x020256DC - push {r4-r7, lr} - sub sp, #0x14 - add r7, r3, #0x0 - add r5, r0, #0x0 - add r6, r1, #0x0 - add r4, r2, #0x0 - bl InitSealsObject - add r0, r7, #0x0 - strb r6, [r5, #0x7] - bl SavArray_PlayerParty_get - str r0, [sp, #0x0] - add r0, r7, #0x0 - bl Sav2_PlayerData_GetProfileAddr - add r6, r0, #0x0 - bl PlayerProfile_GetNamePtr - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x8 - bl CopyU16StringArray - add r0, r6, #0x0 - bl PlayerProfile_GetTrainerGender - strb r0, [r5, #0x4] - add r0, r6, #0x0 - bl PlayerProfile_GetTrainerID - str r0, [r5, #0x0] - ldr r0, [sp, #0x0] - mov r6, #0x0 - bl GetPartyCount - cmp r4, r0 - bge _020257AE - add r5, #0x18 -_0202572A: - ldr r0, [sp, #0x0] - add r1, r4, #0x0 - bl GetPartyMonByIndex - mov r1, #0x5 - mov r2, #0x0 - add r7, r0, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x4] - add r0, r7, #0x0 - mov r1, #0x4c - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0x8] - add r0, r7, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0xc] - add r0, r7, #0x0 - bl FUN_0206B6C8 - str r0, [sp, #0x10] - ldr r0, [sp, #0x4] - ldr r1, [sp, #0xc] - ldr r2, [sp, #0x8] - bl FUN_0206B7BC - lsl r3, r6, #0x1 - ldrh r1, [r5, r3] - add r7, r0, #0x0 - ldr r0, _020257B4 ; =0xFFFFF000 - add r2, r1, #0x0 - and r2, r0 - ldr r0, [sp, #0x10] - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - ldr r0, _020257B8 ; =0x00000FFF - and r0, r1 - orr r0, r2 - strh r0, [r5, r3] - add r0, r6, #0x1 - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldrh r1, [r5, r3] - ldr r0, _020257BC ; =0xFFFF0FFF - and r0, r1 - lsl r1, r7, #0x1c - lsr r1, r1, #0x10 - orr r0, r1 - strh r0, [r5, r3] - cmp r6, #0x3 - bhs _020257AE - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, [sp, #0x0] - bl GetPartyCount - cmp r4, r0 - blt _0202572A -_020257AE: - add sp, #0x14 - pop {r4-r7, pc} - nop -_020257B4: .word 0xFFFFF000 -_020257B8: .word 0x00000FFF -_020257BC: .word 0xFFFF0FFF - - thumb_func_start FUN_020257C0 -FUN_020257C0: ; 0x020257C0 - ldr r0, [r0, #0x0] - bx lr - - thumb_func_start FUN_020257C4 -FUN_020257C4: ; 0x020257C4 - add r0, #0x8 - bx lr - - thumb_func_start FUN_020257C8 -FUN_020257C8: ; 0x020257C8 - ldrb r0, [r0, #0x4] - bx lr - - thumb_func_start FUN_020257CC -FUN_020257CC: ; 0x020257CC - ldrb r0, [r0, #0x7] - bx lr - - thumb_func_start FUN_020257D0 -FUN_020257D0: ; 0x020257D0 - cmp r1, #0xc - bhs _020257D6 - strb r1, [r0, #0x7] -_020257D6: - bx lr - - thumb_func_start FUN_020257D8 -FUN_020257D8: ; 0x020257D8 - ldrb r0, [r0, #0x5] - bx lr - - thumb_func_start FUN_020257DC -FUN_020257DC: ; 0x020257DC - ldrb r0, [r0, #0x6] - bx lr - - thumb_func_start FUN_020257E0 -FUN_020257E0: ; 0x020257E0 - cmp r1, #0x3 - bhs _02025810 - cmp r2, #0x0 - beq _020257F0 - cmp r2, #0x1 - beq _020257FC - cmp r2, #0x2 - b _02025808 -_020257F0: - lsl r1, r1, #0x1 - add r0, r0, r1 - ldrh r0, [r0, #0x18] - lsl r0, r0, #0x14 - lsr r0, r0, #0x14 - bx lr -_020257FC: - lsl r1, r1, #0x1 - add r0, r0, r1 - ldrh r0, [r0, #0x18] - lsl r0, r0, #0x10 - lsr r0, r0, #0x1c - bx lr -_02025808: - lsl r1, r1, #0x1 - add r0, r0, r1 - ldrh r0, [r0, #0x18] - bx lr -_02025810: - mov r0, #0x0 - bx lr - - thumb_func_start FUN_02025814 -FUN_02025814: ; 0x02025814 - cmp r1, #0x3 - bhs _02025820 - add r0, #0x20 - lsl r1, r1, #0x3 - add r0, r0, r1 - bx lr -_02025820: - add r0, #0x20 - bx lr - - thumb_func_start FUN_02025824 -FUN_02025824: ; 0x02025824 - push {r3, lr} - cmp r2, #0x3 - bhs _02025834 - add r0, #0x20 - lsl r2, r2, #0x3 - add r0, r0, r2 - bl FUN_02013960 -_02025834: - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02025838 -FUN_02025838: ; 0x02025838 - ldr r3, _02025840 ; =SavArray_get - mov r1, #0xf - bx r3 - nop -_02025840: .word SavArray_get - - thumb_func_start FUN_02025844 -FUN_02025844: ; 0x02025844 - mov r0, #0x46 - lsl r0, r0, #0x4 - bx lr - .balign 4 - - thumb_func_start FUN_0202584C -FUN_0202584C: ; 0x0202584C - push {r3-r5, lr} - add r5, r0, #0x0 - mov r4, #0x0 -_02025852: - add r0, r5, #0x0 - bl InitSealsObject - add r4, r4, #0x1 - add r5, #0x38 - cmp r4, #0x14 - blt _02025852 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02025864 -FUN_02025864: ; 0x02025864 - push {r3, lr} - cmp r1, #0x0 - bne _02025872 - mov r1, #0x14 - bl FUN_020258F0 - pop {r3, pc} -_02025872: - mov r0, #0x0 - mvn r0, r0 - pop {r3, pc} - - thumb_func_start FUN_02025878 -FUN_02025878: ; 0x02025878 - push {r3, lr} - bl FUN_02025940 - cmp r0, #0x0 - beq _02025886 - bl InitSealsObject -_02025886: - pop {r3, pc} - - thumb_func_start FUN_02025888 -FUN_02025888: ; 0x02025888 - push {r4, lr} - add r4, r3, #0x0 - bl FUN_02025940 - add r1, r0, #0x0 - beq _0202589A - add r0, r4, #0x0 - bl CopySealsObject -_0202589A: - pop {r4, pc} - - thumb_func_start FUN_0202589C -FUN_0202589C: ; 0x0202589C - push {r3, lr} - cmp r1, #0x0 - bne _020258AA - mov r1, #0x14 - bl FUN_02025918 - pop {r3, pc} -_020258AA: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_020258B0 -FUN_020258B0: ; 0x020258B0 - push {r3-r5, lr} - add r5, r3, #0x0 - bl FUN_02025940 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl CreateNewSealsObject - add r5, r0, #0x0 - cmp r4, #0x0 - beq _020258CE - add r0, r4, #0x0 - add r1, r5, #0x0 - bl CopySealsObject -_020258CE: - add r0, r5, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020258D4 -FUN_020258D4: ; 0x020258D4 - push {r4, lr} - add r4, r3, #0x0 - bl FUN_02025940 - cmp r0, #0x0 - bne _020258E8 - add r0, r4, #0x0 - bl InitSealsObject - pop {r4, pc} -_020258E8: - add r1, r4, #0x0 - bl CopySealsObject - pop {r4, pc} - - thumb_func_start FUN_020258F0 -FUN_020258F0: ; 0x020258F0 - push {r4-r6, lr} - add r6, r1, #0x0 - add r5, r0, #0x0 - mov r4, #0x0 - cmp r6, #0x0 - ble _02025912 -_020258FC: - add r0, r5, #0x0 - bl FUN_020256AC - cmp r0, #0x0 - bne _0202590A - add r0, r4, #0x0 - pop {r4-r6, pc} -_0202590A: - add r4, r4, #0x1 - add r5, #0x38 - cmp r4, r6 - blt _020258FC -_02025912: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} - - thumb_func_start FUN_02025918 -FUN_02025918: ; 0x02025918 - push {r3-r7, lr} - mov r4, #0x0 - add r7, r1, #0x0 - add r5, r0, #0x0 - add r6, r4, #0x0 - cmp r7, #0x0 - ble _0202593A -_02025926: - add r0, r5, #0x0 - bl FUN_020256AC - cmp r0, #0x0 - beq _02025932 - add r4, r4, #0x1 -_02025932: - add r6, r6, #0x1 - add r5, #0x38 - cmp r6, r7 - blt _02025926 -_0202593A: - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02025940 -FUN_02025940: ; 0x02025940 - mov r3, #0x0 - cmp r1, #0x0 - bne _02025950 - cmp r2, #0x14 - bge _02025950 - mov r1, #0x38 - mul r1, r2 - add r3, r0, r1 -_02025950: - add r0, r3, #0x0 - bx lr diff --git a/arm9/asm/unk_02029FB0.s b/arm9/asm/unk_02029FB0.s index da0a42d2..ac457105 100644 --- a/arm9/asm/unk_02029FB0.s +++ b/arm9/asm/unk_02029FB0.s @@ -323,7 +323,7 @@ FUN_0202A1C4: ; 0x0202A1C4 add r4, r0, #0x0 add r0, r1, #0x0 add r1, r2, #0x0 - bl FUN_02024594 + bl Pokedex_CheckMonCaughtFlag cmp r0, #0x0 bne _0202A1DC add r0, r4, #0x0 diff --git a/arm9/asm/unk_0202C144.s b/arm9/asm/unk_0202C144.s index e6448c07..fb5bc6c4 100644 --- a/arm9/asm/unk_0202C144.s +++ b/arm9/asm/unk_0202C144.s @@ -15,7 +15,7 @@ FUN_0202C144: ; 0x0202C144 cmp r0, #0x0 bne _0202C194 add r0, r5, #0x0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r6, r0, #0x0 add r0, r5, #0x0 bl FUN_02029FC8 @@ -32,7 +32,7 @@ FUN_0202C144: ; 0x0202C144 bl FUN_0202A1C4 add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_02024AF0 + bl Pokedex_SetMonCaughtFlag add r0, r5, #0x0 bl Sav2_Poketch_get add r1, r4, #0x0 diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index c03af51e..0294a124 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -316,8 +316,8 @@ FUN_02035270: ; 0x02035270 add r5, r0, #0x0 ldr r0, [r5, #0xc] mov r4, #0x0 - bl FUN_02024DA0 - bl FUN_02024D64 + bl Sav2_Pokedex_get + bl Pokedex_GetSinnohDexFlag cmp r0, #0x0 bne _02035288 mov r0, #0x1 @@ -1664,7 +1664,7 @@ FUN_02035D34: ; 0x02035D34 bl AllocFromHeap add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [sp, #0x0] ldr r0, [r5, #0xc] bl Sav2_PlayerData_GetProfileAddr @@ -2406,7 +2406,7 @@ _0203638A: bl Sav2_Bag_get str r0, [r5, #0x4] ldr r0, [r6, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r5, #0x8] ldr r0, [r6, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -2505,7 +2505,7 @@ _02036474: bl Sav2_Bag_get str r0, [r5, #0x4] ldr r0, [r6, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r5, #0x8] ldr r0, [r6, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -2998,7 +2998,7 @@ FUN_0203684C: ; 0x0203684C bl Sav2_Bag_get str r0, [r5, #0x4] ldr r0, [r6, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r5, #0x8] ldr r0, [r6, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -3527,7 +3527,7 @@ FUN_02036CEC: ; 0x02036CEC bl Sav2_Bag_get str r0, [r4, #0x4] ldr r0, [r5, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r4, #0x8] ldr r0, [r5, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -3666,7 +3666,7 @@ FUN_02036E08: ; 0x02036E08 bl FUN_02079C70 add r7, r0, #0x0 ldr r0, [r4, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [sp, #0x2c] ldr r0, [r4, #0xc] bl Sav2_Bag_get @@ -3703,7 +3703,7 @@ _02036E9E: bl FUN_02079C70 add r7, r0, #0x0 ldr r0, [r4, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [sp, #0x3c] ldr r0, [r4, #0xc] bl Sav2_Bag_get diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index 9cd03e77..d0d60821 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -435,7 +435,7 @@ FUN_0203797C: ; 0x0203797C bl Sav2_Bag_get str r0, [r4, #0x4] ldr r0, [r5, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r4, #0x8] ldr r0, [r5, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -1423,7 +1423,7 @@ FUN_02038144: ; 0x02038144 bl Sav2_PlayerData_GetOptionsAddr str r0, [r5, #0x18] ldr r0, [r4, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [r5, #0x24] ldr r0, [r4, #0xc] bl FUN_0206BB28 @@ -1641,7 +1641,7 @@ _020382F6: bl FUN_02079C70 add r6, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r7, r0, #0x0 ldr r0, [r5, #0xc] bl Sav2_Bag_get @@ -2130,7 +2130,7 @@ FUN_020386E0: ; 0x020386E0 bl GetStoragePCPointer str r0, [r4, #0xc] ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [r4, #0x10] ldr r0, [r5, #0xc] bl FUN_020286EC diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index bf857f21..374ab418 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -477,7 +477,7 @@ FUN_02047A78: ; 0x02047A78 bl Sav2_Bag_get str r0, [sp, #0x0] ldr r0, [r4, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [sp, #0x4] ldr r0, [r4, #0xc] bl FUN_02029EF8 @@ -624,7 +624,7 @@ FUN_02047BC0: ; 0x02047BC0 str r0, [sp, #0x10] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [sp, #0xc] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] @@ -791,7 +791,7 @@ FUN_02047D48: ; 0x02047D48 str r0, [sp, #0x1c] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [sp, #0x18] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] @@ -1019,7 +1019,7 @@ FUN_02047F38: ; 0x02047F38 bl Sav2_Bag_get str r0, [sp, #0x0] ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [sp, #0x4] ldr r0, [r5, #0xc] bl FUN_02034E30 @@ -1062,7 +1062,7 @@ FUN_02047FA4: ; 0x02047FA4 ldr r0, [r5, #0xc] bl Sav2_Bag_get ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r1, r0, #0x0 mov r0, #0x11 lsl r0, r0, #0x4 diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s index f38c0676..833d62c0 100644 --- a/arm9/asm/unk_020484A8.s +++ b/arm9/asm/unk_020484A8.s @@ -298,7 +298,7 @@ Special_EnterHallOfFame: ; 0x02048694 bl FUN_0205ED0C str r0, [r5, #0x14] ldr r0, [r4, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [r5, #0x18] add r0, r6, #0x0 bl FUN_0205ED0C diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s index aa8d85d5..5ad7ca34 100644 --- a/arm9/asm/unk_0205CE48.s +++ b/arm9/asm/unk_0205CE48.s @@ -294,7 +294,7 @@ FUN_0205D024: ; 0x0205D024 bl Sav2_Bag_get str r0, [r4, #0x4] ldr r0, [r5, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r4, #0x8] ldr r0, [r5, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -777,7 +777,7 @@ FUN_0205D400: ; 0x0205D400 bl Sav2_Bag_get str r0, [r4, #0x4] ldr r0, [r5, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r4, #0x8] ldr r0, [r5, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -1508,7 +1508,7 @@ FUN_0205D9A8: ; 0x0205D9A8 bl Sav2_Bag_get str r0, [r4, #0x4] ldr r0, [r5, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r4, #0x8] ldr r0, [r5, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -1666,7 +1666,7 @@ _0205DB08: _0205DB1A: ldr r0, [r4, #0x18] ldr r0, [r0, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_GetNatDexFlag cmp r0, #0x0 bne _0205DB30 diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s index 0f319d3c..3265d601 100644 --- a/arm9/asm/unk_02060CCC.s +++ b/arm9/asm/unk_02060CCC.s @@ -828,14 +828,14 @@ FUN_020611E8: ; 0x020611E8 push {r3-r5, lr} ldr r0, [r0, #0xc] add r5, r1, #0x0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r4, r0, #0x0 add r0, r5, #0x0 bl MOD06_02248B60 add r1, r0, #0x0 ldrh r1, [r1, #0x6] add r0, r4, #0x0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 @@ -919,9 +919,9 @@ FUN_02061288: ; 0x02061288 pop {r3-r5, pc} _0206129E: ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get ldrh r1, [r4, #0x0] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} thumb_func_start FUN_020612AC @@ -1135,9 +1135,9 @@ FUN_02061444: ; 0x02061444 bl MOD06_02248B60 add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get ldrh r1, [r4, #0x0] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 @@ -1221,14 +1221,14 @@ FUN_020614FC: ; 0x020614FC push {r3-r5, lr} ldr r0, [r0, #0xc] add r5, r1, #0x0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r4, r0, #0x0 add r0, r5, #0x0 bl MOD06_02248B60 add r1, r0, #0x0 ldrh r1, [r1, #0x0] add r0, r4, #0x0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 @@ -1348,14 +1348,14 @@ FUN_020615F8: ; 0x020615F8 push {r3-r5, lr} ldr r0, [r0, #0xc] add r5, r1, #0x0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r4, r0, #0x0 add r0, r5, #0x0 bl MOD06_02248B60 add r1, r0, #0x0 ldrh r1, [r1, #0x0] add r0, r4, #0x0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 @@ -1423,9 +1423,9 @@ FUN_02061688: ; 0x02061688 bl MOD06_02248B60 add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get ldrh r1, [r4, #0x0] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 @@ -1632,9 +1632,9 @@ FUN_02061834: ; 0x02061834 bl MOD06_02248B60 add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get ldrh r1, [r4, #0x0] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 @@ -1814,9 +1814,9 @@ FUN_02061990: ; 0x02061990 bl MOD06_02248B60 add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get ldrh r1, [r4, #0x2] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0x0 bne _020619B0 mov r0, #0x0 @@ -1920,9 +1920,9 @@ FUN_02061A70: ; 0x02061A70 bl MOD06_02248B60 add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get ldrh r1, [r4, #0x0] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 @@ -2273,9 +2273,9 @@ FUN_02061D30: ; 0x02061D30 bl MOD06_02248B60 add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get ldrh r1, [r4, #0x0] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 @@ -2420,9 +2420,9 @@ FUN_02061E60: ; 0x02061E60 bl MOD06_02248B60 add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get ldrh r1, [r4, #0x2] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 @@ -2480,9 +2480,9 @@ FUN_02061EDC: ; 0x02061EDC bl MOD06_02248B60 add r4, r0, #0x0 ldr r0, [r5, #0xc] - bl FUN_02024DA0 + bl Sav2_Pokedex_get ldrh r1, [r4, #0x0] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag pop {r3-r5, pc} .balign 4 diff --git a/arm9/asm/unk_02064E90.s b/arm9/asm/unk_02064E90.s index ea21d648..ca5edb45 100644 --- a/arm9/asm/unk_02064E90.s +++ b/arm9/asm/unk_02064E90.s @@ -48,12 +48,12 @@ FUN_02064E90: ; 0x02064E90 bl PlayerProfile_GetMoney str r0, [sp, #0x34] ldr r0, [r6, #0xc] - bl FUN_02024DA0 - bl FUN_02024440 + bl Sav2_Pokedex_get + bl Pokedex_CountSeenMons str r0, [sp, #0x38] ldr r0, [r6, #0xc] - bl FUN_02024DA0 - bl FUN_02024D64 + bl Sav2_Pokedex_get + bl Pokedex_GetSinnohDexFlag str r0, [sp, #0x3c] add r0, r4, #0x0 bl FUN_0202A1B8 @@ -238,8 +238,8 @@ FUN_02065078: ; 0x02065078 lsr r4, r0, #0x18 _020650A8: add r0, r7, #0x0 - bl FUN_02024DA0 - bl FUN_020244EC + bl Sav2_Pokedex_get + bl Pokedex_HasCompletedNationalDex cmp r0, #0x0 beq _020650BC add r0, r4, #0x1 diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index dd82a0eb..1cf56132 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -1606,7 +1606,7 @@ FUN_02066070: ; 0x02066070 add r6, r0, #0x0 add r0, r4, #0x0 add r5, r2, #0x0 - bl FUN_02025838 + bl Sav2_Mailbox_get mov r1, #0x6b lsl r1, r1, #0x2 str r0, [sp, #0x4] @@ -1617,7 +1617,7 @@ FUN_02066070: ; 0x02066070 lsl r1, r1, #0x4 str r0, [r6, r1] add r0, r5, #0x0 - bl CreateNewSealsObject + bl Mail_new add r7, r0, #0x0 add r0, r6, #0x0 str r0, [sp, #0x10] @@ -1633,7 +1633,7 @@ _020660AE: mov r1, #0x0 add r2, r4, #0x0 add r3, r7, #0x0 - bl FUN_020258D4 + bl Mailbox_FetchMailIToBuffer mov r0, #0xc mul r0, r4 ldr r1, [sp, #0x8] @@ -1653,22 +1653,22 @@ _020660AE: ldr r0, [sp, #0xc] strb r4, [r1, r0] add r0, r7, #0x0 - bl FUN_020256AC + bl Mail_TypeIsValid cmp r0, #0x0 beq _02066134 mov r0, #0x1 strb r0, [r5, #0x1] add r0, r7, #0x0 - bl FUN_020257C8 + bl Mail_GetAuthorGender strb r0, [r5, #0x4] add r0, r7, #0x0 - bl FUN_020257CC + bl Mail_GetType strb r0, [r5, #0x5] ldrb r0, [r5, #0x5] bl MailToItemId strh r0, [r5, #0x6] add r0, r7, #0x0 - bl FUN_020257C4 + bl Mail_GetAuthorNamePtr add r1, r0, #0x0 ldr r0, [r5, #0x8] bl CopyU16ArrayToString @@ -1778,7 +1778,7 @@ _020661D4: ldrb r2, [r5, #0x18] ldr r0, [r5, r0] mov r1, #0x0 - bl FUN_02025878 + bl Mailbox_DeleteSlotI ldrb r1, [r5, #0x18] add r0, r5, #0x0 bl FUN_02066160 @@ -2395,7 +2395,7 @@ _02066676: lsl r0, r0, #0x2 ldr r0, [r5, r0] ldr r0, [r0, #0xc] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r4, #0x8] add r0, r4, #0x0 mov r1, #0x0 diff --git a/arm9/asm/unk_0206BB28.s b/arm9/asm/unk_0206BB28.s index 3ddc7960..15f4469e 100644 --- a/arm9/asm/unk_0206BB28.s +++ b/arm9/asm/unk_0206BB28.s @@ -6,7 +6,7 @@ thumb_func_start FUN_0206BB28 FUN_0206BB28: ; 0x0206BB28 push {r3, lr} - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl FUN_0206BB34 pop {r3, pc} diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 39550e2a..c42b766a 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -1096,7 +1096,7 @@ _0206CFFA: bne _0206D084 ldr r0, [r4, #0x48] ldr r1, [r4, #0x28] - bl FUN_02024AF0 + bl Pokedex_SetMonCaughtFlag ldr r0, [r4, #0x50] mov r1, #0xc bl FUN_0202A0E8 @@ -2169,7 +2169,7 @@ _0206D8EA: add r2, sp, #0x0 bl SetMonData ldr r0, [r4, #0x5c] - bl CreateNewSealsObject + bl Mail_new add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 @@ -2198,7 +2198,7 @@ _0206D8EA: bl AddMonToParty ldr r0, [r4, #0x48] add r1, r5, #0x0 - bl FUN_02024AF0 + bl Pokedex_SetMonCaughtFlag ldr r0, [r4, #0x50] mov r1, #0xc bl FUN_0202A0E8 diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s index 80943988..458d4420 100644 --- a/arm9/asm/unk_02080C38.s +++ b/arm9/asm/unk_02080C38.s @@ -3646,7 +3646,7 @@ _02082740: _0208274C: ldr r0, _02082848 ; =0x0000198C ldr r0, [r4, r0] - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r7, r0, #0x0 ldr r0, _02082858 ; =0x00000127 ldrb r6, [r4, r0] @@ -3657,7 +3657,7 @@ _0208274C: _02082762: ldr r1, [r5, #0x0] add r0, r7, #0x0 - bl FUN_0202498C + bl Pokedex_SetMonSeenFlag add r6, r6, #0x1 add r5, r5, #0x4 cmp r6, #0x4 diff --git a/arm9/asm/unk_02085338.s b/arm9/asm/unk_02085338.s index 22c3f7ab..77d69e0d 100644 --- a/arm9/asm/unk_02085338.s +++ b/arm9/asm/unk_02085338.s @@ -16,7 +16,7 @@ FUN_02085338: ; 0x02085338 strb r5, [r4, #0x0] strb r7, [r4, #0x1] add r0, r6, #0x0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [r4, #0xc] add r0, r6, #0x0 bl FUN_02013B5C diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s index 86ea2fee..76b5a118 100644 --- a/arm9/asm/unk_020854E0.s +++ b/arm9/asm/unk_020854E0.s @@ -25,7 +25,7 @@ FUN_020854E0: ; 0x020854E0 add r7, r1, #0x0 add r6, r2, #0x0 str r3, [sp, #0x0] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [sp, #0x4] ldr r0, [sp, #0x20] mov r1, #0x1c @@ -46,14 +46,14 @@ FUN_020854E0: ; 0x020854E0 strh r0, [r4, #0xc] ldr r0, [sp, #0x20] str r5, [r4, #0x10] - bl CreateNewSealsObject + bl Mail_new str r0, [r4, #0x14] - bl InitSealsObject + bl Mail_init ldr r0, [r4, #0x14] mov r1, #0xff add r2, r6, #0x0 add r3, r5, #0x0 - bl FUN_020256DC + bl Mail_SetNewMessageDetails add r0, r4, #0x0 add sp, #0x8 pop {r3-r7, pc} @@ -78,12 +78,12 @@ FUN_02085538: ; 0x02085538 strh r6, [r4, #0xc] add r0, r7, #0x0 str r7, [r4, #0x10] - bl FUN_02025838 + bl Sav2_Mailbox_get ldr r3, [sp, #0x0] add r1, r5, #0x0 add r2, r6, #0x0 str r0, [r4, #0x18] - bl FUN_020258B0 + bl Mailbox_AllocAndFetchMailI str r0, [r4, #0x14] add r0, r4, #0x0 pop {r3-r7, pc} @@ -106,7 +106,7 @@ FUN_02085578: ; 0x02085578 strh r0, [r4, #0x0] str r5, [r4, #0x10] add r0, r7, #0x0 - bl CreateNewSealsObject + bl Mail_new str r0, [r4, #0x14] ldr r2, [r4, #0x14] add r0, r6, #0x0 @@ -133,10 +133,10 @@ FUN_020855B0: ; 0x020855B0 strh r0, [r4, #0x0] add r0, r7, #0x0 str r5, [r4, #0x10] - bl CreateNewSealsObject + bl Mail_new add r1, r6, #0x0 str r0, [r4, #0x14] - bl FUN_020257D0 + bl Mail_SetType add r0, r4, #0x0 pop {r3-r7, pc} .balign 4 @@ -162,7 +162,7 @@ _020855FC: ldr r3, [r5, #0x14] add r1, r4, #0x0 add r2, r6, #0x0 - bl FUN_02025888 + bl Mailbox_CopyMailToSlotI mov r0, #0x1 pop {r4-r6, pc} @@ -206,14 +206,14 @@ FUN_02085644: ; 0x02085644 add r7, r0, #0x0 add r4, r2, #0x0 str r1, [sp, #0x0] - bl FUN_02025864 + bl Mailbox_GetFirstEmptySlotIdx add r6, r0, #0x0 mov r0, #0x0 mvn r0, r0 cmp r6, r0 beq _0208569E add r0, r4, #0x0 - bl CreateNewSealsObject + bl Mail_new add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 @@ -223,9 +223,9 @@ FUN_02085644: ; 0x02085644 mov r1, #0x0 add r2, r6, #0x0 add r3, r4, #0x0 - bl FUN_02025888 + bl Mailbox_CopyMailToSlotI add r0, r4, #0x0 - bl InitSealsObject + bl Mail_init add r0, r5, #0x0 mov r1, #0xa9 add r2, r4, #0x0 @@ -249,14 +249,14 @@ FUN_020856A0: ; 0x020856A0 add r2, r5, #0x0 add r7, r0, #0x0 str r1, [sp, #0x0] - bl FUN_020258B0 + bl Mailbox_AllocAndFetchMailI add r6, r0, #0x0 bne _020856BC mov r0, #0x0 mvn r0, r0 pop {r3-r7, pc} _020856BC: - bl FUN_020257CC + bl Mail_GetType bl MailToItemId str r0, [sp, #0x0] add r0, r4, #0x0 @@ -270,7 +270,7 @@ _020856BC: add r0, r7, #0x0 mov r1, #0x0 add r2, r5, #0x0 - bl FUN_02025878 + bl Mailbox_DeleteSlotI add r0, r6, #0x0 bl FreeToHeap add r0, r5, #0x0 @@ -292,25 +292,25 @@ FUN_020856F0: ; 0x020856F0 mov r0, #0x0 strh r0, [r6, #0x0] add r0, r4, #0x0 - bl FUN_020257C0 + bl Mail_GetOTID str r0, [r6, #0x8] mov r0, #0x8 add r1, r5, #0x0 bl String_ctor str r0, [r6, #0x10] add r0, r4, #0x0 - bl FUN_020257C4 + bl Mail_GetAuthorNamePtr add r1, r0, #0x0 ldr r0, [r6, #0x10] bl CopyU16ArrayToString add r0, r4, #0x0 - bl FUN_020257CC + bl Mail_GetType strb r0, [r6, #0xf] add r0, r4, #0x0 - bl FUN_020257D8 + bl Mail_GetLanguage strb r0, [r6, #0xd] add r0, r4, #0x0 - bl FUN_020257DC + bl Mail_GetVersion strb r0, [r6, #0xe] mov r5, #0x0 mov r7, #0x2 @@ -319,7 +319,7 @@ _02085748: add r0, r4, #0x0 lsr r1, r1, #0x18 add r2, r7, #0x0 - bl FUN_020257E0 + bl Mail_GetAttrFromUnk18Array lsl r1, r5, #0x1 add r1, r6, r1 strh r0, [r1, #0x14] @@ -335,7 +335,7 @@ _0208576A: lsl r1, r5, #0x18 add r0, r4, #0x0 lsr r1, r1, #0x18 - bl FUN_02025814 + bl Mail_GetUnk20Array add r1, r0, #0x0 lsl r0, r5, #0x3 add r0, r7, r0 @@ -376,7 +376,7 @@ _020857B0: add r0, r6, #0x0 add r1, r4, r1 lsr r2, r2, #0x18 - bl FUN_02025824 + bl Mail_CopyToUnk20Array add r0, r5, #0x1 lsl r0, r0, #0x10 lsr r5, r0, #0x10 @@ -384,7 +384,7 @@ _020857B0: blo _020857B0 ldrb r1, [r7, #0xf] add r0, r6, #0x0 - bl FUN_020257D0 + bl Mail_SetType pop {r3-r7, pc} .balign 4 diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s index 1a38e392..7b65b9e5 100644 --- a/arm9/asm/unk_020859C0.s +++ b/arm9/asm/unk_020859C0.s @@ -638,7 +638,7 @@ _02085E66: bl Sav2_Bag_get str r0, [r4, #0x4] ldr r0, [r6, #0x10] - bl FUN_02025838 + bl Sav2_Mailbox_get str r0, [r4, #0x8] add r0, r4, #0x0 mov r1, #0x0 diff --git a/arm9/asm/unk_02087A1C.s b/arm9/asm/unk_02087A1C.s deleted file mode 100644 index 89e18978..00000000 --- a/arm9/asm/unk_02087A1C.s +++ /dev/null @@ -1,65 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020FD120 -UNK_020FD120: ; 0x020FD120 - .byte 0x17, 0x00, 0x19, 0x00, 0x36, 0x00, 0x4D, 0x00, 0x78, 0x00, 0x81, 0x00, 0xCA, 0x00, 0xD6, 0x00 - .byte 0xD7, 0x00, 0xD8, 0x00, 0xE4, 0x00, 0x16, 0x01, 0x1F, 0x01, 0x3B, 0x01 - - .global UNK_020FD13C -UNK_020FD13C: ; 0x020FD13C - .byte 0x01, 0x02, 0x03, 0x05, 0x04, 0x07 - - .text - - thumb_func_start FUN_02087A1C -FUN_02087A1C: ; 0x02087A1C - ldr r3, _02087A34 ; =UNK_020FD13C - mov r2, #0x0 -_02087A20: - ldrb r1, [r3, #0x0] - cmp r0, r1 - beq _02087A2E - add r2, r2, #0x1 - add r3, r3, #0x1 - cmp r2, #0x6 - blt _02087A20 -_02087A2E: - add r0, r2, #0x0 - bx lr - nop -_02087A34: .word UNK_020FD13C - - thumb_func_start FUN_02087A38 -FUN_02087A38: ; 0x02087A38 - push {r4, lr} - add r4, r0, #0x0 - cmp r4, #0x6 - blt _02087A44 - bl ErrorHandling -_02087A44: - ldr r0, _02087A4C ; =UNK_020FD13C - ldrb r0, [r0, r4] - pop {r4, pc} - nop -_02087A4C: .word UNK_020FD13C - - thumb_func_start FUN_02087A50 -FUN_02087A50: ; 0x02087A50 - ldr r3, _02087A68 ; =UNK_020FD120 - mov r2, #0x0 -_02087A54: - ldrh r1, [r3, #0x0] - cmp r0, r1 - beq _02087A62 - add r2, r2, #0x1 - add r3, r3, #0x2 - cmp r2, #0xe - blt _02087A54 -_02087A62: - add r0, r2, #0x0 - bx lr - nop -_02087A68: .word UNK_020FD120 diff --git a/arm9/asm/unk_02088F0C.s b/arm9/asm/unk_02088F0C.s index 490492fa..1c3bc9f2 100644 --- a/arm9/asm/unk_02088F0C.s +++ b/arm9/asm/unk_02088F0C.s @@ -640,7 +640,7 @@ FUN_02088FA0: ; 0x02088FA0 _02088FBE: ldrh r1, [r5, #0x0] ldr r0, [sp, #0x8] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0x0 beq _02088FEC ldrh r3, [r5, #0x0] diff --git a/arm9/global.inc b/arm9/global.inc index 754dfe33..821007ef 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1538,44 +1538,44 @@ .extern Sav2_Pokedex_new .extern Sav2_Pokedex_Copy .extern Sav2_Pokedex_init -.extern FUN_020243C8 -.extern FUN_02024404 -.extern FUN_02024440 -.extern FUN_0202445C -.extern FUN_020244A4 -.extern FUN_020244EC -.extern FUN_02024504 -.extern FUN_02024518 -.extern FUN_02024550 -.extern FUN_02024594 -.extern FUN_020245F0 -.extern FUN_02024648 +.extern Pokedex_CountNationalDexCaughtMons +.extern Pokedex_CountNationalDexSeenMons +.extern Pokedex_CountSeenMons +.extern Pokedex_CountSinnohDexCaughtMons +.extern Pokedex_CountSinnohDexSeenMons +.extern Pokedex_HasCompletedNationalDex +.extern Pokedex_HasCompletedSinnohDex +.extern Pokedex_CountNationalDexCaughtMons_OmitMythicals +.extern Pokedex_CountSinnohDexSeenMons_OmitMythicals +.extern Pokedex_CheckMonCaughtFlag +.extern Pokedex_CheckMonSeenFlag +.extern Pokedex_GetSeenSpindaPersonality .extern FUN_02024674 -.extern FUN_020246DC -.extern FUN_0202471C -.extern FUN_02024748 -.extern FUN_020247A4 -.extern FUN_020247C8 -.extern FUN_02024828 -.extern FUN_0202484C -.extern FUN_0202489C -.extern FUN_020248BC -.extern FUN_0202490C -.extern FUN_02024930 -.extern FUN_02024970 -.extern FUN_0202498C -.extern FUN_02024AF0 +.extern Pokedex_GetSeenUnownI +.extern Pokedex_CountSeenUnown +.extern Pokedex_GetSeenShellosForme +.extern Pokedex_CountSeenShellos +.extern Pokedex_GetSeenGastrodonForme +.extern Pokedex_CountSeenGastrodon +.extern Pokedex_GetSeenBurmyForme +.extern Pokedex_CountSeenBurmy +.extern Pokedex_GetSeenWormadamForme +.extern Pokedex_CountSeenWormadam +.extern Pokedex_GetSeenDeoxysForme +.extern Pokedex_CountSeenDeoxys +.extern Pokedex_SetMonSeenFlag +.extern Pokedex_SetMonCaughtFlag .extern Pokedex_SetNatDexFlag .extern Pokedex_GetNatDexFlag .extern FUN_02024CC4 .extern FUN_02024CE0 -.extern FUN_02024D00 +.extern Pokedex_GetMeisterFlagBySpeciesAndLanguage .extern FUN_02024D4C .extern FUN_02024D58 -.extern FUN_02024D64 -.extern FUN_02024D80 -.extern FUN_02024DA0 -.extern FUN_02024DAC +.extern Pokedex_GetSinnohDexFlag +.extern Pokedex_SetSinnohDexFlag +.extern Sav2_Pokedex_get +.extern Pokedex_GetSeenMonForme .extern FUN_02024E64 .extern FUN_02024E6C .extern FUN_02024EB4 @@ -1630,30 +1630,30 @@ .extern FUN_020254F8 .extern FUN_02025520 .extern FUN_02025614 -.extern InitSealsObject -.extern FUN_020256AC -.extern CreateNewSealsObject -.extern CopySealsObject -.extern FUN_020256DC -.extern FUN_020257C0 -.extern FUN_020257C4 -.extern FUN_020257C8 -.extern FUN_020257CC -.extern FUN_020257D0 -.extern FUN_020257D8 -.extern FUN_020257DC -.extern FUN_020257E0 -.extern FUN_02025814 -.extern FUN_02025824 -.extern FUN_02025838 -.extern FUN_02025844 -.extern FUN_0202584C -.extern FUN_02025864 -.extern FUN_02025878 -.extern FUN_02025888 -.extern FUN_0202589C -.extern FUN_020258B0 -.extern FUN_020258D4 +.extern Mail_init +.extern Mail_TypeIsValid +.extern Mail_new +.extern Mail_copy +.extern Mail_SetNewMessageDetails +.extern Mail_GetOTID +.extern Mail_GetAuthorNamePtr +.extern Mail_GetAuthorGender +.extern Mail_GetType +.extern Mail_SetType +.extern Mail_GetLanguage +.extern Mail_GetVersion +.extern Mail_GetAttrFromUnk18Array +.extern Mail_GetUnk20Array +.extern Mail_CopyToUnk20Array +.extern Sav2_Mailbox_get +.extern Sav2_Mailbox_sizeof +.extern Sav2_Mailbox_init +.extern Mailbox_GetFirstEmptySlotIdx +.extern Mailbox_DeleteSlotI +.extern Mailbox_CopyMailToSlotI +.extern Mailbox_CountMessages +.extern Mailbox_AllocAndFetchMailI +.extern Mailbox_FetchMailIToBuffer .extern FUN_02025954 .extern FUN_0202595C .extern FUN_02025960 @@ -5393,9 +5393,9 @@ .extern FUN_02086F8C .extern FUN_02086F98 .extern FUN_02086FA8 -.extern FUN_02087A1C -.extern FUN_02087A38 -.extern FUN_02087A50 +.extern GetMeisterLanguageIdx +.extern GetMeisterLanguage +.extern GetMeisterSpeciesIdx .extern FUN_02087A6C .extern FUN_02087A84 .extern FUN_02087A98 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 2244fdd6..f9672ea0 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -6320,17 +6320,17 @@ MOD05_021E8310: ; 0x021E8310 bl FUN_02034DC0 add r6, r0, #0 add r0, r4, #0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r7, r0, #0 ldr r0, [r6] bl FUN_02034824 str r0, [r5, #4] add r0, r7, #0 - bl FUN_02024D64 + bl Pokedex_GetSinnohDexFlag cmp r0, #0 beq _021E8344 add r0, r7, #0 - bl FUN_02024440 + bl Pokedex_CountSeenMons b _021E8346 _021E8344: mov r0, #0 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index dd12992e..2af29137 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -5043,7 +5043,7 @@ _0223BBDA: blt _0223BBDA add r0, r5, #0 bl ScriptEnvironment_GetSav2Ptr - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_GetNatDexFlag add r6, r0, #0 add r0, r4, #0 @@ -5480,7 +5480,7 @@ _0223BF7E: blt _0223BF7E add r0, r5, #0 bl ScriptEnvironment_GetSav2Ptr - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_GetNatDexFlag add r6, r0, #0 add r0, r4, #0 @@ -5790,7 +5790,7 @@ _0223C222: blt _0223C222 add r0, r5, #0 bl ScriptEnvironment_GetSav2Ptr - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_GetNatDexFlag add r6, r0, #0 ldr r0, [sp, #0x14] @@ -21793,7 +21793,7 @@ MOD06_02244210: ; 0x02244210 bl String_ctor str r0, [sp, #0x1c] add r0, r4, #0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [sp, #0x18] ldr r2, _022442C0 ; =0x0000016A mov r0, #1 @@ -21819,7 +21819,7 @@ _02244264: add r7, r0, #0 ldr r0, [sp, #0x18] add r1, r7, #0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0 beq _0224429E ldr r0, [sp, #0x10] @@ -23653,7 +23653,7 @@ _02245098: blo _02245098 add r0, r5, #0 bl ScriptEnvironment_GetSav2Ptr - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_GetNatDexFlag add r6, r0, #0 ldr r0, [r5, #0xc] @@ -32178,8 +32178,8 @@ _02249180: MOD06_02249184: ; 0x02249184 push {r3, lr} ldr r0, [r0, #0xc] - bl FUN_02024DA0 - bl FUN_02024504 + bl Sav2_Pokedex_get + bl Pokedex_HasCompletedSinnohDex pop {r3, pc} .align 2, 0 @@ -32187,8 +32187,8 @@ MOD06_02249184: ; 0x02249184 MOD06_02249194: ; 0x02249194 push {r3, lr} ldr r0, [r0, #0xc] - bl FUN_02024DA0 - bl FUN_02024D64 + bl Sav2_Pokedex_get + bl Pokedex_GetSinnohDexFlag pop {r3, pc} .align 2, 0 diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index ba099f93..fb098d96 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -4744,7 +4744,7 @@ MOD11_022315C0: ; 0x022315C0 _022315FE: ldr r0, [r5, #0x60] add r1, r6, #0 - bl FUN_0202498C + bl Pokedex_SetMonSeenFlag _02231606: mov r0, #1 tst r0, r4 @@ -4759,7 +4759,7 @@ _02231606: bne _02231626 ldr r0, [r5, #0x60] add r1, r6, #0 - bl FUN_02024AF0 + bl Pokedex_SetMonCaughtFlag _02231626: pop {r4, r5, r6, pc} @@ -4790,20 +4790,20 @@ MOD11_02231628: ; 0x02231628 bl MOD11_02230014 add r1, r0, #0 ldr r0, [r5, #0x60] - bl FUN_02024AF0 + bl Pokedex_SetMonCaughtFlag _02231664: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD11_02231668 MOD11_02231668: ; 0x02231668 - ldr r3, _02231674 ; =FUN_02024594 + ldr r3, _02231674 ; =Pokedex_CheckMonCaughtFlag lsl r1, r1, #0x10 ldr r0, [r0, #0x60] lsr r1, r1, #0x10 bx r3 nop -_02231674: .word FUN_02024594 +_02231674: .word Pokedex_CheckMonCaughtFlag thumb_func_start MOD11_02231678 MOD11_02231678: ; 0x02231678 diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index 1448cc55..e30640a5 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -4732,7 +4732,7 @@ MOD16_021D98EC: ; 0x021D98EC _021D98FA: ldr r0, [r5] add r1, r4, #0 - bl FUN_020246DC + bl Pokedex_GetSeenUnownI pop {r3, r4, r5, pc} thumb_func_end MOD16_021D98EC @@ -4747,7 +4747,7 @@ MOD16_021D9904: ; 0x021D9904 _021D9912: ldr r0, [r5] add r1, r4, #0 - bl FUN_02024748 + bl Pokedex_GetSeenShellosForme pop {r3, r4, r5, pc} thumb_func_end MOD16_021D9904 @@ -4762,7 +4762,7 @@ MOD16_021D991C: ; 0x021D991C _021D992A: ldr r0, [r5] add r1, r4, #0 - bl FUN_020247C8 + bl Pokedex_GetSeenGastrodonForme pop {r3, r4, r5, pc} thumb_func_end MOD16_021D991C @@ -4777,7 +4777,7 @@ MOD16_021D9934: ; 0x021D9934 _021D9942: ldr r0, [r5] add r1, r4, #0 - bl FUN_0202484C + bl Pokedex_GetSeenBurmyForme pop {r3, r4, r5, pc} thumb_func_end MOD16_021D9934 @@ -4792,7 +4792,7 @@ MOD16_021D994C: ; 0x021D994C _021D995A: ldr r0, [r5] add r1, r4, #0 - bl FUN_020248BC + bl Pokedex_GetSeenWormadamForme pop {r3, r4, r5, pc} thumb_func_end MOD16_021D994C @@ -4882,75 +4882,75 @@ _021D99F0: thumb_func_start MOD16_021D99F4 MOD16_021D99F4: ; 0x021D99F4 - ldr r3, _021D99FC ; =FUN_0202471C + ldr r3, _021D99FC ; =Pokedex_CountSeenUnown ldr r0, [r0] bx r3 nop -_021D99FC: .word FUN_0202471C +_021D99FC: .word Pokedex_CountSeenUnown thumb_func_end MOD16_021D99F4 thumb_func_start MOD16_021D9A00 MOD16_021D9A00: ; 0x021D9A00 - ldr r3, _021D9A08 ; =FUN_020247A4 + ldr r3, _021D9A08 ; =Pokedex_CountSeenShellos ldr r0, [r0] bx r3 nop -_021D9A08: .word FUN_020247A4 +_021D9A08: .word Pokedex_CountSeenShellos thumb_func_end MOD16_021D9A00 thumb_func_start MOD16_021D9A0C MOD16_021D9A0C: ; 0x021D9A0C - ldr r3, _021D9A14 ; =FUN_02024828 + ldr r3, _021D9A14 ; =Pokedex_CountSeenGastrodon ldr r0, [r0] bx r3 nop -_021D9A14: .word FUN_02024828 +_021D9A14: .word Pokedex_CountSeenGastrodon thumb_func_end MOD16_021D9A0C thumb_func_start MOD16_021D9A18 MOD16_021D9A18: ; 0x021D9A18 - ldr r3, _021D9A20 ; =FUN_0202489C + ldr r3, _021D9A20 ; =Pokedex_CountSeenBurmy ldr r0, [r0] bx r3 nop -_021D9A20: .word FUN_0202489C +_021D9A20: .word Pokedex_CountSeenBurmy thumb_func_end MOD16_021D9A18 thumb_func_start MOD16_021D9A24 MOD16_021D9A24: ; 0x021D9A24 - ldr r3, _021D9A2C ; =FUN_0202490C + ldr r3, _021D9A2C ; =Pokedex_CountSeenWormadam ldr r0, [r0] bx r3 nop -_021D9A2C: .word FUN_0202490C +_021D9A2C: .word Pokedex_CountSeenWormadam thumb_func_end MOD16_021D9A24 thumb_func_start MOD16_021D9A30 MOD16_021D9A30: ; 0x021D9A30 - ldr r3, _021D9A38 ; =FUN_02024648 + ldr r3, _021D9A38 ; =Pokedex_GetSeenSpindaPersonality ldr r0, [r0] mov r1, #0 bx r3 .align 2, 0 -_021D9A38: .word FUN_02024648 +_021D9A38: .word Pokedex_GetSeenSpindaPersonality thumb_func_end MOD16_021D9A30 thumb_func_start MOD16_021D9A3C MOD16_021D9A3C: ; 0x021D9A3C - ldr r3, _021D9A44 ; =FUN_02024930 + ldr r3, _021D9A44 ; =Pokedex_GetSeenDeoxysForme ldr r0, [r0] bx r3 nop -_021D9A44: .word FUN_02024930 +_021D9A44: .word Pokedex_GetSeenDeoxysForme thumb_func_end MOD16_021D9A3C thumb_func_start MOD16_021D9A48 MOD16_021D9A48: ; 0x021D9A48 - ldr r3, _021D9A50 ; =FUN_02024970 + ldr r3, _021D9A50 ; =Pokedex_CountSeenDeoxys ldr r0, [r0] bx r3 nop -_021D9A50: .word FUN_02024970 +_021D9A50: .word Pokedex_CountSeenDeoxys thumb_func_end MOD16_021D9A48 thumb_func_start MOD16_021D9A54 @@ -5703,7 +5703,7 @@ _021D9F72: ldr r0, [r5] lsr r1, r1, #0x10 add r2, r6, #0 - bl FUN_02024D00 + bl Pokedex_GetMeisterFlagBySpeciesAndLanguage pop {r4, r5, r6, pc} thumb_func_end MOD16_021D9F58 @@ -5767,7 +5767,7 @@ MOD16_021D9FC4: ; 0x021D9FC4 _021D9FDA: ldrh r1, [r4] ldr r0, [sp, #4] - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0 beq _021D9FF6 ldr r1, [r5] @@ -5825,7 +5825,7 @@ _021DA034: cmp r0, #1 beq _021DA054 ldr r0, [sp, #0x34] - bl FUN_02024594 + bl Pokedex_CheckMonCaughtFlag cmp r0, #0 bne _021DA054 _021DA04C: @@ -5875,7 +5875,7 @@ MOD16_021DA080: ; 0x021DA080 _021DA094: ldrh r1, [r4] ldr r0, [sp] - bl FUN_02024594 + bl Pokedex_CheckMonCaughtFlag cmp r0, #0 ldr r0, _021DA0D4 ; =0x00000F6C beq _021DA0AC @@ -9673,12 +9673,12 @@ _021DBBB0: .word String_dtor MOD16_021DBBB4: ; 0x021DBBB4 add r1, r0, #1 ldr r0, _021DBBC0 ; =0x021FF568 - ldr r3, _021DBBC4 ; =FUN_02087A38 + ldr r3, _021DBBC4 ; =GetMeisterLanguage ldrb r0, [r0, r1] bx r3 nop _021DBBC0: .word MOD16_021FF568 -_021DBBC4: .word FUN_02087A38 +_021DBBC4: .word GetMeisterLanguage thumb_func_end MOD16_021DBBB4 thumb_func_start MOD16_021DBBC8 @@ -9847,14 +9847,14 @@ MOD16_021DBCE0: ; 0x021DBCE0 add r4, r2, #0 add r5, r3, #0 ldr r6, [sp, #0x18] - bl FUN_02087A1C + bl GetMeisterLanguageIdx str r0, [r5] cmp r0, #6 blt _021DBCFA bl ErrorHandling _021DBCFA: add r0, r7, #0 - bl FUN_02087A50 + bl GetMeisterSpeciesIdx str r0, [r4] ldr r5, [r5] cmp r5, #6 diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index bf7fde6d..081a836b 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -3027,7 +3027,7 @@ MOD18_0223AE88: ; 0x0223AE88 bl FUN_02025C38 add r4, r0, #0 add r0, r6, #0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_GetNatDexFlag mov r1, #0 cmp r0, #0 @@ -38228,7 +38228,7 @@ MOD18_0224C0AC: ; 0x0224C0AC bl FUN_02026CC4 add r7, r0, #0 add r0, r5, #0 - bl FUN_02024DA0 + bl Sav2_Pokedex_get bl Pokedex_GetNatDexFlag str r0, [sp, #4] add r0, r7, #0 diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s index a7bb626a..f3a4f14c 100644 --- a/arm9/modules/23/asm/module_23.s +++ b/arm9/modules/23/asm/module_23.s @@ -1021,7 +1021,7 @@ MOD23_02254F94: ; 0x02254F94 blt _02254FF4 ldr r0, [r5, #0x10] bl MOD20_02252C40 - bl FUN_02024DA0 + bl Sav2_Pokedex_get add r5, r0, #0 bl Pokedex_GetNatDexFlag cmp r0, #0 @@ -1042,7 +1042,7 @@ _02254FD8: bhi _02254FF4 add r0, r5, #0 add r1, r4, #0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0 beq _02254FF4 add r0, r4, #0 diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 775315bc..fbe645b5 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -1979,7 +1979,7 @@ MOD56_02212E0C: ; 0x02212E0C add r0, r5, #0 add r0, #0xc4 ldr r0, [r0] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [sp, #0x10] add r0, r5, #0 add r0, #0xc4 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 196c959f..8e74df8f 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -13765,7 +13765,7 @@ _0223441E: beq _02234434 ldrh r1, [r5] add r0, r4, #0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0 beq _0223444A add r6, r6, #1 @@ -13777,7 +13777,7 @@ _02234434: cmp r0, #0 beq _0223444A add r0, r4, #0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0 beq _0223444A add r6, r6, #1 @@ -13808,7 +13808,7 @@ _02234472: beq _02234494 ldrh r1, [r5] add r0, r4, #0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0 beq _022344B6 ldrh r2, [r5] @@ -13825,7 +13825,7 @@ _02234494: cmp r0, #0 beq _022344B6 add r0, r4, #0 - bl FUN_020245F0 + bl Pokedex_CheckMonSeenFlag cmp r0, #0 beq _022344B6 ldrh r2, [r5] diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index fec76301..ca3ff8d3 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -1101,7 +1101,7 @@ _0222DDB8: beq _0222DE76 ldr r0, [sp, #0x10] ldr r0, [r0, #8] - bl FUN_02024440 + bl Pokedex_CountSeenMons add r1, r0, #0 ldr r0, [sp, #0x28] bl MOD83_0222DCF4 @@ -1952,13 +1952,13 @@ MOD83_0222E48C: ; 0x0222E48C bl Sav2_PlayerData_GetProfileAddr str r0, [r4, #0xc] ldr r0, [r4, #4] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [r4, #8] ldr r0, [r4, #4] bl Sav2_PlayerData_GetIGTAddr str r0, [r4, #0x10] ldr r0, [r4, #8] - bl FUN_02024D64 + bl Pokedex_GetSinnohDexFlag str r0, [r4, #0x4c] ldr r0, [r4, #0xc] bl PlayerProfile_CountBadges @@ -3054,7 +3054,7 @@ MOD83_0222EDF8: ; 0x0222EDF8 bl Sav2_PlayerData_GetProfileAddr str r0, [r4, #0x10] ldr r0, [r4, #8] - bl FUN_02024DA0 + bl Sav2_Pokedex_get str r0, [r4, #0xc] ldr r0, [r4, #8] bl Sav2_PlayerData_GetOptionsAddr @@ -3133,7 +3133,7 @@ _0222EEAC: ; jump table _0222EEC8: bl MOD83_0222E954 ldr r0, [r4, #0xc] - bl FUN_02024D64 + bl Pokedex_GetSinnohDexFlag cmp r0, #0 bne _0222EEE4 mov r0, #1 diff --git a/arm9/modules/84/asm/module_84_thumb2.s b/arm9/modules/84/asm/module_84_thumb2.s index f80b3bb3..eef0fa0b 100644 --- a/arm9/modules/84/asm/module_84_thumb2.s +++ b/arm9/modules/84/asm/module_84_thumb2.s @@ -241,7 +241,7 @@ _021D82CC: lsl r1, r5, #0x10 add r0, r6, #0 lsr r1, r1, #0x10 - bl FUN_02024594 + bl Pokedex_CheckMonCaughtFlag cmp r0, #0 beq _021D8340 lsl r0, r5, #0x10 @@ -273,7 +273,7 @@ _021D82CC: add r0, r6, #0 add r1, r5, #0 mov r2, #0 - bl FUN_02024DAC + bl Pokedex_GetSeenMonForme ldr r1, _021D8428 ; =0x00001220 ldr r1, [r4, r1] lsl r1, r1, #3 @@ -387,7 +387,7 @@ _021D83E8: ldrh r1, [r4, r1] add r0, r6, #0 mov r2, #0 - bl FUN_02024DAC + bl Pokedex_GetSeenMonForme ldr r1, _021D8438 ; =0x000002BB add r5, r5, #1 strb r0, [r4, r1] diff --git a/arm9/src/daycare.c b/arm9/src/daycare.c index eff25151..b144f0a9 100644 --- a/arm9/src/daycare.c +++ b/arm9/src/daycare.c @@ -1,6 +1,6 @@ #include "global.h" #include "pokemon.h" -#include "seals.h" +#include "mail.h" #include "save_block_2.h" #include "daycare.h" @@ -40,7 +40,7 @@ u32 DayCareMon_GetSteps(struct DayCareMon * dcmon) return dcmon->steps; } -struct SealStruct * DayCareMail_GetCapsule(struct DayCareMail * dcmail) +struct Mail * DayCareMail_GetCapsule(struct DayCareMail * dcmail) { return &dcmail->seal; } diff --git a/arm9/src/mail.c b/arm9/src/mail.c new file mode 100644 index 00000000..96074471 --- /dev/null +++ b/arm9/src/mail.c @@ -0,0 +1,267 @@ +#include "global.h" +#include "mail.h" +#include "heap.h" +#include "string_util.h" +#include "MI_memory.h" +#include "save_block_2.h" +#include "party.h" +#include "player_data.h" + +#pragma thumb on + +extern void FUN_02013724(u16 * ptr); +extern u32 FUN_0206B6C8(struct Pokemon * pokemon); +extern u16 FUN_0206B7BC(u16 species, u32 forme, BOOL is_egg); +extern void FUN_02013960(u16 * dest, const u16 * src); + +void Mail_init(struct Mail * mail) +{ + s32 i; + mail->author_otId = 0; + mail->author_gender = 0; + mail->author_language = (u8)gGameLanguage; + mail->author_version = (u8)gGameVersion; + mail->mail_type = 0xFF; + StringFillEOS(mail->author_name, 8); + for (i = 0; i < 3; i++) + { + mail->unk_18[i].raw = 0xFFFF; + } + for (i = 0; i < 3; i++) + { + FUN_02013724(mail->unk_20[i]); + } +} + +BOOL Mail_TypeIsValid(struct Mail * mail) +{ + return mail->mail_type <= 11; +} + +struct Mail * Mail_new(u32 heap_id) +{ + struct Mail * ret = (struct Mail *)AllocFromHeapAtEnd(heap_id, sizeof(struct Mail)); + Mail_init(ret); + return ret; +} + +void Mail_copy(const struct Mail * src, struct Mail * dest) +{ + MI_CpuCopy8(src, dest, sizeof(struct Mail)); +} + +void Mail_SetNewMessageDetails(struct Mail * mail, u8 type, u8 monIdx, struct SaveBlock2 * sav2) +{ + u32 sp10; + u32 forme; + BOOL is_egg; + u16 species; + struct PlayerParty * party; + struct PlayerData * profile; + struct Pokemon * pokemon; + u16 r7; + u8 i; + + Mail_init(mail); + mail->mail_type = type; + party = SavArray_PlayerParty_get(sav2); + profile = Sav2_PlayerData_GetProfileAddr(sav2); + + CopyU16StringArray(mail->author_name, PlayerProfile_GetNamePtr(profile)); + mail->author_gender = (u8)PlayerProfile_GetTrainerGender(profile); + mail->author_otId = PlayerProfile_GetTrainerID(profile); + for (i = 0; monIdx < GetPartyCount(party); monIdx++) + { + union MailMessage * ptr; + pokemon = GetPartyMonByIndex(party, monIdx); + species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); + is_egg = (BOOL)GetMonData(pokemon, MON_DATA_IS_EGG, NULL); + forme = GetMonData(pokemon, MON_DATA_FORME, NULL); + sp10 = FUN_0206B6C8(pokemon); + r7 = FUN_0206B7BC(species, forme, is_egg); + ptr = &mail->unk_18[i]; + ptr->bits.unk_0 = sp10; + i++; + ptr->bits.unk_C = r7; + if (i >= 3) + break; + } +} + +u32 Mail_GetOTID(struct Mail * mail) +{ + return mail->author_otId; +} + +u16 * Mail_GetAuthorNamePtr(struct Mail * mail) +{ + return mail->author_name; +} + +u8 Mail_GetAuthorGender(struct Mail * mail) +{ + return mail->author_gender; +} + +u8 Mail_GetType(struct Mail * mail) +{ + return mail->mail_type; +} + +void Mail_SetType(struct Mail * mail, u8 type) +{ + if (type < 12) + mail->mail_type = type; +} + +u8 Mail_GetLanguage(struct Mail * mail) +{ + return mail->author_language; +} + +u8 Mail_GetVersion(struct Mail * mail) +{ + return mail->author_version; +} + +u16 Mail_GetAttrFromUnk18Array(struct Mail * mail, u32 idx, u32 attr) +{ + if (idx < 3) + { + switch (attr) + { + case 0: + return mail->unk_18[idx].bits.unk_0; + case 1: + return mail->unk_18[idx].bits.unk_C; + case 2: + default: + return mail->unk_18[idx].raw; + } + } + return 0; +} + +u16 * Mail_GetUnk20Array(struct Mail * mail, u32 idx) +{ + if (idx < 3) + return mail->unk_20[idx]; + else + return mail->unk_20[0]; +} + +void Mail_CopyToUnk20Array(struct Mail * mail, const u16 * src, u32 idx) +{ + if (idx < 3) + FUN_02013960(mail->unk_20[idx], src); +} + +struct Mail * Sav2_Mailbox_get(struct SaveBlock2 * sav2) +{ + return (struct Mail *)SavArray_get(sav2, 15); +} + +u32 Sav2_Mailbox_sizeof(void) +{ + return 20 * sizeof(struct Mail); +} + +void Sav2_Mailbox_init(struct Mail * mail) +{ + s32 i; + for (i = 0; i < 20; i++) + { + Mail_init(&mail[i]); + } +} + +s32 Mailbox_GetFirstEmptySlotIdx(struct Mail * mail, BOOL r1) +{ + switch (r1) + { + case 0: + return MailArray_GetFirstEmptySlotIdx(mail, 20); + default: + return -1; + } +} + +void Mailbox_DeleteSlotI(struct Mail * mail, BOOL r1, s32 idx) +{ + mail = Mailbox_GetPtrToSlotI(mail, r1, idx); + if (mail != NULL) + Mail_init(mail); +} + +void Mailbox_CopyMailToSlotI(struct Mail * mail, BOOL r1, s32 idx, const struct Mail * src) +{ + mail = Mailbox_GetPtrToSlotI(mail, r1, idx); + if (mail != NULL) + Mail_copy(src, mail); +} + +s32 Mailbox_CountMessages(struct Mail * mail, BOOL r1) +{ + switch (r1) + { + case 0: + return MailArray_CountMessages(mail, 20); + default: + return 0; + } +} + +struct Mail * Mailbox_AllocAndFetchMailI(struct Mail * mail, BOOL r1, s32 idx, u32 heap_id) +{ + struct Mail * ret; + mail = Mailbox_GetPtrToSlotI(mail, r1, idx); + ret = Mail_new(heap_id); + if (mail != NULL) + Mail_copy(mail, ret); + return ret; +} + +void Mailbox_FetchMailIToBuffer(struct Mail * mail, BOOL r1, s32 idx, struct Mail * dest) +{ + mail = Mailbox_GetPtrToSlotI(mail, r1, idx); + if (mail == NULL) + Mail_init(dest); + else + Mail_copy(mail, dest); +} + +s32 MailArray_GetFirstEmptySlotIdx(struct Mail * mail, s32 count) +{ + s32 i; + for (i = 0; i < count; i++) + { + if (!Mail_TypeIsValid(&mail[i])) + return i; + } + return -1; +} + +s32 MailArray_CountMessages(struct Mail * mail, s32 count) +{ + s32 ret = 0; + s32 i; + for (i = 0; i < count; i++) + { + if (Mail_TypeIsValid(&mail[i])) + ret++; + } + return ret; +} + +struct Mail * Mailbox_GetPtrToSlotI(struct Mail * mail, BOOL r1, s32 idx) +{ + struct Mail * ret = NULL; + switch (r1) + { + case 0: + if (idx < 20) + ret = &mail[idx]; + break; + } + return ret; +} diff --git a/arm9/src/main.c b/arm9/src/main.c index 4f3b583c..86f0f6af 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -1,3 +1,5 @@ +#define IN_MAIN_C + #include "global.h" #include "SPI_pm.h" #include "CARD_backup.h" @@ -51,7 +53,7 @@ extern struct Unk21DBE18 MOD52_021D76C8; extern u8 SDK_STATIC_BSS_START[]; -const u8 gGameVersion = GAME_VERSION; +const int gGameVersion = GAME_VERSION; const int gGameLanguage = GAME_LANGUAGE; THUMB_FUNC void NitroMain(void) diff --git a/arm9/src/pokedex.c b/arm9/src/pokedex.c index 307196bc..bd1ea254 100644 --- a/arm9/src/pokedex.c +++ b/arm9/src/pokedex.c @@ -58,24 +58,24 @@ void Sav2_Pokedex_Copy(const struct Pokedex * src, struct Pokedex * dest) MI_CpuCopy8(src, dest, sizeof(struct Pokedex)); } -s32 FUN_02023D8C(struct Pokedex * pokedex, u32 species) +s32 Pokedex_CountSeenShellosOrGastrodon_Internal(struct Pokedex * pokedex, u32 species) { GF_ASSERT(species == SPECIES_SHELLOS || species == SPECIES_GASTRODON); - if (!FUN_020245F0(pokedex, (u16)species)) + if (!Pokedex_CheckMonSeenFlag(pokedex, (u16)species)) return 0; - u8 *flags = species == SPECIES_SHELLOS ? &pokedex->field_0108[0] : &pokedex->field_0108[1]; + u8 *flags = species == SPECIES_SHELLOS ? &pokedex->shellosGastrodon[0] : &pokedex->shellosGastrodon[1]; BOOL r2 = CheckDexFlag(flags, 1); BOOL r0 = CheckDexFlag(flags, 2); return (r2 == r0) ? 1 : 2; } -BOOL FUN_02023DEC(struct Pokedex * pokedex, u32 species, u8 state) +BOOL Pokedex_HasSeenShellosOrGastrodonForme(struct Pokedex * pokedex, u32 species, u8 state) { GF_ASSERT(species == SPECIES_SHELLOS || species == SPECIES_GASTRODON); - if (!FUN_020245F0(pokedex, (u16)species)) + if (!Pokedex_CheckMonSeenFlag(pokedex, (u16)species)) return FALSE; - u8 *flags = species == SPECIES_SHELLOS ? &pokedex->field_0108[0] : &pokedex->field_0108[1]; - u32 r0 = (u32)FUN_02023D8C(pokedex, species); + u8 *flags = species == SPECIES_SHELLOS ? &pokedex->shellosGastrodon[0] : &pokedex->shellosGastrodon[1]; + u32 r0 = (u32)Pokedex_CountSeenShellosOrGastrodon_Internal(pokedex, species); for (int i = 0; i < r0; i++) { BOOL r2 = CheckDexFlag(flags, (u16)(i + 1)); @@ -85,13 +85,13 @@ BOOL FUN_02023DEC(struct Pokedex * pokedex, u32 species, u8 state) return FALSE; } -void FUN_02023E70(struct Pokedex * pokedex, u32 species, u32 state) +void Pokedex_SetSeenShellosOrGastrodonForme(struct Pokedex * pokedex, u32 species, u32 state) { GF_ASSERT(species == SPECIES_SHELLOS || species == SPECIES_GASTRODON); - if (FUN_02023DEC(pokedex, species, (u8)state)) + if (Pokedex_HasSeenShellosOrGastrodonForme(pokedex, species, (u8)state)) return; - u8 *flags = species == SPECIES_SHELLOS ? &pokedex->field_0108[0] : &pokedex->field_0108[1]; - s32 r5 = FUN_02023D8C(pokedex, species); + u8 *flags = species == SPECIES_SHELLOS ? &pokedex->shellosGastrodon[0] : &pokedex->shellosGastrodon[1]; + s32 r5 = Pokedex_CountSeenShellosOrGastrodon_Internal(pokedex, species); if (r5 < 2) { UpdateDexFlag(flags, (u16)(r5 + 1), (u8)state); @@ -102,12 +102,12 @@ void FUN_02023E70(struct Pokedex * pokedex, u32 species, u32 state) } } -s32 FUN_02023F2C(struct Pokedex * pokedex, u32 species) +s32 Pokedex_CountSeenBurmyOrWormadam_Internal(struct Pokedex * pokedex, u32 species) { GF_ASSERT(species == SPECIES_BURMY || species == SPECIES_WORMADAM); - if (!FUN_020245F0(pokedex, (u16)species)) + if (!Pokedex_CheckMonSeenFlag(pokedex, (u16)species)) return 0; - u8 *flags = species == SPECIES_BURMY ? &pokedex->field_010A[0] : &pokedex->field_010A[1]; + u8 *flags = species == SPECIES_BURMY ? &pokedex->burmyWormadam[0] : &pokedex->burmyWormadam[1]; s32 i; for (i = 0; i < 3; i++) { @@ -118,12 +118,12 @@ s32 FUN_02023F2C(struct Pokedex * pokedex, u32 species) return i; } -BOOL FUN_02023F88(struct Pokedex * pokedex, u32 species, u8 state) +BOOL Pokedex_HasSeenBurmyOrWormadamForme(struct Pokedex * pokedex, u32 species, u8 state) { GF_ASSERT(species == SPECIES_BURMY || species == SPECIES_WORMADAM); - if (!FUN_020245F0(pokedex, (u16)species)) + if (!Pokedex_CheckMonSeenFlag(pokedex, (u16)species)) return FALSE; - u8 *flags = species == SPECIES_BURMY ? &pokedex->field_010A[0] : &pokedex->field_010A[1]; + u8 *flags = species == SPECIES_BURMY ? &pokedex->burmyWormadam[0] : &pokedex->burmyWormadam[1]; s32 i; for (i = 0; i < 3; i++) { @@ -134,13 +134,13 @@ BOOL FUN_02023F88(struct Pokedex * pokedex, u32 species, u8 state) return FALSE; } -void FUN_02023FEC(struct Pokedex * pokedex, u32 species, s32 state) +void Pokedex_SetSeenBurmyOrWormadamForme(struct Pokedex * pokedex, u32 species, s32 state) { GF_ASSERT(species == SPECIES_BURMY || species == SPECIES_WORMADAM); - if (FUN_02023F88(pokedex, species, (u8)state)) + if (Pokedex_HasSeenBurmyOrWormadamForme(pokedex, species, (u8)state)) return; - u8 *flags = species == SPECIES_BURMY ? &pokedex->field_010A[0] : &pokedex->field_010A[1]; - s32 r5 = FUN_02023F2C(pokedex, species); + u8 *flags = species == SPECIES_BURMY ? &pokedex->burmyWormadam[0] : &pokedex->burmyWormadam[1]; + s32 r5 = Pokedex_CountSeenBurmyOrWormadam_Internal(pokedex, species); if (r5 >= 3) return; UpdateDexFlagPair(flags, (u16)r5, (u8)state); @@ -152,75 +152,75 @@ static inline void SetDeoxysFormeFlag(struct Pokedex * pokedex, u8 r4, u8 r6) GF_ASSERT(r4 <= 15); if (r6 < 2) { - pokedex->field_0040 &= ~(15 << (24 + 4 * r6)); - pokedex->field_0040 |= r4 << (24 + 4 * r6); + pokedex->caughtFlagsHi_Deoxys1 &= ~(15 << (24 + 4 * r6)); + pokedex->caughtFlagsHi_Deoxys1 |= r4 << (24 + 4 * r6); } else { r6 -= 2; - pokedex->field_0080 &= ~(15 << (24 + 4 * r6)); - pokedex->field_0080 |= r4 << (24 + 4 * r6); + pokedex->seenFlagsHi_Deoxys2 &= ~(15 << (24 + 4 * r6)); + pokedex->seenFlagsHi_Deoxys2 |= r4 << (24 + 4 * r6); } } -void FUN_02024068(struct Pokedex * pokedex, u8 r4, u8 r6) +void Pokedex_SetSeenDeoxysFormeAt(struct Pokedex * pokedex, u8 r4, u8 r6) { SetDeoxysFormeFlag(pokedex, r4, r6); } -static inline u32 GetDeoxysFormeFlag(struct Pokedex * pokedex, u8 r6) +static inline u32 GetDeoxysFormeFlag_Internal(struct Pokedex * pokedex, u8 r6) { if (r6 < 2) { - return (pokedex->field_0040 >> (24 + 4 * r6)) & 15; + return (pokedex->caughtFlagsHi_Deoxys1 >> (24 + 4 * r6)) & 15; } else { r6 -= 2; - return (pokedex->field_0080 >> (24 + 4 * r6)) & 15; + return (pokedex->seenFlagsHi_Deoxys2 >> (24 + 4 * r6)) & 15; } } -s32 FUN_020240D0(struct Pokedex * pokedex) +s32 Pokedex_CountSeenDeoxysFormes_Internal(struct Pokedex * pokedex) { s32 i; for (i = 0; i < 4; i++) { - u32 r2 = GetDeoxysFormeFlag(pokedex, (u8)i); + u32 r2 = GetDeoxysFormeFlag_Internal(pokedex, (u8)i); if (r2 == 15) break; } return i; } -BOOL FUN_02024114(struct Pokedex * pokedex, u32 state) +BOOL Pokedex_HasSeenDeoxysForme(struct Pokedex * pokedex, u32 state) { s32 i; for (i = 0; i < 4; i++) { - u32 r4 = GetDeoxysFormeFlag(pokedex, (u8)i); + u32 r4 = GetDeoxysFormeFlag_Internal(pokedex, (u8)i); if (state == r4) return TRUE; } return FALSE; } -void FUN_0202415C(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon) +void Pokedex_TrySetSeenDeoxysForme(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon) { u8 forme = (u8)GetMonData(pokemon, MON_DATA_FORME, NULL); - if (species == SPECIES_DEOXYS && !FUN_02024114(pokedex, forme)) + if (species == SPECIES_DEOXYS && !Pokedex_HasSeenDeoxysForme(pokedex, forme)) { - s32 r2 = FUN_020240D0(pokedex); - FUN_02024068(pokedex, forme, (u8)r2); + s32 r2 = Pokedex_CountSeenDeoxysFormes_Internal(pokedex); + Pokedex_SetSeenDeoxysFormeAt(pokedex, forme, (u8)r2); } } -void FUN_0202419C(struct Pokedex * pokedex) +void Pokedex_InitSeenDeoxysFormesArray(struct Pokedex * pokedex) { s32 i; for (i = 0; i < 4; i++) { - FUN_02024068(pokedex, 15, (u8)i); + Pokedex_SetSeenDeoxysFormeAt(pokedex, 15, (u8)i); } } @@ -259,10 +259,10 @@ static inline void SetSeenUnownLetter(struct Pokedex * pokedex, u32 species, s32 idx = FindFirstAvailableUnownLetterSlot(pokedex); if (idx >= 28) return; - pokedex->field_010C[idx] = (u8)letter; + pokedex->seenUnown[idx] = (u8)letter; } -void FUN_020241B8(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon) +void Pokedex_SetMonSeenForme(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon) { if (species == SPECIES_UNOWN) { @@ -270,33 +270,33 @@ void FUN_020241B8(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemo } else if (species == SPECIES_BURMY) { - FUN_02023FEC(pokedex, species, (s32)GetMonData(pokemon, MON_DATA_FORME, NULL)); + Pokedex_SetSeenBurmyOrWormadamForme(pokedex, species, (s32)GetMonData(pokemon, MON_DATA_FORME, NULL)); } else if (species == SPECIES_WORMADAM) { - FUN_02023FEC(pokedex, species, (s32)GetMonData(pokemon, MON_DATA_FORME, NULL)); + Pokedex_SetSeenBurmyOrWormadamForme(pokedex, species, (s32)GetMonData(pokemon, MON_DATA_FORME, NULL)); } else if (species == SPECIES_SHELLOS) { - FUN_02023E70(pokedex, species, GetMonData(pokemon, MON_DATA_FORME, NULL)); + Pokedex_SetSeenShellosOrGastrodonForme(pokedex, species, GetMonData(pokemon, MON_DATA_FORME, NULL)); } else if (species == SPECIES_GASTRODON) { - FUN_02023E70(pokedex, species, GetMonData(pokemon, MON_DATA_FORME, NULL)); + Pokedex_SetSeenShellosOrGastrodonForme(pokedex, species, GetMonData(pokemon, MON_DATA_FORME, NULL)); } else if (species == SPECIES_DEOXYS) { - FUN_0202415C(pokedex, species, pokemon); + Pokedex_TrySetSeenDeoxysForme(pokedex, species, pokemon); } } -void FUN_02024294(struct Pokedex * pokedex, u32 species, u32 language) +void Pokedex_SetMeisterFlagBySpeciesAndLanguage(struct Pokedex * pokedex, u32 species, u32 language) { - s32 r4 = FUN_02087A50(species); - s32 r0 = FUN_02087A1C(language); + s32 r4 = GetMeisterSpeciesIdx(species); + s32 r0 = GetMeisterLanguageIdx(language); if (r4 != 14 && r0 != 6) { - pokedex->field_0129[r4] |= (1 << r0); + pokedex->meister[r4] |= (1 << r0); } } @@ -320,9 +320,11 @@ s32 FUN_020242C8(struct Pokedex * pokedex, u16 species, s32 r4) return r1; } -const u16 UNK_020EE940 = SPECIES_MANAPHY; +const u16 sSinnohDexMythicalMons[] = { + SPECIES_MANAPHY +}; -const u16 UNK_020EE942[] = { +const u16 sNationalDexMythicalMons[] = { SPECIES_MEW, SPECIES_LUGIA, SPECIES_HO_OH, @@ -336,22 +338,22 @@ const u16 UNK_020EE942[] = { SPECIES_ARCEUS }; -BOOL FUN_02024340(u16 species) +BOOL Pokedex_SpeciesIsNotMythical(u16 species) { s32 i; BOOL ret = TRUE; - for (i = 0; i < (s32)NELEMS(UNK_020EE942); i++) + for (i = 0; i < (s32)NELEMS(sNationalDexMythicalMons); i++) { - if (species == UNK_020EE942[i]) + if (species == sNationalDexMythicalMons[i]) ret = FALSE; } return ret; } -BOOL FUN_02024364(u16 a0) +BOOL Pokedex_SpeciesIsNotSinnohMythical(u16 species) { BOOL ret = TRUE; - if (a0 == SPECIES_MANAPHY) + if (species == SPECIES_MANAPHY) ret = FALSE; return ret; } @@ -360,104 +362,104 @@ void Sav2_Pokedex_init(struct Pokedex * pokedex) { memset(pokedex, 0, sizeof(struct Pokedex)); pokedex->magic = 0xBEEFCAFE; - pokedex->field_0139 = 0; - memset(pokedex->field_010C, 0xFF, 28); - pokedex->field_0108[0] = 0xFF; - pokedex->field_0108[1] = 0xFF; - pokedex->field_010A[0] = 0xFF; - pokedex->field_010A[1] = 0xFF; - FUN_0202419C(pokedex); + pokedex->unlockedNationalDex = 0; + memset(pokedex->seenUnown, 0xFF, 28); + pokedex->shellosGastrodon[0] = 0xFF; + pokedex->shellosGastrodon[1] = 0xFF; + pokedex->burmyWormadam[0] = 0xFF; + pokedex->burmyWormadam[1] = 0xFF; + Pokedex_InitSeenDeoxysFormesArray(pokedex); } -u16 FUN_020243C8(struct Pokedex * pokedex) +u16 Pokedex_CountNationalDexCaughtMons(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); s32 i; s32 count = 0; for (i = 1; i <= NATIONAL_DEX_COUNT; i++) { - if (FUN_02024594(pokedex, (u16)i) == TRUE) + if (Pokedex_CheckMonCaughtFlag(pokedex, (u16)i) == TRUE) count++; } return (u16)count; } -u16 FUN_02024404(struct Pokedex * pokedex) +u16 Pokedex_CountNationalDexSeenMons(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); s32 i; s32 count = 0; for (i = 1; i <= NATIONAL_DEX_COUNT; i++) { - if (FUN_020245F0(pokedex, (u16)i) == TRUE) + if (Pokedex_CheckMonSeenFlag(pokedex, (u16)i) == TRUE) count++; } return (u16)count; } -u16 FUN_02024440(struct Pokedex * pokedex) +u16 Pokedex_CountSeenMons(struct Pokedex * pokedex) { if (Pokedex_GetNatDexFlag(pokedex)) - return FUN_02024404(pokedex); + return Pokedex_CountNationalDexSeenMons(pokedex); else - return FUN_020244A4(pokedex); + return Pokedex_CountSinnohDexSeenMons(pokedex); } -u16 FUN_0202445C(struct Pokedex * pokedex) +u16 Pokedex_CountSinnohDexCaughtMons(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); s32 i; s32 count = 0; for (i = 1; i <= NATIONAL_DEX_COUNT; i++) { - if (FUN_02024594(pokedex, (u16)i) == TRUE && SpeciesToSinnohDexNo((u16)i) != 0) + if (Pokedex_CheckMonCaughtFlag(pokedex, (u16)i) == TRUE && SpeciesToSinnohDexNo((u16)i) != 0) count++; } return (u16)count; } -u16 FUN_020244A4(struct Pokedex * pokedex) +u16 Pokedex_CountSinnohDexSeenMons(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); s32 i; s32 count = 0; for (i = 1; i <= NATIONAL_DEX_COUNT; i++) { - if (FUN_020245F0(pokedex, (u16)i) == TRUE && SpeciesToSinnohDexNo((u16)i) != 0) + if (Pokedex_CheckMonSeenFlag(pokedex, (u16)i) == TRUE && SpeciesToSinnohDexNo((u16)i) != 0) count++; } return (u16)count; } -BOOL FUN_020244EC(struct Pokedex * pokedex) +BOOL Pokedex_HasCompletedNationalDex(struct Pokedex * pokedex) { - return FUN_02024518(pokedex) >= 482; + return Pokedex_CountNationalDexCaughtMons_OmitMythicals(pokedex) >= 482; } -BOOL FUN_02024504(struct Pokedex * pokedex) +BOOL Pokedex_HasCompletedSinnohDex(struct Pokedex * pokedex) { - return FUN_02024550(pokedex) >= 150; + return Pokedex_CountSinnohDexSeenMons_OmitMythicals(pokedex) >= 150; } -u16 FUN_02024518(struct Pokedex * pokedex) +u16 Pokedex_CountNationalDexCaughtMons_OmitMythicals(struct Pokedex * pokedex) { s32 i; u16 count = 0; for (i = 1; i <= NATIONAL_DEX_COUNT; i++) { - if (FUN_02024594(pokedex, (u16)i) == TRUE && FUN_02024340((u16)i) == TRUE) + if (Pokedex_CheckMonCaughtFlag(pokedex, (u16)i) == TRUE && Pokedex_SpeciesIsNotMythical((u16)i) == TRUE) count++; } return count; } -u16 FUN_02024550(struct Pokedex * pokedex) +u16 Pokedex_CountSinnohDexSeenMons_OmitMythicals(struct Pokedex * pokedex) { s32 i; u16 count = 0; for (i = 1; i <= NATIONAL_DEX_COUNT; i++) { - if (FUN_020245F0(pokedex, (u16)i) == TRUE && SpeciesToSinnohDexNo((u16)i) != 0 && FUN_02024364((u16)i) == TRUE) + if (Pokedex_CheckMonSeenFlag(pokedex, (u16)i) == TRUE && SpeciesToSinnohDexNo((u16)i) != 0 && Pokedex_SpeciesIsNotSinnohMythical((u16)i) == TRUE) count++; } return count; @@ -473,30 +475,30 @@ static inline BOOL DexSpeciesIsInvalid(u16 species) return FALSE; } -BOOL FUN_02024594(struct Pokedex * pokedex, u16 species) +BOOL Pokedex_CheckMonCaughtFlag(struct Pokedex * pokedex, u16 species) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); if (DexSpeciesIsInvalid(species)) return FALSE; - if (!CheckDexFlag(pokedex->field_0004, species) || !CheckDexFlag(pokedex->field_0044, species)) + if (!CheckDexFlag(pokedex->caughtFlags, species) || !CheckDexFlag(pokedex->seenFlags, species)) return FALSE; return TRUE; } -BOOL FUN_020245F0(struct Pokedex * pokedex, u16 species) +BOOL Pokedex_CheckMonSeenFlag(struct Pokedex * pokedex, u16 species) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); if (DexSpeciesIsInvalid(species)) return FALSE; - return CheckDexFlag(pokedex->field_0044, species); + return CheckDexFlag(pokedex->seenFlags, species); } -u32 FUN_02024648(struct Pokedex * pokedex, u32 a1) +u32 Pokedex_GetSeenSpindaPersonality(struct Pokedex * pokedex, u32 a1) { u32 r6; GF_ASSERT(pokedex->magic == 0xBEEFCAFE); if (a1 == 0) - r6 = (u32)pokedex->field_0104; + r6 = (u32)pokedex->spindaPersonality; else GF_ASSERT(0); // r6 is not initialized because execution should halt here return r6; @@ -507,7 +509,7 @@ s32 FUN_02024674(struct Pokedex * pokedex, u16 species, s32 r6) GF_ASSERT(pokedex->magic == 0xBEEFCAFE); if (DexSpeciesIsInvalid(species)) return -1; - if (CheckDexFlag(pokedex->field_0044, species)) + if (CheckDexFlag(pokedex->seenFlags, species)) return FUN_020242C8(pokedex, species, r6); else return -1; @@ -518,98 +520,98 @@ static inline s32 FindFirstAvailableUnownLetterSlot_2(struct Pokedex * pokedex) s32 i; for (i = 0; i < 28; i++) { - if (pokedex->field_010C[i] == 0xFF) + if (pokedex->seenUnown[i] == 0xFF) break; } return i; } -s32 FUN_020246DC(struct Pokedex * pokedex, s32 a1) +s32 Pokedex_GetSeenUnownI(struct Pokedex * pokedex, s32 a1) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); s32 i; i = FindFirstAvailableUnownLetterSlot_2(pokedex); if (i <= a1) return -1; - return pokedex->field_010C[a1]; + return pokedex->seenUnown[a1]; } -s32 FUN_0202471C(struct Pokedex * pokedex) +s32 Pokedex_CountSeenUnown(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); return FindFirstAvailableUnownLetterSlot_2(pokedex); } -BOOL FUN_02024748(struct Pokedex * pokedex, s32 a1) +BOOL Pokedex_GetSeenShellosForme(struct Pokedex * pokedex, s32 a1) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - if (FUN_02023D8C(pokedex, SPECIES_SHELLOS) <= a1) + if (Pokedex_CountSeenShellosOrGastrodon_Internal(pokedex, SPECIES_SHELLOS) <= a1) return -1; GF_ASSERT(a1 < 2); - return CheckDexFlag(&pokedex->field_0108[0], (u16)(a1 + 1)); + return CheckDexFlag(&pokedex->shellosGastrodon[0], (u16)(a1 + 1)); } -s32 FUN_020247A4(struct Pokedex * pokedex) +s32 Pokedex_CountSeenShellos(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - return FUN_02023D8C(pokedex, SPECIES_SHELLOS); + return Pokedex_CountSeenShellosOrGastrodon_Internal(pokedex, SPECIES_SHELLOS); } -BOOL FUN_020247C8(struct Pokedex * pokedex, s32 a1) +BOOL Pokedex_GetSeenGastrodonForme(struct Pokedex * pokedex, s32 a1) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - if (FUN_02023D8C(pokedex, SPECIES_GASTRODON) <= a1) + if (Pokedex_CountSeenShellosOrGastrodon_Internal(pokedex, SPECIES_GASTRODON) <= a1) return -1; GF_ASSERT(a1 < 2); - return CheckDexFlag(&pokedex->field_0108[1], (u16)(a1 + 1)); + return CheckDexFlag(&pokedex->shellosGastrodon[1], (u16)(a1 + 1)); } -s32 FUN_02024828(struct Pokedex * pokedex) +s32 Pokedex_CountSeenGastrodon(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - return FUN_02023D8C(pokedex, SPECIES_GASTRODON); + return Pokedex_CountSeenShellosOrGastrodon_Internal(pokedex, SPECIES_GASTRODON); } -s32 FUN_0202484C(struct Pokedex * pokedex, s32 a1) +s32 Pokedex_GetSeenBurmyForme(struct Pokedex * pokedex, s32 a1) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - if (FUN_02023F2C(pokedex, SPECIES_BURMY) <= a1) + if (Pokedex_CountSeenBurmyOrWormadam_Internal(pokedex, SPECIES_BURMY) <= a1) return -1; GF_ASSERT(a1 < 3); - return CheckDexFlagPair(&pokedex->field_010A[0], (u16)a1); + return CheckDexFlagPair(&pokedex->burmyWormadam[0], (u16)a1); } -s32 FUN_0202489C(struct Pokedex * pokedex) +s32 Pokedex_CountSeenBurmy(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - return FUN_02023F2C(pokedex, SPECIES_BURMY); + return Pokedex_CountSeenBurmyOrWormadam_Internal(pokedex, SPECIES_BURMY); } -s32 FUN_020248BC(struct Pokedex * pokedex, s32 a1) +s32 Pokedex_GetSeenWormadamForme(struct Pokedex * pokedex, s32 a1) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - if (FUN_02023F2C(pokedex, SPECIES_WORMADAM) <= a1) + if (Pokedex_CountSeenBurmyOrWormadam_Internal(pokedex, SPECIES_WORMADAM) <= a1) return -1; GF_ASSERT(a1 < 3); - return CheckDexFlagPair(&pokedex->field_010A[1], (u16)a1); + return CheckDexFlagPair(&pokedex->burmyWormadam[1], (u16)a1); } -s32 FUN_0202490C(struct Pokedex * pokedex) +s32 Pokedex_CountSeenWormadam(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - return FUN_02023F2C(pokedex, SPECIES_WORMADAM); + return Pokedex_CountSeenBurmyOrWormadam_Internal(pokedex, SPECIES_WORMADAM); } -s32 FUN_02024930(struct Pokedex * pokedex, s32 a1) +s32 Pokedex_GetSeenDeoxysForme(struct Pokedex * pokedex, s32 a1) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - return (s32)GetDeoxysFormeFlag(pokedex, (u8)a1); + return (s32)GetDeoxysFormeFlag_Internal(pokedex, (u8)a1); } -s32 FUN_02024970(struct Pokedex * pokedex) +s32 Pokedex_CountSeenDeoxys(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - return FUN_020240D0(pokedex); + return Pokedex_CountSeenDeoxysFormes_Internal(pokedex); } static inline void SetSeenCaughtGender(struct Pokedex * pokedex, u16 species, u8 gender) @@ -629,7 +631,7 @@ static inline void SetSeenGender(struct Pokedex * pokedex, u16 species, u8 gende UpdateDexFlag(pokedex->field_00C4, species, gender); } -void FUN_0202498C(struct Pokedex * pokedex, struct Pokemon * pokemon) +void Pokedex_SetMonSeenFlag(struct Pokedex * pokedex, struct Pokemon * pokemon) { u16 species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); u32 personality = GetMonData(pokemon, MON_DATA_PERSONALITY, NULL); @@ -637,10 +639,10 @@ void FUN_0202498C(struct Pokedex * pokedex, struct Pokemon * pokemon) GF_ASSERT(pokedex->magic == 0xBEEFCAFE); if (DexSpeciesIsInvalid(species)) return; - if (!CheckDexFlag(pokedex->field_0044, species)) + if (!CheckDexFlag(pokedex->seenFlags, species)) { if (species == SPECIES_SPINDA) - pokedex->field_0104 = personality; + pokedex->spindaPersonality = personality; SetSeenCaughtGender(pokedex, species, (u8)gender); } else @@ -651,11 +653,11 @@ void FUN_0202498C(struct Pokedex * pokedex, struct Pokemon * pokemon) SetSeenGender(pokedex, species, (u8)gender); } } - FUN_020241B8(pokedex, species, pokemon); - SetDexFlag(pokedex->field_0044, species); + Pokedex_SetMonSeenForme(pokedex, species, pokemon); + SetDexFlag(pokedex->seenFlags, species); } -void FUN_02024AF0(struct Pokedex * pokedex, struct Pokemon * pokemon) +void Pokedex_SetMonCaughtFlag(struct Pokedex * pokedex, struct Pokemon * pokemon) { u32 language; // sp08 u32 personality; // sp04 @@ -669,10 +671,10 @@ void FUN_02024AF0(struct Pokedex * pokedex, struct Pokemon * pokemon) GF_ASSERT(pokedex->magic == 0xBEEFCAFE); if (DexSpeciesIsInvalid(species)) return; - if (!CheckDexFlag(pokedex->field_0044, species)) + if (!CheckDexFlag(pokedex->seenFlags, species)) { if (species == SPECIES_SPINDA) - pokedex->field_0104 = personality; + pokedex->spindaPersonality = personality; SetSeenCaughtGender(pokedex, species, (u8)gender); } else @@ -683,22 +685,22 @@ void FUN_02024AF0(struct Pokedex * pokedex, struct Pokemon * pokemon) SetSeenGender(pokedex, species, (u8)gender); } } - FUN_020241B8(pokedex, species, pokemon); - FUN_02024294(pokedex, species, language); - SetDexFlag(pokedex->field_0004, species); - SetDexFlag(pokedex->field_0044, species); + Pokedex_SetMonSeenForme(pokedex, species, pokemon); + Pokedex_SetMeisterFlagBySpeciesAndLanguage(pokedex, species, language); + SetDexFlag(pokedex->caughtFlags, species); + SetDexFlag(pokedex->seenFlags, species); } void Pokedex_SetNatDexFlag(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - pokedex->field_0139 = 1; + pokedex->unlockedNationalDex = 1; } BOOL Pokedex_GetNatDexFlag(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - return pokedex->field_0139; + return pokedex->unlockedNationalDex; } BOOL FUN_02024CC4(struct Pokedex * pokedex) @@ -713,15 +715,15 @@ void FUN_02024CE0(struct Pokedex * pokedex) pokedex->field_0128 = 1; } -s32 FUN_02024D00(struct Pokedex * pokedex, u32 species, u32 language) +s32 Pokedex_GetMeisterFlagBySpeciesAndLanguage(struct Pokedex * pokedex, u32 species, u32 language) { GF_ASSERT(language < 8); GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - s32 r5 = FUN_02087A50(species); + s32 r5 = GetMeisterSpeciesIdx(species); if (r5 == 14) return 0; - s32 r0 = FUN_02087A1C(language); - return pokedex->field_0129[r5] & (1 << r0); + s32 r0 = GetMeisterLanguageIdx(language); + return pokedex->meister[r5] & (1 << r0); } void FUN_02024D4C(struct Pokedex * pokedex) @@ -734,50 +736,50 @@ BOOL FUN_02024D58(struct Pokedex * pokedex) return pokedex->field_0137; } -BOOL FUN_02024D64(struct Pokedex * pokedex) +BOOL Pokedex_GetSinnohDexFlag(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - return pokedex->field_0138; + return pokedex->unlockedSinnohDex; } -void FUN_02024D80(struct Pokedex * pokedex) +void Pokedex_SetSinnohDexFlag(struct Pokedex * pokedex) { GF_ASSERT(pokedex->magic == 0xBEEFCAFE); - pokedex->field_0138 = 1; + pokedex->unlockedSinnohDex = 1; } -struct Pokedex * FUN_02024DA0(struct SaveBlock2 * sav2) +struct Pokedex * Sav2_Pokedex_get(struct SaveBlock2 * sav2) { return (struct Pokedex *)SavArray_get(sav2, 7); } -s32 FUN_02024DAC(struct Pokedex * pokedex, s32 a1, u32 a2) +s32 Pokedex_GetSeenMonForme(struct Pokedex * pokedex, s32 species, u32 forme) { - switch (a1) + switch (species) { case SPECIES_UNOWN: - if (a2 < FUN_0202471C(pokedex)) - return FUN_020246DC(pokedex, (s32)a2); + if (forme < Pokedex_CountSeenUnown(pokedex)) + return Pokedex_GetSeenUnownI(pokedex, (s32)forme); break; case SPECIES_SHELLOS: - if (a2 < FUN_020247A4(pokedex)) - return FUN_02024748(pokedex, (s32)a2); + if (forme < Pokedex_CountSeenShellos(pokedex)) + return Pokedex_GetSeenShellosForme(pokedex, (s32)forme); break; case SPECIES_GASTRODON: - if (a2 < FUN_02024828(pokedex)) - return FUN_020247C8(pokedex, (s32)a2); + if (forme < Pokedex_CountSeenGastrodon(pokedex)) + return Pokedex_GetSeenGastrodonForme(pokedex, (s32)forme); break; case SPECIES_BURMY: - if (a2 < FUN_0202489C(pokedex)) - return FUN_0202484C(pokedex, (s32)a2); + if (forme < Pokedex_CountSeenBurmy(pokedex)) + return Pokedex_GetSeenBurmyForme(pokedex, (s32)forme); break; case SPECIES_WORMADAM: - if (a2 < FUN_0202490C(pokedex)) - return FUN_020248BC(pokedex, (s32)a2); + if (forme < Pokedex_CountSeenWormadam(pokedex)) + return Pokedex_GetSeenWormadamForme(pokedex, (s32)forme); break; case SPECIES_DEOXYS: - if (a2 < FUN_02024970(pokedex)) - return FUN_02024930(pokedex, (s32)a2); + if (forme < Pokedex_CountSeenDeoxys(pokedex)) + return Pokedex_GetSeenDeoxysForme(pokedex, (s32)forme); break; } return 0; diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 0fb6d121..1f48d0fc 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -19,6 +19,8 @@ #pragma thumb on +extern void FUN_02029C74(const u8 *, u8 *); + u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); u32 GetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); @@ -255,7 +257,7 @@ BOOL ReleaseBoxMonLock(struct BoxPokemon * mon, BOOL decrypt_result) void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId) { - struct SealStruct * seal; + struct Mail * mail; u32 capsule; u8 seal_coords[0x18]; ZeroMonData(pokemon); @@ -264,9 +266,9 @@ void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, in MonEncryptSegment((u16 *)&pokemon->party, sizeof(pokemon->party), 0); ENCRYPT_PTY(pokemon); SetMonData(pokemon, MON_DATA_LEVEL, &level); - seal = CreateNewSealsObject(0); - SetMonData(pokemon, MON_DATA_SEAL_STRUCT, seal); - FreeToHeap(seal); + mail = Mail_new(0); + SetMonData(pokemon, MON_DATA_MAIL_STRUCT, mail); + FreeToHeap(mail); capsule = 0; SetMonData(pokemon, MON_DATA_CAPSULE, &capsule); MIi_CpuClearFast(0, seal_coords, sizeof(seal_coords)); @@ -558,8 +560,8 @@ u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * dest) return pokemon->party.spatk; case MON_DATA_SPDEF: return pokemon->party.spdef; - case MON_DATA_SEAL_STRUCT: - CopySealsObject(&pokemon->party.seal_something, dest); + case MON_DATA_MAIL_STRUCT: + Mail_copy(&pokemon->party.seal_something, dest); return 1; case MON_DATA_SEAL_COORDS: FUN_02029C74(pokemon->party.sealCoords, dest); @@ -1046,8 +1048,8 @@ void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * value) case MON_DATA_SPDEF: pokemon->party.spdef = VALUE(u16); break; - case MON_DATA_SEAL_STRUCT: - CopySealsObject((const struct SealStruct *)value, &pokemon->party.seal_something); + case MON_DATA_MAIL_STRUCT: + Mail_copy((const struct Mail *)value, &pokemon->party.seal_something); break; case MON_DATA_SEAL_COORDS: FUN_02029C74((const u8 *)value, pokemon->party.sealCoords); @@ -1475,7 +1477,7 @@ void AddMonDataInternal(struct Pokemon * pokemon, int attr, int value) case MON_DATA_SPEED: case MON_DATA_SPATK: case MON_DATA_SPDEF: - case MON_DATA_SEAL_STRUCT: + case MON_DATA_MAIL_STRUCT: // case MON_DATA_SEAL_COORDS: GF_ASSERT(0); break; @@ -1756,7 +1758,7 @@ void AddBoxMonData(struct BoxPokemon * boxmon, int attr, int value) case MON_DATA_SPEED: case MON_DATA_SPATK: case MON_DATA_SPDEF: - case MON_DATA_SEAL_STRUCT: + case MON_DATA_MAIL_STRUCT: case MON_DATA_SEAL_COORDS: case MON_DATA_SPECIES_EXISTS: case MON_DATA_SANITY_IS_EGG: @@ -2990,16 +2992,16 @@ void FUN_02069A64(struct BoxPokemon * src, struct Pokemon * dest) { u32 sp0 = 0; u8 sp4[12][2]; - struct SealStruct * seals; + struct Mail * mail; dest->box = *src; if (dest->box.box_lock) dest->box.party_lock = TRUE; SetMonData(dest, MON_DATA_STATUS, &sp0); SetMonData(dest, MON_DATA_HP, &sp0); SetMonData(dest, MON_DATA_MAXHP, &sp0); - seals = CreateNewSealsObject(0); - SetMonData(dest, MON_DATA_SEAL_STRUCT, seals); - FreeToHeap(seals); + mail = Mail_new(0); + SetMonData(dest, MON_DATA_MAIL_STRUCT, mail); + FreeToHeap(mail); SetMonData(dest, MON_DATA_CAPSULE, &sp0); MIi_CpuClearFast(0, sp4, sizeof(sp4)); SetMonData(dest, MON_DATA_SEAL_COORDS, sp4); diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c index 4ba492b8..43e83403 100644 --- a/arm9/src/save_arrays.c +++ b/arm9/src/save_arrays.c @@ -20,7 +20,6 @@ extern u32 FUN_02034D80(void); extern u32 FUN_02025954(void); extern u32 FUN_02023AC8(void); extern u32 FUN_02026FD8(void); -extern u32 FUN_02025844(void); extern u32 FUN_02028054(void); extern u32 FUN_02028980(void); extern u32 FUN_02029A84(void); @@ -45,7 +44,6 @@ extern void FUN_02034D88(void *); extern void FUN_0202597C(void *); extern void FUN_02023AD8(void *); extern void FUN_02026F60(void *); -extern void FUN_0202584C(void *); extern void FUN_0202805C(void *); extern void FUN_02028994(void *); extern void FUN_02029A8C(void *); @@ -85,7 +83,7 @@ const struct SaveChunkHeader UNK_020EE700[] = { { 12, 0, (SAVSIZEFN)FUN_02025954, (SAVINITFN)FUN_0202597C }, { 13, 0, (SAVSIZEFN)FUN_02023AC8, (SAVINITFN)FUN_02023AD8 }, { 14, 0, (SAVSIZEFN)FUN_02026FD8, (SAVINITFN)FUN_02026F60 }, - { 15, 0, (SAVSIZEFN)FUN_02025844, (SAVINITFN)FUN_0202584C }, + { 15, 0, (SAVSIZEFN)Sav2_Mailbox_sizeof, (SAVINITFN)Sav2_Mailbox_init }, { 16, 0, (SAVSIZEFN)FUN_02028054, (SAVINITFN)FUN_0202805C }, { 17, 0, (SAVSIZEFN)FUN_020286F8, (SAVINITFN)FUN_02028724 }, { 18, 0, (SAVSIZEFN)FUN_02028980, (SAVINITFN)FUN_02028994 }, diff --git a/arm9/src/unk_02087A1C.c b/arm9/src/unk_02087A1C.c new file mode 100644 index 00000000..f20707ad --- /dev/null +++ b/arm9/src/unk_02087A1C.c @@ -0,0 +1,69 @@ +#include "global.h" +#include "constants/species.h" +#include "unk_02087A1C.h" + +#pragma thumb on + +struct MeisterRodata +{ + u16 species[14]; + u8 languages[6]; +}; + +static const struct MeisterRodata sMeister = { + { + SPECIES_EKANS, + SPECIES_PIKACHU, + SPECIES_PSYDUCK, + SPECIES_PONYTA, + SPECIES_STARYU, + SPECIES_MAGIKARP, + SPECIES_WOBBUFFET, + SPECIES_HERACROSS, + SPECIES_SNEASEL, + SPECIES_TEDDIURSA, + SPECIES_HOUNDOUR, + SPECIES_WINGULL, + SPECIES_SLAKOTH, + SPECIES_ROSELIA + }, + { + LANGUAGE_JAPANESE, + LANGUAGE_ENGLISH, + LANGUAGE_FRENCH, + LANGUAGE_GERMAN, + LANGUAGE_ITALIAN, + LANGUAGE_SPANISH + } +}; + +s32 GetMeisterLanguageIdx(u32 language) +{ + s32 i; + const u8 * ptr = sMeister.languages; + for (i = 0; i < 6; i++, ptr++) + { + if (language == *ptr) + break; + } + return i; +} + +u8 GetMeisterLanguage(s32 idx) +{ + GF_ASSERT(idx < 6); + const u8 * ptr = sMeister.languages; + return ptr[idx]; +} + +s32 GetMeisterSpeciesIdx(u32 species) +{ + s32 i; + const u16 * ptr = sMeister.species; + for (i = 0; i < 14; i++, ptr++) + { + if (species == *ptr) + break; + } + return i; +} diff --git a/include/config.h b/include/config.h index 7b75cd06..c32220d0 100644 --- a/include/config.h +++ b/include/config.h @@ -16,6 +16,7 @@ #define LANGUAGE_GERMAN 5 #define LANGUAGE_SPANISH 7 #define LANGUAGE_KOREAN 8 +#define LANGUAGE_COUNT LANGUAGE_KOREAN #ifdef DIAMOND #define GAME_VERSION VERSION_DIAMOND diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 123b144b..2c9288f5 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -282,7 +282,7 @@ #define MON_DATA_SPEED 166 #define MON_DATA_SPATK 167 #define MON_DATA_SPDEF 168 -#define MON_DATA_SEAL_STRUCT 169 +#define MON_DATA_MAIL_STRUCT 169 #define MON_DATA_SEAL_COORDS 170 #define MON_DATA_SPECIES_EXISTS 171 #define MON_DATA_SANITY_IS_EGG 172 diff --git a/include/daycare.h b/include/daycare.h index d1026f76..98cf0880 100644 --- a/include/daycare.h +++ b/include/daycare.h @@ -3,7 +3,7 @@ struct DayCareMail { - struct SealStruct seal; + struct Mail seal; u16 ot_name[OT_NAME_LENGTH + 1]; u16 nickname[POKEMON_NAME_LENGTH + 1]; u8 padding_5E[2]; @@ -30,7 +30,7 @@ struct DayCareMon * Sav2_DayCare_GetMonX(struct DayCare * daycare, s32 i); struct BoxPokemon * DayCareMon_GetBoxMon(struct DayCareMon * dcmon); struct DayCareMail * DayCareMon_GetExtras(struct DayCareMon * dcmon); u32 DayCareMon_GetSteps(struct DayCareMon * dcmon); -struct SealStruct * DayCareMail_GetCapsule(struct DayCareMail * dcmail); +struct Mail * DayCareMail_GetCapsule(struct DayCareMail * dcmail); u32 Sav2_DayCare_GetEggPID(struct DayCare * daycare); u8 Sav2_DayCare_GetEggCycleCounter(struct DayCare * daycare); void DayCareMon_SetSteps(struct DayCareMon * dcmon, u32 steps); diff --git a/include/global.h b/include/global.h index 24e4388b..3b377e5e 100644 --- a/include/global.h +++ b/include/global.h @@ -15,7 +15,9 @@ extern void ErrorHandling(void); #define GF_ASSERT(expr) do {if (!(expr)) ErrorHandling();} while (0) -extern const int gGameLanguage; +#ifndef IN_MAIN_C +extern const u8 gGameLanguage; extern const u8 gGameVersion; +#endif //IN_MAIN_C #endif //GUARD_GLOBAL_H diff --git a/include/mail.h b/include/mail.h new file mode 100644 index 00000000..47d8a777 --- /dev/null +++ b/include/mail.h @@ -0,0 +1,58 @@ +#ifndef POKEDIAMOND_SEALS_H +#define POKEDIAMOND_SEALS_H + +#include "save_block_2.h" + +union MailMessage +{ + u16 raw; + struct { + u16 unk_0:12; + u16 unk_C:4; + } bits; +}; + +struct Mail +{ + u32 author_otId; // author otid + u8 author_gender; // author gender + u8 author_language; // language + u8 author_version; // version + u8 mail_type; // mail type + u16 author_name[OT_NAME_LENGTH + 1]; // author name + union MailMessage unk_18[3]; + u8 padding_1E[2]; + u16 unk_20[3][4]; +}; + +struct Mail * Mail_new(u32 heap_id); + +void Mail_init(struct Mail * mail); +BOOL Mail_TypeIsValid(struct Mail * mail); +struct Mail * Mail_new(u32 heap_id); +void Mail_copy(const struct Mail * src, struct Mail * dest); +void Mail_SetNewMessageDetails(struct Mail * mail, u8 type, u8 monIdx, struct SaveBlock2 * sav2); +u32 Mail_GetOTID(struct Mail * mail); +u16 * Mail_GetAuthorNamePtr(struct Mail * mail); +u8 Mail_GetAuthorGender(struct Mail * mail); +u8 Mail_GetType(struct Mail * mail); +void Mail_SetType(struct Mail * mail, u8 type); +u8 Mail_GetLanguage(struct Mail * mail); +u8 Mail_GetVersion(struct Mail * mail); +u16 Mail_GetAttrFromUnk18Array(struct Mail * mail, u32 idx, u32 attr); +u16 * Mail_GetUnk20Array(struct Mail * mail, u32 idx); +void Mail_CopyToUnk20Array(struct Mail * mail, const u16 * src, u32 idx); +struct Mail * Sav2_Mailbox_get(struct SaveBlock2 * sav2); +u32 Sav2_Mailbox_sizeof(void); +void Sav2_Mailbox_init(struct Mail * mail); +s32 Mailbox_GetFirstEmptySlotIdx(struct Mail * mail, BOOL r1); +void Mailbox_DeleteSlotI(struct Mail * mail, BOOL r1, s32 idx); +void Mailbox_CopyMailToSlotI(struct Mail * mail, BOOL r1, s32 idx, const struct Mail * src); +s32 Mailbox_CountMessages(struct Mail * mail, BOOL r1); +struct Mail * Mailbox_AllocAndFetchMailI(struct Mail * mail, BOOL r1, s32 idx, u32 heap_id); +void Mailbox_FetchMailIToBuffer(struct Mail * mail, BOOL r1, s32 idx, struct Mail * dest); +s32 MailArray_GetFirstEmptySlotIdx(struct Mail * mail, s32 count); +s32 MailArray_CountMessages(struct Mail * mail, s32 count); +struct Mail * Mailbox_GetPtrToSlotI(struct Mail * mail, BOOL r1, s32 idx); + +#endif //POKEDIAMOND_SEALS_H diff --git a/include/pokedex.h b/include/pokedex.h index 61c051da..11058569 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -6,81 +6,81 @@ struct Pokedex { /* 0x0000 */ u32 magic; // BEEFCAFE - /* 0x0004 */ u8 field_0004[0x3C]; - /* 0x0040 */ u32 field_0040; // Deoxys forme plus top 13 dex flags - /* 0x0044 */ u8 field_0044[0x3C]; - /* 0x0080 */ u32 field_0080; // Deoxys forme plus top 13 dex flags + /* 0x0004 */ u8 caughtFlags[0x3C]; + /* 0x0040 */ u32 caughtFlagsHi_Deoxys1; // Deoxys forme plus top 13 dex flags + /* 0x0044 */ u8 seenFlags[0x3C]; + /* 0x0080 */ u32 seenFlagsHi_Deoxys2; // Deoxys forme plus top 13 dex flags /* 0x0084 */ u8 field_0084[0x40]; // Genders /* 0x00C4 */ u8 field_00C4[0x40]; // Genders - /* 0x0104 */ u32 field_0104; // spinda personality - /* 0x0108 */ u8 field_0108[2]; // Shellos/Gastrodon - /* 0x0108 */ u8 field_010A[2]; // Burmy/Wormadam - /* 0x010C */ u8 field_010C[28]; // Unown + /* 0x0104 */ u32 spindaPersonality; // spinda personality + /* 0x0108 */ u8 shellosGastrodon[2]; // Shellos/Gastrodon + /* 0x0108 */ u8 burmyWormadam[2]; // Burmy/Wormadam + /* 0x010C */ u8 seenUnown[28]; // Unown /* 0x0128 */ u8 field_0128; - /* 0x0129 */ u8 field_0129[14]; // Meister? + /* 0x0129 */ u8 meister[14]; // Meister? /* 0x0137 */ u8 field_0137; - /* 0x0138 */ u8 field_0138; - /* 0x0139 */ u8 field_0139; + /* 0x0138 */ u8 unlockedSinnohDex; + /* 0x0139 */ u8 unlockedNationalDex; /* 0x013A */ u8 padding_013A[2]; }; u32 Sav2_Pokedex_sizeof(void); struct Pokedex * Sav2_Pokedex_new(u32 heap_id); void Sav2_Pokedex_Copy(const struct Pokedex * src, struct Pokedex * dest); -s32 FUN_02023D8C(struct Pokedex * pokedex, u32 species); -BOOL FUN_02023DEC(struct Pokedex * pokedex, u32 species, u8 state); -void FUN_02023E70(struct Pokedex * pokedex, u32 species, u32 state); -s32 FUN_02023F2C(struct Pokedex * pokedex, u32 species); -BOOL FUN_02023F88(struct Pokedex * pokedex, u32 species, u8 state); -void FUN_02023FEC(struct Pokedex * pokedex, u32 species, s32 state); -void FUN_02024068(struct Pokedex * pokedex, u8 r4, u8 r6); -s32 FUN_020240D0(struct Pokedex * pokedex); -BOOL FUN_02024114(struct Pokedex * pokedex, u32 state); -void FUN_0202415C(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon); -void FUN_0202419C(struct Pokedex * pokedex); -void FUN_020241B8(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon); -void FUN_02024294(struct Pokedex * pokedex, u32 species, u32 language); +s32 Pokedex_CountSeenShellosOrGastrodon_Internal(struct Pokedex * pokedex, u32 species); +BOOL Pokedex_HasSeenShellosOrGastrodonForme(struct Pokedex * pokedex, u32 species, u8 state); +void Pokedex_SetSeenShellosOrGastrodonForme(struct Pokedex * pokedex, u32 species, u32 state); +s32 Pokedex_CountSeenBurmyOrWormadam_Internal(struct Pokedex * pokedex, u32 species); +BOOL Pokedex_HasSeenBurmyOrWormadamForme(struct Pokedex * pokedex, u32 species, u8 state); +void Pokedex_SetSeenBurmyOrWormadamForme(struct Pokedex * pokedex, u32 species, s32 state); +void Pokedex_SetSeenDeoxysFormeAt(struct Pokedex * pokedex, u8 r4, u8 r6); +s32 Pokedex_CountSeenDeoxysFormes_Internal(struct Pokedex * pokedex); +BOOL Pokedex_HasSeenDeoxysForme(struct Pokedex * pokedex, u32 state); +void Pokedex_TrySetSeenDeoxysForme(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon); +void Pokedex_InitSeenDeoxysFormesArray(struct Pokedex * pokedex); +void Pokedex_SetMonSeenForme(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon); +void Pokedex_SetMeisterFlagBySpeciesAndLanguage(struct Pokedex * pokedex, u32 species, u32 language); s32 FUN_020242C8(struct Pokedex * pokedex, u16 species, s32 r4); -BOOL FUN_02024340(u16 species); -BOOL FUN_02024364(u16 a0); +BOOL Pokedex_SpeciesIsNotMythical(u16 species); +BOOL Pokedex_SpeciesIsNotSinnohMythical(u16 species); void Sav2_Pokedex_init(struct Pokedex * pokedex); -u16 FUN_020243C8(struct Pokedex * pokedex); -u16 FUN_02024404(struct Pokedex * pokedex); -u16 FUN_02024440(struct Pokedex * pokedex); -u16 FUN_0202445C(struct Pokedex * pokedex); -u16 FUN_020244A4(struct Pokedex * pokedex); -BOOL FUN_020244EC(struct Pokedex * pokedex); -BOOL FUN_02024504(struct Pokedex * pokedex); -u16 FUN_02024518(struct Pokedex * pokedex); -u16 FUN_02024550(struct Pokedex * pokedex); -BOOL FUN_02024594(struct Pokedex * pokedex, u16 species); -BOOL FUN_020245F0(struct Pokedex * pokedex, u16 species); -u32 FUN_02024648(struct Pokedex * pokedex, u32 a1); +u16 Pokedex_CountNationalDexCaughtMons(struct Pokedex * pokedex); +u16 Pokedex_CountNationalDexSeenMons(struct Pokedex * pokedex); +u16 Pokedex_CountSeenMons(struct Pokedex * pokedex); +u16 Pokedex_CountSinnohDexCaughtMons(struct Pokedex * pokedex); +u16 Pokedex_CountSinnohDexSeenMons(struct Pokedex * pokedex); +BOOL Pokedex_HasCompletedNationalDex(struct Pokedex * pokedex); +BOOL Pokedex_HasCompletedSinnohDex(struct Pokedex * pokedex); +u16 Pokedex_CountNationalDexCaughtMons_OmitMythicals(struct Pokedex * pokedex); +u16 Pokedex_CountSinnohDexSeenMons_OmitMythicals(struct Pokedex * pokedex); +BOOL Pokedex_CheckMonCaughtFlag(struct Pokedex * pokedex, u16 species); +BOOL Pokedex_CheckMonSeenFlag(struct Pokedex * pokedex, u16 species); +u32 Pokedex_GetSeenSpindaPersonality(struct Pokedex * pokedex, u32 a1); s32 FUN_02024674(struct Pokedex * pokedex, u16 species, s32 r6); -s32 FUN_020246DC(struct Pokedex * pokedex, s32 a1); -s32 FUN_0202471C(struct Pokedex * pokedex); -BOOL FUN_02024748(struct Pokedex * pokedex, s32 a1); -s32 FUN_020247A4(struct Pokedex * pokedex); -BOOL FUN_020247C8(struct Pokedex * pokedex, s32 a1); -s32 FUN_02024828(struct Pokedex * pokedex); -s32 FUN_0202484C(struct Pokedex * pokedex, s32 a1); -s32 FUN_0202489C(struct Pokedex * pokedex); -s32 FUN_020248BC(struct Pokedex * pokedex, s32 a1); -s32 FUN_0202490C(struct Pokedex * pokedex); -s32 FUN_02024930(struct Pokedex * pokedex, s32 a1); -s32 FUN_02024970(struct Pokedex * pokedex); -void FUN_0202498C(struct Pokedex * pokedex, struct Pokemon * pokemon); -void FUN_02024AF0(struct Pokedex * pokedex, struct Pokemon * pokemon); +s32 Pokedex_GetSeenUnownI(struct Pokedex * pokedex, s32 a1); +s32 Pokedex_CountSeenUnown(struct Pokedex * pokedex); +BOOL Pokedex_GetSeenShellosForme(struct Pokedex * pokedex, s32 a1); +s32 Pokedex_CountSeenShellos(struct Pokedex * pokedex); +BOOL Pokedex_GetSeenGastrodonForme(struct Pokedex * pokedex, s32 a1); +s32 Pokedex_CountSeenGastrodon(struct Pokedex * pokedex); +s32 Pokedex_GetSeenBurmyForme(struct Pokedex * pokedex, s32 a1); +s32 Pokedex_CountSeenBurmy(struct Pokedex * pokedex); +s32 Pokedex_GetSeenWormadamForme(struct Pokedex * pokedex, s32 a1); +s32 Pokedex_CountSeenWormadam(struct Pokedex * pokedex); +s32 Pokedex_GetSeenDeoxysForme(struct Pokedex * pokedex, s32 a1); +s32 Pokedex_CountSeenDeoxys(struct Pokedex * pokedex); +void Pokedex_SetMonSeenFlag(struct Pokedex * pokedex, struct Pokemon * pokemon); +void Pokedex_SetMonCaughtFlag(struct Pokedex * pokedex, struct Pokemon * pokemon); void Pokedex_SetNatDexFlag(struct Pokedex * pokedex); BOOL Pokedex_GetNatDexFlag(struct Pokedex * pokedex); BOOL FUN_02024CC4(struct Pokedex * pokedex); void FUN_02024CE0(struct Pokedex * pokedex); -s32 FUN_02024D00(struct Pokedex * pokedex, u32 species, u32 language); +s32 Pokedex_GetMeisterFlagBySpeciesAndLanguage(struct Pokedex * pokedex, u32 species, u32 language); void FUN_02024D4C(struct Pokedex * pokedex); BOOL FUN_02024D58(struct Pokedex * pokedex); -BOOL FUN_02024D64(struct Pokedex * pokedex); -void FUN_02024D80(struct Pokedex * pokedex); -struct Pokedex * FUN_02024DA0(struct SaveBlock2 * sav2); -s32 FUN_02024DAC(struct Pokedex * pokedex, s32 a1, u32 a2); +BOOL Pokedex_GetSinnohDexFlag(struct Pokedex * pokedex); +void Pokedex_SetSinnohDexFlag(struct Pokedex * pokedex); +struct Pokedex * Sav2_Pokedex_get(struct SaveBlock2 * sav2); +s32 Pokedex_GetSeenMonForme(struct Pokedex * pokedex, s32 a1, u32 a2); #endif //POKEDIAMOND_POKEDEX_H diff --git a/include/pokemon.h b/include/pokemon.h index 196343de..097df9e0 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -6,7 +6,7 @@ // Enums #include "constants/species.h" -#include "seals.h" +#include "mail.h" #include "constants/pokemon.h" #include "string16.h" #include "player_data.h" @@ -142,7 +142,7 @@ struct PartyPokemon /* 0x096 */ u16 speed; /* 0x098 */ u16 spatk; /* 0x09A */ u16 spdef; - /* 0x09C */ struct SealStruct seal_something; // a struct? + /* 0x09C */ struct Mail seal_something; // a struct? /* 0x0D4 */ u8 sealCoords[0x18]; // u8 pairs? }; diff --git a/include/seals.h b/include/seals.h deleted file mode 100644 index 8fda23b9..00000000 --- a/include/seals.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef POKEDIAMOND_SEALS_H -#define POKEDIAMOND_SEALS_H - -struct SealStruct -{ - // TODO: define - u8 filler_00[0x38]; -}; - -struct SealStruct * CreateNewSealsObject(u32 heap_id); - -void CopySealsObject(const struct SealStruct *, struct SealStruct *); -void FUN_02029C74(const u8 *, u8 *); - -#endif //POKEDIAMOND_SEALS_H diff --git a/include/unk_02087A1C.h b/include/unk_02087A1C.h index 28155209..f19b3c93 100644 --- a/include/unk_02087A1C.h +++ b/include/unk_02087A1C.h @@ -1,7 +1,8 @@ #ifndef POKEDIAMOND_UNK_02087A1C_H #define POKEDIAMOND_UNK_02087A1C_H -s32 FUN_02087A50(u32 species); -s32 FUN_02087A1C(u32 language); +s32 GetMeisterLanguageIdx(u32 language); +u8 GetMeisterLanguage(s32 idx); +s32 GetMeisterSpeciesIdx(u32 species); #endif //POKEDIAMOND_UNK_02087A1C_H |