summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2016-11-02 01:00:18 -0500
committerYamaArashi <YamaArashi@users.noreply.github.com>2016-11-01 23:00:18 -0700
commit05a7039f9ec2c23487ac123fd04f35d72a137db8 (patch)
treeca53f620073370d529b1063e0eb83babeede81ec /src
parent22dbe5c0bfdec51df0f5238562d45d0e0d000393 (diff)
Pokedex (#83)
* decompile more pokedex functions * use spaces instead of tabs * mostly fix up sub_808D690 * fix sub_808DBE8 * decompile sub_808E398 * decompile more pokedex functions * decompile sub_808E978 * decompile more functions * decompile sub_808F2B0 * decompile sub_808F8B8 * decompile more pokedex functions * clean up and fail at getting functions to match
Diffstat (limited to 'src')
-rw-r--r--src/pokedex.c1322
1 files changed, 898 insertions, 424 deletions
diff --git a/src/pokedex.c b/src/pokedex.c
index 51fce03aa..876e1d737 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -9,30 +9,31 @@
#include "task.h"
#include "text.h"
-struct PokedexListItem {
- u16 a;
+struct PokedexListItem
+{
+ u16 dexNum;
u16 seen:1;
u16 owned:1;
- //u8 c;
};
-struct PokedexView {
- struct PokedexListItem unk0[386]; //data on the 386 different Pokemon
+struct PokedexView
+{
+ struct PokedexListItem unk0[386];
u16 unk608;
u8 unk60A_1:1;
u8 unk60A_2:1;
u8 unk60B;
u16 unk60C;
- u16 unk60E; //selected Pokemon (index of unk0)
+ u16 selectedPokemon;
u16 unk610;
- u16 unk612;
+ u16 dexMode; //National or Hoenn
u16 unk614;
- u16 unk616; //order
+ u16 dexOrder;
u16 unk618;
u16 unk61A;
u16 unk61C;
u16 unk61E[4];
- u16 unk626; //some sprite id
+ u16 unk626; //sprite id of selected Pokemon
u16 unk628;
u16 unk62A;
u8 unk62C;
@@ -49,17 +50,40 @@ struct PokedexView {
u8 unk64A;
u8 unk64B;
u8 unk64C_1:1;
- u8 unk64D;
+ u8 selectedScreen;
u8 unk64E;
u8 unk64F;
- u8 unk650; //menuIsOpen
+ u8 menuIsOpen; //menuIsOpen
u8 unk651;
- u16 unk652; //Menu cursor position
- s16 unk654; //Menu Y position (inverted because we use REG_BG0VOFS for this)
+ u16 menuCursorPos; //Menu cursor position
+ s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this)
u8 unk656[8];
u8 unk65E[8];
};
+// I'm #define-ing these just for now so I can keep using the old unkXXX member names
+#define unk60E selectedPokemon
+#define unk612 dexMode
+#define unk616 dexOrder
+#define unk64D selectedScreen
+#define unk650 menuIsOpen
+#define unk652 menuCursorPos
+#define unk654 menuY
+
+enum
+{
+ DEX_MODE_HOENN,
+ DEX_MODE_NATIONAL
+};
+
+enum
+{
+ PAGE_SCREEN,
+ AREA_SCREEN,
+ CRY_SCREEN,
+ SIZE_SCREEN
+};
+
struct PokedexEntry
{
/*0x00*/ u8 categoryName[12];
@@ -85,7 +109,7 @@ struct CryRelatedStruct
extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 gReservedSpritePaletteCount;
-extern struct PokedexView *gUnknown_0202FFB4;
+extern struct PokedexView *gPokedexView;
extern u16 gUnknown_0202FFB8;
extern u8 gUnknown_0202FFBA;
extern u8 gUnknown_03005CE8;
@@ -118,6 +142,8 @@ extern u8 gUnknown_0839F8A0[];
extern u8 gUnknown_0839F988[];
extern u8 gUnknown_03005E98;
extern u8 gUnknown_083B4EC4[];
+extern u8 gUnknown_08E96ACC[];
+extern u8 gUnknown_08E96B58[];
extern struct PokedexEntry gPokedexEntries[];
extern u8 gDexText_UnknownPoke[];
@@ -125,6 +151,7 @@ extern u8 gDexText_UnknownHeight[];
extern u8 gDexText_UnknownWeight[];
extern u8 gDexText_CryOf[];
extern u8 gDexText_SizeComparedTo[];
+extern u8 gDexText_RegisterComplete[];
extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16);
@@ -169,7 +196,7 @@ bool8 sub_808F250(u8);
bool8 sub_808E71C(void);
void sub_808CCC4(u8 taskId);
u16 GetHoennPokedexCount(u8);
-void sub_808D690(u8, u8);
+void SortPokedex(u8, u8);
void Task_PokedexResultsScreen(u8 taskId);
void sub_808D118(u8 taskId);
void Task_PokedexResultsScreenMenu(u8 taskId);
@@ -188,19 +215,25 @@ u32 sub_808E8C8(u16, u16, u16);
void sub_808EE28(struct Sprite *sprite);
u16 sub_8091818(u8, u16, u16, u16);
u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); //Not sure of return type
-void sub_808F2B0(u8 taskId);
-void sub_808F6CC(u8 taskId);
-void sub_808FA64(u8 taskId);
-void sub_808F8D8(u8 taskId);
-void sub_808F8B8(u8 taskId);
+void Task_InitPageScreenMultistep(u8 taskId);
+void Task_PageScreenProcessInput(u8 taskId);
+void Task_InitCryScreenMultistep(u8 taskId);
+void Task_InitAreaScreenMultistep(u8 taskId);
+void Task_ClosePageScreen(u8 taskId);
void sub_808F888(u8 taskId);
-void sub_8090070(u8 taskId);
-void sub_808F9C8(u8 taskId);
+void Task_InitSizeScreenMultistep(u8 taskId);
+void Task_AreaScreenProcessInput(u8 taskId);
void sub_808FA00(u8 taskId);
-void sub_808FDF8(u8 taskId);
+void Task_CryScreenProcessInput(u8 taskId);
void sub_808FFBC(u8 taskId);
-void sub_80903D0(u8 taskId);
+void Task_SizeScreenProcessInput(u8 taskId);
void sub_8090040(u8);
+void sub_8090498(u8 taskId);
+void sub_80904FC(u16);
+void sub_8090540(u16);
+void sub_8090750(u8);
+void sub_8090A3C(u8);
+void sub_8091738(u16, u16, u16);
u16 NationalPokedexNumToSpecies(u16);
u8 sub_8119E3C(struct CryRelatedStruct *, u8);
u8 ShowPokedexCryScreen(struct CryRelatedStruct *, u8);
@@ -249,7 +282,7 @@ void ClearPokedexView(struct PokedexView *pokedexView)
for(i = 0; i <= 385; i++)
{
- pokedexView->unk0[i].a |= 0x0000FFFF;
+ pokedexView->unk0[i].dexNum |= 0xFFFF;
pokedexView->unk0[i].seen = 0;
pokedexView->unk0[i].owned = 0;
}
@@ -257,11 +290,11 @@ void ClearPokedexView(struct PokedexView *pokedexView)
pokedexView->unk60A_1 = 0;
pokedexView->unk60A_2 = 0;
pokedexView->unk60C = 0;
- pokedexView->unk60E = 0;
+ pokedexView->selectedPokemon = 0;
pokedexView->unk610 = 0;
- pokedexView->unk612 = 0;
+ pokedexView->dexMode = 0;
pokedexView->unk614 = 0;
- pokedexView->unk616 = 0;
+ pokedexView->dexOrder = 0;
pokedexView->unk618 = 0;
pokedexView->unk61A = 0;
pokedexView->unk61C = 0;
@@ -283,11 +316,11 @@ void ClearPokedexView(struct PokedexView *pokedexView)
pokedexView->unk64A = 0;
pokedexView->unk64B = 0;
pokedexView->unk64C_1 = 0;
- pokedexView->unk64D = 0;
+ pokedexView->selectedScreen = 0;
pokedexView->unk64F = 0;
- pokedexView->unk650 = 0;
- pokedexView->unk652 = 0;
- pokedexView->unk654 = 0;
+ pokedexView->menuIsOpen = 0;
+ pokedexView->menuCursorPos = 0;
+ pokedexView->menuY = 0;
for(i = 0; i <= 7; i++)
pokedexView->unk656[i] = 0;
for(i = 0; i <= 7; i++)
@@ -340,39 +373,39 @@ void CB2_InitPokedex(void)
{
case 0:
default:
- gUnknown_0202FFB4 = (struct PokedexView *)0x02018000;
+ gPokedexView = (struct PokedexView *)0x02018000;
break;
case 1:
- gUnknown_0202FFB4 = (struct PokedexView *)0x02018800;
+ gPokedexView = (struct PokedexView *)0x02018800;
break;
case 2:
- gUnknown_0202FFB4 = (struct PokedexView *)0x02019000;
+ gPokedexView = (struct PokedexView *)0x02019000;
break;
case 3:
- gUnknown_0202FFB4 = (struct PokedexView *)0x02019800;
+ gPokedexView = (struct PokedexView *)0x02019800;
break;
}
- ClearPokedexView(gUnknown_0202FFB4);
+ ClearPokedexView(gPokedexView);
CreateTask(Task_PokedexShowMainScreen, 0);
- gUnknown_0202FFB4->unk612 = gSaveBlock2.pokedex.unknown1;
+ gPokedexView->dexMode = gSaveBlock2.pokedex.unknown1;
if(!IsNationalPokedex())
- gUnknown_0202FFB4->unk612 = 0;
- gUnknown_0202FFB4->unk616 = gSaveBlock2.pokedex.order;
- gUnknown_0202FFB4->unk60E = gUnknown_0202FFB8;
- gUnknown_0202FFB4->unk62C = gUnknown_0202FFBA;
- gUnknown_0202FFB4->unk64D = 0;
- gUnknown_0202FFB4->unk64E = 0;
+ gPokedexView->dexMode = DEX_MODE_HOENN;
+ gPokedexView->dexOrder = gSaveBlock2.pokedex.order;
+ gPokedexView->selectedPokemon = gUnknown_0202FFB8;
+ gPokedexView->unk62C = gUnknown_0202FFBA;
+ gPokedexView->selectedScreen = PAGE_SCREEN;
+ gPokedexView->unk64E = 0;
if(!IsNationalPokedex())
{
- gUnknown_0202FFB4->unk61A = GetHoennPokedexCount(0);
- gUnknown_0202FFB4->unk61C = GetHoennPokedexCount(1);
+ gPokedexView->unk61A = GetHoennPokedexCount(0);
+ gPokedexView->unk61C = GetHoennPokedexCount(1);
}
else
{
- gUnknown_0202FFB4->unk61A = GetNationalPokedexCount(0);
- gUnknown_0202FFB4->unk61C = GetNationalPokedexCount(1);
+ gPokedexView->unk61A = GetNationalPokedexCount(0);
+ gPokedexView->unk61C = GetNationalPokedexCount(1);
}
- gUnknown_0202FFB4->unk62D = 8;
+ gPokedexView->unk62D = 8;
gMain.state++;
break;
case 3:
@@ -386,7 +419,7 @@ void CB2_InitPokedex(void)
REG_DISPSTAT |= 8;
SetVBlankCallback(sub_808C0B8);
SetMainCallback2(MainCB);
- sub_808D690(gUnknown_0202FFB4->unk612, gUnknown_0202FFB4->unk616);
+ SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder);
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x80);
}
}
@@ -409,7 +442,7 @@ u8 unref_sub_808C540(void (*func)(u8))
REG_DISPSTAT |= 0x8;
SetVBlankCallback(sub_808C0B8);
SetMainCallback2(MainCB);
- if(!gUnknown_0202FFB4->unk64B)
+ if(!gPokedexView->unk64B)
taskId = CreateTask(sub_808CAE4, 0);
else
taskId = CreateTask(sub_808D198, 0);
@@ -427,7 +460,7 @@ void MainCB(void)
void Task_PokedexShowMainScreen(u8 taskId)
{
- gUnknown_0202FFB4->unk64C_1 = 0;
+ gPokedexView->unk64C_1 = 0;
if(sub_808D344(0))
{
gTasks[taskId].func = Task_PokedexMainScreen;
@@ -437,29 +470,29 @@ void Task_PokedexShowMainScreen(u8 taskId)
//Hide menu and process input on main screen
void Task_PokedexMainScreen(u8 taskId)
{
- REG_BG0VOFS = gUnknown_0202FFB4->unk654;
+ REG_BG0VOFS = gPokedexView->menuY;
//If menu is open, slide it down, off screen
- if(gUnknown_0202FFB4->unk654)
- gUnknown_0202FFB4->unk654 -= 8;
+ if(gPokedexView->menuY)
+ gPokedexView->menuY -= 8;
else
{
- if((gMain.newKeys & A_BUTTON) && gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60E].seen)
+ if((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen)
{
sub_808E6BC();
BeginNormalPaletteFade(
- ~(1 << (gSprites[gUnknown_0202FFB4->unk626].oam.paletteNum + 16)),
+ ~(1 << (gSprites[gPokedexView->unk626].oam.paletteNum + 16)),
0, 0, 0x10, 0);
- gSprites[gUnknown_0202FFB4->unk626].callback = sub_808EDB8;
+ gSprites[gPokedexView->unk626].callback = sub_808EDB8;
gTasks[taskId].func = sub_808CA64;
PlaySE(SE_PIN);
}
else if(gMain.newKeys & START_BUTTON)
{
//Open menu
- gUnknown_0202FFB4->unk654 = 0;
- gUnknown_0202FFB4->unk650 = 1;
- gUnknown_0202FFB4->unk652 = 0;
+ gPokedexView->menuY = 0;
+ gPokedexView->menuIsOpen = 1;
+ gPokedexView->menuCursorPos = 0;
gTasks[taskId].func = Task_PokedexMainScreenMenu;
PlaySE(SE_SELECT);
}
@@ -468,11 +501,11 @@ void Task_PokedexMainScreen(u8 taskId)
PlaySE(SE_SELECT);
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gTasks[taskId].data[0] = sub_8091E3C();
- gUnknown_0202FFB4->unk64F = 0;
- gUnknown_0202FFB4->unk62A = gUnknown_0202FFB4->unk62C;
- gUnknown_0202FFB4->unk610 = gUnknown_0202FFB4->unk60E;
- gUnknown_0202FFB4->unk614 = gUnknown_0202FFB4->unk612;
- gUnknown_0202FFB4->unk618 = gUnknown_0202FFB4->unk616;
+ gPokedexView->unk64F = 0;
+ gPokedexView->unk62A = gPokedexView->unk62C;
+ gPokedexView->unk610 = gPokedexView->selectedPokemon;
+ gPokedexView->unk614 = gPokedexView->dexMode;
+ gPokedexView->unk618 = gPokedexView->dexOrder;
gTasks[taskId].func = sub_808CB8C;
PlaySE(SE_PC_LOGON);
}
@@ -485,8 +518,8 @@ void Task_PokedexMainScreen(u8 taskId)
else
{
//Handle D-pad
- gUnknown_0202FFB4->unk60E = sub_808E48C(gUnknown_0202FFB4->unk60E, 0xE);
- if(gUnknown_0202FFB4->unk62E)
+ gPokedexView->selectedPokemon = sub_808E48C(gPokedexView->selectedPokemon, 0xE);
+ if(gPokedexView->unk62E)
gTasks[taskId].func = sub_808C898;
}
}
@@ -494,7 +527,7 @@ void Task_PokedexMainScreen(u8 taskId)
void sub_808C898(u8 taskId)
{
- if(sub_808E208(gUnknown_0202FFB4->unk62F, gUnknown_0202FFB4->unk634, gUnknown_0202FFB4->unk636))
+ if(sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636))
{
gTasks[taskId].func = Task_PokedexMainScreen;
}
@@ -503,33 +536,33 @@ void sub_808C898(u8 taskId)
//Bring up menu and process menu input
void Task_PokedexMainScreenMenu(u8 taskId)
{
- REG_BG0VOFS = gUnknown_0202FFB4->unk654;
+ REG_BG0VOFS = gPokedexView->menuY;
//If menu is not open, slide it up, on screen
- if(gUnknown_0202FFB4->unk654 != 80)
- gUnknown_0202FFB4->unk654 += 8;
+ if(gPokedexView->menuY != 80)
+ gPokedexView->menuY += 8;
else
{
if(gMain.newKeys & A_BUTTON)
{
- switch(gUnknown_0202FFB4->unk652)
+ switch(gPokedexView->menuCursorPos)
{
case 0: //BACK TO LIST
default:
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 1: //LIST TOP
- gUnknown_0202FFB4->unk60E = 0;
- gUnknown_0202FFB4->unk62C = 0x40;
+ gPokedexView->selectedPokemon = 0;
+ gPokedexView->unk62C = 0x40;
sub_808E82C();
- sub_808E0CC(gUnknown_0202FFB4->unk60E, 0xE);
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 2: //LIST BOTTOM
- gUnknown_0202FFB4->unk60E = gUnknown_0202FFB4->unk60C - 1;
- gUnknown_0202FFB4->unk62C = gUnknown_0202FFB4->unk60C * 16 + 0x30;
+ gPokedexView->selectedPokemon = gPokedexView->unk60C - 1;
+ gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30;
sub_808E82C();
- sub_808E0CC(gUnknown_0202FFB4->unk60E, 0xE);
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON; //Exit menu
break;
case 3: //CLOSE POKEDEX
@@ -543,18 +576,18 @@ void Task_PokedexMainScreenMenu(u8 taskId)
//Exit menu when Start or B is pressed
if(gMain.newKeys & (START_BUTTON | B_BUTTON))
{
- gUnknown_0202FFB4->unk650 = 0;
+ gPokedexView->menuIsOpen = 0;
gTasks[taskId].func = Task_PokedexMainScreen;
PlaySE(SE_SELECT);
}
- else if((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_0202FFB4->unk652 != 0)
+ else if((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos != 0)
{
- gUnknown_0202FFB4->unk652--;
+ gPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_0202FFB4->unk652 <= 2)
+ else if((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 2)
{
- gUnknown_0202FFB4->unk652++;
+ gPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
}
}
@@ -562,11 +595,11 @@ void Task_PokedexMainScreenMenu(u8 taskId)
void sub_808CA64(u8 taskId)
{
- if(gSprites[gUnknown_0202FFB4->unk626].pos1.x == 0x30 &&
- gSprites[gUnknown_0202FFB4->unk626].pos1.y == 0x38)
+ if(gSprites[gPokedexView->unk626].pos1.x == 0x30 &&
+ gSprites[gPokedexView->unk626].pos1.y == 0x38)
{
- gUnknown_0202FFB4->unk64B = gUnknown_0202FFB4->unk64A;
- gTasks[taskId].data[0] = sub_808F210(&gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60E], gUnknown_0202FFB4->unk626);
+ gPokedexView->unk64B = gPokedexView->unk64A;
+ gTasks[taskId].data[0] = sub_808F210(&gPokedexView->unk0[gPokedexView->selectedPokemon], gPokedexView->unk626);
gTasks[taskId].func = sub_808CAE4;
}
}
@@ -575,17 +608,17 @@ void sub_808CAE4(u8 taskId)
{
if(gTasks[gTasks[taskId].data[0]].isActive)
{
- if(gUnknown_0202FFB4->unk64A == 1 &&
+ if(gPokedexView->unk64A == 1 &&
!sub_808F250(gTasks[taskId].data[0]) &&
sub_808E71C())
{
- sub_808F284(&gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60E], gTasks[taskId].data[0]);
+ sub_808F284(&gPokedexView->unk0[gPokedexView->selectedPokemon], gTasks[taskId].data[0]);
}
}
else
{
- gUnknown_0202FFB8 = gUnknown_0202FFB4->unk60E;
- gUnknown_0202FFBA = gUnknown_0202FFB4->unk62C;
+ gUnknown_0202FFB8 = gPokedexView->selectedPokemon;
+ gUnknown_0202FFBA = gPokedexView->unk62C;
gTasks[taskId].func = Task_PokedexShowMainScreen;
}
}
@@ -596,20 +629,20 @@ void sub_808CB8C(u8 taskId)
if(!isActive)
{
- if(gUnknown_0202FFB4->unk64F)
+ if(gPokedexView->unk64F)
{
- gUnknown_0202FFB4->unk60E = isActive;
- gUnknown_0202FFB4->unk62C = 0x40;
+ gPokedexView->selectedPokemon = isActive;
+ gPokedexView->unk62C = 0x40;
gTasks[taskId].func = sub_808CCC4;
}
else
{
- gUnknown_0202FFB4->unk62C = gUnknown_0202FFB4->unk62A;
- gUnknown_0202FFB4->unk60E = gUnknown_0202FFB4->unk610;
- gUnknown_0202FFB4->unk612 = gUnknown_0202FFB4->unk614;
+ gPokedexView->unk62C = gPokedexView->unk62A;
+ gPokedexView->selectedPokemon = gPokedexView->unk610;
+ gPokedexView->dexMode = gPokedexView->unk614;
if(!IsNationalPokedex())
- gUnknown_0202FFB4->unk612 = 0;
- gUnknown_0202FFB4->unk616 = gUnknown_0202FFB4->unk618;
+ gPokedexView->dexMode = DEX_MODE_HOENN;
+ gPokedexView->dexOrder = gPokedexView->unk618;
gTasks[taskId].func = Task_PokedexShowMainScreen;
}
}
@@ -619,10 +652,10 @@ void Task_ClosePokedex(u8 taskId)
{
if(!gPaletteFade.active)
{
- gSaveBlock2.pokedex.unknown1 = gUnknown_0202FFB4->unk612;
+ gSaveBlock2.pokedex.unknown1 = gPokedexView->dexMode;
if(!IsNationalPokedex())
gSaveBlock2.pokedex.unknown1 = 0;
- gSaveBlock2.pokedex.order = gUnknown_0202FFB4->unk616;
+ gSaveBlock2.pokedex.order = gPokedexView->dexOrder;
DestroyTask(taskId);
SetMainCallback2(sub_805469C);
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
@@ -631,35 +664,35 @@ void Task_ClosePokedex(u8 taskId)
void sub_808CCC4(u8 taskId)
{
- gUnknown_0202FFB4->unk64C_1 = 1;
+ gPokedexView->unk64C_1 = 1;
if(sub_808D344(3))
gTasks[taskId].func = Task_PokedexResultsScreen;
}
void Task_PokedexResultsScreen(u8 taskId)
{
- REG_BG0VOFS = gUnknown_0202FFB4->unk654;
+ REG_BG0VOFS = gPokedexView->menuY;
- if(gUnknown_0202FFB4->unk654)
- gUnknown_0202FFB4->unk654 -= 8;
+ if(gPokedexView->menuY)
+ gPokedexView->menuY -= 8;
else
{
- if((gMain.newKeys & A_BUTTON) && gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60E].seen)
+ if((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen)
{
u32 a;
sub_808E6BC();
- a = (1 << (gSprites[gUnknown_0202FFB4->unk626].oam.paletteNum + 16));
- gSprites[gUnknown_0202FFB4->unk626].callback = sub_808EDB8;
+ a = (1 << (gSprites[gPokedexView->unk626].oam.paletteNum + 16));
+ gSprites[gPokedexView->unk626].callback = sub_808EDB8;
BeginNormalPaletteFade(~a, 0, 0, 0x10, 0);
gTasks[taskId].func = sub_808D118;
PlaySE(SE_PIN);
}
else if(gMain.newKeys & START_BUTTON)
{
- gUnknown_0202FFB4->unk654 = 0;
- gUnknown_0202FFB4->unk650 = 1;
- gUnknown_0202FFB4->unk652 = 0;
+ gPokedexView->menuY = 0;
+ gPokedexView->menuIsOpen = 1;
+ gPokedexView->menuCursorPos = 0;
gTasks[taskId].func = Task_PokedexResultsScreenMenu;
PlaySE(SE_SELECT);
}
@@ -667,7 +700,7 @@ void Task_PokedexResultsScreen(u8 taskId)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gTasks[taskId].data[0] = sub_8091E3C();
- gUnknown_0202FFB4->unk64F = 0;
+ gPokedexView->unk64F = 0;
gTasks[taskId].func = sub_808CB8C;
PlaySE(SE_PC_LOGON);
}
@@ -680,8 +713,8 @@ void Task_PokedexResultsScreen(u8 taskId)
else
{
//Handle D-pad
- gUnknown_0202FFB4->unk60E = sub_808E48C(gUnknown_0202FFB4->unk60E, 0xE);
- if(gUnknown_0202FFB4->unk62E)
+ gPokedexView->selectedPokemon = sub_808E48C(gPokedexView->selectedPokemon, 0xE);
+ if(gPokedexView->unk62E)
gTasks[taskId].func = sub_808CEF8;
}
}
@@ -689,38 +722,38 @@ void Task_PokedexResultsScreen(u8 taskId)
void sub_808CEF8(u8 taskId)
{
- if(sub_808E208(gUnknown_0202FFB4->unk62F, gUnknown_0202FFB4->unk634, gUnknown_0202FFB4->unk636))
+ if(sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636))
gTasks[taskId].func = Task_PokedexResultsScreen;
}
void Task_PokedexResultsScreenMenu(u8 taskId)
{
- REG_BG0VOFS = gUnknown_0202FFB4->unk654;
+ REG_BG0VOFS = gPokedexView->menuY;
- if(gUnknown_0202FFB4->unk654 != 0x60)
- gUnknown_0202FFB4->unk654 += 8;
+ if(gPokedexView->menuY != 0x60)
+ gPokedexView->menuY += 8;
else
{
if(gMain.newKeys & A_BUTTON)
{
- switch(gUnknown_0202FFB4->unk652)
+ switch(gPokedexView->menuCursorPos)
{
case 0: //BACK TO LIST
default:
gMain.newKeys |= START_BUTTON;
break;
case 1: //LIST TOP
- gUnknown_0202FFB4->unk60E = 0;
- gUnknown_0202FFB4->unk62C = 0x40;
+ gPokedexView->selectedPokemon = 0;
+ gPokedexView->unk62C = 0x40;
sub_808E82C();
- sub_808E0CC(gUnknown_0202FFB4->unk60E, 0xE);
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON;
break;
case 2: //LIST BOTTOM
- gUnknown_0202FFB4->unk60E = gUnknown_0202FFB4->unk60C - 1;
- gUnknown_0202FFB4->unk62C = gUnknown_0202FFB4->unk60C * 16 + 0x30;
+ gPokedexView->selectedPokemon = gPokedexView->unk60C - 1;
+ gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30;
sub_808E82C();
- sub_808E0CC(gUnknown_0202FFB4->unk60E, 0xE);
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
gMain.newKeys |= START_BUTTON;
break;
case 3: //BACK TO POKEDEX
@@ -739,18 +772,18 @@ void Task_PokedexResultsScreenMenu(u8 taskId)
//Exit menu when Start or B is pressed
if(gMain.newKeys & (START_BUTTON | B_BUTTON))
{
- gUnknown_0202FFB4->unk650 = 0;
+ gPokedexView->menuIsOpen = 0;
gTasks[taskId].func = Task_PokedexResultsScreen;
PlaySE(SE_SELECT);
}
- else if((gMain.newAndRepeatedKeys & DPAD_UP) && gUnknown_0202FFB4->unk652)
+ else if((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos)
{
- gUnknown_0202FFB4->unk652--;
+ gPokedexView->menuCursorPos--;
PlaySE(SE_SELECT);
}
- else if((gMain.newAndRepeatedKeys & DPAD_DOWN) && gUnknown_0202FFB4->unk652 <= 3)
+ else if((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 3)
{
- gUnknown_0202FFB4->unk652++;
+ gPokedexView->menuCursorPos++;
PlaySE(SE_SELECT);
}
}
@@ -758,11 +791,11 @@ void Task_PokedexResultsScreenMenu(u8 taskId)
void sub_808D118(u8 taskId)
{
- if(gSprites[gUnknown_0202FFB4->unk626].pos1.x == 0x30 &&
- gSprites[gUnknown_0202FFB4->unk626].pos1.y == 0x38)
+ if(gSprites[gPokedexView->unk626].pos1.x == 0x30 &&
+ gSprites[gPokedexView->unk626].pos1.y == 0x38)
{
- gUnknown_0202FFB4->unk64B = gUnknown_0202FFB4->unk64A;
- gTasks[taskId].data[0] = sub_808F210(&gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60E], gUnknown_0202FFB4->unk626);
+ gPokedexView->unk64B = gPokedexView->unk64A;
+ gTasks[taskId].data[0] = sub_808F210(&gPokedexView->unk0[gPokedexView->selectedPokemon], gPokedexView->unk626);
gTasks[taskId].func = sub_808D198;
}
}
@@ -771,11 +804,11 @@ void sub_808D198(u8 taskId)
{
if(gTasks[gTasks[taskId].data[0]].isActive)
{
- if(gUnknown_0202FFB4->unk64A == 1 &&
+ if(gPokedexView->unk64A == 1 &&
!sub_808F250(gTasks[taskId].data[0]) &&
sub_808E71C())
{
- sub_808F284(&gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60E], gTasks[taskId].data[0]);
+ sub_808F284(&gPokedexView->unk0[gPokedexView->selectedPokemon], gTasks[taskId].data[0]);
}
}
else
@@ -788,12 +821,12 @@ void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId)
{
if(!gPaletteFade.active)
{
- gUnknown_0202FFB4->unk62C = gUnknown_0202FFB4->unk62A;
- gUnknown_0202FFB4->unk60E = gUnknown_0202FFB4->unk610;
- gUnknown_0202FFB4->unk612 = gUnknown_0202FFB4->unk614;
+ gPokedexView->unk62C = gPokedexView->unk62A;
+ gPokedexView->selectedPokemon = gPokedexView->unk610;
+ gPokedexView->dexMode = gPokedexView->unk614;
if(!IsNationalPokedex())
- gUnknown_0202FFB4->unk612 = 0;
- gUnknown_0202FFB4->unk616 = gUnknown_0202FFB4->unk618;
+ gPokedexView->dexMode = DEX_MODE_HOENN;
+ gPokedexView->dexOrder = gPokedexView->unk618;
gTasks[taskId].func = Task_PokedexShowMainScreen;
}
}
@@ -802,12 +835,12 @@ void Task_PokedexResultsScreenExitPokedex(u8 taskId)
{
if(!gPaletteFade.active)
{
- gUnknown_0202FFB4->unk62C = gUnknown_0202FFB4->unk62A;
- gUnknown_0202FFB4->unk60E = gUnknown_0202FFB4->unk610;
- gUnknown_0202FFB4->unk612 = gUnknown_0202FFB4->unk614;
+ gPokedexView->unk62C = gPokedexView->unk62A;
+ gPokedexView->selectedPokemon = gPokedexView->unk610;
+ gPokedexView->dexMode = gPokedexView->unk614;
if(!IsNationalPokedex())
- gUnknown_0202FFB4->unk612 = 0;
- gUnknown_0202FFB4->unk616 = gUnknown_0202FFB4->unk618;
+ gPokedexView->dexMode = DEX_MODE_HOENN;
+ gPokedexView->dexOrder = gPokedexView->unk618;
gTasks[taskId].func = Task_ClosePokedex;
}
}
@@ -823,9 +856,9 @@ bool8 sub_808D344(u8 a)
return 0;
//_0808D39E
SetVBlankCallback(NULL);
- gUnknown_0202FFB4->unk64A = a;
+ gPokedexView->unk64A = a;
sub_8091060(0);
- REG_BG2VOFS = gUnknown_0202FFB4->unk62D;
+ REG_BG2VOFS = gPokedexView->unk62D;
LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM));
LZ77UnCompVram(gUnknown_08E96738, (void *)(VRAM + 0x6800));
LZ77UnCompVram(gUnknown_08E9C6DC, (void *)(VRAM + 0x7800));
@@ -836,9 +869,9 @@ bool8 sub_808D344(u8 a)
LZ77UnCompVram(gUnknown_08E96994, (void *)(VRAM + 0x6500));
ResetPaletteFade();
if(a == 0)
- gUnknown_0202FFB4->unk64C_1 = 0;
+ gPokedexView->unk64C_1 = 0;
else
- gUnknown_0202FFB4->unk64C_1 = 1;
+ gPokedexView->unk64C_1 = 1;
sub_808D640();
gMain.state = 1;
break;
@@ -859,10 +892,10 @@ bool8 sub_808D344(u8 a)
break;
case 3:
if(a == 0)
- sub_808D690(gUnknown_0202FFB4->unk612, gUnknown_0202FFB4->unk616);
- sub_808E0CC(gUnknown_0202FFB4->unk60E, 0xE);
- gUnknown_0202FFB4->unk650 = 0;
- gUnknown_0202FFB4->unk654 = 0;
+ SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder);
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gPokedexView->menuIsOpen = 0;
+ gPokedexView->menuY = 0;
gMain.state++;
break;
case 4:
@@ -900,7 +933,7 @@ bool8 sub_808D344(u8 a)
void sub_808D640(void)
{
- if(gUnknown_0202FFB4->unk64C_1)
+ if(gPokedexView->unk64C_1)
LoadPalette(gUnknown_0839F67C + 0x2, 1, 0xBE);
else if(!IsNationalPokedex())
LoadPalette(gPokedexMenu_Pal + 0x2, 1, 0xBE);
@@ -908,22 +941,21 @@ void sub_808D640(void)
LoadPalette(gUnknown_0839F73C + 0x2, 1, 0xBE);
}
-//Pokedex sorting function
-void sub_808D690(u8 a, u8 mode)
+void SortPokedex(u8 dexMode, u8 sortMode)
{
u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever.
s16 i;
- gUnknown_0202FFB4->unk60C = 0;
+ gPokedexView->unk60C = 0;
- switch(a)
+ switch(dexMode)
{
default:
- case 0:
+ case DEX_MODE_HOENN:
vars[0] = 202;
vars[1] = 1;
break;
- case 1:
+ case DEX_MODE_NATIONAL:
if(IsNationalPokedex())
{
vars[0] = 386;
@@ -932,12 +964,12 @@ void sub_808D690(u8 a, u8 mode)
else
{
vars[0] = 202;
- vars[1] = a;
+ vars[1] = 1;
}
break;
}
- switch(mode)
+ switch(sortMode)
{
case 0:
{
@@ -946,11 +978,11 @@ void sub_808D690(u8 a, u8 mode)
for(i = 0; i < vars[0]; i++)
{
vars[2] = HoennToNationalOrder(i + 1);
- gUnknown_0202FFB4->unk0[i].a = vars[2];
- gUnknown_0202FFB4->unk0[i].seen = sub_8090D90(vars[2], 0);
- gUnknown_0202FFB4->unk0[i].owned = sub_8090D90(vars[2], 1);
- if(gUnknown_0202FFB4->unk0[i].seen)
- gUnknown_0202FFB4->unk60C = i + 1;
+ gPokedexView->unk0[i].dexNum = vars[2];
+ gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0);
+ gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1);
+ if(gPokedexView->unk0[i].seen)
+ gPokedexView->unk60C = i + 1;
}
}
else
@@ -967,11 +999,11 @@ void sub_808D690(u8 a, u8 mode)
if(r10)
{
asm(""); //Needed to match for some reason
- gUnknown_0202FFB4->unk0[r5].a = vars[2];
- gUnknown_0202FFB4->unk0[r5].seen = sub_8090D90(vars[2], 0);
- gUnknown_0202FFB4->unk0[r5].owned = sub_8090D90(vars[2], 1);
- if(gUnknown_0202FFB4->unk0[r5].seen)
- gUnknown_0202FFB4->unk60C = r5 + 1;
+ gPokedexView->unk0[r5].dexNum = vars[2];
+ gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0);
+ gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1);
+ if(gPokedexView->unk0[r5].seen)
+ gPokedexView->unk60C = r5 + 1;
r5++;
}
}
@@ -985,10 +1017,10 @@ void sub_808D690(u8 a, u8 mode)
if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0))
{
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].a = vars[2];
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].seen = 1;
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].owned = sub_8090D90(vars[2], 1);
- gUnknown_0202FFB4->unk60C++;
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1);
+ gPokedexView->unk60C++;
}
}
break;
@@ -999,10 +1031,10 @@ void sub_808D690(u8 a, u8 mode)
if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].a = vars[2];
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].seen = 1;
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].owned = 1;
- gUnknown_0202FFB4->unk60C++;
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
+ gPokedexView->unk60C++;
}
}
break;
@@ -1013,10 +1045,10 @@ void sub_808D690(u8 a, u8 mode)
if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].a = vars[2];
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].seen = 1;
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].owned = 1;
- gUnknown_0202FFB4->unk60C++;
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
+ gPokedexView->unk60C++;
}
}
break;
@@ -1027,10 +1059,10 @@ void sub_808D690(u8 a, u8 mode)
if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].a = vars[2];
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].seen = 1;
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].owned = 1;
- gUnknown_0202FFB4->unk60C++;
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
+ gPokedexView->unk60C++;
}
}
break;
@@ -1041,19 +1073,19 @@ void sub_808D690(u8 a, u8 mode)
if(NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].a = vars[2];
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].seen = 1;
- gUnknown_0202FFB4->unk0[gUnknown_0202FFB4->unk60C].owned = 1;
- gUnknown_0202FFB4->unk60C++;
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
+ gPokedexView->unk60C++;
}
}
break;
}
- for(i = gUnknown_0202FFB4->unk60C; i < 386; i++)
+ for(i = gPokedexView->unk60C; i < 386; i++)
{
- gUnknown_0202FFB4->unk0[i].a |= 0xFFFF;
- gUnknown_0202FFB4->unk0[i].seen = 0;
- gUnknown_0202FFB4->unk0[i].owned = 0;
+ gPokedexView->unk0[i].dexNum |= 0xFFFF;
+ gPokedexView->unk0[i].seen = 0;
+ gPokedexView->unk0[i].owned = 0;
}
}
@@ -1069,16 +1101,16 @@ void sub_808DBE8(u8 a, u16 b, u16 c)
for(i = 0; i <= 10; i++)
{
- if((u16)_b > 385 || gUnknown_0202FFB4->unk0[_b].a == 0xFFFF)
+ if((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
sub_808E090(0x11, i * 2, c);
else
{
sub_808E090(0x11, i * 2, c);
- if(gUnknown_0202FFB4->unk0[_b].seen)
+ if(gPokedexView->unk0[_b].seen)
{
sub_808DEB0(_b, 0x12, i * 2, c);
- sub_808DF88(gUnknown_0202FFB4->unk0[_b].owned, 0x11, i * 2, c);
- sub_808DFE4(gUnknown_0202FFB4->unk0[_b].a, 0x17, i * 2);
+ sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, i * 2, c);
+ sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, i * 2);
}
else
{
@@ -1095,22 +1127,22 @@ void sub_808DBE8(u8 a, u16 b, u16 c)
{
s16 _b = b - 5;
- if((u16)_b > 385 || gUnknown_0202FFB4->unk0[_b].a == 0xFFFF)
- sub_808E090(0x11, gUnknown_0202FFB4->unk630 * 2, c);
+ if((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
+ sub_808E090(0x11, gPokedexView->unk630 * 2, c);
else
{
- sub_808E090(0x11, gUnknown_0202FFB4->unk630 * 2, c);
- if(gUnknown_0202FFB4->unk0[_b].seen)
+ sub_808E090(0x11, gPokedexView->unk630 * 2, c);
+ if(gPokedexView->unk0[_b].seen)
{
- sub_808DEB0(_b, 0x12, gUnknown_0202FFB4->unk630 * 2, c);
- sub_808DF88(gUnknown_0202FFB4->unk0[_b].owned, 0x11, gUnknown_0202FFB4->unk630 * 2, c);
- sub_808DFE4(gUnknown_0202FFB4->unk0[_b].a, 0x17, gUnknown_0202FFB4->unk630 * 2);
+ sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c);
+ sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, gPokedexView->unk630 * 2, c);
+ sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, gPokedexView->unk630 * 2);
}
else
{
- sub_808DEB0(_b, 0x12, gUnknown_0202FFB4->unk630 * 2, c);
- sub_808DF88(0, 0x11, gUnknown_0202FFB4->unk630 * 2, c);
- sub_808DFE4(0, 0x17, gUnknown_0202FFB4->unk630 * 2);
+ sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c);
+ sub_808DF88(0, 0x11, gPokedexView->unk630 * 2, c);
+ sub_808DFE4(0, 0x17, gPokedexView->unk630 * 2);
}
}
break;
@@ -1118,20 +1150,20 @@ void sub_808DBE8(u8 a, u16 b, u16 c)
case 2:
{
s16 _b = b + 5;
- u16 r2 = gUnknown_0202FFB4->unk630 + 10;
+ u16 r2 = gPokedexView->unk630 + 10;
if(r2 > 15)
r2 -= 16;
- if((u16)_b > 385 || gUnknown_0202FFB4->unk0[_b].a == 0xFFFF)
+ if((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
sub_808E090(0x11, r2 * 2, c);
else
{
sub_808E090(0x11, r2 * 2, c);
- if(gUnknown_0202FFB4->unk0[_b].seen)
+ if(gPokedexView->unk0[_b].seen)
{
sub_808DEB0(_b, 0x12, r2 * 2, c);
- sub_808DF88(gUnknown_0202FFB4->unk0[_b].owned, 0x11, r2 * 2, c);
- sub_808DFE4(gUnknown_0202FFB4->unk0[_b].a, 0x17, r2 * 2);
+ sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, r2 * 2, c);
+ sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, r2 * 2);
}
else
{
@@ -1149,9 +1181,9 @@ void sub_808DEB0(u16 a, u8 b, u8 c, u16 d)
{
u8 text[4];
u16 unk[2];
- u16 r7 = gUnknown_0202FFB4->unk0[a].a;
+ u16 r7 = gPokedexView->unk0[a].dexNum;
- if(gUnknown_0202FFB4->unk612 == 0)
+ if(gPokedexView->dexMode == DEX_MODE_HOENN)
r7 = NationalToHoennOrder(r7);
unk[0] = 0x3FC;
unk[1] = 0x3FD;
@@ -1321,10 +1353,10 @@ void sub_808E0CC(u16 a, u16 b)
u8 spriteId;
for(i = 0; i < 4; i++)
- gUnknown_0202FFB4->unk61E[i] |= 0xFFFF;
- gUnknown_0202FFB4->unk626 = 0xFFFF;
+ gPokedexView->unk61E[i] |= 0xFFFF;
+ gPokedexView->unk626 = 0xFFFF;
sub_808DBE8(0, a, b);
- REG_BG2VOFS = gUnknown_0202FFB4->unk62D;
+ REG_BG2VOFS = gPokedexView->unk62D;
unk = sub_808E888(a - 1);
if(unk != 0xFFFF)
{
@@ -1346,8 +1378,8 @@ void sub_808E0CC(u16 a, u16 b)
gSprites[spriteId].callback = sub_808EE28;
gSprites[spriteId].data5 = 32;
}
- gUnknown_0202FFB4->unk630 = 0;
- gUnknown_0202FFB4->unk632 = 0;
+ gPokedexView->unk630 = 0;
+ gPokedexView->unk632 = 0;
}
bool8 sub_808E208(u8 a, u8 b, u8 c)
@@ -1355,30 +1387,30 @@ bool8 sub_808E208(u8 a, u8 b, u8 c)
u16 i;
u8 foo;
- if(gUnknown_0202FFB4->unk62E)
+ if(gPokedexView->unk62E)
{
- gUnknown_0202FFB4->unk62E--;
+ gPokedexView->unk62E--;
switch(a)
{
case 1:
for(i = 0; i < 4; i++)
{
- if(gUnknown_0202FFB4->unk61E[i] != 0xFFFF)
- gSprites[gUnknown_0202FFB4->unk61E[i]].data5 += b;
+ if(gPokedexView->unk61E[i] != 0xFFFF)
+ gSprites[gPokedexView->unk61E[i]].data5 += b;
}
- foo = 16 * (c - gUnknown_0202FFB4->unk62E) / c;
- REG_BG2VOFS = gUnknown_0202FFB4->unk62D + gUnknown_0202FFB4->unk632 * 16 - foo;
- gUnknown_0202FFB4->unk62C -= gUnknown_0202FFB4->unk628;
+ foo = 16 * (c - gPokedexView->unk62E) / c;
+ REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 - foo;
+ gPokedexView->unk62C -= gPokedexView->unk628;
break;
case 2:
for(i = 0; i < 4; i++)
{
- if(gUnknown_0202FFB4->unk61E[i] != 0xFFFF)
- gSprites[gUnknown_0202FFB4->unk61E[i]].data5 -= b;
+ if(gPokedexView->unk61E[i] != 0xFFFF)
+ gSprites[gPokedexView->unk61E[i]].data5 -= b;
}
- foo = 16 * (c - gUnknown_0202FFB4->unk62E) / c;
- REG_BG2VOFS = gUnknown_0202FFB4->unk62D + gUnknown_0202FFB4->unk632 * 16 + foo;
- gUnknown_0202FFB4->unk62C += gUnknown_0202FFB4->unk628;
+ foo = 16 * (c - gPokedexView->unk62E) / c;
+ REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 + foo;
+ gPokedexView->unk62C += gPokedexView->unk628;
break;
}
return 0;
@@ -1386,7 +1418,7 @@ bool8 sub_808E208(u8 a, u8 b, u8 c)
//_0808E36C
else
{
- REG_BG2VOFS = gUnknown_0202FFB4->unk62D + gUnknown_0202FFB4->unk630 * 16;
+ REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk630 * 16;
return 1;
}
}
@@ -1396,7 +1428,7 @@ void sub_808E398(u8 a, u16 b)
u16 unk;
u8 spriteId;
- gUnknown_0202FFB4->unk632 = gUnknown_0202FFB4->unk630;
+ gPokedexView->unk632 = gPokedexView->unk630;
switch(a)
{
case 1:
@@ -1408,10 +1440,10 @@ void sub_808E398(u8 a, u16 b)
gSprites[spriteId].callback = sub_808EE28;
gSprites[spriteId].data5 = 0xFFC0;
}
- if(gUnknown_0202FFB4->unk630 > 0)
- gUnknown_0202FFB4->unk630--;
+ if(gPokedexView->unk630 > 0)
+ gPokedexView->unk630--;
else
- gUnknown_0202FFB4->unk630 = 0xF;
+ gPokedexView->unk630 = 0xF;
break;
}
case 2:
@@ -1423,10 +1455,10 @@ void sub_808E398(u8 a, u16 b)
gSprites[spriteId].callback = sub_808EE28;
gSprites[spriteId].data5 = 0x40;
}
- if(gUnknown_0202FFB4->unk630 <= 0xE)
- gUnknown_0202FFB4->unk630++;
+ if(gPokedexView->unk630 <= 0xE)
+ gPokedexView->unk630++;
else
- gUnknown_0202FFB4->unk630 = 0;
+ gPokedexView->unk630 = 0;
break;
}
}
@@ -1446,7 +1478,7 @@ u16 sub_808E48C(u16 a, u16 b)
//_0808E4B6
if(gMain.heldKeys & 0x80)
{
- if(a < gUnknown_0202FFB4->unk60C - 1)
+ if(a < gPokedexView->unk60C - 1)
goto _0808E5C4;
}
//_0808E4CE
@@ -1457,69 +1489,69 @@ u16 sub_808E48C(u16 a, u16 b)
//_0808E4E0
for(i = 0; i < 7; i++)
{
- a = sub_8091818(1, a, 0, gUnknown_0202FFB4->unk60C - 1);
+ a = sub_8091818(1, a, 0, gPokedexView->unk60C - 1);
}
- gUnknown_0202FFB4->unk62C += (a - r6) * 16;
+ gPokedexView->unk62C += (a - r6) * 16;
sub_808E82C();
sub_808E0CC(a, 0xE);
- PlaySE(0x6D);
+ PlaySE(SE_Z_PAGE);
goto _0808E5A2;
}
//_0808E53C
- if(!(gMain.newKeys & 0x10) || a >= gUnknown_0202FFB4->unk60C - 1)
+ if(!(gMain.newKeys & 0x10) || a >= gPokedexView->unk60C - 1)
goto _0808E5A2;
r6 = a;
for(i = 0; i < 7; i++)
{
- a = sub_8091818(0, a, 0, gUnknown_0202FFB4->unk60C - 1);
+ a = sub_8091818(0, a, 0, gPokedexView->unk60C - 1);
}
- gUnknown_0202FFB4->unk62C += (a - r6) * 16;
+ gPokedexView->unk62C += (a - r6) * 16;
sub_808E82C();
sub_808E0CC(a, 0xE);
- PlaySE(0x6D);
+ PlaySE(SE_Z_PAGE);
goto _0808E5A2;
_0808E5A2:
if(r10 != 0)
goto _0808E628;
- gUnknown_0202FFB4->unk638 = r10;
+ gPokedexView->unk638 = r10;
return a;
_0808E5C4:
r10 = 2;
- a = sub_8091818(0, a, 0, gUnknown_0202FFB4->unk60C - 1);
+ a = sub_8091818(0, a, 0, gPokedexView->unk60C - 1);
sub_808E398(2, a);
//goto _0808E60E
sub_808DBE8(2, a, b);
- PlaySE(0x6C);
+ PlaySE(SE_Z_SCROLL);
}
//_0808E5E4
else
{
r10 = 1;
- a = sub_8091818(1, a, 0, gUnknown_0202FFB4->unk60C - 1);
+ a = sub_8091818(1, a, 0, gPokedexView->unk60C - 1);
sub_808E398(1, a);
//_0808E60E
sub_808DBE8(1, a, b);
- PlaySE(0x6C);
+ PlaySE(SE_Z_SCROLL);
}
//_0808E60E
goto _0808E5A2;
_0808E628:
- r5 = gUnknown_083A05EC[gUnknown_0202FFB4->unk638 / 4];
- r3 = gUnknown_083A05F1[gUnknown_0202FFB4->unk638 / 4];
- gUnknown_0202FFB4->unk62E = r3;
- gUnknown_0202FFB4->unk636 = r3;
- gUnknown_0202FFB4->unk634 = r5;
- gUnknown_0202FFB4->unk62F = r10;
- gUnknown_0202FFB4->unk628 = r5;
- sub_808E208(gUnknown_0202FFB4->unk62F, gUnknown_0202FFB4->unk634, gUnknown_0202FFB4->unk636);
- if(gUnknown_0202FFB4->unk638 <= 0xB)
- gUnknown_0202FFB4->unk638++;
+ r5 = gUnknown_083A05EC[gPokedexView->unk638 / 4];
+ r3 = gUnknown_083A05F1[gPokedexView->unk638 / 4];
+ gPokedexView->unk62E = r3;
+ gPokedexView->unk636 = r3;
+ gPokedexView->unk634 = r5;
+ gPokedexView->unk62F = r10;
+ gPokedexView->unk628 = r5;
+ sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636);
+ if(gPokedexView->unk638 <= 0xB)
+ gPokedexView->unk638++;
return a;
}
#else
@@ -1607,7 +1639,7 @@ _0808E4E0:\n\
b _0808E5A2\n\
.align 2, 0\n\
_0808E52C: .4byte gMain\n\
-_0808E530: .4byte gUnknown_0202FFB4\n\
+_0808E530: .4byte gPokedexView\n\
_0808E534: .4byte 0x0000060c\n\
_0808E538: .4byte 0x0000062c\n\
_0808E53C:\n\
@@ -1672,7 +1704,7 @@ _0808E5A2:\n\
strh r2, [r0]\n\
b _0808E68E\n\
.align 2, 0\n\
-_0808E5B8: .4byte gUnknown_0202FFB4\n\
+_0808E5B8: .4byte gPokedexView\n\
_0808E5BC: .4byte 0x0000060c\n\
_0808E5C0: .4byte 0x0000062c\n\
_0808E5C4:\n\
@@ -1718,7 +1750,7 @@ _0808E60E:\n\
bl PlaySE\n\
b _0808E5A2\n\
.align 2, 0\n\
-_0808E620: .4byte gUnknown_0202FFB4\n\
+_0808E620: .4byte gPokedexView\n\
_0808E624: .4byte 0x0000060c\n\
_0808E628:\n\
ldr r1, _0808E6A0\n\
@@ -1782,7 +1814,7 @@ _0808E68E:\n\
bx r1\n\
.align 2, 0\n\
_0808E6A0: .4byte gUnknown_083A05EC\n\
-_0808E6A4: .4byte gUnknown_0202FFB4\n\
+_0808E6A4: .4byte gPokedexView\n\
_0808E6A8: .4byte gUnknown_083A05F1\n\
_0808E6AC: .4byte 0x0000062e\n\
_0808E6B0: .4byte 0x00000636\n\
@@ -1798,10 +1830,10 @@ void sub_808E6BC(void)
for(i = 0; i < 4; i++)
{
- u16 spriteId = gUnknown_0202FFB4->unk61E[i];
+ u16 spriteId = gPokedexView->unk61E[i];
if(gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF)
- gUnknown_0202FFB4->unk626 = spriteId;
+ gPokedexView->unk626 = spriteId;
}
}
@@ -1809,54 +1841,51 @@ u8 sub_808E71C(void)
{
u16 r2;
u16 r3;
- u16 r4 = gUnknown_0202FFB4->unk60E;
+ u16 r4 = gPokedexView->selectedPokemon;
- if((gMain.newKeys & 0x40) && r4)
+ if((gMain.newKeys & DPAD_UP) && r4)
{
r2 = r4;
while(r2 != 0)
{
- r2 = sub_8091818(1, r2, 0, gUnknown_0202FFB4->unk60C - 1);
+ r2 = sub_8091818(1, r2, 0, gPokedexView->unk60C - 1);
- if(gUnknown_0202FFB4->unk0[r2].seen)
+ if(gPokedexView->unk0[r2].seen)
{
- //goto _0808E78C;
r4 = r2;
break;
}
}
- if(gUnknown_0202FFB4->unk60E == r4)
+ if(gPokedexView->selectedPokemon == r4)
return 0;
else
{
- gUnknown_0202FFB4->unk60E = r4;
- //goto _0808E80C
- gUnknown_0202FFB4->unk62C -= 16;
+ gPokedexView->selectedPokemon = r4;
+ gPokedexView->unk62C -= 16;
return 1;
}
}
- //_0808E7A4
- else if((gMain.newKeys & 0x80) && r4 < gUnknown_0202FFB4->unk60C - 1)
+ else if((gMain.newKeys & DPAD_DOWN) && r4 < gPokedexView->unk60C - 1)
{
r2 = r4;
- while(r2 < gUnknown_0202FFB4->unk60C - 1)
+ while(r2 < gPokedexView->unk60C - 1)
{
- r2 = sub_8091818(0, r2, 0, gUnknown_0202FFB4->unk60C - 1);
+ r2 = sub_8091818(0, r2, 0, gPokedexView->unk60C - 1);
- if(gUnknown_0202FFB4->unk0[r2].seen)
+ if(gPokedexView->unk0[r2].seen)
{
r4 = r2;
break;
}
}
- if(gUnknown_0202FFB4->unk60E == r4)
+ if(gPokedexView->selectedPokemon == r4)
return 0;
else
{
- gUnknown_0202FFB4->unk60E = r4;
- gUnknown_0202FFB4->unk62C += 16;
+ gPokedexView->selectedPokemon = r4;
+ gPokedexView->unk62C += 16;
return 1;
}
}
@@ -1869,10 +1898,10 @@ u8 sub_808E82C(void)
for(i = 0; i < 4; i++)
{
- if(gUnknown_0202FFB4->unk61E[i] != 0xFFFF)
+ if(gPokedexView->unk61E[i] != 0xFFFF)
{
- DestroySprite(&gSprites[gUnknown_0202FFB4->unk61E[i]]);
- gUnknown_0202FFB4->unk61E[i] |= 0xFFFF;
+ DestroySprite(&gSprites[gPokedexView->unk61E[i]]);
+ gPokedexView->unk61E[i] |= 0xFFFF;
}
}
return 0;
@@ -1880,10 +1909,10 @@ u8 sub_808E82C(void)
u16 sub_808E888(u16 a1)
{
- if(a1 > 385 || gUnknown_0202FFB4->unk0[a1].a == 0xFFFF)
+ if(a1 > 385 || gPokedexView->unk0[a1].dexNum == 0xFFFF)
return 0xFFFF;
- else if(gUnknown_0202FFB4->unk0[a1].seen)
- return gUnknown_0202FFB4->unk0[a1].a;
+ else if(gPokedexView->unk0[a1].seen)
+ return gPokedexView->unk0[a1].dexNum;
else
return 0;
}
@@ -1894,7 +1923,7 @@ u32 sub_808E8C8(u16 a, u16 b, u16 c)
for(i = 0; i < 4; i++)
{
- if(gUnknown_0202FFB4->unk61E[i] == 0xFFFF)
+ if(gPokedexView->unk61E[i] == 0xFFFF)
{
u8 spriteId = sub_80918EC(a, (s16)b, (s16)c, i);
@@ -1903,7 +1932,7 @@ u32 sub_808E8C8(u16 a, u16 b, u16 c)
gSprites[spriteId].data0 = 0;
gSprites[spriteId].data1 = i;
gSprites[spriteId].data2 = NationalPokedexNumToSpecies(a);
- gUnknown_0202FFB4->unk61E[i] = spriteId;
+ gPokedexView->unk61E[i] = spriteId;
return spriteId;
}
}
@@ -1958,7 +1987,7 @@ void sub_808E978(u8 a)
_a = 0;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x1C, 0x30, 1);
- r5 = gUnknown_0202FFB4->unk61A / 100;
+ r5 = gPokedexView->unk61A / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if(r5 != 0)
_a = 1;
@@ -1966,19 +1995,19 @@ void sub_808E978(u8 a)
gSprites[spriteId].invisible = 1;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x22, 0x30, 1);
- r5 = (gUnknown_0202FFB4->unk61A % 100) / 10;
+ r5 = (gPokedexView->unk61A % 100) / 10;
if(r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = 1;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x28, 0x30, 1);
- r5 = (gUnknown_0202FFB4->unk61A % 100) % 10;
+ r5 = (gPokedexView->unk61A % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
_a = 0;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x1C, 0x50, 1);
- r5 = gUnknown_0202FFB4->unk61C / 100;
+ r5 = gPokedexView->unk61C / 100;
StartSpriteAnim(&gSprites[spriteId], r5);
if(r5 != 0)
_a = 1;
@@ -1986,14 +2015,14 @@ void sub_808E978(u8 a)
gSprites[spriteId].invisible = 1;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x22, 0x50, 1);
- r5 = (gUnknown_0202FFB4->unk61C % 100) / 10;
+ r5 = (gPokedexView->unk61C % 100) / 10;
if(r5 != 0 || _a != 0)
StartSpriteAnim(&gSprites[spriteId], r5);
else
gSprites[spriteId].invisible = 1;
spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x28, 0x50, 1);
- r5 = (gUnknown_0202FFB4->unk61C % 100) % 10;
+ r5 = (gPokedexView->unk61C % 100) % 10;
StartSpriteAnim(&gSprites[spriteId], r5);
spriteId = CreateSprite(&gSpriteTemplate_83A05B4, 0x8C, 0x60, 1);
@@ -2012,10 +2041,11 @@ void nullsub_58(struct Sprite *sprite)
void sub_808ED94(struct Sprite *sprite)
{
- if(gUnknown_0202FFB4->unk64A != 0)
+ if(gPokedexView->unk64A != 0)
DestroySprite(sprite);
}
+//Move Pokemon into position for description page
void sub_808EDB8(struct Sprite *sprite)
{
sprite->oam.priority = 0;
@@ -2042,10 +2072,10 @@ void sub_808EE28(struct Sprite *sprite)
{
u8 data1 = sprite->data1;
- if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3)
+ if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
{
DestroySprite(sprite);
- gUnknown_0202FFB4->unk61E[data1] = 0xFFFF;
+ gPokedexView->unk61E[data1] = 0xFFFF;
}
else
{
@@ -2073,7 +2103,7 @@ void sub_808EE28(struct Sprite *sprite)
if((u16)(sprite->data5 + 0x3F) > 0x7E && sprite->data0 != 0)
{
DestroySprite(sprite);
- gUnknown_0202FFB4->unk61E[data1] = 0xFFFF;
+ gPokedexView->unk61E[data1] = 0xFFFF;
}
}
//_0808EF16
@@ -2081,15 +2111,15 @@ void sub_808EE28(struct Sprite *sprite)
void sub_808EF38(struct Sprite *sprite)
{
- if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3)
+ if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
else
- sprite->pos2.y = gUnknown_0202FFB4->unk60E * 120 / (gUnknown_0202FFB4->unk60C - 1);
+ sprite->pos2.y = gPokedexView->selectedPokemon * 120 / (gPokedexView->unk60C - 1);
}
void sub_808EF8C(struct Sprite *sprite)
{
- if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3)
+ if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
else
{
@@ -2097,7 +2127,7 @@ void sub_808EF8C(struct Sprite *sprite)
if(sprite->data1 != 0)
{
- if(gUnknown_0202FFB4->unk60E == gUnknown_0202FFB4->unk60C - 1)
+ if(gPokedexView->selectedPokemon == gPokedexView->unk60C - 1)
sprite->invisible = 1;
else
sprite->invisible = 0;
@@ -2105,7 +2135,7 @@ void sub_808EF8C(struct Sprite *sprite)
}
else
{
- if(gUnknown_0202FFB4->unk60E == 0)
+ if(gPokedexView->selectedPokemon == 0)
sprite->invisible = 1;
else
sprite->invisible = 0;
@@ -2113,7 +2143,7 @@ void sub_808EF8C(struct Sprite *sprite)
}
sprite->pos2.y = gSineTable[r0] / 64;
sprite->data2 = sprite->data2 + 8;
- if(gUnknown_0202FFB4->unk650 == 0 && gUnknown_0202FFB4->unk654 == 0 && sprite->invisible == 0)
+ if(gPokedexView->menuIsOpen == 0 && gPokedexView->menuY == 0 && sprite->invisible == 0)
sprite->invisible = 0;
else
sprite->invisible = 1;
@@ -2122,28 +2152,28 @@ void sub_808EF8C(struct Sprite *sprite)
void sub_808F08C(struct Sprite *sprite)
{
- if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3)
+ if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
}
#ifdef NONMATCHING
void sub_808F0B4(struct Sprite *sprite)
{
- if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3)
+ if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
else
{
s16 r3;
- u8 unk = gUnknown_0202FFB4->unk62C + sprite->data1;
+ u8 unk = gPokedexView->unk62C + sprite->data1;
u16 foo = gSineTable[unk];
//u8 unk2 = sprite->data0;
//u16 bar = gSineTable[unk + 0x40];
SetOamMatrix(sprite->data0, foo, gSineTable[unk + 0x40], (-(u16)foo) >> 16, gSineTable[unk + 0x40]);
- r3 = gSineTable[sprite->data1 + gUnknown_0202FFB4->unk62C];
- sprite->pos2.x = gSineTable[sprite->data1 + gUnknown_0202FFB4->unk62C + 0x40] * 5 / 256;
+ r3 = gSineTable[sprite->data1 + gPokedexView->unk62C];
+ sprite->pos2.x = gSineTable[sprite->data1 + gPokedexView->unk62C + 0x40] * 5 / 256;
sprite->pos2.y = r3 * 40 / 256;
}
}
@@ -2155,7 +2185,7 @@ void sub_808F0B4(struct Sprite *sprite)
push {r4-r7,lr}\n\
sub sp, 0x4\n\
adds r6, r0, 0\n\
- ldr r1, _0808F0D8 @ =gUnknown_0202FFB4\n\
+ ldr r1, _0808F0D8 @ =gPokedexView\n\
ldr r0, [r1]\n\
ldr r2, _0808F0DC @ =0x0000064a\n\
adds r0, r2\n\
@@ -2169,7 +2199,7 @@ void sub_808F0B4(struct Sprite *sprite)
bl DestroySprite\n\
b _0808F158\n\
.align 2, 0\n\
-_0808F0D8: .4byte gUnknown_0202FFB4\n\
+_0808F0D8: .4byte gPokedexView\n\
_0808F0DC: .4byte 0x0000064a\n\
_0808F0E0:\n\
ldr r0, [r7]\n\
@@ -2247,18 +2277,18 @@ _0808F164: .4byte gSineTable\n\
void sub_808F168(struct Sprite *sprite)
{
- if(gUnknown_0202FFB4->unk64A != 0 && gUnknown_0202FFB4->unk64A != 3)
+ if(gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3)
DestroySprite(sprite);
else
{
- u16 r1 = gUnknown_0202FFB4->unk64A == 0 ? 0x50 : 0x60;
+ u16 r1 = gPokedexView->unk64A == 0 ? 0x50 : 0x60;
- if(gUnknown_0202FFB4->unk650 != 0 && gUnknown_0202FFB4->unk654 == r1)
+ if(gPokedexView->menuIsOpen != 0 && gPokedexView->menuY == r1)
{
u8 data2;
sprite->invisible = 0;
- sprite->pos2.y = gUnknown_0202FFB4->unk652 * 16;
+ sprite->pos2.y = gPokedexView->menuCursorPos * 16;
sprite->pos2.x = gSineTable[(u8)sprite->data2] / 64;
sprite->data2 += 8;
}
@@ -2272,7 +2302,7 @@ u8 sub_808F210(struct PokedexListItem *item, u8 b)
u8 taskId;
gUnknown_0202FFBC = item;
- taskId = CreateTask(sub_808F2B0, 0);
+ taskId = CreateTask(Task_InitPageScreenMultistep, 0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 1;
gTasks[taskId].data[2] = 0;
@@ -2283,7 +2313,7 @@ u8 sub_808F210(struct PokedexListItem *item, u8 b)
bool8 sub_808F250(u8 taskId)
{
- if(gTasks[taskId].data[0] == 0 && gTasks[taskId].func == sub_808F6CC)
+ if(gTasks[taskId].data[0] == 0 && gTasks[taskId].func == Task_PageScreenProcessInput)
return 0;
else
return 1;
@@ -2299,7 +2329,7 @@ u8 sub_808F284(struct PokedexListItem *item, u8 b)
return b;
}
-void sub_808F2B0(u8 taskId)
+void Task_InitPageScreenMultistep(u8 taskId)
{
switch(gMain.state)
{
@@ -2309,31 +2339,28 @@ void sub_808F2B0(u8 taskId)
{
u16 r2;
- gUnknown_0202FFB4->unk64A = 1;
- gUnknown_0202FFB4->unk64E = 0;
+ gPokedexView->unk64A = 1;
+ gPokedexView->unk64E = 0;
gUnknown_03005CEC = gMain.vblankCallback;
SetVBlankCallback(NULL);
r2 = 0;
if(gTasks[taskId].data[1] != 0)
r2 += 0x1000;
-
if(gTasks[taskId].data[2] != 0)
r2 |= 0x200;
-
sub_8091060(r2);
-
gMain.state = 1;
}
break;
case 1:
LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
- sub_8091738(gUnknown_0202FFBC->a, 2, 0x3FC);
+ sub_8091738(gUnknown_0202FFBC->dexNum, 2, 0x3FC);
gMain.state++;
break;
case 2:
sub_80904FC(0xD);
- sub_8090584(gUnknown_0202FFB4->unk64D, 0xD);
+ sub_8090584(gPokedexView->selectedScreen, 0xD);
sub_808D640();
gMain.state++;
break;
@@ -2343,21 +2370,21 @@ void sub_808F2B0(u8 taskId)
gMain.state++;
break;
case 4:
- if(gUnknown_0202FFB4->unk612 == 0)
- sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->a), 0xD, 3);
+ if(gPokedexView->dexMode == DEX_MODE_HOENN)
+ sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3);
else
- sub_8091154(gUnknown_0202FFBC->a, 0xD, 3);
+ sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3);
//_0808F45A
- sub_80911C8(gUnknown_0202FFBC->a, 0x10, 3);
+ sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3);
MenuPrint(gDexText_UnknownPoke, 11, 5);
MenuPrint(gDexText_UnknownHeight, 16, 7);
MenuPrint(gDexText_UnknownWeight, 16, 9);
if(gUnknown_0202FFBC->owned)
{
- sub_8091304(gPokedexEntries[gUnknown_0202FFBC->a].categoryName, 11, 5);
- sub_8091458(gPokedexEntries[gUnknown_0202FFBC->a].height, 16, 7);
- sub_8091564(gPokedexEntries[gUnknown_0202FFBC->a].weight, 16, 9);
- MenuPrint(gPokedexEntries[gUnknown_0202FFBC->a].descriptionPage1, 2, 13);
+ sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, 11, 5);
+ sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7);
+ sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9);
+ MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13);
sub_80917CC(14, 0x3FC);
}
//_0808F50C
@@ -2372,7 +2399,7 @@ void sub_808F2B0(u8 taskId)
if(gTasks[taskId].data[1] == 0)
{
//_0808F540
- gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->a, 0x30, 0x38, 0);
+ gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
}
gMain.state++;
@@ -2398,7 +2425,7 @@ void sub_808F2B0(u8 taskId)
REG_BLDY = 0;
REG_BG3CNT = 0xF03;
REG_BG1CNT = 0xD00;
- REG_DISPCNT = 0x1E40;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
gMain.state++;
break;
case 8:
@@ -2408,7 +2435,7 @@ void sub_808F2B0(u8 taskId)
if(gTasks[taskId].data[3] == 0)
{
StopCryAndClearCrySongs();
- PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->a), 0, 0x7D, 0xA);
+ PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA);
}
else
gMain.state++;
@@ -2423,84 +2450,86 @@ void sub_808F2B0(u8 taskId)
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[2] = 1;
gTasks[taskId].data[3] = 1;
- gTasks[taskId].func = sub_808F6CC;
+ gTasks[taskId].func = Task_PageScreenProcessInput;
gMain.state = 0;
break;
}
}
-void sub_808F6CC(u8 taskId)
+void Task_PageScreenProcessInput(u8 taskId)
{
- if(gTasks[taskId].data[0] != 0)
+ if (gTasks[taskId].data[0] != 0)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
gTasks[taskId].func = sub_808F888;
- PlaySE(0x6C);
+ PlaySE(SE_Z_SCROLL);
}
- else if(gMain.newKeys & 2)
+ else if (gMain.newKeys & B_BUTTON)
{
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- gTasks[taskId].func = sub_808F8B8;
- PlaySE(3);
+ gTasks[taskId].func = Task_ClosePageScreen;
+ PlaySE(SE_PC_OFF);
}
- else if(gMain.newKeys & 1)
+ else if (gMain.newKeys & A_BUTTON)
{
- switch(gUnknown_0202FFB4->unk64D)
+ switch (gPokedexView->selectedScreen)
{
- case 0:
+ case PAGE_SCREEN:
sub_8090C68();
break;
- case 1:
+ case AREA_SCREEN:
BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
- gTasks[taskId].func = sub_808F8D8;
- PlaySE(0x15);
+ gTasks[taskId].func = Task_InitAreaScreenMultistep;
+ PlaySE(SE_PIN);
break;
- case 2:
+ case CRY_SCREEN:
BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
- gTasks[taskId].func = sub_808FA64;
- PlaySE(0x15);
+ gTasks[taskId].func = Task_InitCryScreenMultistep;
+ PlaySE(SE_PIN);
break;
- case 3:
- if(!gUnknown_0202FFBC->owned)
- PlaySE(0x20);
+ case SIZE_SCREEN:
+ if (!gUnknown_0202FFBC->owned)
+ PlaySE(SE_HAZURE);
else
{
BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
- gTasks[taskId].func = sub_8090070;
- PlaySE(0x15);
+ gTasks[taskId].func = Task_InitSizeScreenMultistep;
+ PlaySE(SE_PIN);
}
break;
}
}
- else if (((gMain.newKeys & 0x20) || ((gMain.newKeys & 0x200) && gSaveBlock2.optionsButtonMode == 1))
- && gUnknown_0202FFB4->unk64D != 0)
+ else if (((gMain.newKeys & DPAD_LEFT)
+ || ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ && gPokedexView->selectedScreen > 0)
{
- gUnknown_0202FFB4->unk64D--;
- sub_8090584(gUnknown_0202FFB4->unk64D, 0xD);
- PlaySE(0x6D);
+ gPokedexView->selectedScreen--;
+ sub_8090584(gPokedexView->selectedScreen, 0xD);
+ PlaySE(SE_Z_PAGE);
}
- else if(((gMain.newKeys & 0x10) || ((gMain.newKeys & 0x100) && gSaveBlock2.optionsButtonMode == 1))
- && gUnknown_0202FFB4->unk64D <= 2)
+ else if (((gMain.newKeys & DPAD_RIGHT)
+ || ((gMain.newKeys & R_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ && gPokedexView->selectedScreen < 3)
{
- gUnknown_0202FFB4->unk64D++;
- sub_8090584(gUnknown_0202FFB4->unk64D, 0xD);
- PlaySE(0x6D);
+ gPokedexView->selectedScreen++;
+ sub_8090584(gPokedexView->selectedScreen, 0xD);
+ PlaySE(SE_Z_PAGE);
}
}
void sub_808F888(u8 taskId)
{
if(!gPaletteFade.active)
- gTasks[taskId].func = sub_808F2B0;
+ gTasks[taskId].func = Task_InitPageScreenMultistep;
}
-void sub_808F8B8(u8 taskId)
+void Task_ClosePageScreen(u8 taskId)
{
if(!gPaletteFade.active)
DestroyTask(taskId);
}
-void sub_808F8D8(u8 taskId)
+void Task_InitAreaScreenMultistep(u8 taskId)
{
switch (gMain.state)
{
@@ -2508,11 +2537,11 @@ void sub_808F8D8(u8 taskId)
default:
if (!gPaletteFade.active)
{
- gUnknown_0202FFB4->unk64A = 5;
+ gPokedexView->unk64A = 5;
gUnknown_03005CEC = gMain.vblankCallback;
SetVBlankCallback(NULL);
sub_8091060(0x200);
- gUnknown_0202FFB4->unk64D = 1;
+ gPokedexView->selectedScreen = AREA_SCREEN;
gMain.state = 1;
}
break;
@@ -2524,18 +2553,18 @@ void sub_808F8D8(u8 taskId)
gMain.state++;
break;
case 2:
- ShowPokedexAreaScreen(NationalPokedexNumToSpecies(gUnknown_0202FFBC->a), &gUnknown_0202FFB4->unk64F);
+ ShowPokedexAreaScreen(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), &gPokedexView->unk64F);
SetVBlankCallback(gUnknown_03005CEC);
- gUnknown_0202FFB4->unk64F = 0;
+ gPokedexView->unk64F = 0;
gMain.state = 0;
- gTasks[taskId].func = sub_808F9C8;
+ gTasks[taskId].func = Task_AreaScreenProcessInput;
break;
}
}
-void sub_808F9C8(u8 taskId)
+void Task_AreaScreenProcessInput(u8 taskId)
{
- if(gUnknown_0202FFB4->unk64F != 0)
+ if(gPokedexView->unk64F != 0)
gTasks[taskId].func = sub_808FA00;
}
@@ -2543,20 +2572,20 @@ void sub_808FA00(u8 taskId)
{
if(!gPaletteFade.active)
{
- switch(gUnknown_0202FFB4->unk64F)
+ switch(gPokedexView->unk64F)
{
case 1:
default:
- gTasks[taskId].func = sub_808F2B0;
+ gTasks[taskId].func = Task_InitPageScreenMultistep;
break;
case 2:
- gTasks[taskId].func = sub_808FA64;
+ gTasks[taskId].func = Task_InitCryScreenMultistep;
break;
}
}
}
-void sub_808FA64(u8 taskId)
+void Task_InitCryScreenMultistep(u8 taskId)
{
switch(gMain.state)
{
@@ -2565,11 +2594,11 @@ void sub_808FA64(u8 taskId)
if(!gPaletteFade.active)
{
m4aMPlayStop(&gMPlay_BGM);
- gUnknown_0202FFB4->unk64A = 6;
+ gPokedexView->unk64A = 6;
gUnknown_03005CEC = gMain.vblankCallback;
SetVBlankCallback(NULL);
sub_8091060(0x200);
- gUnknown_0202FFB4->unk64D = 2;
+ gPokedexView->selectedScreen = CRY_SCREEN;
gMain.state = 1;
}
break;
@@ -2593,11 +2622,11 @@ void sub_808FA64(u8 taskId)
break;
case 4:
MenuPrint(gDexText_CryOf, 10, 4);
- sub_8091260(gUnknown_0202FFBC->a, 10, 6, 2);
+ sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2);
gMain.state++;
break;
case 5:
- gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->a, 0x30, 0x38, 0);
+ gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0);
gSprites[gTasks[taskId].data[4]].oam.priority = 0;
gUnknown_03005E98 = 0;
gMain.state++;
@@ -2649,14 +2678,14 @@ void sub_808FA64(u8 taskId)
gMain.state++;
break;
case 10:
- gUnknown_0202FFB4->unk64F = 0;
+ gPokedexView->unk64F = 0;
gMain.state = 0;
- gTasks[taskId].func = sub_808FDF8;
+ gTasks[taskId].func = Task_CryScreenProcessInput;
break;
}
}
-void sub_808FDF8(u8 taskId)
+void Task_CryScreenProcessInput(u8 taskId)
{
sub_8119F88(0);
@@ -2665,41 +2694,43 @@ void sub_808FDF8(u8 taskId)
else
sub_8090040(0);
- if (gMain.newKeys & 1)
+ if (gMain.newKeys & A_BUTTON)
{
sub_8090040(1);
- sub_811A050(NationalPokedexNumToSpecies(gUnknown_0202FFBC->a));
+ sub_811A050(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum));
return;
}
else if (!gPaletteFade.active)
{
- if (gMain.newKeys & 2)
+ if (gMain.newKeys & B_BUTTON)
{
BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
m4aMPlayContinue(&gMPlay_BGM);
- gUnknown_0202FFB4->unk64F = 1;
+ gPokedexView->unk64F = 1;
gTasks[taskId].func = sub_808FFBC;
- PlaySE(3);
+ PlaySE(SE_PC_OFF);
}
- else if ((gMain.newKeys & 0x20) || ((gMain.newKeys & 0x200) && gSaveBlock2.optionsButtonMode == 1))
+ else if ((gMain.newKeys & DPAD_LEFT)
+ || ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
m4aMPlayContinue(&gMPlay_BGM);
- gUnknown_0202FFB4->unk64F = 2;
+ gPokedexView->unk64F = 2;
gTasks[taskId].func = sub_808FFBC;
- PlaySE(0x6D);
+ PlaySE(SE_Z_PAGE);
}
- else if ((gMain.newKeys & 0x10) || ((gMain.newKeys & 0x100) && gSaveBlock2.optionsButtonMode == 1))
+ else if ((gMain.newKeys & DPAD_RIGHT)
+ || ((gMain.newKeys & R_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
{
if (!gUnknown_0202FFBC->owned)
- PlaySE(0x20);
+ PlaySE(SE_HAZURE);
else
{
BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
m4aMPlayContinue(&gMPlay_BGM);
- gUnknown_0202FFB4->unk64F = 3;
+ gPokedexView->unk64F = 3;
gTasks[taskId].func = sub_808FFBC;
- PlaySE(0x6D);
+ PlaySE(SE_Z_PAGE);
}
}
}
@@ -2710,17 +2741,17 @@ void sub_808FFBC(u8 taskId)
if(!gPaletteFade.active)
{
DestroyCryMeterNeedleSprite();
- switch(gUnknown_0202FFB4->unk64F)
+ switch(gPokedexView->unk64F)
{
default:
case 1:
- gTasks[taskId].func = sub_808F2B0;
+ gTasks[taskId].func = Task_InitPageScreenMultistep;
break;
case 2:
- gTasks[taskId].func = sub_808F8D8;
+ gTasks[taskId].func = Task_InitAreaScreenMultistep;
break;
case 3:
- gTasks[taskId].func = sub_8090070;
+ gTasks[taskId].func = Task_InitSizeScreenMultistep;
}
}
}
@@ -2736,7 +2767,7 @@ void sub_8090040(u8 a)
LoadPalette(&unk, 0x5D, 2);
}
-void sub_8090070(u8 taskId)
+void Task_InitSizeScreenMultistep(u8 taskId)
{
u8 spriteId;
@@ -2746,11 +2777,11 @@ void sub_8090070(u8 taskId)
case 0:
if(!gPaletteFade.active)
{
- gUnknown_0202FFB4->unk64A = 7;
+ gPokedexView->unk64A = 7;
gUnknown_03005CEC = gMain.vblankCallback;
SetVBlankCallback(NULL);
sub_8091060(0x200);
- gUnknown_0202FFB4->unk64D = 3;
+ gPokedexView->selectedScreen = SIZE_SCREEN;
gMain.state = 1;
}
break;
@@ -2787,18 +2818,18 @@ void sub_8090070(u8 taskId)
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 1;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->a].trainerOffset;
- SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->a].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->a].trainerScale);
+ gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerOffset;
+ SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale);
LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
gMain.state++;
break;
case 6:
- spriteId = sub_80918EC(gUnknown_0202FFBC->a, 0x58, 0x38, 1);
+ spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x58, 0x38, 1);
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].oam.matrixNum = 2;
gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->a].pokemonOffset;
- SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->a].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->a].pokemonScale);
+ gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonOffset;
+ SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale);
LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
gMain.state++;
break;
@@ -2818,10 +2849,453 @@ void sub_8090070(u8 taskId)
case 9:
if(!gPaletteFade.active)
{
- gUnknown_0202FFB4->unk64F = 0;
+ gPokedexView->unk64F = 0;
gMain.state = 0;
- gTasks[taskId].func = sub_80903D0;
+ gTasks[taskId].func = Task_SizeScreenProcessInput;
+ }
+ break;
+ }
+}
+
+void Task_SizeScreenProcessInput(u8 taskId)
+{
+ if(gMain.newKeys & B_BUTTON)
+ {
+ BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ gPokedexView->unk64F = 1;
+ gTasks[taskId].func = sub_8090498;
+ PlaySE(SE_PC_OFF);
+ }
+ //_08090430
+ else if((gMain.newKeys & DPAD_LEFT)
+ || ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR))
+ {
+ BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0);
+ gPokedexView->unk64F = 2;
+ gTasks[taskId].func = sub_8090498;
+ PlaySE(SE_Z_PAGE);
+ }
+}
+
+void sub_8090498(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ {
+ switch(gPokedexView->unk64F)
+ {
+ default:
+ case 1:
+ gTasks[taskId].func = Task_InitPageScreenMultistep;
+ break;
+ case 2:
+ gTasks[taskId].func = Task_InitCryScreenMultistep;
+ break;
+ }
+ }
+}
+
+void sub_80904FC(u16 a)
+{
+ LZ77UnCompVram(gUnknown_08E96ACC, (void *)(VRAM + a * 0x800));
+ DmaClear16(3, (void *)(VRAM + a * 0x800 + 0xC0), 0x440);
+}
+
+void sub_8090540(u16 a)
+{
+ LZ77UnCompVram(gUnknown_08E96B58, (void *)(VRAM + a * 0x800));
+ DmaClear16(3, (void *)(VRAM + a * 0x800 + 0xC0), 0x440);
+}
+
+#ifdef NONMATCHING
+void sub_8090584(u8 a, u16 b)
+{
+ u8 i; //r1
+ u8 j; //r3
+ u32 r6;
+ register u8 r7;
+
+ for(i = 0; i < 4; i++)
+ {
+ r7 = i * 5 + 1;
+ r6 = 0x4000;
+
+ if(i == a)
+ r6 = 0x2000;
+
+ for(j = 0; j < 5; j++)
+ {
+ u32 r0 = b * 0x800 + (r7 + j) * 2;
+ u8 *ptr;
+
+ ptr = VRAM;
+ *(u16 *)(ptr + r0) = *(u16 *)(ptr + r0) & 0xFFF | r6;
+ ptr = VRAM + 0x40;
+ *(u16 *)(ptr + r0) = *(u16 *)(ptr + r0) & 0xFFF | r6;
+ }
+ }
+ r6 = 0x4000;
+ for(j = 0; j < 5; j++)
+ {
+ u32 r0 = b * 0x800 + j * 2;
+ u8 *ptr;
+
+ ptr = VRAM + 0x32;
+ *(u16 *)(ptr + r0) = *(u16 *)(ptr + r0) & 0xFFF | r6;
+ ptr = VRAM + 0x72;
+ *(u16 *)(ptr + r0) = *(u16 *)(ptr + r0) & 0xFFF | r6;
+ }
+}
+#else
+__attribute__((naked))
+void sub_8090584(u8 a, u16 b)
+{
+ 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\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r9, r1\n\
+ movs r1, 0\n\
+_0809059C:\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ movs r6, 0x80\n\
+ lsls r6, 7\n\
+ cmp r1, r10\n\
+ bne _080905B2\n\
+ movs r6, 0x80\n\
+ lsls r6, 6\n\
+_080905B2:\n\
+ movs r3, 0\n\
+ mov r0, r9\n\
+ lsls r0, 11\n\
+ mov r12, r0\n\
+ adds r1, 0x1\n\
+ mov r8, r1\n\
+ mov r5, r12\n\
+ ldr r4, _08090634 @ =0x00000fff\n\
+_080905C2:\n\
+ adds r0, r7, r3\n\
+ lsls r0, 1\n\
+ adds r0, r5, r0\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ adds r1, r0, r2\n\
+ ldrh r2, [r1]\n\
+ ands r2, r4\n\
+ orrs r2, r6\n\
+ strh r2, [r1]\n\
+ ldr r1, _08090638 @ =0x06000040\n\
+ adds r0, r1\n\
+ ldrh r2, [r0]\n\
+ ands r2, r4\n\
+ orrs r2, r6\n\
+ strh r2, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x4\n\
+ bls _080905C2\n\
+ mov r2, r8\n\
+ lsls r0, r2, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0x3\n\
+ bls _0809059C\n\
+ movs r6, 0x80\n\
+ lsls r6, 7\n\
+ movs r3, 0\n\
+ mov r5, r12\n\
+ ldr r4, _08090634 @ =0x00000fff\n\
+_08090600:\n\
+ lsls r0, r3, 1\n\
+ adds r0, r5, r0\n\
+ ldr r2, _0809063C @ =0x06000032\n\
+ adds r1, r0, r2\n\
+ ldrh r2, [r1]\n\
+ ands r2, r4\n\
+ orrs r2, r6\n\
+ strh r2, [r1]\n\
+ ldr r1, _08090640 @ =0x06000072\n\
+ adds r0, r1\n\
+ ldrh r2, [r0]\n\
+ ands r2, r4\n\
+ orrs r2, r6\n\
+ strh r2, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x4\n\
+ bls _08090600\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\
+ .align 2, 0\n\
+_08090634: .4byte 0x00000fff\n\
+_08090638: .4byte 0x06000040\n\
+_0809063C: .4byte 0x06000032\n\
+_08090640: .4byte 0x06000072\n\
+ .syntax divided\n");
+}
+#endif
+
+//Nope, can't get this one to match, either.
+#ifdef NONMATCHING
+void sub_8090644(u8 a, u16 b)
+{
+ u8 i;
+ u8 j;
+
+ for(i = 0; i < 4; i++)
+ {
+ u8 r8 = i * 5 + 1;
+ u32 r5;
+
+ if(i == a || i == 0)
+ r5 = 0x2000;
+ else if(a != 0)
+ r5 = 0x4000;
+
+ for(j = 0; j < 5; j++)
+ {
+ u16 (*vramData)[0x400];
+
+ vramData = (u16 (*)[])VRAM;
+ vramData[b][r8 + j] = vramData[b][r8 + j] & 0xFFF | r5;
+ vramData = (u16 (*)[])(VRAM + 0x40);
+ vramData[b][r8 + j] = vramData[b][r8 + j] & 0xFFF | r5;
+ }
+ }
+
+ for(j = 0; j < 5; j++)
+ {
+ u16 (*vramData)[0x400];
+
+ vramData = (u16 (*)[])(VRAM + 0x32);
+ vramData[b][j] = vramData[b][j] & 0xFFF | 0x4000;
+ vramData = (u16 (*)[])(VRAM + 0x72);
+ vramData[b][j] = vramData[b][j] & 0xFFF | 0x4000;
+ }
+}
+#else
+__attribute__((naked))
+void sub_8090644(u8 a, u16 b)
+{
+ 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\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ lsls r1, 16\n\
+ lsrs r1, 16\n\
+ mov r9, r1\n\
+ movs r1, 0\n\
+_0809065C:\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ cmp r1, r10\n\
+ beq _08090670\n\
+ cmp r1, 0\n\
+ bne _08090676\n\
+_08090670:\n\
+ movs r5, 0x80\n\
+ lsls r5, 6\n\
+ b _0809067A\n\
+_08090676:\n\
+ movs r5, 0x80\n\
+ lsls r5, 7\n\
+_0809067A:\n\
+ movs r3, 0\n\
+ mov r0, r9\n\
+ lsls r7, r0, 11\n\
+ adds r1, 0x1\n\
+ mov r12, r1\n\
+ adds r6, r7, 0\n\
+ ldr r4, _080906FC @ =0x00000fff\n\
+_08090688:\n\
+ mov r1, r8\n\
+ adds r0, r1, r3\n\
+ lsls r0, 1\n\
+ adds r0, r6, r0\n\
+ movs r2, 0xC0\n\
+ lsls r2, 19\n\
+ adds r1, r0, r2\n\
+ ldrh r2, [r1]\n\
+ ands r2, r4\n\
+ orrs r2, r5\n\
+ strh r2, [r1]\n\
+ ldr r1, _08090700 @ =0x06000040\n\
+ adds r0, r1\n\
+ ldrh r2, [r0]\n\
+ ands r2, r4\n\
+ orrs r2, r5\n\
+ strh r2, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x4\n\
+ bls _08090688\n\
+ mov r2, r12\n\
+ lsls r0, r2, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0x3\n\
+ bls _0809065C\n\
+ movs r5, 0x80\n\
+ lsls r5, 7\n\
+ movs r3, 0\n\
+ adds r6, r7, 0\n\
+ ldr r4, _080906FC @ =0x00000fff\n\
+_080906C8:\n\
+ lsls r0, r3, 1\n\
+ adds r0, r6, r0\n\
+ ldr r2, _08090704 @ =0x06000032\n\
+ adds r1, r0, r2\n\
+ ldrh r2, [r1]\n\
+ ands r2, r4\n\
+ orrs r2, r5\n\
+ strh r2, [r1]\n\
+ ldr r1, _08090708 @ =0x06000072\n\
+ adds r0, r1\n\
+ ldrh r2, [r0]\n\
+ ands r2, r4\n\
+ orrs r2, r5\n\
+ strh r2, [r0]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0x4\n\
+ bls _080906C8\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\
+ .align 2, 0\n\
+_080906FC: .4byte 0x00000fff\n\
+_08090700: .4byte 0x06000040\n\
+_08090704: .4byte 0x06000032\n\
+_08090708: .4byte 0x06000072\n\
+ .syntax divided\n");
+}
+#endif
+
+u8 sub_809070C(u16 dexNum, u32 b, u32 c)
+{
+ u8 taskId = CreateTask(sub_8090750, 0);
+
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = dexNum;
+ gTasks[taskId].data[12] = b;
+ gTasks[taskId].data[13] = b >> 16;
+ gTasks[taskId].data[14] = c;
+ gTasks[taskId].data[15] = c >> 16;
+ return taskId;
+}
+
+/*
+void sub_8090750(u8 taskId)
+{
+ u16 dexNum = gTasks[taskId].data[1];
+
+ switch(gTasks[taskId].data[0])
+ {
+ default:
+ case 0:
+ if(!gPaletteFade.active)
+ {
+ gUnknown_03005CEC = gMain.vblankCallback;
+ SetVBlankCallback(NULL);
+ sub_8091060(0x100);
+ gTasks[taskId].data[0] = 1;
+ }
+ break;
+ case 1:
+ {
+ u16 i;
+
+ LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
+ for(i = 0; i < 0x280; i++)
+ ((u16 *)(VRAM + 0x7800))[i] += 0x2000;
+ sub_8091738(gTasks[taskId].data[1], 2, 0x3FC);
+ ResetPaletteFade();
+ LoadPalette(gPokedexMenu_Pal + 2, 0x21, 0x9E);
+ gTasks[taskId].data[0]++;
+ break;
+ }
+ case 2:
+ SetUpWindowConfig(&gWindowConfig_81E7064);
+ InitMenuWindow(&gWindowConfig_81E7064);
+ DmaClear16(3, (void *)(VRAM + 0xC000), 0x200);
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ sub_8072BD8(gDexText_RegisterComplete, 2, 0, 0xD0);
+ if(!IsNationalPokedex())
+ sub_8091154(NationalToHoennOrder(dexNum), 13, 3);
+ else
+ sub_8091154(dexNum, 13, 3);
+ sub_80911C8(dexNum, 16, 3);
+ MenuPrint(gDexText_UnknownPoke, 11, 5);
+ MenuPrint(gDexText_UnknownHeight, 16, 7);
+ MenuPrint(gDexText_UnknownWeight, 16, 9);
+ sub_8091304(&gPokedexEntries[dexNum], 11, 5);
+ sub_8091458(gPokedexEntries[dexNum].height, 16, 7);
+ sub_8091564(gPokedexEntries[dexNum].weight, 16, 9);
+ MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13);
+ sub_80917CC(14, 0x3FC);
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ {
+ u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0);
+
+ gSprites[spriteId].oam.priority = 0;
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ SetVBlankCallback(gUnknown_03005CEC);
+ gTasks[taskId].data[3] = spriteId;
+ gTasks[taskId].data[0]++;
+ break;
+ }
+ case 5:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG3CNT = 0xF07;
+ REG_DISPCNT = 0x1C40;
+ gTasks[taskId].data[0]++;
+ break;
+ case 6:
+ if(!gPaletteFade.active)
+ {
+ PlayCry1(NationalPokedexNumToSpecies(dexNum), 0);
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].func = sub_8090A3C;
}
break;
}
}
+*/ \ No newline at end of file