summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_script_commands.s2
-rw-r--r--asm/easy_chat.s4
-rw-r--r--asm/main_menu.s4
-rw-r--r--asm/pokedex.s282
-rw-r--r--asm/pokemon_size_record.s2
-rw-r--r--asm/save_menu_util.s4
-rw-r--r--asm/start_menu.s2
-rw-r--r--asm/trainer_card.s14
-rw-r--r--data/maps/CeladonCity_Condominiums_3F/scripts.inc2
-rw-r--r--data/specials.inc4
-rw-r--r--include/pokedex.h9
-rw-r--r--ld_script.txt1
-rw-r--r--src/diploma.c4
-rw-r--r--src/help_system_812B1E0.c2
-rw-r--r--src/pokedex.c117
-rw-r--r--src/prof_pc.c8
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();
}