summaryrefslogtreecommitdiff
path: root/src/pokedex.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokedex.c')
-rw-r--r--src/pokedex.c1626
1 files changed, 1020 insertions, 606 deletions
diff --git a/src/pokedex.c b/src/pokedex.c
index d27f0d89c..fa74b073a 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -1,66 +1,56 @@
#include "global.h"
-#include "gba/m4a_internal.h"
-#include "pokedex.h"
-#include "sprite.h"
-#include "graphics.h"
-#include "decompress.h"
+#include "battle_main.h"
#include "bg.h"
-#include "window.h"
+#include "data2.h"
+#include "decompress.h"
#include "event_data.h"
-#include "palette.h"
+#include "gpu_regs.h"
+#include "graphics.h"
+#include "international_string_util.h"
#include "main.h"
-#include "sound.h"
-#include "task.h"
-#include "trainer_pokemon_sprites.h"
-#include "scanline_effect.h"
#include "malloc.h"
-#include "gpu_regs.h"
-#include "constants/songs.h"
-#include "constants/species.h"
-#include "constants/rgb.h"
-#include "overworld.h"
#include "menu.h"
-#include "text_window.h"
-#include "data2.h"
-#include "string_util.h"
-#include "trig.h"
+#include "m4a.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokedex.h"
#include "pokedex_area_screen.h"
#include "pokedex_cry_screen.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
#include "strings.h"
-#include "m4a.h"
-#include "international_string_util.h"
+#include "task.h"
+#include "text_window.h"
+#include "trainer_pokemon_sprites.h"
+#include "trig.h"
+#include "window.h"
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/species.h"
-static EWRAM_DATA struct PokedexView *gUnknown_02039B4C = NULL;
+extern u8 gDexCryScreenState;
+
+// EWRAM
+static EWRAM_DATA struct PokedexView *sPokedexView = NULL;
static EWRAM_DATA u16 gUnknown_02039B50 = 0;
static EWRAM_DATA u8 gUnknown_02039B52 = 0;
-static EWRAM_DATA struct PokedexListItem *gUnknown_02039B54 = NULL;
+static EWRAM_DATA struct PokedexListItem *sPokedexListItem = NULL;
+// IWRAM common
u8 gUnknown_030060B0;
-MainCallback gUnknown_030060B4;
-u8 gUnknown_030061EC;
-
-struct PokedexEntry
-{
- /*0x00*/ u8 categoryName[12];
- /*0x0C*/ u16 height; //in decimeters
- /*0x0E*/ u16 weight; //in hectograms
- /*0x10*/ const u8 *description;
- /*0x14*/ u16 unused;
- /*0x16*/ u16 pokemonScale;
- /*0x18*/ u16 pokemonOffset;
- /*0x1A*/ u16 trainerScale;
- /*0x1C*/ u16 trainerOffset;
-}; /*size = 0x20*/
+void (*gUnknown_030060B4)(void);
-struct UnknownStruct2
+struct PokedexOption
{
- const u8 *text1;
- const u8 *text2;
+ const u8 *description;
+ const u8 *title;
};
struct UnknownStruct1
{
- const struct UnknownStruct2 *unk0;
+ const struct PokedexOption *pokedexList;
u8 unk4;
u8 unk5;
u16 unk6;
@@ -85,35 +75,6 @@ struct UnknownStruct4
u8 unk9;
};
-//TO BE CONVERTED TO C
-
-extern const u8 gUnknown_0855D30C[];
-extern struct BgTemplate gUnknown_0856E630[];
-extern struct WindowTemplate gUnknown_0856E640[];
-extern const u16 gUnknown_0856E610[16];
-extern const struct PokedexEntry gPokedexEntries[];
-extern struct BgTemplate gUnknown_0856E668[];
-extern struct WindowTemplate gUnknown_0856E670[];
-extern const u8 *gMonFootprintTable[];
-extern u8 gUnknown_0856ED08[][4];
-extern struct BgTemplate gUnknown_0856EFF8[];
-extern struct WindowTemplate gUnknown_0856F008[];
-extern const u8 gUnknown_0856ED9C[][4];
-extern const u8 gUnknown_0856EDB8[][4];
-extern const u8 gUnknown_0856EDD4[][4];
-extern const u8 gUnknown_0856EDF0[][4];
-extern const struct UnknownStruct1 gUnknown_0856EFC8[];
-extern const struct UnknownStruct3 gUnknown_0856ED30[];
-extern const struct UnknownStruct4 gUnknown_0856ED48[];
-extern const struct UnknownStruct2 gUnknown_0856EE0C[];
-extern const struct UnknownStruct2 gUnknown_0856EE5C[];
-extern const struct UnknownStruct2 gUnknown_0856EEB4[];
-extern const struct UnknownStruct2 gUnknown_0856EF14[];
-extern const struct UnknownStruct2 gUnknown_0856EE24[];
-extern const u8 gUnknown_0856EFAC[];
-extern const u8 gUnknown_0856EFAE[];
-extern const u8 gUnknown_0856EFB4[];
-
#define HOENN_DEX_COUNT 202
#define NATIONAL_DEX_COUNT 386
@@ -128,7 +89,7 @@ struct PokedexListItem
struct PokedexView
{
- struct PokedexListItem unk0[NATIONAL_DEX_COUNT];
+ struct PokedexListItem pokedexList[NATIONAL_DEX_COUNT];
u16 unk608;
u8 unk60A_1:1;
u8 unk60A_2:1;
@@ -140,14 +101,14 @@ struct PokedexView
u16 unk614;
u16 dexOrder;
u16 unk618;
- u16 unk61A;
- u16 unk61C;
+ u16 seenCount;
+ u16 ownCount;
u16 unk61E[4];
u16 selectedMonSpriteId;
u16 unk628;
u16 unk62A;
u8 unk62C;
- u8 unk62D;
+ u8 initialVOffset;
u8 unk62E;
u8 unk62F;
s16 unk630;
@@ -196,20 +157,20 @@ void sub_80BBDE8(u8);
void sub_80BBE70(u8);
void sub_80BBEB8(u8);
void sub_80BC0A8(u8);
-void sub_80BC0F8(u8);
+static void HandleButtonPress_StartMenu(u8);
void sub_80BC2D4(u8);
void sub_80BC360(u8);
void sub_80BC3DC(u8);
void sub_80BC47C(u8);
bool8 sub_80BC514(u8);
-void sub_80BC844(u8);
+static void LoadPokedexBgPalette(u8);
void sub_80BC890(void);
void sub_80BC8D4(u8, u8);
-void sub_80BD154(u16, u8, u8, u16);
-void sub_80BD1F4(u16, u8, u8, u16);
-u8 sub_80BD23C(u16, u8, u8);
+static void CreateMonDexNum(u16, u8, u8, u16);
+static void CreateCaughtBall(u16, u8, u8, u16);
+static u8 CreateMonName(u16, u8, u8);
void sub_80BD28C(u8, u8, u16);
-void sub_80BD2B4(u16, u16);
+static void CreateInitialPokemonSprites(u16, u16);
bool8 sub_80BD404(u8, u8, u8);
u16 sub_80BD69C(u16, u16);
void sub_80BD8D0(void);
@@ -217,9 +178,9 @@ bool8 sub_80BD930(void);
u8 sub_80BDA40(void);
u16 sub_80BDA8C(u16);
u32 sub_80BDACC(u16, s16, s16);
-void sub_80BDB7C(u8);
+static void CreateInterfaceSprites(u8);
void sub_80BE470(struct Sprite *sprite);
-void sub_80BE604(struct Sprite *sprite);
+static void SpriteCB_Scrollbar(struct Sprite *sprite);
void sub_80BE658(struct Sprite *sprite);
void sub_80BE758(struct Sprite *sprite);
void sub_80BE780(struct Sprite *sprite);
@@ -288,7 +249,7 @@ void sub_80C2668(u32, const u8*);
void sub_80C267C(void);
// const rom data
-#include "data/pokedex_orders.h"
+#include "data/pokemon/pokedex_orders.h"
static const struct OamData sOamData_855CFE4 =
{
@@ -297,7 +258,7 @@ static const struct OamData sOamData_855CFE4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = ST_OAM_SQUARE,
.x = 0,
.matrixNum = 0,
.size = 0,
@@ -314,7 +275,7 @@ static const struct OamData sOamData_855CFEC =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = ST_OAM_H_RECTANGLE,
.x = 0,
.matrixNum = 0,
.size = 0,
@@ -331,7 +292,7 @@ static const struct OamData sOamData_855CFF4 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = ST_OAM_H_RECTANGLE,
.x = 0,
.matrixNum = 0,
.size = 2,
@@ -348,7 +309,7 @@ static const struct OamData sOamData_855CFFC =
.objMode = 2,
.mosaic = 0,
.bpp = 0,
- .shape = 0,
+ .shape = ST_OAM_SQUARE,
.x = 0,
.matrixNum = 0,
.size = 2,
@@ -365,7 +326,7 @@ static const struct OamData sOamData_855D004 =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 1,
+ .shape = ST_OAM_H_RECTANGLE,
.x = 0,
.matrixNum = 0,
.size = 3,
@@ -382,7 +343,7 @@ static const struct OamData sOamData_855D00C =
.objMode = 0,
.mosaic = 0,
.bpp = 0,
- .shape = 2,
+ .shape = ST_OAM_V_RECTANGLE,
.x = 0,
.matrixNum = 0,
.size = 0,
@@ -652,7 +613,7 @@ static const union AnimCmd *const sSpriteAnimTable_855D190[] =
sSpriteAnim_855D10C
};
-const struct SpriteTemplate gUnknown_0855D194 =
+static const struct SpriteTemplate sScrollBarSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -660,10 +621,10 @@ const struct SpriteTemplate gUnknown_0855D194 =
.anims = sSpriteAnimTable_855D114,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80BE604,
+ .callback = SpriteCB_Scrollbar,
};
-const struct SpriteTemplate gUnknown_0855D1AC =
+static const struct SpriteTemplate sArrowSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -674,7 +635,7 @@ const struct SpriteTemplate gUnknown_0855D1AC =
.callback = sub_80BE658,
};
-const struct SpriteTemplate gUnknown_0855D1C4 =
+static const struct SpriteTemplate sInterfaceTextSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -685,7 +646,7 @@ const struct SpriteTemplate gUnknown_0855D1C4 =
.callback = sub_80BE758,
};
-const struct SpriteTemplate gUnknown_0855D1DC =
+static const struct SpriteTemplate sRotatingPokeballSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -696,7 +657,7 @@ const struct SpriteTemplate gUnknown_0855D1DC =
.callback = sub_80BE780,
};
-const struct SpriteTemplate gUnknown_0855D1F4 =
+static const struct SpriteTemplate sSeenOwnTextSpriteTemplate =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -707,7 +668,7 @@ const struct SpriteTemplate gUnknown_0855D1F4 =
.callback = sub_80BE44C,
};
-const struct SpriteTemplate gUnknown_0855D20C =
+static const struct SpriteTemplate gUnknown_0855D20C =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -718,7 +679,7 @@ const struct SpriteTemplate gUnknown_0855D20C =
.callback = sub_80BE44C,
};
-const struct SpriteTemplate gUnknown_0855D224 =
+static const struct SpriteTemplate gUnknown_0855D224 =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -729,7 +690,7 @@ const struct SpriteTemplate gUnknown_0855D224 =
.callback = sub_80BE44C,
};
-const struct SpriteTemplate gUnknown_0855D23C =
+static const struct SpriteTemplate gUnknown_0855D23C =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -740,7 +701,7 @@ const struct SpriteTemplate gUnknown_0855D23C =
.callback = sub_80BE44C,
};
-const struct SpriteTemplate gUnknown_0855D254 =
+static const struct SpriteTemplate gUnknown_0855D254 =
{
.tileTag = 4096,
.paletteTag = 4096,
@@ -751,22 +712,22 @@ const struct SpriteTemplate gUnknown_0855D254 =
.callback = sub_80BE834,
};
-const struct CompressedSpriteSheet gSpriteSheets_0855D26C[] =
+static const struct CompressedSpriteSheet sInterfaceSpriteSheet[] =
{
{gPokedexMenu2_Gfx, 0x2000, 4096},
{0}
};
-const struct SpritePalette gSpritePalettes_0855D26C[] =
+static const struct SpritePalette sInterfaceSpritePalette[] =
{
{gPokedexText_Pal, 4096},
{0}
};
-const u8 gUnknown_0855D28C[] = {0x4, 0x8, 0x10, 0x20, 0x20};
-const u8 gUnknown_0855D291[] = {0x8, 0x4, 0x2, 0x1, 0x1};
+static const u8 gUnknown_0855D28C[] = {0x4, 0x8, 0x10, 0x20, 0x20};
+static const u8 gUnknown_0855D291[] = {0x8, 0x4, 0x2, 0x1, 0x1};
-const struct BgTemplate gBgTemplates_0855D298[] =
+static const struct BgTemplate gBgTemplates_0855D298[] =
{
{
.bg = 0,
@@ -806,15 +767,466 @@ const struct BgTemplate gBgTemplates_0855D298[] =
}
};
-const struct WindowTemplate sWindowTemplates_0855D2A8[] =
+static const struct WindowTemplate sPokemonList_WindowTemplate[] =
+{
+ {
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 32,
+ .height = 32,
+ .paletteNum = 0,
+ .baseBlock = 1,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const u8 sText_No000[] = _("{NO}000");
+static const u8 gUnknown_0855D2BE[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp");
+static const u8 sText_TenDashes[] = _("----------");
+
+ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _("");
+
+#include "data/pokemon/pokedex_text.h"
+#include "data/pokemon/pokedex_entries.h"
+
+static const u16 gUnknown_0856E610[] = INCBIN_U16("graphics/pokedex/black.gbapal");
+
+static const struct BgTemplate gUnknown_0856E630[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 12,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 13,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 14,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ }
+};
+
+static const struct WindowTemplate gUnknown_0856E640[] =
{
- {2, 0, 0, 0x20, 0x20, 0, 1},
+ {
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 32,
+ .height = 20,
+ .paletteNum = 0,
+ .baseBlock = 0x0001,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 25,
+ .tilemapTop = 8,
+ .width = 2,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x0281,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 12,
+ .width = 32,
+ .height = 7,
+ .paletteNum = 8,
+ .baseBlock = 0x0285,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 18,
+ .tilemapTop = 3,
+ .width = 10,
+ .height = 8,
+ .paletteNum = 9,
+ .baseBlock = 0x0365,
+ },
DUMMY_WIN_TEMPLATE
};
-const u8 gUnknown_0855D2B8[] = _("{NO}000");
-const u8 gUnknown_0855D2BE[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp");
-const u8 sText_TenDashes[] = _("----------");
+static const struct BgTemplate gUnknown_0856E668[] =
+{
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 14,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+};
+
+static const struct WindowTemplate gUnknown_0856E670[] =
+{
+ {
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 32,
+ .height = 20,
+ .paletteNum = 0,
+ .baseBlock = 0x0001,
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 25,
+ .tilemapTop = 8,
+ .width = 2,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x0281,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const u8 sText_TenDashes2[] = _("----------");
+
+#include "data/pokemon_graphics/footprint_table.h"
+
+static const u8 gUnknown_0856ED08[][4] =
+{
+ {0x00, 0x00, 0x00, 0x00},
+ {0xbb, 0x03, 0xd5, 0x03},
+ {0xbe, 0x03, 0xd8, 0x03},
+ {0xc1, 0x03, 0xdb, 0x03},
+ {0xc4, 0x03, 0xde, 0x03},
+ {0xc7, 0x03, 0xe1, 0x03},
+ {0xca, 0x03, 0xe4, 0x03},
+ {0xcd, 0x03, 0xe7, 0x03},
+ {0xd0, 0x03, 0xea, 0x03},
+ {0xd3, 0x02, 0xed, 0x02},
+};
+
+static const struct UnknownStruct3 gUnknown_0856ED30[] =
+{
+ {
+ .text = gUnknown_085E87A5,
+ .unk4 = 0,
+ .unk5 = 0,
+ .unk6 = 5,
+ },
+ {
+ .text = gUnknown_085E87D6,
+ .unk4 = 6,
+ .unk5 = 0,
+ .unk6 = 5,
+ },
+ {
+ .text = gUnknown_085E87EF,
+ .unk4 = 12,
+ .unk5 = 0,
+ .unk6 = 5,
+ },
+};
+
+static const struct UnknownStruct4 gUnknown_0856ED48[] =
+{
+ {
+ .text = gUnknown_085E8840,
+ .unk4 = 0,
+ .unk5 = 2,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 2,
+ .unk9 = 12,
+ },
+ {
+ .text = gUnknown_085E887C,
+ .unk4 = 0,
+ .unk5 = 4,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 4,
+ .unk9 = 12,
+ },
+ {
+ .text = gUnknown_085E88A6,
+ .unk4 = 0,
+ .unk5 = 6,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 6,
+ .unk9 = 6,
+ },
+ {
+ .text = gUnknown_085E88A6,
+ .unk4 = 0,
+ .unk5 = 6,
+ .unk6 = 5,
+ .unk7 = 11,
+ .unk8 = 6,
+ .unk9 = 6,
+ },
+ {
+ .text = gUnknown_085E881F,
+ .unk4 = 0,
+ .unk5 = 8,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 8,
+ .unk9 = 12,
+ },
+ {
+ .text = gUnknown_085E8806,
+ .unk4 = 0,
+ .unk5 = 10,
+ .unk6 = 5,
+ .unk7 = 5,
+ .unk8 = 10,
+ .unk9 = 12,
+ },
+ {
+ .text = gUnknown_085E88C8,
+ .unk4 = 0,
+ .unk5 = 12,
+ .unk6 = 5,
+ .unk7 = 0,
+ .unk8 = 0,
+ .unk9 = 0,
+ },
+};
+
+static const u8 gUnknown_0856ED9C[][4] =
+{
+ {0xFF, 0xFF, 0xFF, 1},
+ {0xFF, 0xFF, 0, 2},
+ {0xFF, 3, 1, 4},
+ { 2, 0xFF, 1, 4},
+ {0xFF, 0xFF, 2, 5},
+ {0xFF, 0xFF, 4, 6},
+ {0xFF, 0xFF, 5, 0xFF},
+};
+
+static const u8 gUnknown_0856EDB8[][4] =
+{
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 5},
+ {0xFF, 0xFF, 4, 6},
+ {0xFF, 0xFF, 5, 0xFF},
+};
+
+static const u8 gUnknown_0856EDD4[][4] =
+{
+ {0xFF, 0xFF, 0xFF, 1},
+ {0xFF, 0xFF, 0, 2},
+ {0xFF, 3, 1, 4},
+ { 2, 0xFF, 1, 4},
+ {0xFF, 0xFF, 2, 6},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 4, 0xFF},
+};
+
+static const u8 gUnknown_0856EDF0[][4] =
+{
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 6},
+ {0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 4, 0xFF},
+};
+
+static const struct PokedexOption gDexModeOptions[] =
+{
+ {gText_DexHoennDescription, gText_DexHoennTitle},
+ {gText_DexNatDescription, gText_DexNatTitle},
+ {NULL, NULL},
+};
+
+static const struct PokedexOption gDexSortOptions[] =
+{
+ {gText_DexSortNumericalDescription, gText_DexSortNumericalTitle},
+ {gText_DexSortAtoZDescription, gText_DexSortAtoZTitle},
+ {gText_DexSortHeaviestDescription, gText_DexSortHeaviestTitle},
+ {gText_DexSortLightestDescription, gText_DexSortLightestTitle},
+ {gText_DexSortTallestDescription, gText_DexSortTallestTitle},
+ {ggText_DexSortSmallestDescription, gText_DexSortSmallestTitle},
+ {NULL, NULL},
+};
+
+static const struct PokedexOption gDexSearchAlphaOptions[] =
+{
+ {gText_DexEmptyString, gText_DexSearchDontSpecify},
+ {gText_DexEmptyString, gText_DexSearchAlphaABC},
+ {gText_DexEmptyString, gText_DexSearchAlphaDEF},
+ {gText_DexEmptyString, gText_DexSearchAlphaGHI},
+ {gText_DexEmptyString, gText_DexSearchAlphaJKL},
+ {gText_DexEmptyString, gText_DexSearchAlphaMNO},
+ {gText_DexEmptyString, gText_DexSearchAlphaPQR},
+ {gText_DexEmptyString, gText_DexSearchAlphaSTU},
+ {gText_DexEmptyString, gText_DexSearchAlphaVWX},
+ {gText_DexEmptyString, gText_DexSearchAlphaYZ},
+ {NULL, NULL},
+};
+
+static const struct PokedexOption gDexSearchColorOptions[] =
+{
+ {gText_DexEmptyString, gText_DexSearchDontSpecify},
+ {gText_DexEmptyString, gText_DexSearchColorRed},
+ {gText_DexEmptyString, gText_DexSearchColorBlue},
+ {gText_DexEmptyString, gText_DexSearchColorYellow},
+ {gText_DexEmptyString, gText_DexSearchColorGreen},
+ {gText_DexEmptyString, gText_DexSearchColorBlack},
+ {gText_DexEmptyString, gText_DexSearchColorBrown},
+ {gText_DexEmptyString, gText_DexSearchColorPurple},
+ {gText_DexEmptyString, gText_DexSearchColorGray},
+ {gText_DexEmptyString, gText_DexSearchColorWhite},
+ {gText_DexEmptyString, gText_DexSearchColorPink},
+ {NULL, NULL},
+};
+
+static const struct PokedexOption gDexSearchTypeOptions[] =
+{
+ {gText_DexEmptyString, gText_DexSearchTypeNone},
+ {gText_DexEmptyString, gTypeNames[TYPE_NORMAL]},
+ {gText_DexEmptyString, gTypeNames[TYPE_FIGHTING]},
+ {gText_DexEmptyString, gTypeNames[TYPE_FLYING]},
+ {gText_DexEmptyString, gTypeNames[TYPE_POISON]},
+ {gText_DexEmptyString, gTypeNames[TYPE_GROUND]},
+ {gText_DexEmptyString, gTypeNames[TYPE_ROCK]},
+ {gText_DexEmptyString, gTypeNames[TYPE_BUG]},
+ {gText_DexEmptyString, gTypeNames[TYPE_GHOST]},
+ {gText_DexEmptyString, gTypeNames[TYPE_STEEL]},
+ {gText_DexEmptyString, gTypeNames[TYPE_FIRE]},
+ {gText_DexEmptyString, gTypeNames[TYPE_WATER]},
+ {gText_DexEmptyString, gTypeNames[TYPE_GRASS]},
+ {gText_DexEmptyString, gTypeNames[TYPE_ELECTRIC]},
+ {gText_DexEmptyString, gTypeNames[TYPE_PSYCHIC]},
+ {gText_DexEmptyString, gTypeNames[TYPE_ICE]},
+ {gText_DexEmptyString, gTypeNames[TYPE_DRAGON]},
+ {gText_DexEmptyString, gTypeNames[TYPE_DARK]},
+ {NULL, NULL},
+};
+
+static const u8 gUnknown_0856EFAC[] = {0x00, 0x01};
+static const u8 gUnknown_0856EFAE[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
+static const u8 gDexSearchTypeIds[] = {
+ TYPE_NONE,
+ TYPE_NORMAL,
+ TYPE_FIGHTING,
+ TYPE_FLYING,
+ TYPE_POISON,
+ TYPE_GROUND,
+ TYPE_ROCK,
+ TYPE_BUG,
+ TYPE_GHOST,
+ TYPE_STEEL,
+ TYPE_FIRE,
+ TYPE_WATER,
+ TYPE_GRASS,
+ TYPE_ELECTRIC,
+ TYPE_PSYCHIC,
+ TYPE_ICE,
+ TYPE_DRAGON,
+ TYPE_DARK,
+};
+
+static const struct UnknownStruct1 gUnknown_0856EFC8[] =
+{
+ {gDexSearchAlphaOptions, 6, 7, 10},
+ {gDexSearchColorOptions, 8, 9, 11},
+ {gDexSearchTypeOptions, 10, 11, NUMBER_OF_MON_TYPES},
+ {gDexSearchTypeOptions, 12, 13, NUMBER_OF_MON_TYPES},
+ {gDexSortOptions, 4, 5, 6},
+ {gDexModeOptions, 2, 3, 2},
+};
+
+static const struct BgTemplate gUnknown_0856EFF8[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 12,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 13,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 14,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ }
+};
+
+static const struct WindowTemplate gUnknown_0856F008[] =
+{
+ {
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 32,
+ .height = 20,
+ .paletteNum = 0,
+ .baseBlock = 0x0001,
+ },
+ DUMMY_WIN_TEMPLATE
+};
// .text
@@ -855,15 +1267,15 @@ void sub_80BB370(void)
TransferPlttBuffer();
}
-void sub_80BB384(struct PokedexView *pokedexView)
+static void ResetPokedexView(struct PokedexView *pokedexView)
{
u16 i;
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
{
- pokedexView->unk0[i].dexNum |= 0xFFFF;
- pokedexView->unk0[i].seen = 0;
- pokedexView->unk0[i].owned = 0;
+ pokedexView->pokedexList[i].dexNum |= 0xFFFF;
+ pokedexView->pokedexList[i].seen = 0;
+ pokedexView->pokedexList[i].owned = 0;
}
pokedexView->unk608 = 0;
pokedexView->unk60A_1 = 0;
@@ -875,14 +1287,14 @@ void sub_80BB384(struct PokedexView *pokedexView)
pokedexView->unk614 = 0;
pokedexView->dexOrder = 0;
pokedexView->unk618 = 0;
- pokedexView->unk61A = 0;
- pokedexView->unk61C = 0;
+ pokedexView->seenCount = 0;
+ pokedexView->ownCount = 0;
for (i = 0; i <= 3; i++)
pokedexView->unk61E[i] |= 0xFFFF;
pokedexView->unk628 = 0;
pokedexView->unk62A = 0;
pokedexView->unk62C = 0;
- pokedexView->unk62D = 0;
+ pokedexView->initialVOffset = 0;
pokedexView->unk62E = 0;
pokedexView->unk62F = 0;
pokedexView->unk630 = 0;
@@ -906,7 +1318,7 @@ void sub_80BB384(struct PokedexView *pokedexView)
pokedexView->unk65C[i] = 0;
}
-void sub_80BB534(void)
+void CB2_Pokedex(void)
{
u8 *addr;
u32 size;
@@ -933,34 +1345,34 @@ void sub_80BB534(void)
gMain.state++;
break;
case 2:
- gUnknown_02039B4C = AllocZeroed(sizeof(struct PokedexView));
- sub_80BB384(gUnknown_02039B4C);
+ sPokedexView = AllocZeroed(sizeof(struct PokedexView));
+ ResetPokedexView(sPokedexView);
CreateTask(sub_80BB78C, 0);
- gUnknown_02039B4C->dexMode = gSaveBlock2Ptr->pokedex.unknown1;
+ sPokedexView->dexMode = gSaveBlock2Ptr->pokedex.unknown1;
if (!IsNationalPokedexEnabled())
- gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
- gUnknown_02039B4C->dexOrder = gSaveBlock2Ptr->pokedex.order;
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B50;
- gUnknown_02039B4C->unk62C = gUnknown_02039B52;
- gUnknown_02039B4C->selectedScreen = 0;
+ sPokedexView->dexMode = DEX_MODE_HOENN;
+ sPokedexView->dexOrder = gSaveBlock2Ptr->pokedex.order;
+ sPokedexView->selectedPokemon = gUnknown_02039B50;
+ sPokedexView->unk62C = gUnknown_02039B52;
+ sPokedexView->selectedScreen = 0;
if (!IsNationalPokedexEnabled())
{
- gUnknown_02039B4C->unk61A = GetHoennPokedexCount(0);
- gUnknown_02039B4C->unk61C = GetHoennPokedexCount(1);
+ sPokedexView->seenCount = GetHoennPokedexCount(0);
+ sPokedexView->ownCount = GetHoennPokedexCount(1);
}
else
{
- gUnknown_02039B4C->unk61A = GetNationalPokedexCount(0);
- gUnknown_02039B4C->unk61C = GetNationalPokedexCount(1);
+ sPokedexView->seenCount = GetNationalPokedexCount(0);
+ sPokedexView->ownCount = GetNationalPokedexCount(1);
}
- gUnknown_02039B4C->unk62D = 8;
+ sPokedexView->initialVOffset = 8;
gMain.state++;
break;
case 3:
EnableInterrupts(1);
SetVBlankCallback(sub_80BB370);
SetMainCallback2(sub_80BB774);
- sub_80BC8D4(gUnknown_02039B4C->dexMode, gUnknown_02039B4C->dexOrder);
+ sub_80BC8D4(sPokedexView->dexMode, sPokedexView->dexOrder);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x80);
break;
}
@@ -976,26 +1388,26 @@ void sub_80BB774(void)
void sub_80BB78C(u8 taskId)
{
- gUnknown_02039B4C->unk64C_1 = FALSE;
+ sPokedexView->unk64C_1 = FALSE;
if (sub_80BC514(0))
gTasks[taskId].func = sub_80BB7D4;
}
void sub_80BB7D4(u8 taskId)
{
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY);
- if (gUnknown_02039B4C->menuY)
+ if (sPokedexView->menuY)
{
- gUnknown_02039B4C->menuY -= 8;
+ sPokedexView->menuY -= 8;
}
else
{
- if ((gMain.newKeys & A_BUTTON) && gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon].seen)
+ if ((gMain.newKeys & A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen)
{
sub_80BD8D0();
- BeginNormalPaletteFade(~(1 << (gSprites[gUnknown_02039B4C->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK);
- gSprites[gUnknown_02039B4C->selectedMonSpriteId].callback = sub_80BE470;
+ BeginNormalPaletteFade(~(1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, RGB_BLACK);
+ gSprites[sPokedexView->selectedMonSpriteId].callback = sub_80BE470;
gTasks[taskId].func = sub_80BBBF4;
PlaySE(SE_PIN);
sub_80BC890();
@@ -1003,9 +1415,9 @@ void sub_80BB7D4(u8 taskId)
else if (gMain.newKeys & START_BUTTON)
{
//Open menu
- gUnknown_02039B4C->menuY = 0;
- gUnknown_02039B4C->menuIsOpen = 1;
- gUnknown_02039B4C->menuCursorPos = 0;
+ sPokedexView->menuY = 0;
+ sPokedexView->menuIsOpen = 1;
+ sPokedexView->menuCursorPos = 0;
gTasks[taskId].func = sub_80BBA78;
PlaySE(SE_SELECT);
}
@@ -1014,11 +1426,11 @@ void sub_80BB7D4(u8 taskId)
PlaySE(SE_SELECT);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].data[0] = sub_80C1258();
- gUnknown_02039B4C->unk64E = 0;
- gUnknown_02039B4C->unk62A = gUnknown_02039B4C->unk62C;
- gUnknown_02039B4C->unk610 = gUnknown_02039B4C->selectedPokemon;
- gUnknown_02039B4C->unk614 = gUnknown_02039B4C->dexMode;
- gUnknown_02039B4C->unk618 = gUnknown_02039B4C->dexOrder;
+ sPokedexView->unk64E = 0;
+ sPokedexView->unk62A = sPokedexView->unk62C;
+ sPokedexView->unk610 = sPokedexView->selectedPokemon;
+ sPokedexView->unk614 = sPokedexView->dexMode;
+ sPokedexView->unk618 = sPokedexView->dexOrder;
gTasks[taskId].func = sub_80BBD1C;
PlaySE(SE_PC_LOGIN);
sub_80BC890();
@@ -1032,8 +1444,8 @@ void sub_80BB7D4(u8 taskId)
else
{
//Handle D-pad
- gUnknown_02039B4C->selectedPokemon = sub_80BD69C(gUnknown_02039B4C->selectedPokemon, 0xE);
- if (gUnknown_02039B4C->unk62E)
+ sPokedexView->selectedPokemon = sub_80BD69C(sPokedexView->selectedPokemon, 0xE);
+ if (sPokedexView->unk62E)
gTasks[taskId].func = sub_80BBA28;
}
}
@@ -1041,41 +1453,41 @@ void sub_80BB7D4(u8 taskId)
void sub_80BBA28(u8 taskId)
{
- if (sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636))
+ if (sub_80BD404(sPokedexView->unk62F, sPokedexView->unk634, sPokedexView->unk636))
gTasks[taskId].func = sub_80BB7D4;
}
void sub_80BBA78(u8 taskId)
{
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY);
//If menu is not open, slide it up, on screen
- if (gUnknown_02039B4C->menuY != 80)
+ if (sPokedexView->menuY != 80)
{
- gUnknown_02039B4C->menuY += 8;
+ sPokedexView->menuY += 8;
}
else
{
if (gMain.newKeys & A_BUTTON)
{
- switch (gUnknown_02039B4C->menuCursorPos)
+ switch (sPokedexView->menuCursorPos)
{
case 0: //BACK TO LIST
default:
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 1: //LIST TOP
- gUnknown_02039B4C->selectedPokemon = 0;
- gUnknown_02039B4C->unk62C = 0x40;
+ sPokedexView->selectedPokemon = 0;
+ sPokedexView->unk62C = 0x40;
sub_80BDA40();
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 2: //LIST BOTTOM
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->pokemonListCount - 1;
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->pokemonListCount * 16 + 0x30;
+ sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1;
+ sPokedexView->unk62C = sPokedexView->pokemonListCount * 16 + 0x30;
sub_80BDA40();
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 3: //CLOSE POKEDEX
@@ -1089,18 +1501,18 @@ void sub_80BBA78(u8 taskId)
//Exit menu when Start or B is pressed
if (gMain.newKeys & (START_BUTTON | B_BUTTON))
{
- gUnknown_02039B4C->menuIsOpen = 0;
+ sPokedexView->menuIsOpen = 0;
gTasks[taskId].func = sub_80BB7D4;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_02039B4C->menuCursorPos != 0)
+ else if ((gMain.newAndRepeatedKeys & DPAD_UP) && sPokedexView->menuCursorPos != 0)
{
- gUnknown_02039B4C->menuCursorPos--;
+ sPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_02039B4C->menuCursorPos <= 2)
+ else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && sPokedexView->menuCursorPos <= 2)
{
- gUnknown_02039B4C->menuCursorPos++;
+ sPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
}
}
@@ -1108,10 +1520,10 @@ void sub_80BBA78(u8 taskId)
void sub_80BBBF4(u8 taskId)
{
- if (gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.x == 48 && gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.y == 56)
+ if (gSprites[sPokedexView->selectedMonSpriteId].pos1.x == 48 && gSprites[sPokedexView->selectedMonSpriteId].pos1.y == 56)
{
- gUnknown_02039B4C->unk64B = gUnknown_02039B4C->unk64A;
- gTasks[taskId].data[0] = sub_80BE91C(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gUnknown_02039B4C->selectedMonSpriteId);
+ sPokedexView->unk64B = sPokedexView->unk64A;
+ gTasks[taskId].data[0] = sub_80BE91C(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], sPokedexView->selectedMonSpriteId);
gTasks[taskId].func = sub_80BBC74;
}
}
@@ -1120,13 +1532,13 @@ void sub_80BBC74(u8 taskId)
{
if (gTasks[gTasks[taskId].data[0]].isActive)
{
- if (gUnknown_02039B4C->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
- sub_80BE9F8(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gTasks[taskId].data[0]);
+ if (sPokedexView->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
+ sub_80BE9F8(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], gTasks[taskId].data[0]);
}
else
{
- gUnknown_02039B50 = gUnknown_02039B4C->selectedPokemon;
- gUnknown_02039B52 = gUnknown_02039B4C->unk62C;
+ gUnknown_02039B50 = sPokedexView->selectedPokemon;
+ gUnknown_02039B52 = sPokedexView->unk62C;
gTasks[taskId].func = sub_80BB78C;
}
}
@@ -1136,20 +1548,20 @@ void sub_80BBD1C(u8 taskId)
if (!gTasks[gTasks[taskId].data[0]].isActive)
{
sub_80BDA40();
- if (gUnknown_02039B4C->unk64E != 0)
+ if (sPokedexView->unk64E != 0)
{
- gUnknown_02039B4C->selectedPokemon = 0;
- gUnknown_02039B4C->unk62C = 0x40;
+ sPokedexView->selectedPokemon = 0;
+ sPokedexView->unk62C = 0x40;
gTasks[taskId].func = sub_80BBE70;
}
else
{
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A;
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610;
- gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614;
+ sPokedexView->unk62C = sPokedexView->unk62A;
+ sPokedexView->selectedPokemon = sPokedexView->unk610;
+ sPokedexView->dexMode = sPokedexView->unk614;
if (!IsNationalPokedexEnabled())
- gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
- gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618;
+ sPokedexView->dexMode = DEX_MODE_HOENN;
+ sPokedexView->dexOrder = sPokedexView->unk618;
gTasks[taskId].func = sub_80BB78C;
}
}
@@ -1159,43 +1571,43 @@ void sub_80BBDE8(u8 taskId)
{
if (!gPaletteFade.active)
{
- gSaveBlock2Ptr->pokedex.unknown1 = gUnknown_02039B4C->dexMode;
+ gSaveBlock2Ptr->pokedex.unknown1 = sPokedexView->dexMode;
if (!IsNationalPokedexEnabled())
gSaveBlock2Ptr->pokedex.unknown1 = DEX_MODE_HOENN;
- gSaveBlock2Ptr->pokedex.order = gUnknown_02039B4C->dexOrder;
+ gSaveBlock2Ptr->pokedex.order = sPokedexView->dexOrder;
sub_80BDA40();
sub_80BC890();
DestroyTask(taskId);
SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
- Free(gUnknown_02039B4C);
+ Free(sPokedexView);
}
}
void sub_80BBE70(u8 taskId)
{
- gUnknown_02039B4C->unk64C_1 = TRUE;
+ sPokedexView->unk64C_1 = TRUE;
if (sub_80BC514(3))
gTasks[taskId].func = sub_80BBEB8;
}
void sub_80BBEB8(u8 taskId)
{
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY);
- if (gUnknown_02039B4C->menuY)
+ if (sPokedexView->menuY)
{
- gUnknown_02039B4C->menuY -= 8;
+ sPokedexView->menuY -= 8;
}
else
{
- if ((gMain.newKeys & A_BUTTON) && gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon].seen)
+ if ((gMain.newKeys & A_BUTTON) && sPokedexView->pokedexList[sPokedexView->selectedPokemon].seen)
{
u32 a;
sub_80BD8D0();
- a = (1 << (gSprites[gUnknown_02039B4C->selectedMonSpriteId].oam.paletteNum + 16));
- gSprites[gUnknown_02039B4C->selectedMonSpriteId].callback = sub_80BE470;
+ a = (1 << (gSprites[sPokedexView->selectedMonSpriteId].oam.paletteNum + 16));
+ gSprites[sPokedexView->selectedMonSpriteId].callback = sub_80BE470;
BeginNormalPaletteFade(~a, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].func = sub_80BC2D4;
PlaySE(SE_PIN);
@@ -1203,17 +1615,17 @@ void sub_80BBEB8(u8 taskId)
}
else if (gMain.newKeys & START_BUTTON)
{
- gUnknown_02039B4C->menuY = 0;
- gUnknown_02039B4C->menuIsOpen = 1;
- gUnknown_02039B4C->menuCursorPos = 0;
- gTasks[taskId].func = sub_80BC0F8;
+ sPokedexView->menuY = 0;
+ sPokedexView->menuIsOpen = 1;
+ sPokedexView->menuCursorPos = 0;
+ gTasks[taskId].func = HandleButtonPress_StartMenu;
PlaySE(SE_SELECT);
}
else if (gMain.newKeys & SELECT_BUTTON)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gTasks[taskId].data[0] = sub_80C1258();
- gUnknown_02039B4C->unk64E = 0;
+ sPokedexView->unk64E = 0;
gTasks[taskId].func = sub_80BBD1C;
PlaySE(SE_PC_LOGIN);
sub_80BC890();
@@ -1227,8 +1639,8 @@ void sub_80BBEB8(u8 taskId)
else
{
//Handle D-pad
- gUnknown_02039B4C->selectedPokemon = sub_80BD69C(gUnknown_02039B4C->selectedPokemon, 0xE);
- if (gUnknown_02039B4C->unk62E)
+ sPokedexView->selectedPokemon = sub_80BD69C(sPokedexView->selectedPokemon, 0xE);
+ if (sPokedexView->unk62E)
gTasks[taskId].func = sub_80BC0A8;
}
}
@@ -1236,40 +1648,40 @@ void sub_80BBEB8(u8 taskId)
void sub_80BC0A8(u8 taskId)
{
- if (sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636))
+ if (sub_80BD404(sPokedexView->unk62F, sPokedexView->unk634, sPokedexView->unk636))
gTasks[taskId].func = sub_80BBEB8;
}
-void sub_80BC0F8(u8 taskId)
+static void HandleButtonPress_StartMenu(u8 taskId)
{
- SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_02039B4C->menuY);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sPokedexView->menuY);
- if (gUnknown_02039B4C->menuY != 96)
+ if (sPokedexView->menuY != 96)
{
- gUnknown_02039B4C->menuY += 8;
+ sPokedexView->menuY += 8;
}
else
{
if (gMain.newKeys & A_BUTTON)
{
- switch (gUnknown_02039B4C->menuCursorPos)
+ switch (sPokedexView->menuCursorPos)
{
case 0: //BACK TO LIST
default:
gMain.newKeys |= START_BUTTON;
break;
case 1: //LIST TOP
- gUnknown_02039B4C->selectedPokemon = 0;
- gUnknown_02039B4C->unk62C = 0x40;
+ sPokedexView->selectedPokemon = 0;
+ sPokedexView->unk62C = 0x40;
sub_80BDA40();
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON;
break;
case 2: //LIST BOTTOM
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->pokemonListCount - 1;
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->pokemonListCount * 16 + 0x30;
+ sPokedexView->selectedPokemon = sPokedexView->pokemonListCount - 1;
+ sPokedexView->unk62C = sPokedexView->pokemonListCount * 16 + 0x30;
sub_80BDA40();
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON;
break;
case 3: //BACK TO POKEDEX
@@ -1288,18 +1700,18 @@ void sub_80BC0F8(u8 taskId)
//Exit menu when Start or B is pressed
if (gMain.newKeys & (START_BUTTON | B_BUTTON))
{
- gUnknown_02039B4C->menuIsOpen = 0;
+ sPokedexView->menuIsOpen = 0;
gTasks[taskId].func = sub_80BBEB8;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_02039B4C->menuCursorPos)
+ else if ((gMain.newAndRepeatedKeys & DPAD_UP) && sPokedexView->menuCursorPos)
{
- gUnknown_02039B4C->menuCursorPos--;
+ sPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_02039B4C->menuCursorPos <= 3)
+ else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && sPokedexView->menuCursorPos <= 3)
{
- gUnknown_02039B4C->menuCursorPos++;
+ sPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
}
}
@@ -1307,11 +1719,11 @@ void sub_80BC0F8(u8 taskId)
void sub_80BC2D4(u8 taskId)
{
- if (gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.x == 48 && gSprites[gUnknown_02039B4C->selectedMonSpriteId].pos1.y == 56)
+ if (gSprites[sPokedexView->selectedMonSpriteId].pos1.x == 48 && gSprites[sPokedexView->selectedMonSpriteId].pos1.y == 56)
{
- gUnknown_02039B4C->unk64B = gUnknown_02039B4C->unk64A;
- gTasks[taskId].data[0] = sub_80BE91C(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gUnknown_02039B4C->selectedMonSpriteId);
- gUnknown_02039B4C->selectedMonSpriteId = -1;
+ sPokedexView->unk64B = sPokedexView->unk64A;
+ gTasks[taskId].data[0] = sub_80BE91C(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], sPokedexView->selectedMonSpriteId);
+ sPokedexView->selectedMonSpriteId = -1;
gTasks[taskId].func = sub_80BC360;
}
}
@@ -1320,8 +1732,8 @@ void sub_80BC360(u8 taskId)
{
if (gTasks[gTasks[taskId].data[0]].isActive)
{
- if (gUnknown_02039B4C->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
- sub_80BE9F8(&gUnknown_02039B4C->unk0[gUnknown_02039B4C->selectedPokemon], gTasks[taskId].data[0]);
+ if (sPokedexView->unk64A == 1 && !sub_80BE9C4(gTasks[taskId].data[0]) && sub_80BD930())
+ sub_80BE9F8(&sPokedexView->pokedexList[sPokedexView->selectedPokemon], gTasks[taskId].data[0]);
}
else
{
@@ -1333,12 +1745,12 @@ void sub_80BC3DC(u8 taskId)
{
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A;
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610;
- gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614;
+ sPokedexView->unk62C = sPokedexView->unk62A;
+ sPokedexView->selectedPokemon = sPokedexView->unk610;
+ sPokedexView->dexMode = sPokedexView->unk614;
if (!IsNationalPokedexEnabled())
- gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
- gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618;
+ sPokedexView->dexMode = DEX_MODE_HOENN;
+ sPokedexView->dexOrder = sPokedexView->unk618;
gTasks[taskId].func = sub_80BB78C;
sub_80BDA40();
sub_80BC890();
@@ -1349,12 +1761,12 @@ void sub_80BC47C(u8 taskId)
{
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk62C = gUnknown_02039B4C->unk62A;
- gUnknown_02039B4C->selectedPokemon = gUnknown_02039B4C->unk610;
- gUnknown_02039B4C->dexMode = gUnknown_02039B4C->unk614;
+ sPokedexView->unk62C = sPokedexView->unk62A;
+ sPokedexView->selectedPokemon = sPokedexView->unk610;
+ sPokedexView->dexMode = sPokedexView->unk614;
if (!IsNationalPokedexEnabled())
- gUnknown_02039B4C->dexMode = DEX_MODE_HOENN;
- gUnknown_02039B4C->dexOrder = gUnknown_02039B4C->unk618;
+ sPokedexView->dexMode = DEX_MODE_HOENN;
+ sPokedexView->dexOrder = sPokedexView->unk618;
gTasks[taskId].func = sub_80BBDE8;
}
}
@@ -1368,9 +1780,9 @@ bool8 sub_80BC514(u8 a)
if (gPaletteFade.active)
return 0;
SetVBlankCallback(NULL);
- gUnknown_02039B4C->unk64A = a;
+ sPokedexView->unk64A = a;
sub_80C09B0(0);
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D);
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gBgTemplates_0855D298, 4);
SetBgTilemapBuffer(3, AllocZeroed(0x800));
@@ -1378,19 +1790,19 @@ bool8 sub_80BC514(u8 a)
SetBgTilemapBuffer(1, AllocZeroed(0x800));
SetBgTilemapBuffer(0, AllocZeroed(0x800));
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(1, gUnknown_08DC2C5C, 0, 0);
- CopyToBgTilemapBuffer(3, gUnknown_08DC2DAC, 0, 0);
+ CopyToBgTilemapBuffer(1, gPokedexTilemap_Main, 0, 0);
+ CopyToBgTilemapBuffer(3, gPokedexTilemap_MainUnderlay, 0, 0);
if (a == 0)
- CopyToBgTilemapBuffer(0, gUnknown_08DC2A08, 0, 0x280);
+ CopyToBgTilemapBuffer(0, gPokedexTilemap_StartMenu1, 0, 0x280);
else
- CopyToBgTilemapBuffer(0, gUnknown_08DC2B1C, 0, 0x280);
+ CopyToBgTilemapBuffer(0, gPokedexTilemap_StartMenu2, 0, 0x280);
ResetPaletteFade();
if (a == 0)
- gUnknown_02039B4C->unk64C_1 = FALSE;
+ sPokedexView->unk64C_1 = FALSE;
else
- gUnknown_02039B4C->unk64C_1 = TRUE;
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
- InitWindows(sWindowTemplates_0855D2A8);
+ sPokedexView->unk64C_1 = TRUE;
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
+ InitWindows(sPokemonList_WindowTemplate);
DeactivateAllTextPrinters();
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
@@ -1400,9 +1812,9 @@ bool8 sub_80BC514(u8 a)
ResetSpriteData();
FreeAllSpritePalettes();
gReservedSpritePaletteCount = 8;
- LoadCompressedObjectPic(&gSpriteSheets_0855D26C[0]);
- LoadSpritePalettes(gSpritePalettes_0855D26C);
- sub_80BDB7C(a);
+ LoadCompressedObjectPic(&sInterfaceSpriteSheet[0]);
+ LoadSpritePalettes(sInterfaceSpritePalette);
+ CreateInterfaceSprites(a);
gMain.state++;
break;
case 2:
@@ -1410,10 +1822,10 @@ bool8 sub_80BC514(u8 a)
break;
case 3:
if (a == 0)
- sub_80BC8D4(gUnknown_02039B4C->dexMode, gUnknown_02039B4C->dexOrder);
- sub_80BD2B4(gUnknown_02039B4C->selectedPokemon, 0xE);
- gUnknown_02039B4C->menuIsOpen = 0;
- gUnknown_02039B4C->menuY = 0;
+ sub_80BC8D4(sPokedexView->dexMode, sPokedexView->dexOrder);
+ CreateInitialPokemonSprites(sPokedexView->selectedPokemon, 0xE);
+ sPokedexView->menuIsOpen = 0;
+ sPokedexView->menuY = 0;
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
@@ -1453,7 +1865,7 @@ bool8 sub_80BC514(u8 a)
return FALSE;
}
-void sub_80BC844(u8 a)
+static void LoadPokedexBgPalette(u8 a)
{
if (a == 1)
LoadPalette(gPokedexHoennBg_Pal + 1, 1, 0xBE);
@@ -1488,7 +1900,7 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
s16 i;
- gUnknown_02039B4C->pokemonListCount = 0;
+ sPokedexView->pokemonListCount = 0;
switch (dexMode)
{
@@ -1519,11 +1931,11 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
for (i = 0; i < vars[0]; i++)
{
vars[2] = HoennToNationalOrder(i + 1);
- gUnknown_02039B4C->unk0[i].dexNum = vars[2];
- gUnknown_02039B4C->unk0[i].seen = GetSetPokedexFlag(vars[2], 0);
- gUnknown_02039B4C->unk0[i].owned = GetSetPokedexFlag(vars[2], 1);
- if (gUnknown_02039B4C->unk0[i].seen)
- gUnknown_02039B4C->pokemonListCount = i + 1;
+ sPokedexView->pokedexList[i].dexNum = vars[2];
+ sPokedexView->pokedexList[i].seen = GetSetPokedexFlag(vars[2], 0);
+ sPokedexView->pokedexList[i].owned = GetSetPokedexFlag(vars[2], 1);
+ if (sPokedexView->pokedexList[i].seen)
+ sPokedexView->pokemonListCount = i + 1;
}
}
else
@@ -1540,11 +1952,11 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (r10)
{
asm(""); //Needed to match for some reason
- gUnknown_02039B4C->unk0[r5].dexNum = vars[2];
- gUnknown_02039B4C->unk0[r5].seen = GetSetPokedexFlag(vars[2], 0);
- gUnknown_02039B4C->unk0[r5].owned = GetSetPokedexFlag(vars[2], 1);
- if (gUnknown_02039B4C->unk0[r5].seen)
- gUnknown_02039B4C->pokemonListCount = r5 + 1;
+ sPokedexView->pokedexList[r5].dexNum = vars[2];
+ sPokedexView->pokedexList[r5].seen = GetSetPokedexFlag(vars[2], 0);
+ sPokedexView->pokedexList[r5].owned = GetSetPokedexFlag(vars[2], 1);
+ if (sPokedexView->pokedexList[r5].seen)
+ sPokedexView->pokemonListCount = r5 + 1;
r5++;
}
}
@@ -1557,10 +1969,10 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1);
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = GetSetPokedexFlag(vars[2], 1);
+ sPokedexView->pokemonListCount++;
}
}
break;
@@ -1571,10 +1983,10 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokemonListCount++;
}
}
break;
@@ -1585,10 +1997,10 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokemonListCount++;
}
}
break;
@@ -1599,10 +2011,10 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokemonListCount++;
}
}
break;
@@ -1613,24 +2025,24 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode)
if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1))
{
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].dexNum = vars[2];
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].seen = 1;
- gUnknown_02039B4C->unk0[gUnknown_02039B4C->pokemonListCount].owned = 1;
- gUnknown_02039B4C->pokemonListCount++;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].dexNum = vars[2];
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = 1;
+ sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = 1;
+ sPokedexView->pokemonListCount++;
}
}
break;
}
- for (i = gUnknown_02039B4C->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
+ for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
{
- gUnknown_02039B4C->unk0[i].dexNum |= 0xFFFF;
- gUnknown_02039B4C->unk0[i].seen = 0;
- gUnknown_02039B4C->unk0[i].owned = 0;
+ sPokedexView->pokedexList[i].dexNum |= 0xFFFF;
+ sPokedexView->pokedexList[i].seen = 0;
+ sPokedexView->pokedexList[i].owned = 0;
}
}
-void sub_80BCE2C(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top)
+static void PrintMonDexNumAndName(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top)
{
u8 color[3];
@@ -1640,86 +2052,86 @@ void sub_80BCE2C(u8 windowId, u8 fontId, const u8* str, u8 left, u8 top)
AddTextPrinterParameterized4(windowId, fontId, left * 8, (top * 8) + 1, 0, 0, color, -1, str);
}
-void sub_80BCE84(u8 a, u16 b, u16 c)
+static void CreateMonListEntry(u8 direction, u16 b, u16 c)
{
s16 _b;
u16 i;
u16 r2;
- switch (a)
+ switch (direction)
{
- case 0:
+ case 0: // Initial
default:
_b = b - 5;
for (i = 0; i <= 10; i++)
{
- if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF)
+ if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF)
{
sub_80BD28C(0x11, i * 2, c);
}
else
{
sub_80BD28C(0x11, i * 2, c);
- if (gUnknown_02039B4C->unk0[_b].seen)
+ if (sPokedexView->pokedexList[_b].seen)
{
- sub_80BD154(_b, 0x12, i * 2, c);
- sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, i * 2, c);
- sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, i * 2);
+ CreateMonDexNum(_b, 0x12, i * 2, c);
+ CreateCaughtBall(sPokedexView->pokedexList[_b].owned, 0x11, i * 2, c);
+ CreateMonName(sPokedexView->pokedexList[_b].dexNum, 0x16, i * 2);
}
else
{
- sub_80BD154(_b, 0x12, i * 2, c);
- sub_80BD1F4(0, 0x11, i * 2, c);
- sub_80BD23C(0, 0x16, i * 2);
+ CreateMonDexNum(_b, 0x12, i * 2, c);
+ CreateCaughtBall(0, 0x11, i * 2, c);
+ CreateMonName(0, 0x16, i * 2);
}
}
_b++;
}
break;
- case 1:
+ case 1: // Up
_b = b - 5;
- if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF)
+ if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF)
{
- sub_80BD28C(0x11, gUnknown_02039B4C->unk630 * 2, c);
+ sub_80BD28C(0x11, sPokedexView->unk630 * 2, c);
}
else
{
- sub_80BD28C(0x11, gUnknown_02039B4C->unk630 * 2, c);
- if (gUnknown_02039B4C->unk0[_b].seen)
+ sub_80BD28C(0x11, sPokedexView->unk630 * 2, c);
+ if (sPokedexView->pokedexList[_b].seen)
{
- sub_80BD154(_b, 0x12, gUnknown_02039B4C->unk630 * 2, c);
- sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, gUnknown_02039B4C->unk630 * 2, c);
- sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, gUnknown_02039B4C->unk630 * 2);
+ CreateMonDexNum(_b, 0x12, sPokedexView->unk630 * 2, c);
+ CreateCaughtBall(sPokedexView->pokedexList[_b].owned, 0x11, sPokedexView->unk630 * 2, c);
+ CreateMonName(sPokedexView->pokedexList[_b].dexNum, 0x16, sPokedexView->unk630 * 2);
}
else
{
- sub_80BD154(_b, 0x12, gUnknown_02039B4C->unk630 * 2, c);
- sub_80BD1F4(0, 0x11, gUnknown_02039B4C->unk630 * 2, c);
- sub_80BD23C(0, 0x16, gUnknown_02039B4C->unk630 * 2);
+ CreateMonDexNum(_b, 0x12, sPokedexView->unk630 * 2, c);
+ CreateCaughtBall(0, 0x11, sPokedexView->unk630 * 2, c);
+ CreateMonName(0, 0x16, sPokedexView->unk630 * 2);
}
}
break;
- case 2:
+ case 2: // Down
_b = b + 5;
- r2 = gUnknown_02039B4C->unk630 + 10;
+ r2 = sPokedexView->unk630 + 10;
if (r2 > 15)
r2 -= 16;
- if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[_b].dexNum == 0xFFFF)
+ if (_b < 0 || _b >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[_b].dexNum == 0xFFFF)
sub_80BD28C(0x11, r2 * 2, c);
else
{
sub_80BD28C(0x11, r2 * 2, c);
- if (gUnknown_02039B4C->unk0[_b].seen)
+ if (sPokedexView->pokedexList[_b].seen)
{
- sub_80BD154(_b, 0x12, r2 * 2, c);
- sub_80BD1F4(gUnknown_02039B4C->unk0[_b].owned, 0x11, r2 * 2, c);
- sub_80BD23C(gUnknown_02039B4C->unk0[_b].dexNum, 0x16, r2 * 2);
+ CreateMonDexNum(_b, 0x12, r2 * 2, c);
+ CreateCaughtBall(sPokedexView->pokedexList[_b].owned, 0x11, r2 * 2, c);
+ CreateMonName(sPokedexView->pokedexList[_b].dexNum, 0x16, r2 * 2);
}
else
{
- sub_80BD154(_b, 0x12, r2 * 2, c);
- sub_80BD1F4(0, 0x11, r2 * 2, c);
- sub_80BD23C(0, 0x16, r2 * 2);
+ CreateMonDexNum(_b, 0x12, r2 * 2, c);
+ CreateCaughtBall(0, 0x11, r2 * 2, c);
+ CreateMonName(0, 0x16, r2 * 2);
}
}
break;
@@ -1727,22 +2139,22 @@ void sub_80BCE84(u8 a, u16 b, u16 c)
CopyWindowToVram(0, 2);
}
-void sub_80BD154(u16 a, u8 left, u8 top, u16 unused)
+static void CreateMonDexNum(u16 a, u8 left, u8 top, u16 unused)
{
u8 text[6];
u16 r6;
- memcpy(text, gUnknown_0855D2B8, 6);
- r6 = gUnknown_02039B4C->unk0[a].dexNum;
- if (gUnknown_02039B4C->dexMode == DEX_MODE_HOENN)
+ memcpy(text, sText_No000, 6);
+ r6 = sPokedexView->pokedexList[a].dexNum;
+ if (sPokedexView->dexMode == DEX_MODE_HOENN)
r6 = NationalToHoennOrder(r6);
text[2] = CHAR_0 + r6 / 100;
text[3] = CHAR_0 + (r6 % 100) / 10;
text[4] = CHAR_0 + (r6 % 100) % 10;
- sub_80BCE2C(0, 7, text, left, top);
+ PrintMonDexNumAndName(0, 7, text, left, top);
}
-void sub_80BD1F4(u16 a, u8 x, u8 y, u16 unused)
+static void CreateCaughtBall(u16 a, u8 x, u8 y, u16 unused)
{
if (a)
BlitBitmapToWindow(0, gUnknown_0855D2BE, x * 8, y * 8, 8, 16);
@@ -1750,7 +2162,7 @@ void sub_80BD1F4(u16 a, u8 x, u8 y, u16 unused)
FillWindowPixelRect(0, 0, x * 8, y * 8, 8, 16);
}
-u8 sub_80BD23C(u16 num, u8 left, u8 top)
+static u8 CreateMonName(u16 num, u8 left, u8 top)
{
const u8* str;
@@ -1759,7 +2171,7 @@ u8 sub_80BD23C(u16 num, u8 left, u8 top)
str = gSpeciesNames[num];
else
str = sText_TenDashes;
- sub_80BCE2C(0, 7, str, left, top);
+ PrintMonDexNumAndName(0, 7, str, left, top);
return StringLength(str);
}
@@ -1768,7 +2180,7 @@ void sub_80BD28C(u8 x, u8 y, u16 unused)
FillWindowPixelRect(0, 0, x * 8, y * 8, 0x60, 16);
}
-void sub_80BD2B4(u16 a, u16 b)
+static void CreateInitialPokemonSprites(u16 selectedMon, u16 b)
{
u8 i;
u16 unk;
@@ -1777,10 +2189,10 @@ void sub_80BD2B4(u16 a, u16 b)
gPaletteFade.bufferTransferDisabled = TRUE;
for (i = 0; i < 4; i++)
- gUnknown_02039B4C->unk61E[i] = 0xFFFF;
- gUnknown_02039B4C->selectedMonSpriteId = 0xFFFF;
+ sPokedexView->unk61E[i] = 0xFFFF;
+ sPokedexView->selectedMonSpriteId = 0xFFFF;
- unk = sub_80BDA8C(a - 1);
+ unk = sub_80BDA8C(selectedMon - 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -1788,7 +2200,7 @@ void sub_80BD2B4(u16 a, u16 b)
gSprites[spriteId].data[5] = -32;
}
- unk = sub_80BDA8C(a);
+ unk = sub_80BDA8C(selectedMon);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -1796,7 +2208,7 @@ void sub_80BD2B4(u16 a, u16 b)
gSprites[spriteId].data[5] = 0;
}
- unk = sub_80BDA8C(a + 1);
+ unk = sub_80BDA8C(selectedMon + 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
@@ -1804,11 +2216,11 @@ void sub_80BD2B4(u16 a, u16 b)
gSprites[spriteId].data[5] = 32;
}
- sub_80BCE84(0, a, b);
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D);
+ CreateMonListEntry(0, selectedMon, b);
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset);
- gUnknown_02039B4C->unk630 = 0;
- gUnknown_02039B4C->unk632 = 0;
+ sPokedexView->unk630 = 0;
+ sPokedexView->unk632 = 0;
gPaletteFade.bufferTransferDisabled = FALSE;
}
@@ -1818,79 +2230,79 @@ bool8 sub_80BD404(u8 a, u8 b, u8 c)
u16 i;
u8 foo;
- if (gUnknown_02039B4C->unk62E)
+ if (sPokedexView->unk62E)
{
- gUnknown_02039B4C->unk62E--;
+ sPokedexView->unk62E--;
switch (a)
{
case 1:
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039B4C->unk61E[i] != 0xFFFF)
- gSprites[gUnknown_02039B4C->unk61E[i]].data[5] += b;
+ if (sPokedexView->unk61E[i] != 0xFFFF)
+ gSprites[sPokedexView->unk61E[i]].data[5] += b;
}
- foo = 16 * (c - gUnknown_02039B4C->unk62E) / c;
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk632 * 16 - foo);
- gUnknown_02039B4C->unk62C -= gUnknown_02039B4C->unk628;
+ foo = 16 * (c - sPokedexView->unk62E) / c;
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk632 * 16 - foo);
+ sPokedexView->unk62C -= sPokedexView->unk628;
break;
case 2:
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039B4C->unk61E[i] != 0xFFFF)
- gSprites[gUnknown_02039B4C->unk61E[i]].data[5] -= b;
+ if (sPokedexView->unk61E[i] != 0xFFFF)
+ gSprites[sPokedexView->unk61E[i]].data[5] -= b;
}
- foo = 16 * (c - gUnknown_02039B4C->unk62E) / c;
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk632 * 16 + foo);
- gUnknown_02039B4C->unk62C += gUnknown_02039B4C->unk628;
+ foo = 16 * (c - sPokedexView->unk62E) / c;
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk632 * 16 + foo);
+ sPokedexView->unk62C += sPokedexView->unk628;
break;
}
return FALSE;
}
else
{
- SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_02039B4C->unk62D + gUnknown_02039B4C->unk630 * 16);
+ SetGpuReg(REG_OFFSET_BG2VOFS, sPokedexView->initialVOffset + sPokedexView->unk630 * 16);
return TRUE;
}
}
-void sub_80BD5A8(u8 a, u16 b)
+static void CreateNewPokemonSprite(u8 direction, u16 selectedMon)
{
u16 unk;
u8 spriteId;
- gUnknown_02039B4C->unk632 = gUnknown_02039B4C->unk630;
- switch (a)
+ sPokedexView->unk632 = sPokedexView->unk630;
+ switch (direction)
{
- case 1:
- unk = sub_80BDA8C(b - 1);
+ case 1: // up
+ unk = sub_80BDA8C(selectedMon - 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
gSprites[spriteId].callback = sub_80BE4E0;
gSprites[spriteId].data[5] = -64;
}
- if (gUnknown_02039B4C->unk630 > 0)
- gUnknown_02039B4C->unk630--;
+ if (sPokedexView->unk630 > 0)
+ sPokedexView->unk630--;
else
- gUnknown_02039B4C->unk630 = 15;
+ sPokedexView->unk630 = 15;
break;
- case 2:
- unk = sub_80BDA8C(b + 1);
+ case 2: // down
+ unk = sub_80BDA8C(selectedMon + 1);
if (unk != 0xFFFF)
{
spriteId = sub_80BDACC(unk, 0x60, 0x50);
gSprites[spriteId].callback = sub_80BE4E0;
gSprites[spriteId].data[5] = 0x40;
}
- if (gUnknown_02039B4C->unk630 <= 0xE)
- gUnknown_02039B4C->unk630++;
+ if (sPokedexView->unk630 <= 0xE)
+ sPokedexView->unk630++;
else
- gUnknown_02039B4C->unk630 = 0;
+ sPokedexView->unk630 = 0;
break;
}
}
-u16 sub_80BD69C(u16 a, u16 b)
+u16 sub_80BD69C(u16 selectedMon, u16 b)
{
u8 r3;
u8 r5;
@@ -1898,61 +2310,61 @@ u16 sub_80BD69C(u16 a, u16 b)
u16 r6;
u8 r10 = 0;
- if ((gMain.heldKeys & DPAD_UP) && (a > 0))
+ if ((gMain.heldKeys & DPAD_UP) && (selectedMon > 0))
{
r10 = 1;
- a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
- sub_80BD5A8(1, a);
- sub_80BCE84(1, a, b);
+ selectedMon = sub_80C0E0C(1, selectedMon, 0, sPokedexView->pokemonListCount - 1);
+ CreateNewPokemonSprite(1, selectedMon);
+ CreateMonListEntry(1, selectedMon, b);
PlaySE(SE_Z_SCROLL);
}
- else if ((gMain.heldKeys & DPAD_DOWN) && (a < gUnknown_02039B4C->pokemonListCount - 1))
+ else if ((gMain.heldKeys & DPAD_DOWN) && (selectedMon < sPokedexView->pokemonListCount - 1))
{
r10 = 2;
- a = sub_80C0E0C(0, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
- sub_80BD5A8(2, a);
- sub_80BCE84(2, a, b);
+ selectedMon = sub_80C0E0C(0, selectedMon, 0, sPokedexView->pokemonListCount - 1);
+ CreateNewPokemonSprite(2, selectedMon);
+ CreateMonListEntry(2, selectedMon, b);
PlaySE(SE_Z_SCROLL);
}
- else if ((gMain.newKeys & DPAD_LEFT) && (a > 0))
+ else if ((gMain.newKeys & DPAD_LEFT) && (selectedMon > 0))
{
- r6 = a;
+ r6 = selectedMon;
for (i = 0; i < 7; i++)
- a = sub_80C0E0C(1, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
- gUnknown_02039B4C->unk62C += 16 * (a - r6);
+ selectedMon = sub_80C0E0C(1, selectedMon, 0, sPokedexView->pokemonListCount - 1);
+ sPokedexView->unk62C += 16 * (selectedMon - r6);
sub_80BDA40();
- sub_80BD2B4(a, 0xE);
+ CreateInitialPokemonSprites(selectedMon, 0xE);
PlaySE(SE_Z_PAGE);
}
- else if ((gMain.newKeys & DPAD_RIGHT) && (a < gUnknown_02039B4C->pokemonListCount - 1))
+ else if ((gMain.newKeys & DPAD_RIGHT) && (selectedMon < sPokedexView->pokemonListCount - 1))
{
- r6 = a;
+ r6 = selectedMon;
for (i = 0; i < 7; i++)
- a = sub_80C0E0C(0, a, 0, gUnknown_02039B4C->pokemonListCount - 1);
- gUnknown_02039B4C->unk62C += (a - r6) * 16;
+ selectedMon = sub_80C0E0C(0, selectedMon, 0, sPokedexView->pokemonListCount - 1);
+ sPokedexView->unk62C += (selectedMon - r6) * 16;
sub_80BDA40();
- sub_80BD2B4(a, 0xE);
+ CreateInitialPokemonSprites(selectedMon, 0xE);
PlaySE(SE_Z_PAGE);
}
if (r10 == 0)
{
- gUnknown_02039B4C->unk638 = 0;
- return a;
+ sPokedexView->unk638 = 0;
+ return selectedMon;
}
- r5 = gUnknown_0855D28C[gUnknown_02039B4C->unk638 / 4];
- r3 = gUnknown_0855D291[gUnknown_02039B4C->unk638 / 4];
- gUnknown_02039B4C->unk62E = r3;
- gUnknown_02039B4C->unk636 = r3;
- gUnknown_02039B4C->unk634 = r5;
- gUnknown_02039B4C->unk62F = r10;
- gUnknown_02039B4C->unk628 = r5 / 2;
- sub_80BD404(gUnknown_02039B4C->unk62F, gUnknown_02039B4C->unk634, gUnknown_02039B4C->unk636);
- if (gUnknown_02039B4C->unk638 <= 0xB)
- gUnknown_02039B4C->unk638++;
- return a;
+ r5 = gUnknown_0855D28C[sPokedexView->unk638 / 4];
+ r3 = gUnknown_0855D291[sPokedexView->unk638 / 4];
+ sPokedexView->unk62E = r3;
+ sPokedexView->unk636 = r3;
+ sPokedexView->unk634 = r5;
+ sPokedexView->unk62F = r10;
+ sPokedexView->unk628 = r5 / 2;
+ sub_80BD404(sPokedexView->unk62F, sPokedexView->unk634, sPokedexView->unk636);
+ if (sPokedexView->unk638 <= 0xB)
+ sPokedexView->unk638++;
+ return selectedMon;
}
void sub_80BD8D0(void)
@@ -1961,61 +2373,61 @@ void sub_80BD8D0(void)
for (i = 0; i < 4; i++)
{
- u16 spriteId = gUnknown_02039B4C->unk61E[i];
+ u16 spriteId = sPokedexView->unk61E[i];
if (gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF)
- gUnknown_02039B4C->selectedMonSpriteId = spriteId;
+ sPokedexView->selectedMonSpriteId = spriteId;
}
}
u8 sub_80BD930(void)
{
u16 r2;
- u16 r4 = gUnknown_02039B4C->selectedPokemon;
+ u16 r4 = sPokedexView->selectedPokemon;
if ((gMain.newKeys & DPAD_UP) && r4)
{
r2 = r4;
while (r2 != 0)
{
- r2 = sub_80C0E0C(1, r2, 0, gUnknown_02039B4C->pokemonListCount - 1);
+ r2 = sub_80C0E0C(1, r2, 0, sPokedexView->pokemonListCount - 1);
- if (gUnknown_02039B4C->unk0[r2].seen)
+ if (sPokedexView->pokedexList[r2].seen)
{
r4 = r2;
break;
}
}
- if (gUnknown_02039B4C->selectedPokemon == r4)
+ if (sPokedexView->selectedPokemon == r4)
return FALSE;
else
{
- gUnknown_02039B4C->selectedPokemon = r4;
- gUnknown_02039B4C->unk62C -= 16;
+ sPokedexView->selectedPokemon = r4;
+ sPokedexView->unk62C -= 16;
return TRUE;
}
}
- else if ((gMain.newKeys & DPAD_DOWN) && r4 < gUnknown_02039B4C->pokemonListCount - 1)
+ else if ((gMain.newKeys & DPAD_DOWN) && r4 < sPokedexView->pokemonListCount - 1)
{
r2 = r4;
- while (r2 < gUnknown_02039B4C->pokemonListCount - 1)
+ while (r2 < sPokedexView->pokemonListCount - 1)
{
- r2 = sub_80C0E0C(0, r2, 0, gUnknown_02039B4C->pokemonListCount - 1);
+ r2 = sub_80C0E0C(0, r2, 0, sPokedexView->pokemonListCount - 1);
- if (gUnknown_02039B4C->unk0[r2].seen)
+ if (sPokedexView->pokedexList[r2].seen)
{
r4 = r2;
break;
}
}
- if (gUnknown_02039B4C->selectedPokemon == r4)
+ if (sPokedexView->selectedPokemon == r4)
return FALSE;
else
{
- gUnknown_02039B4C->selectedPokemon = r4;
- gUnknown_02039B4C->unk62C += 16;
+ sPokedexView->selectedPokemon = r4;
+ sPokedexView->unk62C += 16;
return TRUE;
}
}
@@ -2028,10 +2440,10 @@ u8 sub_80BDA40(void)
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039B4C->unk61E[i] != 0xFFFF)
+ if (sPokedexView->unk61E[i] != 0xFFFF)
{
- FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[i]);
- gUnknown_02039B4C->unk61E[i] |= 0xFFFF;
+ FreeAndDestroyMonPicSprite(sPokedexView->unk61E[i]);
+ sPokedexView->unk61E[i] |= 0xFFFF;
}
}
return FALSE;
@@ -2039,10 +2451,10 @@ u8 sub_80BDA40(void)
u16 sub_80BDA8C(u16 a1)
{
- if (a1 >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[a1].dexNum == 0xFFFF)
+ if (a1 >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[a1].dexNum == 0xFFFF)
return 0xFFFF;
- else if (gUnknown_02039B4C->unk0[a1].seen)
- return gUnknown_02039B4C->unk0[a1].dexNum;
+ else if (sPokedexView->pokedexList[a1].seen)
+ return sPokedexView->pokedexList[a1].dexNum;
else
return 0;
}
@@ -2053,7 +2465,7 @@ u32 sub_80BDACC(u16 num, s16 x, s16 y)
for (i = 0; i < 4; i++)
{
- if (gUnknown_02039B4C->unk61E[i] == 0xFFFF)
+ if (sPokedexView->unk61E[i] == 0xFFFF)
{
u8 spriteId = sub_80C0E9C(num, x, y, i);
@@ -2062,45 +2474,46 @@ u32 sub_80BDACC(u16 num, s16 x, s16 y)
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = i;
gSprites[spriteId].data[2] = NationalPokedexNumToSpecies(num);
- gUnknown_02039B4C->unk61E[i] = spriteId;
+ sPokedexView->unk61E[i] = spriteId;
return spriteId;
}
}
return 0xFFFF;
}
-void sub_80BDB7C(u8 a)
+static void CreateInterfaceSprites(u8 a)
{
u8 spriteId;
u16 r5;
-
- spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 4, 0);
+// Up arrow
+ spriteId = CreateSprite(&sArrowSpriteTemplate, 184, 4, 0);
gSprites[spriteId].data[1] = 0;
-
- spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 156, 0);
+// Down arrow
+ spriteId = CreateSprite(&sArrowSpriteTemplate, 184, 156, 0);
gSprites[spriteId].data[1] = 1;
gSprites[spriteId].vFlip = TRUE;
- CreateSprite(&gUnknown_0855D194, 230, 20, 0);
- CreateSprite(&gUnknown_0855D1C4, 16, 120, 0);
-
- spriteId = CreateSprite(&gUnknown_0855D1C4, 48, 120, 0);
+ CreateSprite(&sScrollBarSpriteTemplate, 230, 20, 0);
+// Start button
+ CreateSprite(&sInterfaceTextSpriteTemplate, 16, 120, 0);
+// Menu text
+ spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 48, 120, 0);
StartSpriteAnim(&gSprites[spriteId], 3);
-
- spriteId = CreateSprite(&gUnknown_0855D1C4, 16, 144, 0);
+// Select button
+ spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 16, 144, 0);
StartSpriteAnim(&gSprites[spriteId], 2);
gSprites[spriteId].data[2] = 0x80;
-
- spriteId = CreateSprite(&gUnknown_0855D1C4, 48, 144, 0);
+// Search text
+ spriteId = CreateSprite(&sInterfaceTextSpriteTemplate, 48, 144, 0);
StartSpriteAnim(&gSprites[spriteId], 1);
- spriteId = CreateSprite(&gUnknown_0855D1DC, 0, 80, 2);
+ spriteId = CreateSprite(&sRotatingPokeballSpriteTemplate, 0, 80, 2);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 30;
gSprites[spriteId].data[0] = 0x1E;
gSprites[spriteId].data[1] = 0;
- spriteId = CreateSprite(&gUnknown_0855D1DC, 0, 80, 2);
+ spriteId = CreateSprite(&sRotatingPokeballSpriteTemplate, 0, 80, 2);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 31;
gSprites[spriteId].data[0] = 0x1F;
@@ -2112,58 +2525,59 @@ void sub_80BDB7C(u8 a)
if (!IsNationalPokedexEnabled())
{
- CreateSprite(&gUnknown_0855D1F4, 32, 40, 1);
-
- spriteId = CreateSprite(&gUnknown_0855D1F4, 32, 72, 1);
+// Seen text
+ CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 40, 1);
+// Own text
+ spriteId = CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 72, 1);
StartSpriteAnim(&gSprites[spriteId], 1);
_a = 0;
-
+// Seen value - 100s
spriteId = CreateSprite(&gUnknown_0855D224, 24, 48, 1);
- r5 = gUnknown_02039B4C->unk61A / 100;
+ r5 = sPokedexView->seenCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
else
gSprites[spriteId].invisible = TRUE;
-
+// Seen value - 10s
spriteId = CreateSprite(&gUnknown_0855D224, 32, 48, 1);
- r5 = (gUnknown_02039B4C->unk61A % 100) / 10;
+ r5 = (sPokedexView->seenCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
-
+// Seen value - 1s
spriteId = CreateSprite(&gUnknown_0855D224, 40, 48, 1);
- r5 = (gUnknown_02039B4C->unk61A % 100) % 10;
+ r5 = (sPokedexView->seenCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
_a = 0;
-
+// Owned value - 100s
spriteId = CreateSprite(&gUnknown_0855D224, 24, 80, 1);
- r5 = gUnknown_02039B4C->unk61C / 100;
+ r5 = sPokedexView->ownCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
else
gSprites[spriteId].invisible = TRUE;
-
+// Owned value - 10s
spriteId = CreateSprite(&gUnknown_0855D224, 32, 80, 1);
- r5 = (gUnknown_02039B4C->unk61C % 100) / 10;
+ r5 = (sPokedexView->ownCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
-
+// Owned value -1s
spriteId = CreateSprite(&gUnknown_0855D224, 40, 80, 1);
- r5 = (gUnknown_02039B4C->unk61C % 100) % 10;
+ r5 = (sPokedexView->ownCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
}
else
{
u16 r6;
- CreateSprite(&gUnknown_0855D1F4, 32, 40, 1);
+ CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 40, 1);
- spriteId = CreateSprite(&gUnknown_0855D1F4, 32, 76, 1);
+ spriteId = CreateSprite(&sSeenOwnTextSpriteTemplate, 32, 76, 1);
StartSpriteAnim(&gSprites[spriteId], 1);
CreateSprite(&gUnknown_0855D20C, 17, 45, 1);
@@ -2201,7 +2615,7 @@ void sub_80BDB7C(u8 a)
_a = 0;
spriteId = CreateSprite(&gUnknown_0855D23C, 40, 55, 1);
- r5 = gUnknown_02039B4C->unk61A / 100;
+ r5 = sPokedexView->seenCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
@@ -2209,14 +2623,14 @@ void sub_80BDB7C(u8 a)
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gUnknown_0855D23C, 48, 55, 1);
- r5 = (gUnknown_02039B4C->unk61A % 100) / 10;
+ r5 = (sPokedexView->seenCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gUnknown_0855D23C, 56, 55, 1);
- r5 = (gUnknown_02039B4C->unk61A % 100) % 10;
+ r5 = (sPokedexView->seenCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
r6 = GetHoennPokedexCount(1);
@@ -2244,7 +2658,7 @@ void sub_80BDB7C(u8 a)
_a = 0;
spriteId = CreateSprite(&gUnknown_0855D23C, 40, 91, 1);
- r5 = gUnknown_02039B4C->unk61C / 100;
+ r5 = sPokedexView->ownCount / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if (r5 != 0)
_a = 1;
@@ -2252,14 +2666,14 @@ void sub_80BDB7C(u8 a)
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gUnknown_0855D23C, 48, 91, 1);
- r5 = (gUnknown_02039B4C->unk61C % 100) / 10;
+ r5 = (sPokedexView->ownCount % 100) / 10;
if (r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = TRUE;
spriteId = CreateSprite(&gUnknown_0855D23C, 56, 91, 1);
- r5 = (gUnknown_02039B4C->unk61C % 100) % 10;
+ r5 = (sPokedexView->ownCount % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
}
spriteId = CreateSprite(&gUnknown_0855D254, 136, 96, 1);
@@ -2278,7 +2692,7 @@ void nullsub_38(struct Sprite *sprite)
void sub_80BE44C(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0)
+ if (sPokedexView->unk64A != 0)
DestroySprite(sprite);
}
@@ -2311,10 +2725,10 @@ void sub_80BE4E0(struct Sprite *sprite)
{
u8 data1 = sprite->data[1];
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
{
- FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[data1]);
- gUnknown_02039B4C->unk61E[data1] = 0xFFFF;
+ FreeAndDestroyMonPicSprite(sPokedexView->unk61E[data1]);
+ sPokedexView->unk61E[data1] = 0xFFFF;
}
else
{
@@ -2339,23 +2753,23 @@ void sub_80BE4E0(struct Sprite *sprite)
if ((sprite->data[5] <= -64 || sprite->data[5] >= 64) && sprite->data[0] != 0)
{
- FreeAndDestroyMonPicSprite(gUnknown_02039B4C->unk61E[data1]);
- gUnknown_02039B4C->unk61E[data1] = 0xFFFF;
+ FreeAndDestroyMonPicSprite(sPokedexView->unk61E[data1]);
+ sPokedexView->unk61E[data1] = 0xFFFF;
}
}
}
-void sub_80BE604(struct Sprite *sprite)
+static void SpriteCB_Scrollbar(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
DestroySprite(sprite);
else
- sprite->pos2.y = gUnknown_02039B4C->selectedPokemon * 120 / (gUnknown_02039B4C->pokemonListCount - 1);
+ sprite->pos2.y = sPokedexView->selectedPokemon * 120 / (sPokedexView->pokemonListCount - 1);
}
void sub_80BE658(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
{
DestroySprite(sprite);
}
@@ -2365,7 +2779,7 @@ void sub_80BE658(struct Sprite *sprite)
if (sprite->data[1] != 0)
{
- if (gUnknown_02039B4C->selectedPokemon == gUnknown_02039B4C->pokemonListCount - 1)
+ if (sPokedexView->selectedPokemon == sPokedexView->pokemonListCount - 1)
sprite->invisible = TRUE;
else
sprite->invisible = FALSE;
@@ -2373,7 +2787,7 @@ void sub_80BE658(struct Sprite *sprite)
}
else
{
- if (gUnknown_02039B4C->selectedPokemon == 0)
+ if (sPokedexView->selectedPokemon == 0)
sprite->invisible = TRUE;
else
sprite->invisible = FALSE;
@@ -2381,7 +2795,7 @@ void sub_80BE658(struct Sprite *sprite)
}
sprite->pos2.y = gSineTable[r0] / 64;
sprite->data[2] = sprite->data[2] + 8;
- if (gUnknown_02039B4C->menuIsOpen == 0 && gUnknown_02039B4C->menuY == 0 && sprite->invisible == 0)
+ if (sPokedexView->menuIsOpen == 0 && sPokedexView->menuY == 0 && sprite->invisible == 0)
sprite->invisible = FALSE;
else
sprite->invisible = TRUE;
@@ -2390,13 +2804,13 @@ void sub_80BE658(struct Sprite *sprite)
void sub_80BE758(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
DestroySprite(sprite);
}
void sub_80BE780(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
{
DestroySprite(sprite);
}
@@ -2406,12 +2820,12 @@ void sub_80BE780(struct Sprite *sprite)
s16 r3;
s16 r0;
- val = gUnknown_02039B4C->unk62C + sprite->data[1];
+ val = sPokedexView->unk62C + sprite->data[1];
r3 = gSineTable[val];
r0 = gSineTable[val + 0x40];
SetOamMatrix(sprite->data[0], r0, r3, -r3, r0);
- val = gUnknown_02039B4C->unk62C + (sprite->data[1] + 0x40);
+ val = sPokedexView->unk62C + (sprite->data[1] + 0x40);
r3 = gSineTable[val];
r0 = gSineTable[val + 0x40];
sprite->pos2.x = r0 * 40 / 256;
@@ -2421,18 +2835,18 @@ void sub_80BE780(struct Sprite *sprite)
void sub_80BE834(struct Sprite *sprite)
{
- if (gUnknown_02039B4C->unk64A != 0 && gUnknown_02039B4C->unk64A != 3)
+ if (sPokedexView->unk64A != 0 && sPokedexView->unk64A != 3)
{
DestroySprite(sprite);
}
else
{
- u16 r1 = gUnknown_02039B4C->unk64A == 0 ? 80 : 96;
+ u16 r1 = sPokedexView->unk64A == 0 ? 80 : 96;
- if (gUnknown_02039B4C->menuIsOpen != 0 && gUnknown_02039B4C->menuY == r1)
+ if (sPokedexView->menuIsOpen != 0 && sPokedexView->menuY == r1)
{
sprite->invisible = FALSE;
- sprite->pos2.y = gUnknown_02039B4C->menuCursorPos * 16;
+ sprite->pos2.y = sPokedexView->menuCursorPos * 16;
sprite->pos2.x = gSineTable[(u8)sprite->data[2]] / 64;
sprite->data[2] += 8;
}
@@ -2457,7 +2871,7 @@ u8 sub_80BE91C(struct PokedexListItem* item, u8 b)
{
u8 taskId;
- gUnknown_02039B54 = item;
+ sPokedexListItem = item;
taskId = CreateTask(sub_80BEA24, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 1;
@@ -2487,7 +2901,7 @@ bool8 sub_80BE9C4(u8 taskId)
u8 sub_80BE9F8(struct PokedexListItem *item, u8 b)
{
- gUnknown_02039B54 = item;
+ sPokedexListItem = item;
gTasks[b].data[0] = 1;
gTasks[b].data[1] = 0;
gTasks[b].data[2] = 0;
@@ -2505,7 +2919,7 @@ void sub_80BEA24(u8 taskId)
{
u16 r2;
- gUnknown_02039B4C->unk64A = 1;
+ sPokedexView->unk64A = 1;
gUnknown_030060B4 = gMain.vblankCallback;
SetVBlankCallback(NULL);
r2 = 0;
@@ -2519,26 +2933,26 @@ void sub_80BEA24(u8 taskId)
break;
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(3, gUnknown_08DC3080, 0, 0);
+ CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0);
FillWindowPixelBuffer(0, 0);
PutWindowTilemap(0);
PutWindowTilemap(1);
- sub_80C0D30(1, gUnknown_02039B54->dexNum);
+ sub_80C0D30(1, sPokedexListItem->dexNum);
CopyWindowToVram(1, 2);
gMain.state++;
break;
case 2:
sub_80BFCDC(0xD);
- sub_80BFD0C(gUnknown_02039B4C->selectedScreen, 0xD);
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
+ sub_80BFD0C(sPokedexView->selectedScreen, 0xD);
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
gMain.state++;
break;
case 3:
gMain.state++;
break;
case 4:
- sub_80C020C(gUnknown_02039B54->dexNum, gUnknown_02039B4C->dexMode == 0 ? 0 : 1, gUnknown_02039B54->owned, 0);
- if (!gUnknown_02039B54->owned)
+ sub_80C020C(sPokedexListItem->dexNum, sPokedexView->dexMode == 0 ? 0 : 1, sPokedexListItem->owned, 0);
+ if (!sPokedexListItem->owned)
LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E);
CopyWindowToVram(0, 3);
CopyBgTilemapBufferToVram(1);
@@ -2549,7 +2963,7 @@ void sub_80BEA24(u8 taskId)
case 5:
if (gTasks[taskId].data[1] == 0)
{
- gTasks[taskId].data[4] = (u16)sub_80C0E9C(gUnknown_02039B54->dexNum, 0x30, 0x38, 0);
+ gTasks[taskId].data[4] = (u16)sub_80C0E9C(sPokedexListItem->dexNum, 0x30, 0x38, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
}
gMain.state++;
@@ -2585,7 +2999,7 @@ void sub_80BEA24(u8 taskId)
if (gTasks[taskId].data[3] == 0)
{
StopCryAndClearCrySongs();
- PlayCry2(NationalPokedexNumToSpecies(gUnknown_02039B54->dexNum), 0, 0x7D, 0xA);
+ PlayCry2(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), 0, 0x7D, 0xA);
}
else
{
@@ -2644,29 +3058,29 @@ void sub_80BEDF4(u8 taskId)
}
if (gMain.newKeys & A_BUTTON)
{
- switch (gUnknown_02039B4C->selectedScreen)
+ switch (sPokedexView->selectedScreen)
{
case AREA_SCREEN:
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 1;
+ sPokedexView->unk64E = 1;
gTasks[taskId].func = sub_80BEFD0;
PlaySE(SE_PIN);
break;
case CRY_SCREEN:
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 2;
+ sPokedexView->unk64E = 2;
gTasks[taskId].func = sub_80BEFD0;
PlaySE(SE_PIN);
break;
case SIZE_SCREEN:
- if (!gUnknown_02039B54->owned)
+ if (!sPokedexListItem->owned)
{
PlaySE(SE_HAZURE);
}
else
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 3;
+ sPokedexView->unk64E = 3;
gTasks[taskId].func = sub_80BEFD0;
PlaySE(SE_PIN);
}
@@ -2681,19 +3095,19 @@ void sub_80BEDF4(u8 taskId)
}
if (((gMain.newKeys & DPAD_LEFT)
|| ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
- && gUnknown_02039B4C->selectedScreen > 0)
+ && sPokedexView->selectedScreen > 0)
{
- gUnknown_02039B4C->selectedScreen--;
- sub_80BFD0C(gUnknown_02039B4C->selectedScreen, 0xD);
+ sPokedexView->selectedScreen--;
+ sub_80BFD0C(sPokedexView->selectedScreen, 0xD);
PlaySE(SE_Z_PAGE);
return;
}
if (((gMain.newKeys & DPAD_RIGHT)
|| ((gMain.newKeys & R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
- && gUnknown_02039B4C->selectedScreen < 3)
+ && sPokedexView->selectedScreen < 3)
{
- gUnknown_02039B4C->selectedScreen++;
- sub_80BFD0C(gUnknown_02039B4C->selectedScreen, 0xD);
+ sPokedexView->selectedScreen++;
+ sub_80BFD0C(sPokedexView->selectedScreen, 0xD);
PlaySE(SE_Z_PAGE);
return;
}
@@ -2704,7 +3118,7 @@ void sub_80BEFD0(u8 taskId)
if (!gPaletteFade.active)
{
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
- switch (gUnknown_02039B4C->unk64E)
+ switch (sPokedexView->unk64E)
{
case 1:
default:
@@ -2747,25 +3161,25 @@ void sub_80BF0AC(u8 taskId)
default:
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk64A = 5;
+ sPokedexView->unk64A = 5;
gUnknown_030060B4 = gMain.vblankCallback;
SetVBlankCallback(NULL);
sub_80C09B0(0x200);
- gUnknown_02039B4C->selectedScreen = AREA_SCREEN;
+ sPokedexView->selectedScreen = AREA_SCREEN;
gMain.state = 1;
}
break;
case 1:
sub_80BFCF4(0xD);
sub_80BFD7C(0, 0xD);
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256);
gMain.state++;
break;
case 2:
- sub_813D3D8(NationalPokedexNumToSpecies(gUnknown_02039B54->dexNum), &gUnknown_02039B4C->unk64E);
+ ShowPokedexAreaScreen(NationalPokedexNumToSpecies(sPokedexListItem->dexNum), &sPokedexView->unk64E);
SetVBlankCallback(gUnknown_030060B4);
- gUnknown_02039B4C->unk64E = 0;
+ sPokedexView->unk64E = 0;
gMain.state = 0;
gTasks[taskId].func = sub_80BF1B4;
break;
@@ -2774,7 +3188,7 @@ void sub_80BF0AC(u8 taskId)
void sub_80BF1B4(u8 taskId)
{
- if (gUnknown_02039B4C->unk64E != 0)
+ if (sPokedexView->unk64E != 0)
gTasks[taskId].func = sub_80BF1EC;
}
@@ -2782,7 +3196,7 @@ void sub_80BF1EC(u8 taskId)
{
if (!gPaletteFade.active)
{
- switch (gUnknown_02039B4C->unk64E)
+ switch (sPokedexView->unk64E)
{
case 1:
default:
@@ -2804,17 +3218,17 @@ void sub_80BF250(u8 taskId)
if (!gPaletteFade.active)
{
m4aMPlayStop(&gMPlayInfo_BGM);
- gUnknown_02039B4C->unk64A = 6;
+ sPokedexView->unk64A = 6;
gUnknown_030060B4 = gMain.vblankCallback;
SetVBlankCallback(NULL);
sub_80C09B0(0x200);
- gUnknown_02039B4C->selectedScreen = CRY_SCREEN;
+ sPokedexView->selectedScreen = CRY_SCREEN;
gMain.state = 1;
}
break;
case 1:
DecompressAndLoadBgGfxUsingHeap(3, &gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(3, &gUnknown_08DC3198, 0, 0);
+ CopyToBgTilemapBuffer(3, &gPokedexTilemap_CryScreen, 0, 0);
FillWindowPixelBuffer(0, 0);
PutWindowTilemap(0);
PutWindowTilemap(3);
@@ -2824,7 +3238,7 @@ void sub_80BF250(u8 taskId)
case 2:
sub_80BFCF4(0xD);
sub_80BFD7C(1, 0xD);
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
gMain.state++;
break;
case 3:
@@ -2833,13 +3247,13 @@ void sub_80BF250(u8 taskId)
break;
case 4:
sub_80BE8DC(gText_CryOf, 0x52, 33);
- sub_80C0B44(0, gUnknown_02039B54->dexNum, 0x52, 49);
+ sub_80C0B44(0, sPokedexListItem->dexNum, 0x52, 49);
gMain.state++;
break;
case 5:
- gTasks[taskId].data[4] = sub_80C0E9C(gUnknown_02039B54->dexNum, 48, 56, 0);
+ gTasks[taskId].data[4] = sub_80C0E9C(sPokedexListItem->dexNum, 48, 56, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
- gUnknown_030061EC = 0;
+ gDexCryScreenState = 0;
gMain.state++;
break;
case 6:
@@ -2854,7 +3268,7 @@ void sub_80BF250(u8 taskId)
if (sub_8145354(&sp4, 2) != 0)
{
gMain.state++;
- gUnknown_030061EC = 0;
+ gDexCryScreenState = 0;
}
}
break;
@@ -2892,7 +3306,7 @@ void sub_80BF250(u8 taskId)
gMain.state++;
break;
case 10:
- gUnknown_02039B4C->unk64E = 0;
+ sPokedexView->unk64E = 0;
gMain.state = 0;
gTasks[taskId].func = sub_80BF5CC;
break;
@@ -2911,7 +3325,7 @@ void sub_80BF5CC(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
sub_80BF7FC(1);
- sub_8145534(NationalPokedexNumToSpecies(gUnknown_02039B54->dexNum));
+ sub_8145534(NationalPokedexNumToSpecies(sPokedexListItem->dexNum));
return;
}
else if (!gPaletteFade.active)
@@ -2920,7 +3334,7 @@ void sub_80BF5CC(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
m4aMPlayContinue(&gMPlayInfo_BGM);
- gUnknown_02039B4C->unk64E = 1;
+ sPokedexView->unk64E = 1;
gTasks[taskId].func = sub_80BF790;
PlaySE(SE_PC_OFF);
return;
@@ -2930,7 +3344,7 @@ void sub_80BF5CC(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
m4aMPlayContinue(&gMPlayInfo_BGM);
- gUnknown_02039B4C->unk64E = 2;
+ sPokedexView->unk64E = 2;
gTasks[taskId].func = sub_80BF790;
PlaySE(SE_Z_PAGE);
return;
@@ -2938,7 +3352,7 @@ void sub_80BF5CC(u8 taskId)
if ((gMain.newKeys & DPAD_RIGHT)
|| ((gMain.newKeys & R_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
- if (!gUnknown_02039B54->owned)
+ if (!sPokedexListItem->owned)
{
PlaySE(SE_HAZURE);
}
@@ -2946,7 +3360,7 @@ void sub_80BF5CC(u8 taskId)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
m4aMPlayContinue(&gMPlayInfo_BGM);
- gUnknown_02039B4C->unk64E = 3;
+ sPokedexView->unk64E = 3;
gTasks[taskId].func = sub_80BF790;
PlaySE(SE_Z_PAGE);
}
@@ -2961,7 +3375,7 @@ void sub_80BF790(u8 taskId)
{
sub_8145914();
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
- switch (gUnknown_02039B4C->unk64E)
+ switch (sPokedexView->unk64E)
{
default:
case 1:
@@ -2998,17 +3412,17 @@ void sub_80BF82C(u8 taskId)
case 0:
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk64A = 7;
+ sPokedexView->unk64A = 7;
gUnknown_030060B4 = gMain.vblankCallback;
SetVBlankCallback(NULL);
sub_80C09B0(0x200);
- gUnknown_02039B4C->selectedScreen = SIZE_SCREEN;
+ sPokedexView->selectedScreen = SIZE_SCREEN;
gMain.state = 1;
}
break;
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(3, gUnknown_08DC2E6C, 0, 0);
+ CopyToBgTilemapBuffer(3, gPokedexTilemap_SizeScreen, 0, 0);
FillWindowPixelBuffer(0, 0);
PutWindowTilemap(0);
gMain.state++;
@@ -3016,7 +3430,7 @@ void sub_80BF82C(u8 taskId)
case 2:
sub_80BFCF4(0xD);
sub_80BFD7C(2, 0xD);
- sub_80BC844(gUnknown_02039B4C->unk64C_1);
+ LoadPokedexBgPalette(sPokedexView->unk64C_1);
gMain.state++;
break;
case 3:
@@ -3038,19 +3452,19 @@ void sub_80BF82C(u8 taskId)
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 1;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_02039B54->dexNum].trainerOffset;
- SetOamMatrix(1, gPokedexEntries[gUnknown_02039B54->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_02039B54->dexNum].trainerScale);
+ gSprites[spriteId].pos2.y = gPokedexEntries[sPokedexListItem->dexNum].trainerOffset;
+ SetOamMatrix(1, gPokedexEntries[sPokedexListItem->dexNum].trainerScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].trainerScale);
LoadPalette(gUnknown_0856E610, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
gTasks[taskId].data[5] = spriteId;
gMain.state++;
break;
case 6:
- spriteId = sub_80C0E9C(gUnknown_02039B54->dexNum, 88, 56, 1);
+ spriteId = sub_80C0E9C(sPokedexListItem->dexNum, 88, 56, 1);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 2;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_02039B54->dexNum].pokemonOffset;
- SetOamMatrix(2, gPokedexEntries[gUnknown_02039B54->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_02039B54->dexNum].pokemonScale);
+ gSprites[spriteId].pos2.y = gPokedexEntries[sPokedexListItem->dexNum].pokemonOffset;
+ SetOamMatrix(2, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale, 0, 0, gPokedexEntries[sPokedexListItem->dexNum].pokemonScale);
LoadPalette(gUnknown_0856E610, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
gTasks[taskId].data[4] = spriteId;
CopyWindowToVram(0, 3);
@@ -3078,7 +3492,7 @@ void sub_80BF82C(u8 taskId)
case 9:
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk64E = 0;
+ sPokedexView->unk64E = 0;
gMain.state = 0;
gTasks[taskId].func = sub_80BFBB0;
}
@@ -3091,7 +3505,7 @@ void sub_80BFBB0(u8 taskId)
if (gMain.newKeys & B_BUTTON)
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 1;
+ sPokedexView->unk64E = 1;
gTasks[taskId].func = sub_80BFC78;
PlaySE(SE_PC_OFF);
}
@@ -3099,7 +3513,7 @@ void sub_80BFBB0(u8 taskId)
|| ((gMain.newKeys & L_BUTTON) && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK);
- gUnknown_02039B4C->unk64E = 2;
+ sPokedexView->unk64E = 2;
gTasks[taskId].func = sub_80BFC78;
PlaySE(SE_Z_PAGE);
}
@@ -3111,7 +3525,7 @@ void sub_80BFC78(u8 taskId)
{
FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]);
FreeAndDestroyTrainerPicSprite(gTasks[taskId].data[5]);
- switch (gUnknown_02039B4C->unk64E)
+ switch (sPokedexView->unk64E)
{
default:
case 1:
@@ -3126,12 +3540,12 @@ void sub_80BFC78(u8 taskId)
void sub_80BFCDC(u16 a)
{
- CopyToBgTilemapBuffer(1, gUnknown_08DC2F5C, 0, 0);
+ CopyToBgTilemapBuffer(1, gPokedexTilemap_ScreenSelectBar1, 0, 0);
}
void sub_80BFCF4(u16 a)
{
- CopyToBgTilemapBuffer(1, gUnknown_08DC2FEC, 0, 0);
+ CopyToBgTilemapBuffer(1, gPokedexTilemap_ScreenSelectBar2, 0, 0);
}
#ifdef NONMATCHING
@@ -3355,14 +3769,14 @@ void sub_80BFE38(u8 taskId)
break;
case 1:
DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0);
- CopyToBgTilemapBuffer(3, gUnknown_08DC3080, 0, 0);
+ CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0);
FillWindowPixelBuffer(0, 0);
PutWindowTilemap(0);
PutWindowTilemap(1);
sub_80C0D30(1, gTasks[taskId].data[1]);
CopyWindowToVram(1, 2);
ResetPaletteFade();
- sub_80BC844(0);
+ LoadPokedexBgPalette(0);
gTasks[taskId].data[0]++;
break;
case 2:
@@ -3429,7 +3843,7 @@ void blockset_load_palette_to_gpu(u8 taskId)
u32 otId;
u32 personality;
u8 paletteNum;
- const u8 *lzPaletteData;
+ const u32 *lzPaletteData;
void *buffer;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
@@ -3512,7 +3926,7 @@ void sub_80C020C(u32 num, u32 value, u32 c, u32 d)
if (c)
text3 = gPokedexEntries[num].description;
else
- text3 = gUnknown_0855D30C;
+ text3 = gExpandedPlaceholder_PokedexDescription;
sub_80BE8DC(text3, GetStringCenterAlignXOffset(1, text3, 0xF0), 0x5F);
}
@@ -4251,71 +4665,71 @@ int sub_80C0F30(u8 dexMode, u8 sortMode, u8 abcGroup, u8 bodyColor, u8 type1, u8
for (i = 0, resultsCount = 0; i < NATIONAL_DEX_COUNT; i++)
{
- if (gUnknown_02039B4C->unk0[i].seen)
+ if (sPokedexView->pokedexList[i].seen)
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
- gUnknown_02039B4C->pokemonListCount = resultsCount;
+ sPokedexView->pokemonListCount = resultsCount;
// Search by name
if (abcGroup != 0xFF)
{
- for (i = 0, resultsCount = 0; i < gUnknown_02039B4C->pokemonListCount; i++)
+ for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
{
u8 r3;
- species = NationalPokedexNumToSpecies(gUnknown_02039B4C->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
r3 = gSpeciesNames[species][0];
if ((r3 >= gUnknown_0856ED08[abcGroup][0] && r3 < gUnknown_0856ED08[abcGroup][0] + gUnknown_0856ED08[abcGroup][1])
|| (r3 >= gUnknown_0856ED08[abcGroup][2] && r3 < gUnknown_0856ED08[abcGroup][2] + gUnknown_0856ED08[abcGroup][3]))
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
- gUnknown_02039B4C->pokemonListCount = resultsCount;
+ sPokedexView->pokemonListCount = resultsCount;
}
// Search by body color
if (bodyColor != 0xFF)
{
- for (i = 0, resultsCount = 0; i < gUnknown_02039B4C->pokemonListCount; i++)
+ for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
{
- species = NationalPokedexNumToSpecies(gUnknown_02039B4C->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
if (bodyColor == gBaseStats[species].bodyColor)
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
- gUnknown_02039B4C->pokemonListCount = resultsCount;
+ sPokedexView->pokemonListCount = resultsCount;
}
// Search by type
- if (type1 != 0xFF || type2 != 0xFF)
+ if (type1 != TYPE_NONE || type2 != TYPE_NONE)
{
- if (type1 == 0xFF)
+ if (type1 == TYPE_NONE)
{
type1 = type2;
- type2 = 0xFF;
+ type2 = TYPE_NONE;
}
- if (type2 == 0xFF)
+ if (type2 == TYPE_NONE)
{
- for (i = 0, resultsCount = 0; i < gUnknown_02039B4C->pokemonListCount; i++)
+ for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
{
- if (gUnknown_02039B4C->unk0[i].owned)
+ if (sPokedexView->pokedexList[i].owned)
{
- species = NationalPokedexNumToSpecies(gUnknown_02039B4C->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
types[0] = gBaseStats[species].type1;
types[1] = gBaseStats[species].type2;
if (types[0] == type1 || types[1] == type1)
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
@@ -4323,32 +4737,32 @@ int sub_80C0F30(u8 dexMode, u8 sortMode, u8 abcGroup, u8 bodyColor, u8 type1, u8
}
else
{
- for (i = 0, resultsCount = 0; i < gUnknown_02039B4C->pokemonListCount; i++)
+ for (i = 0, resultsCount = 0; i < sPokedexView->pokemonListCount; i++)
{
- if (gUnknown_02039B4C->unk0[i].owned)
+ if (sPokedexView->pokedexList[i].owned)
{
- species = NationalPokedexNumToSpecies(gUnknown_02039B4C->unk0[i].dexNum);
+ species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum);
types[0] = gBaseStats[species].type1;
types[1] = gBaseStats[species].type2;
if ((types[0] == type1 && types[1] == type2) || (types[0] == type2 && types[1] == type1))
{
- gUnknown_02039B4C->unk0[resultsCount] = gUnknown_02039B4C->unk0[i];
+ sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i];
resultsCount++;
}
}
}
}
- gUnknown_02039B4C->pokemonListCount = resultsCount;
+ sPokedexView->pokemonListCount = resultsCount;
}
- if (gUnknown_02039B4C->pokemonListCount != 0)
+ if (sPokedexView->pokemonListCount != 0)
{
- for (i = gUnknown_02039B4C->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
+ for (i = sPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++)
{
- gUnknown_02039B4C->unk0[i].dexNum = 0xFFFF;
- gUnknown_02039B4C->unk0[i].seen = FALSE;
- gUnknown_02039B4C->unk0[i].owned = FALSE;
+ sPokedexView->pokedexList[i].dexNum = 0xFFFF;
+ sPokedexView->pokedexList[i].seen = FALSE;
+ sPokedexView->pokedexList[i].owned = FALSE;
}
}
@@ -4386,7 +4800,7 @@ void sub_80C12E0(u8 taskId)
case 0:
if (!gPaletteFade.active)
{
- gUnknown_02039B4C->unk64A = 2;
+ sPokedexView->unk64A = 2;
sub_80C09B0(0);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_0856EFF8, 4);
@@ -4408,8 +4822,8 @@ void sub_80C12E0(u8 taskId)
}
break;
case 1:
- LoadCompressedObjectPic(gSpriteSheets_0855D26C);
- LoadSpritePalettes(gSpritePalettes_0855D26C);
+ LoadCompressedObjectPic(sInterfaceSpriteSheet);
+ LoadSpritePalettes(sInterfaceSpritePalette);
sub_80C2594(taskId);
for (i = 0; i < 16; i++)
gTasks[taskId].data[i] = 0;
@@ -4564,15 +4978,15 @@ void sub_80C170C(u8 taskId)
if (gTasks[taskId].data[0] != 0)
{
gUnknown_02039B52 = 0x40;
- gUnknown_02039B4C->unk62A = 0x40;
+ sPokedexView->unk62A = 0x40;
gUnknown_02039B50 = 0;
- gUnknown_02039B4C->unk610 = 0;
+ sPokedexView->unk610 = 0;
gSaveBlock2Ptr->pokedex.unknown1 = sub_80C2318(taskId, 5);
if (!IsNationalPokedexEnabled())
gSaveBlock2Ptr->pokedex.unknown1 = 0;
- gUnknown_02039B4C->unk614 = gSaveBlock2Ptr->pokedex.unknown1;
+ sPokedexView->unk614 = gSaveBlock2Ptr->pokedex.unknown1;
gSaveBlock2Ptr->pokedex.order = sub_80C2318(taskId, 4);
- gUnknown_02039B4C->unk618 = gSaveBlock2Ptr->pokedex.order;
+ sPokedexView->unk618 = gSaveBlock2Ptr->pokedex.order;
PlaySE(SE_PC_OFF);
gTasks[taskId].func = sub_80C1D38;
}
@@ -4643,7 +5057,7 @@ void sub_80C1A4C(u8 taskId)
{
if (!IsSEPlaying())
{
- if (gUnknown_02039B4C->pokemonListCount != 0)
+ if (sPokedexView->pokemonListCount != 0)
{
PlaySE(SE_SEIKAI);
sub_80C2618(gText_SearchCompleted);
@@ -4662,11 +5076,11 @@ void sub_80C1AB8(u8 taskId)
{
if (gMain.newKeys & A_BUTTON)
{
- if (gUnknown_02039B4C->pokemonListCount != 0)
+ if (sPokedexView->pokemonListCount != 0)
{
- gUnknown_02039B4C->unk64E = 1;
- gUnknown_02039B4C->dexMode = sub_80C2318(taskId, 5);
- gUnknown_02039B4C->dexOrder = sub_80C2318(taskId, 4);
+ sPokedexView->unk64E = 1;
+ sPokedexView->dexMode = sub_80C2318(taskId, 5);
+ sPokedexView->dexOrder = sub_80C2318(taskId, 4);
gTasks[taskId].func = sub_80C1D38;
PlaySE(SE_PC_OFF);
}
@@ -4700,14 +5114,14 @@ void sub_80C1B64(u8 taskId)
void sub_80C1BCC(u8 taskId)
{
u8 r1;
- const struct UnknownStruct2 *r8;
+ const struct PokedexOption *r8;
u16 *p1;
u16 *p2;
u16 r2;
bool8 r3;
r1 = gTasks[taskId].data[1];
- r8 = gUnknown_0856EFC8[r1].unk0;
+ r8 = gUnknown_0856EFC8[r1].pokedexList;
p1 = &gTasks[taskId].data[gUnknown_0856EFC8[r1].unk4];
p2 = &gTasks[taskId].data[gUnknown_0856EFC8[r1].unk5];
r2 = gUnknown_0856EFC8[r1].unk6 - 1;
@@ -4753,7 +5167,7 @@ void sub_80C1BCC(u8 taskId)
if (r3)
{
PlaySE(SE_SELECT);
- sub_80C2618(r8[*p1 + *p2].text1);
+ sub_80C2618(r8[*p1 + *p2].description);
CopyWindowToVram(0, 2);
}
return;
@@ -4777,7 +5191,7 @@ void sub_80C1BCC(u8 taskId)
if (r3)
{
PlaySE(SE_SELECT);
- sub_80C2618(r8[*p1 + *p2].text1);
+ sub_80C2618(r8[*p1 + *p2].description);
CopyWindowToVram(0, 2);
}
return;
@@ -4996,24 +5410,24 @@ void sub_80C20F8(u8 taskId)
sub_80C12B0(0x28, 0x10, 0x60, 0x50);
var = gTasks[taskId].data[6] + gTasks[taskId].data[7];
- sub_80C1270(gUnknown_0856EE5C[var].text2, 0x2D, 0x11);
+ sub_80C1270(gDexSearchAlphaOptions[var].title, 0x2D, 0x11);
var = gTasks[taskId].data[8] + gTasks[taskId].data[9];
- sub_80C1270(gUnknown_0856EEB4[var].text2, 0x2D, 0x21);
+ sub_80C1270(gDexSearchColorOptions[var].title, 0x2D, 0x21);
var = gTasks[taskId].data[10] + gTasks[taskId].data[11];
- sub_80C1270(gUnknown_0856EF14[var].text2, 0x2D, 0x31);
+ sub_80C1270(gDexSearchTypeOptions[var].title, 0x2D, 0x31);
var = gTasks[taskId].data[12] + gTasks[taskId].data[13];
- sub_80C1270(gUnknown_0856EF14[var].text2, 0x5D, 0x31);
+ sub_80C1270(gDexSearchTypeOptions[var].title, 0x5D, 0x31);
var = gTasks[taskId].data[4] + gTasks[taskId].data[5];
- sub_80C1270(gUnknown_0856EE24[var].text2, 0x2D, 0x41);
+ sub_80C1270(gDexSortOptions[var].title, 0x2D, 0x41);
if (IsNationalPokedexEnabled())
{
var = gTasks[taskId].data[2] + gTasks[taskId].data[3];
- sub_80C1270(gUnknown_0856EE0C[var].text2, 0x2D, 0x51);
+ sub_80C1270(gDexModeOptions[var].title, 0x2D, 0x51);
}
}
@@ -5052,45 +5466,45 @@ void sub_80C21D4(u8 a)
void sub_80C2294(u8 taskId)
{
- const struct UnknownStruct2 *r6 = gUnknown_0856EFC8[gTasks[taskId].data[1]].unk0;
+ const struct PokedexOption *r6 = gUnknown_0856EFC8[gTasks[taskId].data[1]].pokedexList;
const u16 *r8 = &gTasks[taskId].data[gUnknown_0856EFC8[gTasks[taskId].data[1]].unk4];
const u16 *r7 = &gTasks[taskId].data[gUnknown_0856EFC8[gTasks[taskId].data[1]].unk5];
u16 i;
u16 j;
sub_80C267C();
- for (i = 0, j = *r7; i < 6 && r6[j].text2 != NULL; i++, j++)
- sub_80C2668(i, r6[j].text2);
- sub_80C2618(r6[*r8 + *r7].text1);
+ for (i = 0, j = *r7; i < 6 && r6[j].title != NULL; i++, j++)
+ sub_80C2668(i, r6[j].title);
+ sub_80C2618(r6[*r8 + *r7].description);
}
u8 sub_80C2318(u8 taskId, u8 b)
{
const u16 *ptr1 = &gTasks[taskId].data[gUnknown_0856EFC8[b].unk4];
const u16 *ptr2 = &gTasks[taskId].data[gUnknown_0856EFC8[b].unk5];
- u16 r2 = *ptr1 + *ptr2;
+ u16 type = *ptr1 + *ptr2;
switch (b)
{
default:
return 0;
case 5:
- return gUnknown_0856EFAC[r2];
+ return gUnknown_0856EFAC[type];
case 4:
- return gUnknown_0856EFAE[r2];
+ return gUnknown_0856EFAE[type];
case 0:
- if (r2 == 0)
+ if (type == 0)
return 0xFF;
else
- return r2;
+ return type;
case 1:
- if (r2 == 0)
+ if (type == 0)
return 0xFF;
else
- return r2 - 1;
+ return type - 1;
case 2:
case 3:
- return gUnknown_0856EFB4[r2];
+ return gDexSearchTypeIds[type];
}
}
@@ -5098,7 +5512,7 @@ void sub_80C23B8(u8 taskId)
{
u16 r3;
- switch (gUnknown_02039B4C->unk614)
+ switch (sPokedexView->unk614)
{
default:
case 0:
@@ -5110,7 +5524,7 @@ void sub_80C23B8(u8 taskId)
}
gTasks[taskId].data[2] = r3;
- switch (gUnknown_02039B4C->unk618)
+ switch (sPokedexView->unk618)
{
default:
case 0:
@@ -5193,12 +5607,12 @@ void sub_80C2594(u8 taskId)
{
u8 spriteId;
- spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 4, 0);
+ spriteId = CreateSprite(&sArrowSpriteTemplate, 184, 4, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].callback = sub_80C24E0;
- spriteId = CreateSprite(&gUnknown_0855D1AC, 184, 108, 0);
+ spriteId = CreateSprite(&sArrowSpriteTemplate, 184, 108, 0);
gSprites[spriteId].data[0] = taskId;
gSprites[spriteId].data[1] = 1;
gSprites[spriteId].vFlip = TRUE;