Match Most of Remaining Functions
This commit is contained in:
+176
-354
@@ -22,9 +22,7 @@ struct PokedexScreenData
|
||||
{
|
||||
u8 field_00;
|
||||
u8 field_01;
|
||||
u8 field_02;
|
||||
u8 field_03;
|
||||
u8 field_04;
|
||||
u8 field_02[4];
|
||||
u32 field_08;
|
||||
u32 field_0C;
|
||||
u16 field_10;
|
||||
@@ -33,9 +31,9 @@ struct PokedexScreenData
|
||||
u8 field_15;
|
||||
u8 field_16;
|
||||
u8 field_17;
|
||||
u16 field_18[0x4];
|
||||
u8 field_20[0x4];
|
||||
u8 field_24[0x4];
|
||||
u16 field_18[4];
|
||||
u8 field_20[4];
|
||||
u8 field_24[4];
|
||||
u8 field_28;
|
||||
u8 field_29;
|
||||
u8 field_2A;
|
||||
@@ -77,32 +75,32 @@ struct PokedexScreenWindowGfx
|
||||
|
||||
EWRAM_DATA struct PokedexScreenData * gUnknown_203ACF0 = NULL;
|
||||
|
||||
void sub_810287C(u8 taskId);
|
||||
void sub_8102C28(void);
|
||||
void sub_8102F80(u8 taskId);
|
||||
void sub_810317C(void);
|
||||
void sub_8103238(u8 taskId);
|
||||
void sub_810345C(void);
|
||||
u16 sub_8103518(u8 a0);
|
||||
void sub_8103924(const struct ListMenuTemplate * a0, u8 a1);
|
||||
u8 sub_81039F0(void);
|
||||
void sub_8103988(u8 a0);
|
||||
void sub_8103AC8(u8 taskId);
|
||||
u8 sub_8104234(void);
|
||||
int sub_8104284(void);
|
||||
void sub_81042EC(u8 taskId);
|
||||
bool32 sub_8104664(u8 a0);
|
||||
static void sub_810287C(u8 taskId);
|
||||
static void sub_8102C28(void);
|
||||
static void sub_8102F80(u8 taskId);
|
||||
static void sub_810317C(void);
|
||||
static void sub_8103238(u8 taskId);
|
||||
static void sub_810345C(void);
|
||||
static u16 sub_8103518(u8 a0);
|
||||
static void sub_8103924(const struct ListMenuTemplate * a0, u8 a1);
|
||||
static u8 sub_81039F0(void);
|
||||
static void sub_8103988(u8 a0);
|
||||
static void sub_8103AC8(u8 taskId);
|
||||
static u8 sub_8104234(void);
|
||||
static int sub_8104284(void);
|
||||
static void sub_81042EC(u8 taskId);
|
||||
static bool32 sub_8104664(u8 a0);
|
||||
void sub_81047B0(u8 *windowId_p);
|
||||
void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
|
||||
void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx);
|
||||
static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx);
|
||||
void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y);
|
||||
u16 sub_8104BBC(u8 caseId, bool8 whichDex);
|
||||
static u16 sub_8104BBC(u8 caseId, bool8 whichDex);
|
||||
void sub_8104C2C(const u8 *src);
|
||||
void sub_8104E90(void);
|
||||
bool8 sub_8104F0C(bool8 a0);
|
||||
void sub_8105058(u8 a0);
|
||||
void sub_8105178(u8 a0, u8 a1, u8 a2);
|
||||
bool8 sub_81052D0(u8 a0);
|
||||
static bool8 sub_81052D0(u8 a0);
|
||||
void sub_8105594(u8 a0, u8 a1);
|
||||
void sub_8105E1C(u8 a0);
|
||||
void sub_8106014(void);
|
||||
@@ -119,9 +117,9 @@ void sub_8106E78(const u8 *a0, s32 a1);
|
||||
|
||||
#include "data/pokemon_graphics/footprint_table.h"
|
||||
|
||||
const u32 gUnknown_8440124[] = INCBIN_U32("graphics/pokedex/unk_8440124.bin.lz");
|
||||
const u32 gUnknown_8440274[] = INCBIN_U32("graphics/pokedex/unk_8440274.4bpp.lz");
|
||||
const u32 gUnknown_84403AC[] = INCBIN_U32("graphics/pokedex/unk_84403AC.4bpp.lz");
|
||||
const u8 gUnknown_8440124[] = INCBIN_U8("graphics/pokedex/unk_8440124.bin.lz");
|
||||
const u8 gUnknown_8440274[] = INCBIN_U8("graphics/pokedex/unk_8440274.4bpp.lz");
|
||||
const u8 gUnknown_84403AC[] = INCBIN_U8("graphics/pokedex/unk_84403AC.4bpp.lz");
|
||||
const u16 gUnknown_84404C8[] = INCBIN_U16("graphics/pokedex/unk_84404C8.gbapal");
|
||||
|
||||
const u16 gUnknown_84406C8[] = {
|
||||
@@ -242,21 +240,21 @@ void sub_810250C(void)
|
||||
ScanlineEffect_Stop();
|
||||
ResetBgsAndClearDma3BusyFlags(TRUE);
|
||||
InitBgsFromTemplates(0, gUnknown_8451EBC, NELEMS(gUnknown_8451EBC));
|
||||
SetBgTilemapBuffer(3, Alloc(BG_SCREEN_SIZE));
|
||||
SetBgTilemapBuffer(2, Alloc(BG_SCREEN_SIZE));
|
||||
SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE));
|
||||
SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
|
||||
SetBgTilemapBuffer(3, (u16*)Alloc(BG_SCREEN_SIZE));
|
||||
SetBgTilemapBuffer(2, (u16*)Alloc(BG_SCREEN_SIZE));
|
||||
SetBgTilemapBuffer(1, (u16*)Alloc(BG_SCREEN_SIZE));
|
||||
SetBgTilemapBuffer(0, (u16*)Alloc(BG_SCREEN_SIZE));
|
||||
if (natDex)
|
||||
DecompressAndLoadBgGfxUsingHeap(3, gUnknown_84403AC, BG_SCREEN_SIZE, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(3, (void*)gUnknown_84403AC, BG_SCREEN_SIZE, 0, 0);
|
||||
else
|
||||
DecompressAndLoadBgGfxUsingHeap(3, gUnknown_8440274, BG_SCREEN_SIZE, 0, 0);
|
||||
DecompressAndLoadBgGfxUsingHeap(3, (void*)gUnknown_8440274, BG_SCREEN_SIZE, 0, 0);
|
||||
InitWindows(gUnknown_8451ECC);
|
||||
DeactivateAllTextPrinters();
|
||||
m4aSoundVSyncOn();
|
||||
SetVBlankCallback(sub_81024C0);
|
||||
EnableInterrupts(INTR_FLAG_VBLANK);
|
||||
taskId = CreateTask(sub_810287C, 0);
|
||||
gUnknown_203ACF0 = Alloc(sizeof(*gUnknown_203ACF0));
|
||||
gUnknown_203ACF0 = Alloc(sizeof(struct PokedexScreenData));
|
||||
*gUnknown_203ACF0 = gUnknown_8451EE4;
|
||||
gUnknown_203ACF0->field_00 = taskId;
|
||||
gUnknown_203ACF0->field_44 = Alloc(NATIONAL_DEX_COUNT * sizeof(struct ListMenuItem));
|
||||
@@ -336,7 +334,7 @@ void sub_8102858(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810287C(u8 taskId)
|
||||
static void sub_810287C(u8 taskId)
|
||||
{
|
||||
int i;
|
||||
switch (gUnknown_203ACF0->field_01)
|
||||
@@ -474,7 +472,7 @@ void sub_810287C(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8102C28(void)
|
||||
static void sub_8102C28(void)
|
||||
{
|
||||
struct ListMenuTemplate listMenuTemplate;
|
||||
FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00);
|
||||
@@ -541,15 +539,15 @@ void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list)
|
||||
CopyWindowToVram(gUnknown_203ACF0->field_15, COPYWIN_GFX);
|
||||
}
|
||||
|
||||
void sub_8102F48(u8 windowId, s32 itemId, u8 y)
|
||||
void sub_8102F48(u8 windowId, u32 itemId, u8 y)
|
||||
{
|
||||
if (itemId < 0 || itemId > 8 || gUnknown_203ACF0->field_08 & (1 << itemId))
|
||||
if (itemId > 8 || gUnknown_203ACF0->field_08 & (1 << itemId))
|
||||
ListMenuOverrideSetColors(1, 0, 3);
|
||||
else
|
||||
ListMenuOverrideSetColors(10, 0, 11);
|
||||
}
|
||||
|
||||
void sub_8102F80(u8 taskId)
|
||||
static void sub_8102F80(u8 taskId)
|
||||
{
|
||||
switch (gUnknown_203ACF0->field_01)
|
||||
{
|
||||
@@ -616,7 +614,7 @@ void sub_8102F80(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810317C(void)
|
||||
static void sub_810317C(void)
|
||||
{
|
||||
struct ListMenuTemplate template;
|
||||
FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00);
|
||||
@@ -635,7 +633,7 @@ void sub_810317C(void)
|
||||
CopyWindowToVram(1, COPYWIN_GFX);
|
||||
}
|
||||
|
||||
void sub_8103238(u8 taskId)
|
||||
static void sub_8103238(u8 taskId)
|
||||
{
|
||||
switch (gUnknown_203ACF0->field_01)
|
||||
{
|
||||
@@ -702,7 +700,7 @@ void sub_8103238(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_810345C(void)
|
||||
static void sub_810345C(void)
|
||||
{
|
||||
struct ListMenuTemplate template;
|
||||
FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00);
|
||||
@@ -721,7 +719,7 @@ void sub_810345C(void)
|
||||
CopyWindowToVram(1, COPYWIN_GFX);
|
||||
}
|
||||
|
||||
u16 sub_8103518(u8 a0)
|
||||
static u16 sub_8103518(u8 a0)
|
||||
{
|
||||
s32 max_n = IsNationalPokedexEnabled() ? NATIONAL_DEX_COUNT : KANTO_DEX_COUNT;
|
||||
u16 ndex_num;
|
||||
@@ -841,7 +839,7 @@ u16 sub_8103518(u8 a0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void sub_8103924(const struct ListMenuTemplate * template, u8 a1)
|
||||
static void sub_8103924(const struct ListMenuTemplate * template, u8 a1)
|
||||
{
|
||||
switch (a1)
|
||||
{
|
||||
@@ -861,7 +859,7 @@ void sub_8103924(const struct ListMenuTemplate * template, u8 a1)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8103988(u8 a0)
|
||||
static void sub_8103988(u8 a0)
|
||||
{
|
||||
switch (a0)
|
||||
{
|
||||
@@ -881,7 +879,7 @@ void sub_8103988(u8 a0)
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_81039F0(void)
|
||||
static u8 sub_81039F0(void)
|
||||
{
|
||||
struct ScrollArrowsTemplate template = gUnknown_84521B4;
|
||||
if (gUnknown_203ACF0->field_48 > gUnknown_8452174.maxShowed)
|
||||
@@ -916,7 +914,7 @@ void sub_8103A40(u8 windowId, s32 itemId, u8 y)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8103AC8(u8 taskId)
|
||||
static void sub_8103AC8(u8 taskId)
|
||||
{
|
||||
int r4;
|
||||
u8 *ptr;
|
||||
@@ -977,68 +975,66 @@ void sub_8103AC8(u8 taskId)
|
||||
RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
|
||||
ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0);
|
||||
gUnknown_203ACF0->field_01 = 12;
|
||||
break;
|
||||
}
|
||||
else
|
||||
if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_LEFT))
|
||||
{
|
||||
if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_LEFT))
|
||||
if (gUnknown_203ACF0->field_2D != 0)
|
||||
{
|
||||
if (gUnknown_203ACF0->field_2D != 0)
|
||||
gUnknown_203ACF0->field_2D--;
|
||||
PlaySE(SE_SELECT);
|
||||
break;
|
||||
}
|
||||
else
|
||||
r4 = 1;
|
||||
}
|
||||
if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_RIGHT))
|
||||
{
|
||||
if (gUnknown_203ACF0->field_2D < gUnknown_203ACF0->field_2C - 1)
|
||||
{
|
||||
gUnknown_203ACF0->field_2D++;
|
||||
PlaySE(SE_SELECT);
|
||||
break;
|
||||
}
|
||||
else
|
||||
r4 = 2;
|
||||
}
|
||||
if (r4 == 0)
|
||||
r4 = sub_8104284();
|
||||
switch (r4)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
while (gUnknown_203ACF0->field_2B > gUnknown_203ACF0->field_29)
|
||||
{
|
||||
gUnknown_203ACF0->field_2B--;
|
||||
if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B))
|
||||
{
|
||||
gUnknown_203ACF0->field_2D--;
|
||||
PlaySE(SE_SELECT);
|
||||
gUnknown_203ACF0->field_01 = 8;
|
||||
break;
|
||||
}
|
||||
else
|
||||
r4 = 1;
|
||||
}
|
||||
if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_RIGHT))
|
||||
{
|
||||
if (gUnknown_203ACF0->field_2D < gUnknown_203ACF0->field_2C - 1)
|
||||
{
|
||||
gUnknown_203ACF0->field_2D++;
|
||||
PlaySE(SE_SELECT);
|
||||
break;
|
||||
}
|
||||
else
|
||||
r4 = 2;
|
||||
}
|
||||
if (r4 == 0)
|
||||
r4 = sub_8104284();
|
||||
switch (r4)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
while (gUnknown_203ACF0->field_2B > gUnknown_203ACF0->field_29)
|
||||
{
|
||||
gUnknown_203ACF0->field_2B--;
|
||||
if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B))
|
||||
{
|
||||
gUnknown_203ACF0->field_01 = 8;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gUnknown_203ACF0->field_01 != 8)
|
||||
gUnknown_203ACF0->field_01 = 6;
|
||||
break;
|
||||
case 2:
|
||||
while (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_2A - 1)
|
||||
{
|
||||
gUnknown_203ACF0->field_2B++;
|
||||
if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B))
|
||||
{
|
||||
gUnknown_203ACF0->field_01 = 10;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gUnknown_203ACF0->field_01 != 10)
|
||||
gUnknown_203ACF0->field_01 = 6;
|
||||
break;
|
||||
}
|
||||
if (JOY_NEW(B_BUTTON))
|
||||
{
|
||||
if (gUnknown_203ACF0->field_01 != 8)
|
||||
gUnknown_203ACF0->field_01 = 6;
|
||||
break;
|
||||
case 2:
|
||||
while (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_2A - 1)
|
||||
{
|
||||
gUnknown_203ACF0->field_2B++;
|
||||
if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B))
|
||||
{
|
||||
gUnknown_203ACF0->field_01 = 10;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gUnknown_203ACF0->field_01 != 10)
|
||||
gUnknown_203ACF0->field_01 = 6;
|
||||
break;
|
||||
}
|
||||
if (JOY_NEW(B_BUTTON))
|
||||
{
|
||||
gUnknown_203ACF0->field_01 = 6;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
@@ -1054,7 +1050,7 @@ void sub_8103AC8(u8 taskId)
|
||||
sub_8105058(0xFF);
|
||||
ListMenuUpdateCursorObject(gUnknown_203ACF0->field_61, 0, 0xA0, 0);
|
||||
gUnknown_203ACF0->field_2E = 0;
|
||||
gUnknown_203ACF0->field_02 = 0;
|
||||
gUnknown_203ACF0->field_02[0] = 0;
|
||||
gUnknown_203ACF0->field_01++;
|
||||
break;
|
||||
case 9:
|
||||
@@ -1085,23 +1081,23 @@ void sub_8103AC8(u8 taskId)
|
||||
gUnknown_203ACF0->field_01 = 15;
|
||||
break;
|
||||
case 15:
|
||||
gUnknown_203ACF0->field_02 = 0;
|
||||
gUnknown_203ACF0->field_03 = 0;
|
||||
gUnknown_203ACF0->field_02[0] = 0;
|
||||
gUnknown_203ACF0->field_02[1] = 0;
|
||||
gUnknown_203ACF0->field_01++;
|
||||
// fallthrough
|
||||
case 16:
|
||||
if (gUnknown_203ACF0->field_03 < 6)
|
||||
if (gUnknown_203ACF0->field_02[1] < 6)
|
||||
{
|
||||
if (!gUnknown_203ACF0->field_02)
|
||||
if (gUnknown_203ACF0->field_02[0])
|
||||
{
|
||||
gUnknown_203ACF0->field_02--;
|
||||
sub_8105594(0, gUnknown_203ACF0->field_02[1]);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203ACF0->field_02[0] = 4;
|
||||
gUnknown_203ACF0->field_02[1]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8105594(0, gUnknown_203ACF0->field_03);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203ACF0->field_02 = 4;
|
||||
gUnknown_203ACF0->field_03++;
|
||||
gUnknown_203ACF0->field_02[0]--;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1112,7 +1108,7 @@ void sub_8103AC8(u8 taskId)
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10);
|
||||
gUnknown_203ACF0->field_02 = 0;
|
||||
gUnknown_203ACF0->field_02[0] = 0;
|
||||
gUnknown_203ACF0->field_01 = 17;
|
||||
}
|
||||
break;
|
||||
@@ -1143,23 +1139,23 @@ void sub_8103AC8(u8 taskId)
|
||||
gUnknown_203ACF0->field_01 = 19;
|
||||
break;
|
||||
case 19:
|
||||
gUnknown_203ACF0->field_02 = 0;
|
||||
gUnknown_203ACF0->field_03 = 6;
|
||||
gUnknown_203ACF0->field_02[0] = 0;
|
||||
gUnknown_203ACF0->field_02[1] = 6;
|
||||
gUnknown_203ACF0->field_01++;
|
||||
// fallthrough
|
||||
case 20:
|
||||
if (gUnknown_203ACF0->field_03)
|
||||
if (gUnknown_203ACF0->field_02[1])
|
||||
{
|
||||
if (gUnknown_203ACF0->field_02)
|
||||
if (gUnknown_203ACF0->field_02[0])
|
||||
{
|
||||
gUnknown_203ACF0->field_03--;
|
||||
gUnknown_203ACF0->field_02[1]--;
|
||||
FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16);
|
||||
sub_8105594(0, gUnknown_203ACF0->field_03);
|
||||
sub_8105594(0, gUnknown_203ACF0->field_02[1]);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gUnknown_203ACF0->field_02 = 1;
|
||||
gUnknown_203ACF0->field_02[0] = 1;
|
||||
}
|
||||
else
|
||||
gUnknown_203ACF0->field_02--;
|
||||
gUnknown_203ACF0->field_02[0]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1224,7 +1220,7 @@ void sub_8103AC8(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_8104234(void)
|
||||
static u8 sub_8104234(void)
|
||||
{
|
||||
struct ScrollArrowsTemplate template = gUnknown_84524B4;
|
||||
template.fullyUpThreshold = gUnknown_203ACF0->field_29;
|
||||
@@ -1233,7 +1229,7 @@ u8 sub_8104234(void)
|
||||
return AddScrollIndicatorArrowPair(&template, &gUnknown_203ACF0->field_62);
|
||||
}
|
||||
|
||||
int sub_8104284(void)
|
||||
static int sub_8104284(void)
|
||||
{
|
||||
switch (gSaveBlock2Ptr->optionsButtonMode)
|
||||
{
|
||||
@@ -1252,13 +1248,13 @@ int sub_8104284(void)
|
||||
return 2;
|
||||
else
|
||||
return 0;
|
||||
default:
|
||||
case OPTIONS_BUTTON_MODE_HELP:
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81042EC(u8 taskId)
|
||||
static void sub_81042EC(u8 taskId)
|
||||
{
|
||||
switch (gUnknown_203ACF0->field_01)
|
||||
{
|
||||
@@ -1384,18 +1380,15 @@ void sub_81042EC(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
// HOLY HECK THIS FUNCTION NotLikeThis
|
||||
bool32 sub_8104664(u8 a0)
|
||||
static bool32 sub_8104664(u8 a0)
|
||||
{
|
||||
u16 *r12;
|
||||
u16 *r6;
|
||||
int r3;
|
||||
u16 *r6, *r12;
|
||||
|
||||
switch (gUnknown_203ACF0->field_42)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
case 0:
|
||||
r12 = &gUnknown_203ACF0->field_36;
|
||||
r6 = &gUnknown_203ACF0->field_34;
|
||||
break;
|
||||
@@ -1411,32 +1404,49 @@ bool32 sub_8104664(u8 a0)
|
||||
r6 = &gUnknown_203ACF0->field_3C;
|
||||
break;
|
||||
}
|
||||
|
||||
r3 = *r12 + *r6;
|
||||
if (a0)
|
||||
{
|
||||
if (r3 == 0)
|
||||
return FALSE;
|
||||
while (--r3 >= 0)
|
||||
|
||||
r3--;
|
||||
while (r3 >= 0) //Should be while (--r3 >= 0) without the r3-- in the body or before the while at all, but this is needed to match.
|
||||
{
|
||||
if ((((u32)gUnknown_203ACF0->field_44[r3].index) >> 16) & 1)
|
||||
if ((gUnknown_203ACF0->field_44[r3].index >> 16) & 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
r3--;
|
||||
}
|
||||
|
||||
if (r3 < 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (r3 == gUnknown_203ACF0->field_48 - 1)
|
||||
return FALSE;
|
||||
while (++r3 < gUnknown_203ACF0->field_48)
|
||||
{
|
||||
if ((((u32)gUnknown_203ACF0->field_44[r3].index) >> 16) & 1)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
r3++;
|
||||
while (r3 < gUnknown_203ACF0->field_48) //Should be while (++r3 < gUnknown_203ACF0->field_48) without the r3++ in the body or before the while at all, but this is needed to match.
|
||||
{
|
||||
if ((gUnknown_203ACF0->field_44[r3].index >> 16) & 1)
|
||||
break;
|
||||
r3++;
|
||||
}
|
||||
if (r3 >= gUnknown_203ACF0->field_48)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
gUnknown_203ACF0->field_30 = gUnknown_203ACF0->field_44[r3].index;
|
||||
|
||||
if (gUnknown_203ACF0->field_48 > 9)
|
||||
{
|
||||
if (r3 < 4)
|
||||
@@ -1444,10 +1454,10 @@ bool32 sub_8104664(u8 a0)
|
||||
*r12 = 0;
|
||||
*r6 = r3;
|
||||
}
|
||||
else if (r3 >= gUnknown_203ACF0->field_48 - 4)
|
||||
else if (r3 >= (gUnknown_203ACF0->field_48 - 4))
|
||||
{
|
||||
*r12 = gUnknown_203ACF0->field_48 - 9;
|
||||
*r6 = r3 + 9 - gUnknown_203ACF0->field_48;
|
||||
*r12 = (gUnknown_203ACF0->field_48 - 9);
|
||||
*r6 = r3 + 9 - (gUnknown_203ACF0->field_48);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1457,201 +1467,11 @@ bool32 sub_8104664(u8 a0)
|
||||
}
|
||||
else
|
||||
{
|
||||
*r12 = 0;
|
||||
*r6 = r3;
|
||||
}
|
||||
return TRUE;
|
||||
*r12 = 0;
|
||||
*r6 = r3;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
bool32 sub_8104664(u8 a0)
|
||||
{
|
||||
asm_unified("\tpush {r4-r7,lr}\n"
|
||||
"\tmov r7, r8\n"
|
||||
"\tpush {r7}\n"
|
||||
"\tlsls r0, 24\n"
|
||||
"\tlsrs r4, r0, 24\n"
|
||||
"\tldr r0, _08104684 @ =gUnknown_203ACF0\n"
|
||||
"\tldr r3, [r0]\n"
|
||||
"\tadds r2, r3, 0\n"
|
||||
"\tadds r2, 0x42\n"
|
||||
"\tldrb r2, [r2]\n"
|
||||
"\tmov r8, r0\n"
|
||||
"\tcmp r2, 0x4\n"
|
||||
"\tbgt _08104688\n"
|
||||
"\tcmp r2, 0x1\n"
|
||||
"\tbge _0810469C\n"
|
||||
"\tb _0810468C\n"
|
||||
"\t.align 2, 0\n"
|
||||
"_08104684: .4byte gUnknown_203ACF0\n"
|
||||
"_08104688:\n"
|
||||
"\tcmp r2, 0x5\n"
|
||||
"\tbeq _081046A8\n"
|
||||
"_0810468C:\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tldr r0, [r1]\n"
|
||||
"\tmovs r2, 0x36\n"
|
||||
"\tadds r2, r0\n"
|
||||
"\tmov r12, r2\n"
|
||||
"\tadds r6, r0, 0\n"
|
||||
"\tadds r6, 0x34\n"
|
||||
"\tb _081046B2\n"
|
||||
"_0810469C:\n"
|
||||
"\tmovs r0, 0x3A\n"
|
||||
"\tadds r0, r3\n"
|
||||
"\tmov r12, r0\n"
|
||||
"\tadds r6, r3, 0\n"
|
||||
"\tadds r6, 0x38\n"
|
||||
"\tb _081046B2\n"
|
||||
"_081046A8:\n"
|
||||
"\tmovs r1, 0x3E\n"
|
||||
"\tadds r1, r3\n"
|
||||
"\tmov r12, r1\n"
|
||||
"\tadds r6, r3, 0\n"
|
||||
"\tadds r6, 0x3C\n"
|
||||
"_081046B2:\n"
|
||||
"\tmov r2, r12\n"
|
||||
"\tldrh r1, [r2]\n"
|
||||
"\tldrh r0, [r6]\n"
|
||||
"\tadds r3, r1, r0\n"
|
||||
"\tcmp r4, 0\n"
|
||||
"\tbeq _08104700\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tbeq _0810474C\n"
|
||||
"\tsubs r3, 0x1\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tblt _0810474C\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tldr r0, [r1]\n"
|
||||
"\tldr r0, [r0, 0x44]\n"
|
||||
"\tlsls r2, r3, 3\n"
|
||||
"\tadds r0, r2, r0\n"
|
||||
"\tldrh r0, [r0, 0x6]\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _081046FA\n"
|
||||
"\tmov r5, r8\n"
|
||||
"\tmovs r4, 0x1\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"_081046E2:\n"
|
||||
"\tsubs r1, 0x8\n"
|
||||
"\tsubs r3, 0x1\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tblt _0810474C\n"
|
||||
"\tldr r0, [r5]\n"
|
||||
"\tldr r0, [r0, 0x44]\n"
|
||||
"\tadds r0, r1, r0\n"
|
||||
"\tldrh r0, [r0, 0x6]\n"
|
||||
"\tands r0, r4\n"
|
||||
"\tadds r2, r1, 0\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _081046E2\n"
|
||||
"_081046FA:\n"
|
||||
"\tcmp r3, 0\n"
|
||||
"\tbge _08104750\n"
|
||||
"\tb _0810474C\n"
|
||||
"_08104700:\n"
|
||||
"\tmov r2, r8\n"
|
||||
"\tldr r5, [r2]\n"
|
||||
"\tadds r0, r5, 0\n"
|
||||
"\tadds r0, 0x48\n"
|
||||
"\tldrh r4, [r0]\n"
|
||||
"\tsubs r0, r4, 0x1\n"
|
||||
"\tcmp r3, r0\n"
|
||||
"\tbeq _0810474C\n"
|
||||
"\tadds r3, 0x1\n"
|
||||
"\tcmp r3, r4\n"
|
||||
"\tbge _0810474C\n"
|
||||
"\tldr r0, [r5, 0x44]\n"
|
||||
"\tlsls r2, r3, 3\n"
|
||||
"\tadds r0, r2, r0\n"
|
||||
"\tldrh r0, [r0, 0x6]\n"
|
||||
"\tmovs r1, 0x1\n"
|
||||
"\tands r0, r1\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbne _08104740\n"
|
||||
"\tadds r1, r2, 0\n"
|
||||
"\tmovs r7, 0x1\n"
|
||||
"_0810472A:\n"
|
||||
"\tadds r1, 0x8\n"
|
||||
"\tadds r3, 0x1\n"
|
||||
"\tcmp r3, r4\n"
|
||||
"\tbge _0810474C\n"
|
||||
"\tldr r0, [r5, 0x44]\n"
|
||||
"\tadds r0, r1, r0\n"
|
||||
"\tldrh r0, [r0, 0x6]\n"
|
||||
"\tands r0, r7\n"
|
||||
"\tadds r2, r1, 0\n"
|
||||
"\tcmp r0, 0\n"
|
||||
"\tbeq _0810472A\n"
|
||||
"_08104740:\n"
|
||||
"\tmov r1, r8\n"
|
||||
"\tldr r0, [r1]\n"
|
||||
"\tadds r0, 0x48\n"
|
||||
"\tldrh r0, [r0]\n"
|
||||
"\tcmp r3, r0\n"
|
||||
"\tblt _08104750\n"
|
||||
"_0810474C:\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tb _081047A6\n"
|
||||
"_08104750:\n"
|
||||
"\tmov r0, r8\n"
|
||||
"\tldr r1, [r0]\n"
|
||||
"\tldr r0, [r1, 0x44]\n"
|
||||
"\tadds r0, r2, r0\n"
|
||||
"\tldr r0, [r0, 0x4]\n"
|
||||
"\tstr r0, [r1, 0x30]\n"
|
||||
"\tadds r1, 0x48\n"
|
||||
"\tldrh r0, [r1]\n"
|
||||
"\tcmp r0, 0x9\n"
|
||||
"\tbls _0810479C\n"
|
||||
"\tcmp r3, 0x3\n"
|
||||
"\tbgt _08104770\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmov r1, r12\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tb _081047A2\n"
|
||||
"_08104770:\n"
|
||||
"\tldrh r1, [r1]\n"
|
||||
"\tsubs r0, r1, 0x4\n"
|
||||
"\tcmp r3, r0\n"
|
||||
"\tblt _08104790\n"
|
||||
"\tsubs r0, 0x5\n"
|
||||
"\tmov r2, r12\n"
|
||||
"\tstrh r0, [r2]\n"
|
||||
"\tadds r1, r3, 0\n"
|
||||
"\tadds r1, 0x9\n"
|
||||
"\tmov r2, r8\n"
|
||||
"\tldr r0, [r2]\n"
|
||||
"\tadds r0, 0x48\n"
|
||||
"\tldrh r0, [r0]\n"
|
||||
"\tsubs r1, r0\n"
|
||||
"\tstrh r1, [r6]\n"
|
||||
"\tb _081047A4\n"
|
||||
"_08104790:\n"
|
||||
"\tsubs r0, r3, 0x4\n"
|
||||
"\tmov r1, r12\n"
|
||||
"\tstrh r0, [r1]\n"
|
||||
"\tmovs r0, 0x4\n"
|
||||
"\tstrh r0, [r6]\n"
|
||||
"\tb _081047A4\n"
|
||||
"_0810479C:\n"
|
||||
"\tmovs r0, 0\n"
|
||||
"\tmov r2, r12\n"
|
||||
"\tstrh r0, [r2]\n"
|
||||
"_081047A2:\n"
|
||||
"\tstrh r3, [r6]\n"
|
||||
"_081047A4:\n"
|
||||
"\tmovs r0, 0x1\n"
|
||||
"_081047A6:\n"
|
||||
"\tpop {r3}\n"
|
||||
"\tmov r8, r3\n"
|
||||
"\tpop {r4-r7}\n"
|
||||
"\tpop {r1}\n"
|
||||
"\tbx r1");
|
||||
}
|
||||
#endif //NONMATCHING
|
||||
|
||||
void sub_81047B0(u8 *windowId_p)
|
||||
{
|
||||
@@ -1706,7 +1526,7 @@ void sub_8104880(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx)
|
||||
sub_81047C8(windowId, fontId, buff, x, y, colorIdx);
|
||||
}
|
||||
|
||||
void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx)
|
||||
static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx)
|
||||
{
|
||||
u8 buff[4];
|
||||
int i;
|
||||
@@ -1794,7 +1614,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies)
|
||||
return retVal;
|
||||
}
|
||||
|
||||
u16 sub_8104BBC(u8 caseId, bool8 whichDex)
|
||||
static u16 sub_8104BBC(u8 caseId, bool8 whichDex)
|
||||
{
|
||||
u16 count = 0;
|
||||
u16 i;
|
||||
@@ -2024,28 +1844,28 @@ bool8 sub_81051F0(u8 a0)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_81052D0(u8 a0)
|
||||
static bool8 sub_81052D0(u8 a0)
|
||||
{
|
||||
u16 r4;
|
||||
if (IsNationalPokedexEnabled())
|
||||
r4 = gUnknown_84406E0[7];
|
||||
else
|
||||
r4 = gUnknown_84404C8[7];
|
||||
switch (gUnknown_203ACF0->field_02)
|
||||
switch (gUnknown_203ACF0->field_02[0])
|
||||
{
|
||||
case 0:
|
||||
gUnknown_203ACF0->field_5C = Alloc(3 * BG_SCREEN_SIZE);
|
||||
if (a0)
|
||||
gUnknown_203ACF0->field_02 = 6;
|
||||
gUnknown_203ACF0->field_02[0] = 6;
|
||||
else
|
||||
gUnknown_203ACF0->field_02 = 2;
|
||||
gUnknown_203ACF0->field_02[0] = 2;
|
||||
break;
|
||||
case 1:
|
||||
Free(gUnknown_203ACF0->field_5C);
|
||||
return TRUE;
|
||||
case 2:
|
||||
BeginNormalPaletteFade(0x00007FFF, 0, 0, 16, r4);
|
||||
gUnknown_203ACF0->field_02++;
|
||||
gUnknown_203ACF0->field_02[0]++;
|
||||
break;
|
||||
case 3:
|
||||
FillBgTilemapBufferRect_Palette0(3, 0x00C, 0, 0, 30, 20);
|
||||
@@ -2054,7 +1874,7 @@ bool8 sub_81052D0(u8 a0)
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
CopyBgTilemapBufferToVram(2);
|
||||
CopyBgTilemapBufferToVram(3);
|
||||
gUnknown_203ACF0->field_02++;
|
||||
gUnknown_203ACF0->field_02[0]++;
|
||||
break;
|
||||
case 4:
|
||||
BeginNormalPaletteFade(0x00007FFF, 0, 0, 0, r4);
|
||||
@@ -2065,40 +1885,42 @@ bool8 sub_81052D0(u8 a0)
|
||||
FillBgTilemapBufferRect_Palette0(3, 0x00C, 0, 0, 30, 20);
|
||||
FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 32, 20);
|
||||
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20);
|
||||
gUnknown_203ACF0->field_03 = 0;
|
||||
gUnknown_203ACF0->field_02++;
|
||||
|
||||
gUnknown_203ACF0->field_02[1] = 0;
|
||||
gUnknown_203ACF0->field_02[0]++;
|
||||
PlaySE(SE_BALL_TRAY_ENTER);
|
||||
break;
|
||||
case 5:
|
||||
if (gUnknown_203ACF0->field_03 < 10)
|
||||
if (gUnknown_203ACF0->field_02[1] < 10)
|
||||
{
|
||||
sub_81051F0(gUnknown_203ACF0->field_03);
|
||||
gUnknown_203ACF0->field_03++;
|
||||
sub_81051F0(gUnknown_203ACF0->field_02[1]);
|
||||
gUnknown_203ACF0->field_02[1]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_203ACF0->field_02 = 1;
|
||||
gUnknown_203ACF0->field_02[0] = 1;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
CpuFastCopy(GetBgTilemapBuffer(3), &gUnknown_203ACF0->field_5C[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE);
|
||||
CpuFastCopy(GetBgTilemapBuffer(2), &gUnknown_203ACF0->field_5C[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE);
|
||||
CpuFastCopy(GetBgTilemapBuffer(1), &gUnknown_203ACF0->field_5C[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE);
|
||||
gUnknown_203ACF0->field_03 = 9;
|
||||
gUnknown_203ACF0->field_02++;
|
||||
|
||||
gUnknown_203ACF0->field_02[1] = 9;
|
||||
gUnknown_203ACF0->field_02[0]++;
|
||||
PlaySE(SE_BALL_TRAY_ENTER);
|
||||
break;
|
||||
case 7:
|
||||
if (gUnknown_203ACF0->field_03 != 0)
|
||||
if (gUnknown_203ACF0->field_02[1] != 0)
|
||||
{
|
||||
sub_81051F0(gUnknown_203ACF0->field_03);
|
||||
gUnknown_203ACF0->field_03--;
|
||||
sub_81051F0(gUnknown_203ACF0->field_02[1]);
|
||||
gUnknown_203ACF0->field_02[1]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_81051F0(gUnknown_203ACF0->field_02);
|
||||
sub_81051F0(gUnknown_203ACF0->field_02[0]);
|
||||
BeginNormalPaletteFade(0x00007FFF, 0, 16, 16, r4);
|
||||
gUnknown_203ACF0->field_02++;
|
||||
gUnknown_203ACF0->field_02[0]++;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
@@ -2107,12 +1929,12 @@ bool8 sub_81052D0(u8 a0)
|
||||
CopyBgTilemapBufferToVram(1);
|
||||
CopyBgTilemapBufferToVram(2);
|
||||
CopyBgTilemapBufferToVram(3);
|
||||
gUnknown_203ACF0->field_02++;
|
||||
gUnknown_203ACF0->field_02[0]++;
|
||||
break;
|
||||
case 9:
|
||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||
BeginNormalPaletteFade(0x00007FFF, 0, 16, 0, r4);
|
||||
gUnknown_203ACF0->field_02 = 1;
|
||||
gUnknown_203ACF0->field_02[0] = 1;
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
Reference in New Issue
Block a user