summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-06-14 19:04:24 -0400
committerluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-06-14 19:04:24 -0400
commit7cabc3d1a51a48a31b02d1c24b26da2a5c654f35 (patch)
tree22604fd633f5a4b8d76d11642e00940813c806bd /src
parentbc143a695d54f7ac663b2b3f1ea98c53b21842e2 (diff)
pokemon_summary_screen.c, part 2.
Also fix prototype of MenuHelpers_CallLinkSomething.
Diffstat (limited to 'src')
-rw-r--r--src/berry_pouch.c6
-rw-r--r--src/item_menu.c8
-rw-r--r--src/item_pc.c2
-rw-r--r--src/menu_helpers.c4
-rw-r--r--src/option_menu.c6
-rw-r--r--src/pokemon_summary_screen.c278
-rw-r--r--src/tm_case.c6
7 files changed, 277 insertions, 33 deletions
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
index b6a5763fb..487667ad2 100644
--- a/src/berry_pouch.c
+++ b/src/berry_pouch.c
@@ -457,7 +457,7 @@ static void CB2_InitBerryPouch(void)
{
while (1)
{
- if ((u8)MenuHelpers_CallLinkSomething() == TRUE)
+ if (MenuHelpers_CallLinkSomething() == TRUE)
break;
if (RunBerryPouchInit() == TRUE)
break;
@@ -934,7 +934,7 @@ static void Task_BerryPouchMain(u8 taskId)
{
s16 * data = gTasks[taskId].data;
s32 menuInput;
- if (!gPaletteFade.active && (u8)MenuHelpers_CallLinkSomething() != TRUE)
+ if (!gPaletteFade.active && MenuHelpers_CallLinkSomething() != TRUE)
{
menuInput = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow);
@@ -1040,7 +1040,7 @@ static void Task_NormalContextMenu(u8 taskId)
static void Task_NormalContextMenu_HandleInput(u8 taskId)
{
s8 input;
- if ((u8)MenuHelpers_CallLinkSomething() != TRUE)
+ if (MenuHelpers_CallLinkSomething() != TRUE)
{
input = Menu_ProcessInputNoWrapAround();
switch (input)
diff --git a/src/item_menu.c b/src/item_menu.c
index 5ab87c9a0..3002c3970 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -377,7 +377,7 @@ static void CB2_OpenBagMenu(void)
{
while (1)
{
- if ((u8)MenuHelpers_CallLinkSomething() == TRUE)
+ if (MenuHelpers_CallLinkSomething() == TRUE)
break;
if (LoadBagMenuGraphics() == TRUE)
break;
@@ -1050,7 +1050,7 @@ static void Task_BagMenu_HandleInput(u8 taskId)
return;
if (FuncIsActiveTask(Task_AnimateWin0v) == TRUE)
return;
- if ((u8)MenuHelpers_CallLinkSomething() == TRUE)
+ if (MenuHelpers_CallLinkSomething() == TRUE)
return;
switch (ProcessPocketSwitchInput(taskId, gBagMenuState.pocket))
{
@@ -1244,7 +1244,7 @@ static void Task_MoveItemInPocket_HandleInput(u8 taskId)
s32 input;
u16 itemsAbove;
u16 cursorPos;
- if ((u8)MenuHelpers_CallLinkSomething() == TRUE)
+ if (MenuHelpers_CallLinkSomething() == TRUE)
return;
input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &gBagMenuState.cursorPos[gBagMenuState.pocket], &gBagMenuState.itemsAbove[gBagMenuState.pocket]);
@@ -1447,7 +1447,7 @@ static void Task_ItemContext_FieldOrBattle(u8 taskId)
static void Task_FieldItemContextMenuHandleInput(u8 taskId)
{
s8 input;
- if ((u8)MenuHelpers_CallLinkSomething() != TRUE)
+ if (MenuHelpers_CallLinkSomething() != TRUE)
{
input = Menu_ProcessInputNoWrapAround();
switch (input)
diff --git a/src/item_pc.c b/src/item_pc.c
index 8ce9cd6a9..8f25e90ad 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -379,7 +379,7 @@ static bool8 ItemPc_DoGfxSetup(void)
gMain.state++;
break;
case 20:
- if ((u8)MenuHelpers_CallLinkSomething() != TRUE)
+ if (MenuHelpers_CallLinkSomething() != TRUE)
gMain.state++;
break;
default:
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 6649a543a..01ea44ae5 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -120,7 +120,7 @@ bool8 MenuHelpers_LinkSomething(void)
return FALSE;
}
-bool32 MenuHelpers_CallLinkSomething(void)
+bool8 MenuHelpers_CallLinkSomething(void)
{
if (!MenuHelpers_LinkSomething())
return FALSE;
@@ -130,7 +130,7 @@ bool32 MenuHelpers_CallLinkSomething(void)
bool8 sub_80BF748(void)
{
- if ((u8)MenuHelpers_CallLinkSomething() == TRUE)
+ if (MenuHelpers_CallLinkSomething() == TRUE)
return TRUE;
else if (sub_800B270() != TRUE)
return FALSE;
diff --git a/src/option_menu.c b/src/option_menu.c
index 383f21ae1..f011bc1ec 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -3,7 +3,6 @@
#include "scanline_effect.h"
#include "text_window_graphics.h"
#include "menu.h"
-#include "menu_helpers.h"
#include "task.h"
#include "overworld.h"
#include "help_system.h"
@@ -12,6 +11,9 @@
#include "field_fadetransition.h"
#include "gba/m4a_internal.h"
+// can't include the one in menu_helpers.h since Task_OptionMenu needs bool32 for matching
+bool32 MenuHelpers_CallLinkSomething(void);
+
// Menu items
enum
{
@@ -369,7 +371,7 @@ static void Task_OptionMenu(u8 taskId)
sOptionMenuPtr->loadState++;
break;
case 2:
- if (MenuHelpers_CallLinkSomething() == TRUE)
+ if (((bool32)MenuHelpers_CallLinkSomething()) == TRUE)
break;
switch (OptionMenu_ProcessInput())
{
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index a271c4edf..0ca6b2633 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -3,46 +3,110 @@
#include "pokemon.h"
#include "pokemon_summary_screen.h"
#include "help_system.h"
+#include "task.h"
+#include "menu_helpers.h"
+#include "link.h"
+#include "overworld.h"
+#include "constants/songs.h"
extern void sub_8138B8C(struct Pokemon * mon);
extern void sub_8135C34(void);
+extern void sub_813B784(void);
+extern void sub_8138414(u8 curPageIndex);
+extern void sub_8134BAC(u8 taskId);
+extern void sub_8134E84(u8 taskId);
+extern void sub_813B3F0(u8 taskId);
+extern void sub_813B120(u8, s8);
+extern void sub_8137E64(u8 taskId);
struct PokemonSummaryScreenData {
- u8 temp0[0x3024];
+ u16 unk0[0x800];
+ u16 unk1000[0x800];
+ u16 unk2000[0x800];
+ u8 ALIGNED(4) unk3000[7];
+
+ u8 ALIGNED(4) unk3008;
+ u8 ALIGNED(4) unk300C;
+ u8 ALIGNED(4) unk3010;
+ u8 ALIGNED(4) unk3014;
+
+ u8 ALIGNED(4) unk3018;
+ u8 ALIGNED(4) unk301C;
+
+ u8 ALIGNED(4) unk3020;
+
bool32 isEnemyParty; /* 0x3024 */
- u8 temp3028[0x1d8];
+ struct PokeSummary {
+ u8 ALIGNED(4) unk3028[POKEMON_NAME_LENGTH];
+ u8 ALIGNED(4) unk3034[POKEMON_NAME_LENGTH + 1];
+
+ u8 ALIGNED(4) unk3040[OT_NAME_LENGTH + 1];
+ u8 ALIGNED(4) unk3048[2][OT_NAME_LENGTH + 1];
+
+ u8 ALIGNED(4) unk3058[5];
+ u8 ALIGNED(4) unk3060[7];
+ u8 ALIGNED(4) unk3068[16];
+
+ u8 ALIGNED(4) unk3078[3];
+ u8 ALIGNED(4) unk307C[7];
+ u8 ALIGNED(4) unk3084[9];
+ u8 ALIGNED(4) unk3090[5][5];
+
+ u8 ALIGNED(4) unk30AC[5][11];
+ u8 ALIGNED(4) unk30E4[5][11];
+ u8 ALIGNED(4) unk311C[5][13];
+ u8 ALIGNED(4) pssd4[5][5];
+ u8 ALIGNED(4) pssd5[5][5];
+
+ u8 ALIGNED(4) pssd6[9];
+ u8 ALIGNED(4) pssd7[9];
+
+ u8 ALIGNED(4) pssd8[13];
+ u8 ALIGNED(4) pssd9[20];
+ u8 ALIGNED(4) tempPadRemoveLater[0x2c];
+ } summary;
u8 ALIGNED(4) isEgg; /* 0x3200 */
u8 ALIGNED(4) isBadEgg; /* 0x3204 */
+
u8 ALIGNED(4) mode; /* 0x3208 */
u8 ALIGNED(4) unk320C; /* 0x320C */
u8 ALIGNED(4) lastIndex; /* 0x3210 */
u8 ALIGNED(4) curPageIndex; /* 0x3214 */
u8 ALIGNED(4) unk3218; /* 0x3218 */
u8 ALIGNED(4) isBoxMon; /* 0x321C */
- u8 ALIGNED(4) unk3220; /* 0x3220 */
+ u8 ALIGNED(4) unk3220[2]; /* 0x3220 */
+
u8 ALIGNED(4) unk3224; /* 0x3224 */
u8 ALIGNED(4) unk3228; /* 0x3228 */
u8 ALIGNED(4) unk322C; /* 0x322C */
u8 ALIGNED(4) unk3230; /* 0x3230 */
+
u8 ALIGNED(4) lockMovesFlag; /* 0x3234 */
+
u8 ALIGNED(4) unk3238; /* 0x3238 */
u8 ALIGNED(4) unk323C; /* 0x323C */
u8 ALIGNED(4) unk3240; /* 0x3240 */
u8 ALIGNED(4) unk3244; /* 0x3244 */
+ u8 ALIGNED(4) unk3248; /* 0x3248 */
+ s16 ALIGNED(4) unk324C; /* 0x324C */
- u8 temp3248[0x18];
- u16 ALIGNED(4) unk3260; /* 0x3260 */
+ u16 unk3250[5]; /* 0x3250 */
+ u16 unk325A[5]; /* 0x325A */
+ u8 ALIGNED(4) unk3264; /* 0x3264 */
+ u8 ALIGNED(4) unk3268; /* 0x3268 */
- u8 temp3264[0xc];
+ u8 ALIGNED(4) unk326C; /* 0x326C */
- u8 ALIGNED(4) unk3270; /* 0x3270 */
+ u8 ALIGNED(4) state3270; /* 0x3270 */
u8 ALIGNED(4) unk3274; /* 0x3274 */
u8 ALIGNED(4) unk3278; /* 0x3278 */
u8 ALIGNED(4) unk327C; /* 0x327C */
-
- u8 temp3280[0x10];
+ u8 ALIGNED(4) unk3280; /* 0x3280 */
+ u8 ALIGNED(4) unk3284; /* 0x3284 */
+ u8 ALIGNED(4) unk3288; /* 0x3288 */
+ u8 ALIGNED(4) unk328C; /* 0x328C */
struct Pokemon currentMon;
@@ -54,8 +118,8 @@ struct PokemonSummaryScreenData {
MainCallback savedCallback;
struct Sprite * markingSprite;
- u8 ALIGNED(4) unk3300; /* 0x3300 */
- u8 ALIGNED(4) unk3304; /* 0x3304 */
+ u8 ALIGNED(4) unk3300[2]; /* 0x3300 */
+ u8 ALIGNED(4) unk3304[3]; /* 0x3304 */
};
struct Struct203B144 {
@@ -93,7 +157,8 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx,
gMonSummaryScreen->lastIndex = lastIdx;
gMonSummaryScreen->mode = mode;
- switch (gMonSummaryScreen->mode) {
+ switch (gMonSummaryScreen->mode)
+ {
case PSS_MODE_NORMAL:
default:
SetHelpContext(HELPCONTEXT_POKEMON_INFO);
@@ -116,7 +181,7 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx,
break;
}
- gMonSummaryScreen->unk3270 = 0;
+ gMonSummaryScreen->state3270 = 0;
gMonSummaryScreen->unk3274 = 0;
gMonSummaryScreen->unk3278 = 0;
gMonSummaryScreen->unk327C = 0;
@@ -133,15 +198,192 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx,
gMonSummaryScreen->isEgg = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_IS_EGG);
gMonSummaryScreen->isBadEgg = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SANITY_IS_BAD_EGG);
- if (gMonSummaryScreen->isBadEgg == TRUE) {
+ if (gMonSummaryScreen->isBadEgg == TRUE)
gMonSummaryScreen->isEgg = TRUE;
- }
- gMonSummaryScreen->unk3300 = 0xff;
+ gMonSummaryScreen->unk3300[0] = 0xff;
SetMainCallback2(sub_8135C34);
}
-void ShowSelectMovePokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, MainCallback savedCallback, u16 a4) {
+void ShowSelectMovePokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, MainCallback savedCallback, u16 a4)
+{
ShowPokemonSummaryScreen(party, cursorPos, lastIdx, savedCallback, PSS_MODE_SELECT_MOVE);
- gMonSummaryScreen->unk3260 = a4;
+ gMonSummaryScreen->unk325A[4] = a4;
+}
+
+u8 sub_813476C(u8 a0)
+{
+ if (gMonSummaryScreen->unk301C == TRUE && gMonSummaryScreen->unk3224 != a0)
+ return TRUE;
+
+ return FALSE;
+}
+
+u32 sub_81347A4(u8 a0)
+{
+ if (gMonSummaryScreen->isEgg)
+ return FALSE;
+
+ if (gMonSummaryScreen->unk3300[0] != 0xff && gMonSummaryScreen->unk3300[0] == a0)
+ {
+ gMonSummaryScreen->unk3300[0] = 0xff;
+ return TRUE;
+ }
+
+ if (sub_813476C(a0))
+ return FALSE;
+
+ switch (a0)
+ {
+ case 1:
+ if (JOY_NEW(DPAD_RIGHT))
+ return TRUE;
+
+ if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR && JOY_NEW(R_BUTTON))
+ return TRUE;
+
+ break;
+ case 0:
+ if (JOY_NEW(DPAD_LEFT))
+ return TRUE;
+
+ if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR && JOY_NEW(L_BUTTON))
+ return TRUE;
+
+ break;
+ }
+
+ return FALSE;
+}
+
+void sub_8134840(u8 taskId)
+{
+ switch (gMonSummaryScreen->state3270) {
+ case PSS_STATE3270_0:
+ BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0);
+ gMonSummaryScreen->state3270 = PSS_STATE3270_1;
+ break;
+ case PSS_STATE3270_1:
+ if (!gPaletteFade.active)
+ {
+ sub_813B784();
+ gMonSummaryScreen->state3270 = PSS_STATE3270_2;
+ return;
+ }
+
+ gMonSummaryScreen->state3270 = PSS_STATE3270_1;
+ break;
+ case PSS_STATE3270_2:
+ if (MenuHelpers_CallLinkSomething() == TRUE)
+ return;
+ else if (sub_800B270() == TRUE)
+ return;
+ else if (FuncIsActiveTask(sub_813B3F0))
+ return;
+
+ if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO)
+ {
+ if (sub_81347A4(1) == TRUE)
+ {
+ if (FuncIsActiveTask(sub_8134BAC))
+ {
+ gMonSummaryScreen->unk3300[0] = 1;
+ return;
+ }
+ else if (gMonSummaryScreen->curPageIndex < PSS_PAGE_MOVES)
+ {
+ PlaySE(SE_SELECT);
+ HideBg(0);
+ gMonSummaryScreen->unk3224 = 1;
+ sub_8138414(gMonSummaryScreen->curPageIndex);
+ gMonSummaryScreen->curPageIndex++;
+ gMonSummaryScreen->state3270 = PSS_STATE3270_3;
+ }
+ return;
+ }
+ else if (sub_81347A4(0) == TRUE)
+ {
+ if (FuncIsActiveTask(sub_8134BAC))
+ {
+ gMonSummaryScreen->unk3300[0] = 0;
+ return;
+ }
+ else if (gMonSummaryScreen->curPageIndex > PSS_PAGE_INFO)
+ {
+ PlaySE(SE_SELECT);
+ HideBg(0);
+ gMonSummaryScreen->unk3224 = 0;
+ sub_8138414(gMonSummaryScreen->curPageIndex);
+ gMonSummaryScreen->curPageIndex--;
+ gMonSummaryScreen->state3270 = PSS_STATE3270_3;
+ }
+ return;
+ }
+ }
+
+ if ((!FuncIsActiveTask(sub_8134BAC)) || FuncIsActiveTask(sub_813B3F0))
+ {
+ if (JOY_NEW(DPAD_UP))
+ {
+ sub_813B120(taskId, -1);
+ return;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ sub_813B120(taskId, 1);
+ return;
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_INFO)
+ {
+ PlaySE(SE_SELECT);
+ gMonSummaryScreen->state3270 = PSS_STATE3270_4;
+ }
+ else if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES)
+ {
+ PlaySE(SE_SELECT);
+ gMonSummaryScreen->unk3224 = 1;
+ sub_8138414(gMonSummaryScreen->curPageIndex);
+ gMonSummaryScreen->curPageIndex++;
+ gMonSummaryScreen->state3270 = PSS_STATE3270_3;
+ }
+ return;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ gMonSummaryScreen->state3270 = PSS_STATE3270_4;
+ }
+ }
+ break;
+ case PSS_STATE3270_3:
+ if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO)
+ {
+ CreateTask(sub_8134BAC, 0);
+ gMonSummaryScreen->state3270 = PSS_STATE3270_2;
+ }
+ else
+ {
+ gTasks[gMonSummaryScreen->unk3018].func = sub_8134E84;
+ gMonSummaryScreen->state3270 = PSS_STATE3270_2;
+ }
+ break;
+ case PSS_STATE3270_4:
+ BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0);
+ gMonSummaryScreen->state3270 = PSS_STATE3270_5;
+ break;
+ case PSS_STATE3270_5:
+ if (Overworld_LinkRecvQueueLengthMoreThan2() == TRUE)
+ return;
+ else if (sub_800B270() == TRUE)
+ return;
+
+ gMonSummaryScreen->state3270 = PSS_STATE3270_6;
+ break;
+ default:
+ if (!gPaletteFade.active)
+ sub_8137E64(taskId);
+
+ break;
+ }
}
diff --git a/src/tm_case.c b/src/tm_case.c
index 060723949..c7aaa29cc 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -298,7 +298,7 @@ static void CB2_SetUpTMCaseUI_Blocking(void)
{
while (1)
{
- if ((u8)MenuHelpers_CallLinkSomething() == TRUE)
+ if (MenuHelpers_CallLinkSomething() == TRUE)
break;
if (DoSetUpTMCaseUI() == TRUE)
break;
@@ -727,7 +727,7 @@ static void Task_TMCaseMain(u8 taskId)
if (!gPaletteFade.active)
{
- if ((u8)MenuHelpers_CallLinkSomething() != TRUE)
+ if (MenuHelpers_CallLinkSomething() != TRUE)
{
input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
@@ -808,7 +808,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId)
{
s8 input;
- if ((u8)MenuHelpers_CallLinkSomething() != TRUE)
+ if (MenuHelpers_CallLinkSomething() != TRUE)
{
input = Menu_ProcessInputNoWrapAround();
switch (input)