diff options
-rw-r--r-- | asm/battle_script_commands.s | 2 | ||||
-rw-r--r-- | asm/easy_chat.s | 4 | ||||
-rw-r--r-- | asm/main_menu.s | 4 | ||||
-rw-r--r-- | asm/pokedex.s | 282 | ||||
-rw-r--r-- | asm/pokemon_size_record.s | 2 | ||||
-rw-r--r-- | asm/save_menu_util.s | 4 | ||||
-rw-r--r-- | asm/start_menu.s | 2 | ||||
-rw-r--r-- | asm/trainer_card.s | 14 | ||||
-rw-r--r-- | data/maps/CeladonCity_Condominiums_3F/scripts.inc | 2 | ||||
-rw-r--r-- | data/specials.inc | 4 | ||||
-rw-r--r-- | include/pokedex.h | 9 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/diploma.c | 4 | ||||
-rw-r--r-- | src/help_system_812B1E0.c | 2 | ||||
-rw-r--r-- | src/pokedex.c | 117 | ||||
-rw-r--r-- | src/prof_pc.c | 8 |
16 files changed, 147 insertions, 314 deletions
diff --git a/asm/battle_script_commands.s b/asm/battle_script_commands.s index 42d1f653d..7d93cba64 100644 --- a/asm/battle_script_commands.s +++ b/asm/battle_script_commands.s @@ -30322,7 +30322,7 @@ _0802C8E8: lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8088E38 + bl GetPokedexHeightWeight ldrh r1, [r4] lsls r0, 16 lsrs r0, 16 diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 0ec71e087..604929f1f 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -51,7 +51,7 @@ start_menu_is_selected_item_valid: @ 80BD754 cmp r0, 0x15 bne _080BD76C movs r0, 0 - bl pokedex_count + bl GetNationalPokedexCount lsls r0, 16 lsrs r0, 16 b _080BD782 @@ -1054,7 +1054,7 @@ sub_80BDE88: @ 80BDE88 ldr r1, [r4] movs r0, 0 strh r0, [r1] - bl pokedex_count + bl GetNationalPokedexCount lsls r0, 16 cmp r0, 0 beq _080BDEB0 diff --git a/asm/main_menu.s b/asm/main_menu.s index f88fea21a..fed088ff3 100644 --- a/asm/main_menu.s +++ b/asm/main_menu.s @@ -1504,13 +1504,13 @@ sub_800CF3C: @ 800CF3C cmp r0, 0 beq _0800CF64 movs r0, 0x1 - bl pokedex_count + bl GetNationalPokedexCount b _0800CF6A .align 2, 0 _0800CF60: .4byte 0x00000829 _0800CF64: movs r0, 0x1 - bl sub_8088EDC + bl GetKantoPokedexCount _0800CF6A: lsls r0, 16 lsrs r6, r0, 16 diff --git a/asm/pokedex.s b/asm/pokedex.s deleted file mode 100644 index 6fc551a11..000000000 --- a/asm/pokedex.s +++ /dev/null @@ -1,282 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8088E20 -sub_8088E20: @ 8088E20 - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _08088E34 @ =gPokedexEntries - adds r0, r1 - bx lr - .align 2, 0 -_08088E34: .4byte gPokedexEntries - thumb_func_end sub_8088E20 - - thumb_func_start sub_8088E38 -sub_8088E38: @ 8088E38 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0 - beq _08088E4E - cmp r1, 0x1 - beq _08088E60 - movs r0, 0x1 - b _08088E6C -_08088E4E: - ldr r0, _08088E5C @ =gPokedexEntries - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0xC] - b _08088E6C - .align 2, 0 -_08088E5C: .4byte gPokedexEntries -_08088E60: - ldr r0, _08088E70 @ =gPokedexEntries - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1, 0xE] -_08088E6C: - pop {r1} - bx r1 - .align 2, 0 -_08088E70: .4byte gPokedexEntries - thumb_func_end sub_8088E38 - - thumb_func_start GetSetPokedexFlag -GetSetPokedexFlag: @ 8088E74 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - asrs r0, 24 - pop {r1} - bx r1 - thumb_func_end GetSetPokedexFlag - - thumb_func_start pokedex_count -pokedex_count: @ 8088E8C - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - movs r0, 0 - ldr r7, _08088EA4 @ =0x00000181 -_08088E98: - cmp r6, 0 - beq _08088EA8 - cmp r6, 0x1 - beq _08088EB2 - adds r4, r0, 0x1 - b _08088ECA - .align 2, 0 -_08088EA4: .4byte 0x00000181 -_08088EA8: - adds r4, r0, 0x1 - lsls r0, r4, 16 - lsrs r0, 16 - movs r1, 0 - b _08088EBA -_08088EB2: - adds r4, r0, 0x1 - lsls r0, r4, 16 - lsrs r0, 16 - movs r1, 0x1 -_08088EBA: - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _08088ECA - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_08088ECA: - lsls r0, r4, 16 - lsrs r0, 16 - cmp r0, r7 - bls _08088E98 - adds r0, r5, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end pokedex_count - - thumb_func_start sub_8088EDC -sub_8088EDC: @ 8088EDC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - movs r0, 0 -_08088EE6: - cmp r6, 0 - beq _08088EF2 - cmp r6, 0x1 - beq _08088EFC - adds r4, r0, 0x1 - b _08088F14 -_08088EF2: - adds r4, r0, 0x1 - lsls r0, r4, 16 - lsrs r0, 16 - movs r1, 0 - b _08088F04 -_08088EFC: - adds r4, r0, 0x1 - lsls r0, r4, 16 - lsrs r0, 16 - movs r1, 0x1 -_08088F04: - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _08088F14 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_08088F14: - lsls r0, r4, 16 - lsrs r0, 16 - cmp r0, 0x96 - bls _08088EE6 - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8088EDC - - thumb_func_start sub_8088F24 -sub_8088F24: @ 8088F24 - push {r4,lr} - movs r0, 0 -_08088F28: - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - bl HoennToNationalOrder - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - bne _08088F48 - movs r0, 0 - b _08088F50 -_08088F48: - adds r0, r4, 0 - cmp r0, 0xC7 - bls _08088F28 - movs r0, 0x1 -_08088F50: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8088F24 - - thumb_func_start sub_8088F58 -sub_8088F58: @ 8088F58 - push {r4,lr} - movs r0, 0 -_08088F5C: - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - bne _08088F74 - movs r0, 0 - b _08088F7C -_08088F74: - adds r0, r4, 0 - cmp r0, 0x95 - bls _08088F5C - movs r0, 0x1 -_08088F7C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8088F58 - - thumb_func_start HasAllKantoMons -HasAllKantoMons: @ 8088F84 - push {r4,r5,lr} - movs r0, 0 -_08088F88: - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _08088FD6 - adds r0, r4, 0 - cmp r0, 0x95 - bls _08088F88 - movs r0, 0x97 -_08088FA4: - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - beq _08088FD6 - adds r0, r4, 0 - cmp r0, 0xF7 - bls _08088FA4 - movs r0, 0xFB - ldr r5, _08088FDC @ =0x0000017f -_08088FC2: - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r4, 0 - movs r1, 0x1 - bl GetSetPokedexFlag - lsls r0, 24 - cmp r0, 0 - bne _08088FE0 -_08088FD6: - movs r0, 0 - b _08088FE8 - .align 2, 0 -_08088FDC: .4byte 0x0000017f -_08088FE0: - adds r0, r4, 0 - cmp r0, r5 - bls _08088FC2 - movs r0, 0x1 -_08088FE8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end HasAllKantoMons - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokemon_size_record.s b/asm/pokemon_size_record.s index ac1f2a017..cb87652fa 100644 --- a/asm/pokemon_size_record.s +++ b/asm/pokemon_size_record.s @@ -128,7 +128,7 @@ GetMonSize: @ 80A0770 lsls r0, 16 lsrs r0, 16 movs r1, 0 - bl sub_8088E38 + bl GetPokedexHeightWeight lsls r0, 16 lsrs r7, r0, 16 adds r0, r6, 0 diff --git a/asm/save_menu_util.s b/asm/save_menu_util.s index 129d08921..2d2866914 100644 --- a/asm/save_menu_util.s +++ b/asm/save_menu_util.s @@ -59,11 +59,11 @@ _080F8034: cmp r0, 0 beq _080F8044 movs r0, 0x1 - bl pokedex_count + bl GetNationalPokedexCount b _080F804A _080F8044: movs r0, 0x1 - bl sub_8088EDC + bl GetKantoPokedexCount _080F804A: adds r1, r0, 0 lsls r1, 16 diff --git a/asm/start_menu.s b/asm/start_menu.s index f7ea9a712..40a678a01 100644 --- a/asm/start_menu.s +++ b/asm/start_menu.s @@ -820,7 +820,7 @@ sub_806F3CC: @ 806F3CC cmp r1, r0 bne _0806F408 movs r0, 0 - bl pokedex_count + bl GetNationalPokedexCount lsls r0, 16 cmp r0, 0 bne _0806F408 diff --git a/asm/trainer_card.s b/asm/trainer_card.s index 85797d38f..803f3841d 100644 --- a/asm/trainer_card.s +++ b/asm/trainer_card.s @@ -973,7 +973,7 @@ _080897EE: ldr r0, _08089890 @ =0x00000829 bl FlagGet strb r0, [r5, 0x2] - bl sub_8088F24 + bl HasAllHoennMons strb r0, [r5, 0x3] bl sub_808A0E0 strh r0, [r5, 0xC] @@ -1062,7 +1062,7 @@ _080898BA: mov r0, r8 strb r0, [r5, 0x1] _080898BE: - bl sub_8088F58 + bl HasAllKantoMons lsls r0, 16 cmp r0, 0 beq _080898CE @@ -1070,7 +1070,7 @@ _080898BE: adds r0, 0x1 strb r0, [r5, 0x1] _080898CE: - bl HasAllKantoMons + bl HasAllMons lsls r0, 16 cmp r0, 0 beq _080898DE @@ -1115,9 +1115,9 @@ _08089918: movs r0, 0x1 strb r0, [r5, 0x1] _0808991C: - bl sub_8088F58 - strb r0, [r5, 0x3] bl HasAllKantoMons + strb r0, [r5, 0x3] + bl HasAllMons adds r6, r5, 0 adds r6, 0x4D strb r0, [r6] @@ -2043,11 +2043,11 @@ sub_808A0E0: @ 808A0E0 cmp r0, 0 bne _0808A0F2 movs r0, 0x1 - bl sub_8088EDC + bl GetKantoPokedexCount b _0808A0F8 _0808A0F2: movs r0, 0x1 - bl pokedex_count + bl GetNationalPokedexCount _0808A0F8: lsls r0, 16 lsrs r0, 16 diff --git a/data/maps/CeladonCity_Condominiums_3F/scripts.inc b/data/maps/CeladonCity_Condominiums_3F/scripts.inc index 350bc76d0..990b7adb3 100644 --- a/data/maps/CeladonCity_Condominiums_3F/scripts.inc +++ b/data/maps/CeladonCity_Condominiums_3F/scripts.inc @@ -16,7 +16,7 @@ CeladonCity_Condominiums_3F_EventScript_16C3ED:: @ 816C3ED CeladonCity_Condominiums_3F_EventScript_16C3F6:: @ 816C3F6 lock faceplayer - specialvar VAR_RESULT, sub_8088F58 + specialvar VAR_RESULT, HasAllKantoMons compare_var_to_value VAR_RESULT, 1 goto_if_eq EventScript_16C412 msgbox gUnknown_8196356 diff --git a/data/specials.inc b/data/specials.inc index 2524a6046..cdd41f50d 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -344,7 +344,7 @@ gSpecials:: @ 815FD60 def_special sub_807F0B0 def_special nullsub_75 def_special nullsub_75 - def_special sub_8088F58 + def_special HasAllKantoMons def_special sub_80CAD7C def_special nullsub_75 def_special sub_80E759C @@ -441,7 +441,7 @@ gSpecials:: @ 815FD60 def_special sub_8147594 def_special sub_80CD034 def_special sub_815D834 - def_special HasAllKantoMons + def_special HasAllMons def_special sub_80CD074 def_special sub_80CD098 def_special sub_811B15C diff --git a/include/pokedex.h b/include/pokedex.h index 0cd52e64d..718d2e853 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -2,11 +2,12 @@ #define GUARD_POKEDEX_H #define KANTO_DEX_COUNT 151 +#define HOENN_DEX_COUNT 202 #define NATIONAL_DEX_COUNT 386 enum { - DEX_MODE_HOENN, + DEX_MODE_KANTO, DEX_MODE_NATIONAL }; @@ -37,11 +38,11 @@ void CopyMonCategoryText(u16 species, u8 *dst); u16 GetPokedexHeightWeight(u16 dexNum, u8 data); u16 GetNationalPokedexCount(u8); u16 GetKantoPokedexCount(u8); -bool16 HasAllKantoMons(void); +bool16 HasAllMons(void); u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality); s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); -u16 pokedex_count(u8); +u16 GetNationalPokedexCount(u8); u16 sub_80C0844(u8); -u16 sub_8088EDC(u8); +u16 GetKantoPokedexCount(u8); #endif // GUARD_POKEDEX_H diff --git a/ld_script.txt b/ld_script.txt index de2f851dc..da6acc739 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -129,7 +129,6 @@ SECTIONS { src/scanline_effect.o(.text); asm/option_menu.o(.text); src/pokedex.o(.text); - asm/pokedex.o(.text); asm/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); asm/pokemon_icon.o(.text); diff --git a/src/diploma.c b/src/diploma.c index 517ee8aa0..e32d7592f 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -132,7 +132,7 @@ static void Task_DiplomaInit(u8 taskId) CopyToBgTilemapBuffer(1, gUnknown_84154E8, 0, 0); break; case 4: - if (HasAllKantoMons()) + if (HasAllMons()) { SetGpuReg(REG_OFFSET_BG1HOFS, 0x80 << 1); } @@ -265,7 +265,7 @@ static void DiplomaPrintText(void) u32 width; DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName); - if (HasAllKantoMons()) + if (HasAllMons()) { DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B68F); } diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c index 98d6ce8be..024cfcf09 100644 --- a/src/help_system_812B1E0.c +++ b/src/help_system_812B1E0.c @@ -1247,7 +1247,7 @@ static bool8 sub_812B780(u8 id) return FlagGet(FLAG_0x828); case 4: case 34: - if (sub_8088EDC(1) > 1) + if (GetKantoPokedexCount(1) > 1) return TRUE; return FALSE; case 15: diff --git a/src/pokedex.c b/src/pokedex.c index 485605233..42c9326e3 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -2,7 +2,122 @@ #include "pokedex.h" #include "constants/species.h" +extern s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, u8 unk); + ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _(""); #include "data/pokemon/pokedex_text.h" -#include "data/pokemon/pokedex_entries.h"
\ No newline at end of file +#include "data/pokemon/pokedex_entries.h" + +const u8 *sub_8088E20(u16 dexNum) +{ + return gPokedexEntries[dexNum].categoryName; +} + +u16 GetPokedexHeightWeight(u16 dexNum, u8 data) +{ + switch (data) + { + case 0: // height + return gPokedexEntries[dexNum].height; + case 1: // weight + return gPokedexEntries[dexNum].weight; + default: + return 1; + } +} + +s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID) +{ + return sub_8104AB0(nationalDexNo, caseID, 0); +} + +u16 GetNationalPokedexCount(u8 caseID) +{ + u16 count = 0; + u16 i; + + for (i = 0; i < NATIONAL_DEX_COUNT; i++) + { + switch (caseID) + { + case FLAG_GET_SEEN: + if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN)) + count++; + break; + case FLAG_GET_CAUGHT: + if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) + count++; + break; + } + } + return count; +} + +u16 GetKantoPokedexCount(u8 caseID) +{ + u16 count = 0; + u16 i; + + for (i = 0; i < KANTO_DEX_COUNT; i++) + { + switch (caseID) + { + case FLAG_GET_SEEN: + if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN)) + count++; + break; + case FLAG_GET_CAUGHT: + if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) + count++; + break; + } + } + return count; +} + +bool16 HasAllHoennMons(void) +{ + u16 i; + + for (i = 0; i < HOENN_DEX_COUNT - 2; i++) + { + if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT)) + return FALSE; + } + return TRUE; +} + +bool8 HasAllKantoMons(void) +{ + u16 i; + + for (i = 0; i < KANTO_DEX_COUNT - 1; i++) + { + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) + return FALSE; + } + return TRUE; +} + +u16 HasAllMons(void) +{ + u16 i; + + for (i = 0; i < NATIONAL_DEX_MEWTWO; i++) + { + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) + return 0; + } + for (i = NATIONAL_DEX_MEW; i < NATIONAL_DEX_TYRANITAR; i++) + { + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) + return 0; + } + for (i = NATIONAL_DEX_CELEBI; i < NATIONAL_DEX_RAYQUAZA; i++) + { + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) + return 0; + } + return 1; +} diff --git a/src/prof_pc.c b/src/prof_pc.c index cfccbd6e3..35566e714 100644 --- a/src/prof_pc.c +++ b/src/prof_pc.c @@ -25,13 +25,13 @@ u16 Special_GetPokedexCount(void) { if (gSpecialVar_0x8004 == 0) { - gSpecialVar_0x8005 = sub_8088EDC(0); - gSpecialVar_0x8006 = sub_8088EDC(1); + gSpecialVar_0x8005 = GetKantoPokedexCount(0); + gSpecialVar_0x8006 = GetKantoPokedexCount(1); } else { - gSpecialVar_0x8005 = pokedex_count(0); - gSpecialVar_0x8006 = pokedex_count(1); + gSpecialVar_0x8005 = GetNationalPokedexCount(0); + gSpecialVar_0x8006 = GetNationalPokedexCount(1); } return sub_806E25C(); } |