sub_8103AC8

This commit is contained in:
PikalaxALT
2019-12-11 17:06:27 -05:00
parent f55abfddc5
commit 0d586d304d
4 changed files with 338 additions and 888 deletions
+4 -4
View File
@@ -50,7 +50,7 @@ static EWRAM_DATA struct ScrollArrowsTemplate sTempScrollArrowTemplate = {0};
static void SpriteCallback_ScrollIndicatorArrow(struct Sprite *sprite);
static void SpriteCallback_RedArrowCursor(struct Sprite *sprite);
static void Task_ScrollIndicatorArrowPair(u8 taskId);
static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor);
static u8 ListMenuAddRedArrowCursorObject(const struct CursorStruct *cursor);
static void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y);
static void ListMenuRemoveRedArrowCursorObject(u8 taskId);
@@ -422,7 +422,7 @@ void RemoveScrollIndicatorArrowPair(u8 taskId)
DestroyTask(taskId);
}
u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind)
u8 ListMenuAddCursorObjectInternal(const struct CursorStruct *cursor, u32 cursorKind)
{
switch (cursorKind)
{
@@ -528,7 +528,7 @@ void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, st
}
}
u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor)
u8 ListMenuAddRedOutlineCursorObject(const struct CursorStruct *cursor)
{
struct CompressedSpriteSheet spriteSheet;
struct SpritePalette spritePal;
@@ -601,7 +601,7 @@ static void Task_RedArrowCursor(u8 taskId)
{
}
static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor)
static u8 ListMenuAddRedArrowCursorObject(const struct CursorStruct *cursor)
{
struct CompressedSpriteSheet spriteSheet;
struct SpritePalette spritePal;
+332 -4
View File
@@ -28,7 +28,9 @@ struct PokedexScreenData
{
u8 field_00;
u8 field_01;
u8 filler_02[0x6];
u8 field_02;
u8 field_03;
u8 filler_04[0x4];
u32 field_08;
u32 field_0C;
u16 field_10;
@@ -37,9 +39,10 @@ struct PokedexScreenData
u8 field_15;
u8 field_16;
u8 field_17;
u8 filler_18[0x10];
u16 field_18[0x8];
u8 field_28;
u8 filler_29[0x2];
u8 field_29;
u8 field_2A;
u8 field_2B;
u8 field_2C;
u8 field_2D;
@@ -61,6 +64,7 @@ struct PokedexScreenData
u16 field_5A;
u8 filler_5C[0x4];
u8 field_60;
u8 field_61;
u16 field_62;
u8 filler_64[0x2];
u16 field_66;
@@ -88,15 +92,30 @@ void sub_8103924(const struct ListMenuTemplate * a0, u8 a1);
u8 sub_81039F0(void);
void sub_8103988(u8 a0);
void sub_8103AC8(u8 taskId);
int sub_8104284(void);
u8 sub_8104234(void);
void sub_81042EC(u8 taskId);
void sub_81047B0(u8 *a0);
void sub_81047C8(u8 a0, u8 a1, const u8 *a2, u8 a3, u8 a4, u8 a5);
void sub_810491C(u8 a0, u8 a1, u16 a2, u8 a3, u8 a4, u8 a5);
void sub_8104A34(u8 windowId, u8 a1, u16 species, u8 a3, u8 y);
u16 sub_8104BBC(u8 a0, u8 a1);
void sub_8104C2C(const u8 *a0);
void sub_81042EC(u8 taskId);
void sub_8104E90(void);
void sub_8104F0C(u8 a0);
void sub_8105058(u8 a0);
void sub_8105178(u8 a0, u8 a1, u8 a2);
bool8 sub_81052D0(u8 a0);
void sub_8105594(u8 a0, u8 a1);
void sub_8105E1C(u8 a0);
void sub_8106014(void);
void sub_810603C(void);
bool8 sub_8106838(u8 a0, u8 a1);
u8 sub_81068A0(u8 a0);
void sub_810699C(u8 a0);
bool8 sub_8106A20(u16 a0);
void sub_81067C0(void);
void sub_8106B34(void);
void sub_8106E78(const u8 *a0, s32 a1);
extern const u32 gUnknown_8440274[];
@@ -124,6 +143,7 @@ extern const struct ScrollArrowsTemplate gUnknown_84520E4;
extern const struct PokedexScreenWindowGfx gUnknown_84520F4[];
extern const struct ListMenuWindowRect gUnknown_845218C;
extern const struct ScrollArrowsTemplate gUnknown_84521B4;
extern const struct CursorStruct gUnknown_84524C4;
void sub_81024C0(void)
{
@@ -835,3 +855,311 @@ void sub_8103A40(u8 windowId, s32 itemId, u8 y)
BlitMoveInfoIcon(gUnknown_203ACF0->field_40, gBaseStats[species].type2 + 1, 0x98, y);
}
}
void sub_8103AC8(u8 taskId)
{
int r4;
u8 *ptr;
switch (gUnknown_203ACF0->field_01)
{
case 0:
HideBg(3);
HideBg(2);
HideBg(1);
sub_810699C(gUnknown_203ACF0->field_28);
if (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_29)
gUnknown_203ACF0->field_2B = gUnknown_203ACF0->field_29;
gUnknown_203ACF0->field_01 = 2;
break;
case 1:
sub_8104E90();
HideBg(2);
HideBg(1);
switch (gUnknown_203ACF0->field_2F)
{
case 0:
default:
gTasks[taskId].func = sub_810287C;
break;
case 1:
gTasks[taskId].func = sub_8103238;
break;
}
gUnknown_203ACF0->field_01 = 0;
break;
case 2:
sub_8104F0C(0);
CopyBgTilemapBufferToVram(3);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(1);
sub_8105058(0xFF);
gUnknown_203ACF0->field_01 = 3;
break;
case 3:
BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA);
ShowBg(3);
ShowBg(2);
ShowBg(1);
gUnknown_203ACF0->field_01 = 4;
break;
case 4:
gUnknown_203ACF0->field_60 = sub_8104234();
gUnknown_203ACF0->field_61 = ListMenuAddCursorObjectInternal(&gUnknown_84524C4, 0);
gUnknown_203ACF0->field_01 = 5;
break;
case 5:
sub_8105058(gUnknown_203ACF0->field_2D);
sub_8105178(gUnknown_203ACF0->field_61, gUnknown_203ACF0->field_2D, gUnknown_203ACF0->field_2C);
gUnknown_203ACF0->field_62 = gUnknown_203ACF0->field_2B;
r4 = 0;
if (JOY_NEW(A_BUTTON) && sub_8104AB0(gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D], FLAG_GET_SEEN, 1))
{
RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0);
gUnknown_203ACF0->field_01 = 12;
}
else
{
if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_LEFT))
{
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_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))
{
gUnknown_203ACF0->field_01 = 6;
}
}
break;
case 6:
case 7:
RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0);
BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA);
gUnknown_203ACF0->field_01 = 1;
break;
case 8:
case 10:
sub_8104E90();
sub_8105058(0xFF);
ListMenuUpdateCursorObject(gUnknown_203ACF0->field_61, 0, 0xA0, 0);
gUnknown_203ACF0->field_2E = 0;
gUnknown_203ACF0->field_02 = 0;
gUnknown_203ACF0->field_01++;
break;
case 9:
if (sub_81052D0(0))
{
gUnknown_203ACF0->field_2D = gUnknown_203ACF0->field_2C - 1;
gUnknown_203ACF0->field_01 = 5;
}
break;
case 11:
if (sub_81052D0(1))
{
gUnknown_203ACF0->field_2D = 0;
gUnknown_203ACF0->field_01 = 5;
}
break;
case 12:
gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D];
PlaySE(SE_SELECT);
gUnknown_203ACF0->field_01 = 14;
break;
case 13:
sub_8106014();
gUnknown_203ACF0->field_01 = 4;
break;
case 14:
sub_8105E1C(0);
gUnknown_203ACF0->field_01 = 15;
break;
case 15:
gUnknown_203ACF0->field_02 = 0;
gUnknown_203ACF0->field_03 = 0;
gUnknown_203ACF0->field_01++;
// fallthrough
case 16:
if (gUnknown_203ACF0->field_03 < 6)
{
if (!gUnknown_203ACF0->field_02)
{
gUnknown_203ACF0->field_02--;
}
else
{
sub_8105594(0, gUnknown_203ACF0->field_03);
CopyBgTilemapBufferToVram(0);
gUnknown_203ACF0->field_02 = 4;
gUnknown_203ACF0->field_03++;
}
}
else
{
FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16);
CopyBgTilemapBufferToVram(3);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(0);
PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10);
gUnknown_203ACF0->field_02 = 0;
gUnknown_203ACF0->field_01 = 17;
}
break;
case 17:
if (JOY_NEW(A_BUTTON))
{
sub_8106014();
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16);
CopyBgTilemapBufferToVram(1);
gUnknown_203ACF0->field_01 = 21;
}
else if (JOY_NEW(B_BUTTON))
{
gUnknown_203ACF0->field_01 = 18;
}
else
{
sub_8106B34();
}
break;
case 18:
sub_8104F0C(0);
sub_8105594(0, 6);
CopyBgTilemapBufferToVram(3);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(0);
gUnknown_203ACF0->field_01 = 19;
break;
case 19:
gUnknown_203ACF0->field_02 = 0;
gUnknown_203ACF0->field_03 = 6;
gUnknown_203ACF0->field_01++;
// fallthrough
case 20:
if (gUnknown_203ACF0->field_03)
{
if (gUnknown_203ACF0->field_02)
{
gUnknown_203ACF0->field_03--;
FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16);
sub_8105594(0, gUnknown_203ACF0->field_03);
CopyBgTilemapBufferToVram(0);
gUnknown_203ACF0->field_02 = 1;
}
else
gUnknown_203ACF0->field_02--;
}
else
{
FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16);
CopyBgTilemapBufferToVram(0);
gUnknown_203ACF0->field_01 = 13;
}
break;
case 21:
sub_810603C();
gUnknown_203ACF0->field_01 = 22;
break;
case 22:
CopyBgTilemapBufferToVram(3);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(0);
gUnknown_203ACF0->field_01 = 23;
break;
case 23:
if (JOY_NEW(A_BUTTON))
{
FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 2, 30, 16);
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16);
FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(0);
gUnknown_203ACF0->field_01 = 26;
}
else if (JOY_NEW(B_BUTTON))
{
FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 2, 30, 16);
FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16);
FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(0);
gUnknown_203ACF0->field_01 = 24;
}
else
{
sub_8106B34();
}
break;
case 24:
sub_81067C0();
gUnknown_203ACF0->field_01 = 25;
break;
case 25:
sub_8105E1C(0);
CopyBgTilemapBufferToVram(3);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(0);
gUnknown_203ACF0->field_01 = 17;
break;
case 26:
sub_81067C0();
gUnknown_203ACF0->field_01 = 18;
break;
}
}