diff options
Diffstat (limited to 'src/pokedex.c')
-rw-r--r-- | src/pokedex.c | 2027 |
1 files changed, 1014 insertions, 1013 deletions
diff --git a/src/pokedex.c b/src/pokedex.c index 66a68f0bd..ef8905bb6 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -8,7 +8,7 @@ #include "graphics.h" #include "international_string_util.h" #include "main.h" -#include "malloc.h" +#include "alloc.h" #include "menu.h" #include "m4a.h" #include "overworld.h" @@ -30,40 +30,27 @@ #include "constants/songs.h" #include "constants/species.h" -extern u8 gUnknown_030061EC; +extern u8 gDexCryScreenState; // EWRAM -static EWRAM_DATA struct PokedexView *gUnknown_02039B4C = NULL; +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; void (*gUnknown_030060B4)(void); -struct PokedexEntry +struct PokedexOption { - /*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*/ - -struct UnknownStruct2 -{ - 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; @@ -88,9 +75,6 @@ struct UnknownStruct4 u8 unk9; }; -#define HOENN_DEX_COUNT 202 -#define NATIONAL_DEX_COUNT 386 - extern struct MusicPlayerInfo gMPlayInfo_BGM; struct PokedexListItem @@ -102,7 +86,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; @@ -114,14 +98,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; @@ -145,12 +129,6 @@ struct PokedexView enum { - DEX_MODE_HOENN, - DEX_MODE_NATIONAL -}; - -enum -{ AREA_SCREEN, CRY_SCREEN, SIZE_SCREEN, @@ -170,30 +148,30 @@ 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); bool8 sub_80BD930(void); u8 sub_80BDA40(void); -u16 sub_80BDA8C(u16); +u16 GetPokemonSpriteToDisplay(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); @@ -262,7 +240,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 = { @@ -271,7 +249,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, @@ -288,7 +266,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, @@ -305,7 +283,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, @@ -322,7 +300,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, @@ -339,7 +317,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, @@ -356,7 +334,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, @@ -626,7 +604,7 @@ static const union AnimCmd *const sSpriteAnimTable_855D190[] = sSpriteAnim_855D10C }; -static const struct SpriteTemplate gUnknown_0855D194 = +static const struct SpriteTemplate sScrollBarSpriteTemplate = { .tileTag = 4096, .paletteTag = 4096, @@ -634,10 +612,10 @@ static const struct SpriteTemplate gUnknown_0855D194 = .anims = sSpriteAnimTable_855D114, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80BE604, + .callback = SpriteCB_Scrollbar, }; -static const struct SpriteTemplate gUnknown_0855D1AC = +static const struct SpriteTemplate sArrowSpriteTemplate = { .tileTag = 4096, .paletteTag = 4096, @@ -648,7 +626,7 @@ static const struct SpriteTemplate gUnknown_0855D1AC = .callback = sub_80BE658, }; -static const struct SpriteTemplate gUnknown_0855D1C4 = +static const struct SpriteTemplate sInterfaceTextSpriteTemplate = { .tileTag = 4096, .paletteTag = 4096, @@ -659,7 +637,7 @@ static const struct SpriteTemplate gUnknown_0855D1C4 = .callback = sub_80BE758, }; -static const struct SpriteTemplate gUnknown_0855D1DC = +static const struct SpriteTemplate sRotatingPokeballSpriteTemplate = { .tileTag = 4096, .paletteTag = 4096, @@ -670,7 +648,7 @@ static const struct SpriteTemplate gUnknown_0855D1DC = .callback = sub_80BE780, }; -static const struct SpriteTemplate gUnknown_0855D1F4 = +static const struct SpriteTemplate sSeenOwnTextSpriteTemplate = { .tileTag = 4096, .paletteTag = 4096, @@ -725,13 +703,13 @@ static const struct SpriteTemplate gUnknown_0855D254 = .callback = sub_80BE834, }; -static const struct CompressedSpriteSheet gSpriteSheets_0855D26C[] = +static const struct CompressedSpriteSheet sInterfaceSpriteSheet[] = { {gPokedexMenu2_Gfx, 0x2000, 4096}, {0} }; -static const struct SpritePalette gSpritePalettes_0855D26C[] = +static const struct SpritePalette sInterfaceSpritePalette[] = { {gPokedexText_Pal, 4096}, {0} @@ -780,7 +758,7 @@ static const struct BgTemplate gBgTemplates_0855D298[] = } }; -static const struct WindowTemplate sWindowTemplates_0855D2A8[] = +static const struct WindowTemplate sPokemonList_WindowTemplate[] = { { .bg = 2, @@ -794,7 +772,7 @@ static const struct WindowTemplate sWindowTemplates_0855D2A8[] = DUMMY_WIN_TEMPLATE }; -static const u8 gUnknown_0855D2B8[] = _("{NO}000"); +static const u8 sText_No000[] = _("{NO}000"); static const u8 gUnknown_0855D2BE[] = INCBIN_U8("graphics/pokedex/caught_ball.4bpp"); static const u8 sText_TenDashes[] = _("----------"); @@ -845,7 +823,7 @@ static const struct BgTemplate gUnknown_0856E630[] = } }; -static const struct WindowTemplate gUnknown_0856E640[] = +static const struct WindowTemplate gUnknown_0856E640[] = { { .bg = 2, @@ -908,7 +886,7 @@ static const struct BgTemplate gUnknown_0856E668[] = }, }; -static const struct WindowTemplate gUnknown_0856E670[] = +static const struct WindowTemplate gUnknown_0856E670[] = { { .bg = 2, @@ -1082,90 +1060,109 @@ static const u8 gUnknown_0856EDF0[][4] = {0xFF, 0xFF, 4, 0xFF}, }; -static const struct UnknownStruct2 gUnknown_0856EE0C[] = +static const struct PokedexOption gDexModeOptions[] = { - {gUnknown_085E89A4, gUnknown_085E88DF}, - {gUnknown_085E89BB, gUnknown_085E88E9}, + {gText_DexHoennDescription, gText_DexHoennTitle}, + {gText_DexNatDescription, gText_DexNatTitle}, {NULL, NULL}, }; -static const struct UnknownStruct2 gUnknown_0856EE24[] = +static const struct PokedexOption gDexSortOptions[] = { - {gUnknown_085E89D4, gUnknown_085E88F6}, - {gUnknown_085E8A02, gUnknown_085E8905}, - {gUnknown_085E8A37, gUnknown_085E8911}, - {gUnknown_085E8A73, gUnknown_085E891F}, - {gUnknown_085E8AAF, gUnknown_085E892D}, - {gUnknown_085E8AEA, gUnknown_085E893A}, + {gText_DexSortNumericalDescription, gText_DexSortNumericalTitle}, + {gText_DexSortAtoZDescription, gText_DexSortAtoZTitle}, + {gText_DexSortHeaviestDescription, gText_DexSortHeaviestTitle}, + {gText_DexSortLightestDescription, gText_DexSortLightestTitle}, + {gText_DexSortTallestDescription, gText_DexSortTallestTitle}, + {gText_DexSortSmallestDescription, gText_DexSortSmallestTitle}, {NULL, NULL}, }; -static const struct UnknownStruct2 gUnknown_0856EE5C[] = -{ - {gUnknown_085E8B25, gUnknown_085E8B26}, - {gUnknown_085E8B25, gUnknown_085E8948}, - {gUnknown_085E8B25, gUnknown_085E894C}, - {gUnknown_085E8B25, gUnknown_085E8950}, - {gUnknown_085E8B25, gUnknown_085E8954}, - {gUnknown_085E8B25, gUnknown_085E8958}, - {gUnknown_085E8B25, gUnknown_085E895C}, - {gUnknown_085E8B25, gUnknown_085E8960}, - {gUnknown_085E8B25, gUnknown_085E8964}, - {gUnknown_085E8B25, gUnknown_085E8968}, +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 UnknownStruct2 gUnknown_0856EEB4[] = -{ - {gUnknown_085E8B25, gUnknown_085E8B26}, - {gUnknown_085E8B25, gUnknown_085E896B}, - {gUnknown_085E8B25, gUnknown_085E896F}, - {gUnknown_085E8B25, gUnknown_085E8974}, - {gUnknown_085E8B25, gUnknown_085E897B}, - {gUnknown_085E8B25, gUnknown_085E8981}, - {gUnknown_085E8B25, gUnknown_085E8987}, - {gUnknown_085E8B25, gUnknown_085E898D}, - {gUnknown_085E8B25, gUnknown_085E8994}, - {gUnknown_085E8B25, gUnknown_085E8999}, - {gUnknown_085E8B25, gUnknown_085E899F}, +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 UnknownStruct2 gUnknown_0856EF14[] = -{ - {gUnknown_085E8B25, gUnknown_085E8B35}, - {gUnknown_085E8B25, gTypeNames[TYPE_NORMAL]}, - {gUnknown_085E8B25, gTypeNames[TYPE_FIGHTING]}, - {gUnknown_085E8B25, gTypeNames[TYPE_FLYING]}, - {gUnknown_085E8B25, gTypeNames[TYPE_POISON]}, - {gUnknown_085E8B25, gTypeNames[TYPE_GROUND]}, - {gUnknown_085E8B25, gTypeNames[TYPE_ROCK]}, - {gUnknown_085E8B25, gTypeNames[TYPE_BUG]}, - {gUnknown_085E8B25, gTypeNames[TYPE_GHOST]}, - {gUnknown_085E8B25, gTypeNames[TYPE_STEEL]}, - {gUnknown_085E8B25, gTypeNames[TYPE_FIRE]}, - {gUnknown_085E8B25, gTypeNames[TYPE_WATER]}, - {gUnknown_085E8B25, gTypeNames[TYPE_GRASS]}, - {gUnknown_085E8B25, gTypeNames[TYPE_ELECTRIC]}, - {gUnknown_085E8B25, gTypeNames[TYPE_PSYCHIC]}, - {gUnknown_085E8B25, gTypeNames[TYPE_ICE]}, - {gUnknown_085E8B25, gTypeNames[TYPE_DRAGON]}, - {gUnknown_085E8B25, gTypeNames[TYPE_DARK]}, +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 gUnknown_0856EFB4[] = {0xFF, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17}; +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[] = { - {gUnknown_0856EE5C, 6, 7, 10}, - {gUnknown_0856EEB4, 8, 9, 11}, - {gUnknown_0856EF14, 10,11, 18}, - {gUnknown_0856EF14, 12, 13, 18}, - {gUnknown_0856EE24, 4, 5, 6}, - {gUnknown_0856EE0C, 2, 3, 2}, + {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[] = @@ -1208,7 +1205,7 @@ static const struct BgTemplate gUnknown_0856EFF8[] = } }; -static const struct WindowTemplate gUnknown_0856F008[] = +static const struct WindowTemplate gUnknown_0856F008[] = { { .bg = 2, @@ -1231,7 +1228,7 @@ void ResetPokedex(void) gUnknown_02039B50 = 0; gUnknown_02039B52 = 64; gUnknown_030060B0 = 0; - gSaveBlock2Ptr->pokedex.unknown1 = 0; + gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN; gSaveBlock2Ptr->pokedex.order = 0; gSaveBlock2Ptr->pokedex.nationalMagic = 0; gSaveBlock2Ptr->pokedex.unknown2 = 0; @@ -1261,15 +1258,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; @@ -1281,14 +1278,14 @@ void sub_80BB384(struct PokedexView *pokedexView) pokedexView->unk614 = 0; pokedexView->dexOrder = 0; pokedexView->unk618 = 0; - pokedexView->unk61A = 0; - pokedexView->unk61C = 0; - for (i = 0; i <= 3; i++) + pokedexView->seenCount = 0; + pokedexView->ownCount = 0; + for (i = 0; i < 4; 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; @@ -1312,7 +1309,7 @@ void sub_80BB384(struct PokedexView *pokedexView) pokedexView->unk65C[i] = 0; } -void sub_80BB534(void) +void CB2_Pokedex(void) { u8 *addr; u32 size; @@ -1339,34 +1336,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.mode; 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; } @@ -1382,26 +1379,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(); @@ -1409,9 +1406,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); } @@ -1420,11 +1417,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(); @@ -1438,8 +1435,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; } } @@ -1447,41 +1444,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 @@ -1495,18 +1492,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); } } @@ -1514,10 +1511,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; } } @@ -1526,13 +1523,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; } } @@ -1542,20 +1539,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; } } @@ -1565,43 +1562,43 @@ void sub_80BBDE8(u8 taskId) { if (!gPaletteFade.active) { - gSaveBlock2Ptr->pokedex.unknown1 = gUnknown_02039B4C->dexMode; + gSaveBlock2Ptr->pokedex.mode = sPokedexView->dexMode; if (!IsNationalPokedexEnabled()) - gSaveBlock2Ptr->pokedex.unknown1 = DEX_MODE_HOENN; - gSaveBlock2Ptr->pokedex.order = gUnknown_02039B4C->dexOrder; + gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN; + 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); @@ -1609,17 +1606,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(); @@ -1633,8 +1630,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; } } @@ -1642,40 +1639,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 @@ -1694,18 +1691,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); } } @@ -1713,11 +1710,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; } } @@ -1726,8 +1723,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 { @@ -1739,12 +1736,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(); @@ -1755,12 +1752,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; } } @@ -1774,9 +1771,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)); @@ -1784,19 +1781,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); @@ -1806,9 +1803,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: @@ -1816,10 +1813,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); @@ -1859,7 +1856,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); @@ -1892,27 +1889,30 @@ void sub_80BC890(void) 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. +#define temp_dexCount vars[0] +#define temp_isHoennDex vars[1] +#define temp_dexNum vars[2] s16 i; - gUnknown_02039B4C->pokemonListCount = 0; + sPokedexView->pokemonListCount = 0; switch (dexMode) { default: case DEX_MODE_HOENN: - vars[0] = HOENN_DEX_COUNT; - vars[1] = 1; + temp_dexCount = HOENN_DEX_COUNT; + temp_isHoennDex = TRUE; break; case DEX_MODE_NATIONAL: if (IsNationalPokedexEnabled()) { - vars[0] = NATIONAL_DEX_COUNT; - vars[1] = 0; + temp_dexCount = NATIONAL_DEX_COUNT; + temp_isHoennDex = FALSE; } else { - vars[0] = HOENN_DEX_COUNT; - vars[1] = 1; + temp_dexCount = HOENN_DEX_COUNT; + temp_isHoennDex = TRUE; } break; } @@ -1920,16 +1920,16 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) switch (sortMode) { case 0: - if (vars[1]) + if (temp_isHoennDex) { - for (i = 0; i < vars[0]; i++) + for (i = 0; i < temp_dexCount; 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; + temp_dexNum = HoennToNationalOrder(i + 1); + sPokedexView->pokedexList[i].dexNum = temp_dexNum; + sPokedexView->pokedexList[i].seen = GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN); + sPokedexView->pokedexList[i].owned = GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT); + if (sPokedexView->pokedexList[i].seen) + sPokedexView->pokemonListCount = i + 1; } } else @@ -1938,19 +1938,19 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) s16 r5; r10 = r5 = i = 0; - for (i = 0; i < vars[0]; i++) + for (i = 0; i < temp_dexCount; i++) { - vars[2] = i + 1; - if (GetSetPokedexFlag(vars[2], 0)) + temp_dexNum = i + 1; + if (GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN)) r10 = 1; 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 = temp_dexNum; + sPokedexView->pokedexList[r5].seen = GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN); + sPokedexView->pokedexList[r5].owned = GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT); + if (sPokedexView->pokedexList[r5].seen) + sPokedexView->pokemonListCount = r5 + 1; r5++; } } @@ -1959,84 +1959,84 @@ void sub_80BC8D4(u8 dexMode, u8 sortMode) case 1: for (i = 0; i < POKEMON_SLOTS_NUMBER - 1; i++) { - vars[2] = gPokedexOrder_Alphabetical[i]; + temp_dexNum = gPokedexOrder_Alphabetical[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 0)) + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_SEEN)) { - 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 = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT); + sPokedexView->pokemonListCount++; } } break; case 2: for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--) { - vars[2] = gPokedexOrder_Weight[i]; + temp_dexNum = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT)) { - 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 = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE; + sPokedexView->pokemonListCount++; } } break; case 3: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { - vars[2] = gPokedexOrder_Weight[i]; + temp_dexNum = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT)) { - 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 = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE; + sPokedexView->pokemonListCount++; } } break; case 4: - for (i = NATIONAL_DEX_COUNT - 1; i >=0; i--) + for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--) { - vars[2] = gPokedexOrder_Height[i]; + temp_dexNum = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT)) { - 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 = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE; + sPokedexView->pokemonListCount++; } } break; case 5: for (i = 0; i < NATIONAL_DEX_COUNT; i++) { - vars[2] = gPokedexOrder_Height[i]; + temp_dexNum = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && GetSetPokedexFlag(vars[2], 1)) + if (NationalToHoennOrder(temp_dexNum) <= temp_dexCount && GetSetPokedexFlag(temp_dexNum, FLAG_GET_CAUGHT)) { - 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 = temp_dexNum; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].seen = TRUE; + sPokedexView->pokedexList[sPokedexView->pokemonListCount].owned = TRUE; + 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 = FALSE; + sPokedexView->pokedexList[i].owned = FALSE; } } -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]; @@ -2046,86 +2046,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; @@ -2133,22 +2133,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); @@ -2156,7 +2156,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; @@ -2165,7 +2165,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); } @@ -2174,7 +2174,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; @@ -2183,10 +2183,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 = GetPokemonSpriteToDisplay(selectedMon - 1); if (unk != 0xFFFF) { spriteId = sub_80BDACC(unk, 0x60, 0x50); @@ -2194,7 +2194,7 @@ void sub_80BD2B4(u16 a, u16 b) gSprites[spriteId].data[5] = -32; } - unk = sub_80BDA8C(a); + unk = GetPokemonSpriteToDisplay(selectedMon); if (unk != 0xFFFF) { spriteId = sub_80BDACC(unk, 0x60, 0x50); @@ -2202,7 +2202,7 @@ void sub_80BD2B4(u16 a, u16 b) gSprites[spriteId].data[5] = 0; } - unk = sub_80BDA8C(a + 1); + unk = GetPokemonSpriteToDisplay(selectedMon + 1); if (unk != 0xFFFF) { spriteId = sub_80BDACC(unk, 0x60, 0x50); @@ -2210,11 +2210,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; } @@ -2224,79 +2224,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 = GetPokemonSpriteToDisplay(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 = GetPokemonSpriteToDisplay(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; @@ -2304,61 +2304,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) @@ -2367,61 +2367,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; } } @@ -2434,21 +2434,21 @@ 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; } -u16 sub_80BDA8C(u16 a1) +u16 GetPokemonSpriteToDisplay(u16 species) { - if (a1 >= NATIONAL_DEX_COUNT || gUnknown_02039B4C->unk0[a1].dexNum == 0xFFFF) + if (species >= NATIONAL_DEX_COUNT || sPokedexView->pokedexList[species].dexNum == 0xFFFF) return 0xFFFF; - else if (gUnknown_02039B4C->unk0[a1].seen) - return gUnknown_02039B4C->unk0[a1].dexNum; + else if (sPokedexView->pokedexList[species].seen) + return sPokedexView->pokedexList[species].dexNum; else return 0; } @@ -2459,54 +2459,55 @@ 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); + u8 spriteId = CreateMonSpriteFromNationalDexNumber(num, x, y, i); gSprites[spriteId].oam.affineMode = 1; gSprites[spriteId].oam.priority = 3; 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; @@ -2518,58 +2519,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); @@ -2607,7 +2609,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; @@ -2615,14 +2617,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); @@ -2650,7 +2652,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; @@ -2658,14 +2660,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); @@ -2684,7 +2686,7 @@ void nullsub_38(struct Sprite *sprite) void sub_80BE44C(struct Sprite *sprite) { - if (gUnknown_02039B4C->unk64A != 0) + if (sPokedexView->unk64A != 0) DestroySprite(sprite); } @@ -2717,10 +2719,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 { @@ -2745,23 +2747,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); } @@ -2771,7 +2773,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; @@ -2779,7 +2781,7 @@ void sub_80BE658(struct Sprite *sprite) } else { - if (gUnknown_02039B4C->selectedPokemon == 0) + if (sPokedexView->selectedPokemon == 0) sprite->invisible = TRUE; else sprite->invisible = FALSE; @@ -2787,7 +2789,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; @@ -2796,13 +2798,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); } @@ -2812,12 +2814,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; @@ -2827,18 +2829,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; } @@ -2863,7 +2865,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; @@ -2893,7 +2895,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; @@ -2911,7 +2913,7 @@ void sub_80BEA24(u8 taskId) { u16 r2; - gUnknown_02039B4C->unk64A = 1; + sPokedexView->unk64A = 1; gUnknown_030060B4 = gMain.vblankCallback; SetVBlankCallback(NULL); r2 = 0; @@ -2925,26 +2927,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); @@ -2955,7 +2957,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)CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 48, 56, 0); gSprites[gTasks[taskId].data[4]].oam.priority = 0; } gMain.state++; @@ -2991,7 +2993,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 { @@ -3050,29 +3052,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); } @@ -3087,19 +3089,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; } @@ -3110,7 +3112,7 @@ void sub_80BEFD0(u8 taskId) if (!gPaletteFade.active) { FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]); - switch (gUnknown_02039B4C->unk64E) + switch (sPokedexView->unk64E) { case 1: default: @@ -3153,25 +3155,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; @@ -3180,7 +3182,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; } @@ -3188,7 +3190,7 @@ void sub_80BF1EC(u8 taskId) { if (!gPaletteFade.active) { - switch (gUnknown_02039B4C->unk64E) + switch (sPokedexView->unk64E) { case 1: default: @@ -3210,17 +3212,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); @@ -3230,7 +3232,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: @@ -3239,13 +3241,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] = CreateMonSpriteFromNationalDexNumber(sPokedexListItem->dexNum, 48, 56, 0); gSprites[gTasks[taskId].data[4]].oam.priority = 0; - gUnknown_030061EC = 0; + gDexCryScreenState = 0; gMain.state++; break; case 6: @@ -3260,7 +3262,7 @@ void sub_80BF250(u8 taskId) if (sub_8145354(&sp4, 2) != 0) { gMain.state++; - gUnknown_030061EC = 0; + gDexCryScreenState = 0; } } break; @@ -3298,7 +3300,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; @@ -3317,7 +3319,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) @@ -3326,7 +3328,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; @@ -3336,7 +3338,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; @@ -3344,7 +3346,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); } @@ -3352,7 +3354,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); } @@ -3367,7 +3369,7 @@ void sub_80BF790(u8 taskId) { sub_8145914(); FreeAndDestroyMonPicSprite(gTasks[taskId].data[4]); - switch (gUnknown_02039B4C->unk64E) + switch (sPokedexView->unk64E) { default: case 1: @@ -3404,17 +3406,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++; @@ -3422,7 +3424,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: @@ -3444,19 +3446,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 = CreateMonSpriteFromNationalDexNumber(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); @@ -3484,7 +3486,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; } @@ -3497,7 +3499,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); } @@ -3505,7 +3507,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); } @@ -3517,7 +3519,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: @@ -3532,12 +3534,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 @@ -3569,61 +3571,61 @@ void sub_80BFD0C(u8 a, u16 unused) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - movs r0, 0x1\n\ - bl GetBgTilemapBuffer\n\ - adds r7, r0, 0\n\ - movs r1, 0\n\ + mov r7, r8\n\ + push {r7}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + movs r0, 0x1\n\ + bl GetBgTilemapBuffer\n\ + adds r7, r0, 0\n\ + movs r1, 0\n\ _080BFD22:\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - movs r3, 0x80\n\ - lsls r3, 7\n\ - cmp r1, r8\n\ - bne _080BFD38\n\ - movs r3, 0x80\n\ - lsls r3, 6\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + movs r3, 0x80\n\ + lsls r3, 7\n\ + cmp r1, r8\n\ + bne _080BFD38\n\ + movs r3, 0x80\n\ + lsls r3, 6\n\ _080BFD38:\n\ - movs r2, 0\n\ - adds r6, r1, 0x1\n\ - ldr r4, =0x00000fff\n\ + movs r2, 0\n\ + adds r6, r1, 0x1\n\ + ldr r4, =0x00000fff\n\ _080BFD3E:\n\ - adds r1, r5, r2\n\ - lsls r1, 1\n\ - adds r1, r7\n\ - ldrh r0, [r1]\n\ - ands r0, r4\n\ - orrs r0, r3\n\ - strh r0, [r1]\n\ - adds r1, 0x40\n\ - ldrh r0, [r1]\n\ - ands r0, r4\n\ - orrs r0, r3\n\ - strh r0, [r1]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r2, 0x6\n\ - bls _080BFD3E\n\ - lsls r0, r6, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0x3\n\ - bls _080BFD22\n\ - movs r0, 0x1\n\ - bl CopyBgTilemapBufferToVram\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ + adds r1, r5, r2\n\ + lsls r1, 1\n\ + adds r1, r7\n\ + ldrh r0, [r1]\n\ + ands r0, r4\n\ + orrs r0, r3\n\ + strh r0, [r1]\n\ + adds r1, 0x40\n\ + ldrh r0, [r1]\n\ + ands r0, r4\n\ + orrs r0, r3\n\ + strh r0, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r2, 0x6\n\ + bls _080BFD3E\n\ + lsls r0, r6, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0x3\n\ + bls _080BFD22\n\ + movs r0, 0x1\n\ + bl CopyBgTilemapBufferToVram\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ .syntax divided\n"); } #endif @@ -3659,66 +3661,66 @@ void sub_80BFD7C(u8 a, u16 b) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - movs r0, 0x1\n\ - bl GetBgTilemapBuffer\n\ - adds r7, r0, 0\n\ - movs r1, 0\n\ + mov r7, r8\n\ + push {r7}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + movs r0, 0x1\n\ + bl GetBgTilemapBuffer\n\ + adds r7, r0, 0\n\ + movs r1, 0\n\ _080BFD92:\n\ - lsls r0, r1, 3\n\ - subs r0, r1\n\ - adds r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - cmp r1, r8\n\ - beq _080BFDA4\n\ - cmp r1, 0x3\n\ - bne _080BFDAA\n\ + lsls r0, r1, 3\n\ + subs r0, r1\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + cmp r1, r8\n\ + beq _080BFDA4\n\ + cmp r1, 0x3\n\ + bne _080BFDAA\n\ _080BFDA4:\n\ - movs r3, 0x80\n\ - lsls r3, 6\n\ - b _080BFDAE\n\ + movs r3, 0x80\n\ + lsls r3, 6\n\ + b _080BFDAE\n\ _080BFDAA:\n\ - movs r3, 0x80\n\ - lsls r3, 7\n\ + movs r3, 0x80\n\ + lsls r3, 7\n\ _080BFDAE:\n\ - movs r2, 0\n\ - adds r5, r1, 0x1\n\ - ldr r4, =0x00000fff\n\ + movs r2, 0\n\ + adds r5, r1, 0x1\n\ + ldr r4, =0x00000fff\n\ _080BFDB4:\n\ - adds r1, r6, r2\n\ - lsls r1, 1\n\ - adds r1, r7\n\ - ldrh r0, [r1]\n\ - ands r0, r4\n\ - orrs r0, r3\n\ - strh r0, [r1]\n\ - adds r1, 0x40\n\ - ldrh r0, [r1]\n\ - ands r0, r4\n\ - orrs r0, r3\n\ - strh r0, [r1]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r2, 0x6\n\ - bls _080BFDB4\n\ - lsls r0, r5, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0x3\n\ - bls _080BFD92\n\ - movs r0, 0x1\n\ - bl CopyBgTilemapBufferToVram\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ + adds r1, r6, r2\n\ + lsls r1, 1\n\ + adds r1, r7\n\ + ldrh r0, [r1]\n\ + ands r0, r4\n\ + orrs r0, r3\n\ + strh r0, [r1]\n\ + adds r1, 0x40\n\ + ldrh r0, [r1]\n\ + ands r0, r4\n\ + orrs r0, r3\n\ + strh r0, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r2, 0x6\n\ + bls _080BFDB4\n\ + lsls r0, r5, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0x3\n\ + bls _080BFD92\n\ + movs r0, 0x1\n\ + bl CopyBgTilemapBufferToVram\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ .syntax divided\n"); } #endif @@ -3761,14 +3763,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: @@ -3782,7 +3784,7 @@ void sub_80BFE38(u8 taskId) gTasks[taskId].data[0]++; break; case 4: - spriteId = sub_80C0E9C(dexNum, 0x30, 0x38, 0); + spriteId = CreateMonSpriteFromNationalDexNumber(dexNum, 48, 56, 0); gSprites[spriteId].oam.priority = 0; BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(gUnknown_030060B4); @@ -4023,216 +4025,216 @@ void sub_80C0460(u16 weight, u8 left, u8 top) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r10, r1\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - str r2, [sp, 0x10]\n\ - ldr r5, =0x000186a0\n\ - muls r0, r5\n\ - ldr r1, =0x000011b8\n\ - bl __divsi3\n\ - adds r7, r0, 0\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - cmp r0, 0x4\n\ - bls _080C0494\n\ - adds r7, 0xA\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r10, r1\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + str r2, [sp, 0x10]\n\ + ldr r5, =0x000186a0\n\ + muls r0, r5\n\ + ldr r1, =0x000011b8\n\ + bl __divsi3\n\ + adds r7, r0, 0\n\ + movs r1, 0xA\n\ + bl __umodsi3\n\ + cmp r0, 0x4\n\ + bls _080C0494\n\ + adds r7, 0xA\n\ _080C0494:\n\ - movs r0, 0\n\ - mov r8, r0\n\ - mov r4, sp\n\ - adds r0, r7, 0\n\ - adds r1, r5, 0\n\ - bl __udivsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0xA1\n\ - bne _080C04C0\n\ - movs r6, 0x1\n\ - mov r1, sp\n\ - movs r0, 0x77\n\ - strb r0, [r1]\n\ - b _080C04C6\n\ - .pool\n\ + movs r0, 0\n\ + mov r8, r0\n\ + mov r4, sp\n\ + adds r0, r7, 0\n\ + adds r1, r5, 0\n\ + bl __udivsi3\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0xA1\n\ + bne _080C04C0\n\ + movs r6, 0x1\n\ + mov r1, sp\n\ + movs r0, 0x77\n\ + strb r0, [r1]\n\ + b _080C04C6\n\ + .pool\n\ _080C04C0:\n\ - movs r1, 0x1\n\ - mov r8, r1\n\ - movs r6, 0x1\n\ + movs r1, 0x1\n\ + mov r8, r1\n\ + movs r6, 0x1\n\ _080C04C6:\n\ - ldr r1, =0x000186a0\n\ - adds r0, r7, 0\n\ - bl __umodsi3\n\ - adds r7, r0, 0\n\ - mov r4, sp\n\ - adds r4, 0x1\n\ - ldr r1, =0x00002710\n\ - bl __udivsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0xA1\n\ - bne _080C0504\n\ - mov r2, r8\n\ - cmp r2, 0\n\ - bne _080C0504\n\ - adds r1, r6, 0\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - add r1, sp\n\ - movs r0, 0x77\n\ - strb r0, [r1]\n\ - b _080C050E\n\ - .pool\n\ + ldr r1, =0x000186a0\n\ + adds r0, r7, 0\n\ + bl __umodsi3\n\ + adds r7, r0, 0\n\ + mov r4, sp\n\ + adds r4, 0x1\n\ + ldr r1, =0x00002710\n\ + bl __udivsi3\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0xA1\n\ + bne _080C0504\n\ + mov r2, r8\n\ + cmp r2, 0\n\ + bne _080C0504\n\ + adds r1, r6, 0\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + add r1, sp\n\ + movs r0, 0x77\n\ + strb r0, [r1]\n\ + b _080C050E\n\ + .pool\n\ _080C0504:\n\ - movs r3, 0x1\n\ - mov r8, r3\n\ - adds r0, r6, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ + movs r3, 0x1\n\ + mov r8, r3\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ _080C050E:\n\ - ldr r1, =0x00002710\n\ - adds r0, r7, 0\n\ - bl __umodsi3\n\ - adds r7, r0, 0\n\ - mov r0, sp\n\ - adds r4, r0, r6\n\ - movs r1, 0xFA\n\ - lsls r1, 2\n\ - adds r0, r7, 0\n\ - bl __udivsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0xA1\n\ - bne _080C054C\n\ - mov r1, r8\n\ - cmp r1, 0\n\ - bne _080C054C\n\ - adds r1, r6, 0\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - add r1, sp\n\ - movs r0, 0x77\n\ - strb r0, [r1]\n\ - b _080C0552\n\ - .pool\n\ + ldr r1, =0x00002710\n\ + adds r0, r7, 0\n\ + bl __umodsi3\n\ + adds r7, r0, 0\n\ + mov r0, sp\n\ + adds r4, r0, r6\n\ + movs r1, 0xFA\n\ + lsls r1, 2\n\ + adds r0, r7, 0\n\ + bl __udivsi3\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0xA1\n\ + bne _080C054C\n\ + mov r1, r8\n\ + cmp r1, 0\n\ + bne _080C054C\n\ + adds r1, r6, 0\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + add r1, sp\n\ + movs r0, 0x77\n\ + strb r0, [r1]\n\ + b _080C0552\n\ + .pool\n\ _080C054C:\n\ - adds r0, r6, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ + adds r0, r6, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ _080C0552:\n\ - movs r1, 0xFA\n\ - lsls r1, 2\n\ - adds r0, r7, 0\n\ - bl __umodsi3\n\ - adds r7, r0, 0\n\ - adds r1, r6, 0\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r5, r6, 0\n\ - mov r2, sp\n\ - adds r4, r2, r1\n\ - adds r0, r7, 0\n\ - movs r1, 0x64\n\ - bl __udivsi3\n\ - adds r0, 0xA1\n\ - movs r3, 0\n\ - mov r9, r3\n\ - strb r0, [r4]\n\ - adds r0, r7, 0\n\ - movs r1, 0x64\n\ - bl __umodsi3\n\ - adds r7, r0, 0\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r1, r6, 0\n\ - mov r2, sp\n\ - adds r0, r2, r5\n\ - movs r3, 0xAD\n\ - mov r8, r3\n\ - mov r2, r8\n\ - strb r2, [r0]\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r5, r6, 0\n\ - mov r3, sp\n\ - adds r4, r3, r1\n\ - adds r0, r7, 0\n\ - movs r1, 0xA\n\ - bl __udivsi3\n\ - adds r0, 0xA1\n\ - strb r0, [r4]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r1, r6, 0\n\ - mov r2, sp\n\ - adds r0, r2, r5\n\ - mov r3, r9\n\ - strb r3, [r0]\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r2, r6, 0\n\ - add r1, sp\n\ - movs r0, 0xE0\n\ - strb r0, [r1]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r3, r6, 0\n\ - mov r0, sp\n\ - adds r1, r0, r2\n\ - movs r0, 0xD6\n\ - strb r0, [r1]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - adds r2, r6, 0\n\ - mov r0, sp\n\ - adds r1, r0, r3\n\ - movs r0, 0xE7\n\ - strb r0, [r1]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r3, sp\n\ - adds r1, r3, r2\n\ - mov r2, r8\n\ - strb r2, [r1]\n\ - adds r1, r3, r0\n\ - movs r0, 0xFF\n\ - strb r0, [r1]\n\ - mov r0, sp\n\ - mov r1, r10\n\ - ldr r2, [sp, 0x10]\n\ - bl sub_80BE8DC\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ + movs r1, 0xFA\n\ + lsls r1, 2\n\ + adds r0, r7, 0\n\ + bl __umodsi3\n\ + adds r7, r0, 0\n\ + adds r1, r6, 0\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r5, r6, 0\n\ + mov r2, sp\n\ + adds r4, r2, r1\n\ + adds r0, r7, 0\n\ + movs r1, 0x64\n\ + bl __udivsi3\n\ + adds r0, 0xA1\n\ + movs r3, 0\n\ + mov r9, r3\n\ + strb r0, [r4]\n\ + adds r0, r7, 0\n\ + movs r1, 0x64\n\ + bl __umodsi3\n\ + adds r7, r0, 0\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r1, r6, 0\n\ + mov r2, sp\n\ + adds r0, r2, r5\n\ + movs r3, 0xAD\n\ + mov r8, r3\n\ + mov r2, r8\n\ + strb r2, [r0]\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r5, r6, 0\n\ + mov r3, sp\n\ + adds r4, r3, r1\n\ + adds r0, r7, 0\n\ + movs r1, 0xA\n\ + bl __udivsi3\n\ + adds r0, 0xA1\n\ + strb r0, [r4]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r1, r6, 0\n\ + mov r2, sp\n\ + adds r0, r2, r5\n\ + mov r3, r9\n\ + strb r3, [r0]\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r2, r6, 0\n\ + add r1, sp\n\ + movs r0, 0xE0\n\ + strb r0, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r3, r6, 0\n\ + mov r0, sp\n\ + adds r1, r0, r2\n\ + movs r0, 0xD6\n\ + strb r0, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + adds r2, r6, 0\n\ + mov r0, sp\n\ + adds r1, r0, r3\n\ + movs r0, 0xE7\n\ + strb r0, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r3, sp\n\ + adds r1, r3, r2\n\ + mov r2, r8\n\ + strb r2, [r1]\n\ + adds r1, r3, r0\n\ + movs r0, 0xFF\n\ + strb r0, [r1]\n\ + mov r0, sp\n\ + mov r1, r10\n\ + ldr r2, [sp, 0x10]\n\ + bl sub_80BE8DC\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } #endif @@ -4340,7 +4342,7 @@ u16 GetHoennPokedexCount(u8 caseID) u16 count = 0; u16 i; - for (i = 0; i < 202; i++) + for (i = 0; i < HOENN_DEX_COUNT; i++) { switch (caseID) { @@ -4409,17 +4411,17 @@ u16 sub_80C0944(void) for (i = 0; i < 150; i++) { - if (GetSetPokedexFlag(i + 1, 1) == 0) + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) return 0; } for (i = 151; i < 248; i++) { - if (GetSetPokedexFlag(i + 1, 1) == 0) + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) return 0; } for (i = 251; i < 384; i++) { - if (GetSetPokedexFlag(i + 1, 1) == 0) + if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT)) return 0; } return 1; @@ -4635,10 +4637,10 @@ u32 sub_80C0E68(u16 a) } } -u16 sub_80C0E9C(u16 num, s16 x, s16 y, u16 paletteSlot) +u16 CreateMonSpriteFromNationalDexNumber(u16 nationalNum, s16 x, s16 y, u16 paletteSlot) { - num = NationalPokedexNumToSpecies(num); - return CreateMonPicSprite_HandleDeoxys(num, 8, sub_80C0E68(num), TRUE, x, y, paletteSlot, 0xFFFF); + nationalNum = NationalPokedexNumToSpecies(nationalNum); + return CreateMonPicSprite_HandleDeoxys(nationalNum, 8, sub_80C0E68(nationalNum), TRUE, x, y, paletteSlot, 0xFFFF); } u16 sub_80C0EF8(u16 species, s16 x, s16 y, s8 paletteSlot) @@ -4657,71 +4659,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++; } } @@ -4729,33 +4731,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; } } @@ -4792,7 +4793,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); @@ -4814,8 +4815,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; @@ -4970,15 +4971,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; - gSaveBlock2Ptr->pokedex.unknown1 = sub_80C2318(taskId, 5); + sPokedexView->unk610 = 0; + gSaveBlock2Ptr->pokedex.mode = sub_80C2318(taskId, 5); if (!IsNationalPokedexEnabled()) - gSaveBlock2Ptr->pokedex.unknown1 = 0; - gUnknown_02039B4C->unk614 = gSaveBlock2Ptr->pokedex.unknown1; + gSaveBlock2Ptr->pokedex.mode = DEX_MODE_HOENN; + sPokedexView->unk614 = gSaveBlock2Ptr->pokedex.mode; 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; } @@ -5049,7 +5050,7 @@ void sub_80C1A4C(u8 taskId) { if (!IsSEPlaying()) { - if (gUnknown_02039B4C->pokemonListCount != 0) + if (sPokedexView->pokemonListCount != 0) { PlaySE(SE_SEIKAI); sub_80C2618(gText_SearchCompleted); @@ -5068,11 +5069,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); } @@ -5106,14 +5107,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; @@ -5159,7 +5160,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; @@ -5183,7 +5184,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; @@ -5226,54 +5227,54 @@ void sub_80C1D98(u8 a, u8 b, u8 c, u8 d) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - adds r4, r3, 0\n\ - lsls r0, 24\n\ - lsrs r6, r0, 24\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r8, r1\n\ - lsls r2, 24\n\ - lsrs r5, r2, 24\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r0, 0x3\n\ - bl GetBgTilemapBuffer\n\ - adds r2, r0, 0\n\ - movs r3, 0\n\ - cmp r3, r4\n\ - bcs _080C1DEC\n\ - lsls r0, r5, 6\n\ - adds r7, r0, r2\n\ - ldr r5, =0x00000fff\n\ - lsls r2, r6, 12\n\ + mov r7, r8\n\ + push {r7}\n\ + adds r4, r3, 0\n\ + lsls r0, 24\n\ + lsrs r6, r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r8, r1\n\ + lsls r2, 24\n\ + lsrs r5, r2, 24\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + movs r0, 0x3\n\ + bl GetBgTilemapBuffer\n\ + adds r2, r0, 0\n\ + movs r3, 0\n\ + cmp r3, r4\n\ + bcs _080C1DEC\n\ + lsls r0, r5, 6\n\ + adds r7, r0, r2\n\ + ldr r5, =0x00000fff\n\ + lsls r2, r6, 12\n\ _080C1DC8:\n\ - mov r0, r8\n\ - adds r1, r0, r3\n\ - lsls r1, 1\n\ - adds r1, r7\n\ - ldrh r0, [r1]\n\ - ands r0, r5\n\ - orrs r0, r2\n\ - strh r0, [r1]\n\ - adds r1, 0x40\n\ - ldrh r0, [r1]\n\ - ands r0, r5\n\ - orrs r0, r2\n\ - strh r0, [r1]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, r4\n\ - bcc _080C1DC8\n\ + mov r0, r8\n\ + adds r1, r0, r3\n\ + lsls r1, 1\n\ + adds r1, r7\n\ + ldrh r0, [r1]\n\ + ands r0, r5\n\ + orrs r0, r2\n\ + strh r0, [r1]\n\ + adds r1, 0x40\n\ + ldrh r0, [r1]\n\ + ands r0, r5\n\ + orrs r0, r2\n\ + strh r0, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, r4\n\ + bcc _080C1DC8\n\ _080C1DEC:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ .syntax divided\n"); } #endif @@ -5402,24 +5403,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); } } @@ -5458,45 +5459,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]; } } @@ -5504,7 +5505,7 @@ void sub_80C23B8(u8 taskId) { u16 r3; - switch (gUnknown_02039B4C->unk614) + switch (sPokedexView->unk614) { default: case 0: @@ -5516,7 +5517,7 @@ void sub_80C23B8(u8 taskId) } gTasks[taskId].data[2] = r3; - switch (gUnknown_02039B4C->unk618) + switch (sPokedexView->unk618) { default: case 0: @@ -5599,12 +5600,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; |