summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-06-23 17:13:23 -0400
committerluckytyphlosion <10688458+luckytyphlosion@users.noreply.github.com>2020-06-23 17:13:23 -0400
commitd096f37d75138eba940f55bd7e1ec8bacc092935 (patch)
tree550e6b701140848311a1d63426fadf340205f0d5 /src
parent7cabc3d1a51a48a31b02d1c24b26da2a5c654f35 (diff)
pokemon_summary_screen.c, part 3.
Also commit hgrep.sh for searching in non-c files.
Diffstat (limited to 'src')
-rw-r--r--src/pokemon_summary_screen.c1066
1 files changed, 1042 insertions, 24 deletions
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 0ca6b2633..af0320be5 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -8,16 +8,67 @@
#include "link.h"
#include "overworld.h"
#include "constants/songs.h"
+#include "strings.h"
+#include "new_menu_helpers.h"
+#include "menu.h"
+#include "constants/species.h"
+#include "constants/items.h"
+#include "data.h"
+#include "item.h"
extern void sub_8138B8C(struct Pokemon * mon);
-extern void sub_8135C34(void);
+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);
+static void sub_8134BAC(u8 taskId);
+static void sub_8134E84(u8 taskId);
extern void sub_813B3F0(u8 taskId);
extern void sub_813B120(u8, s8);
extern void sub_8137E64(u8 taskId);
+void sub_8135638(void);
+void sub_81356EC(void);
+extern void sub_813B750(u8 curPageIndex);
+extern void sub_8138280(u8 curPageIndex);
+extern void sub_8137D28(u8 curPageIndex);
+void sub_8135514(void);
+u8 sub_81357A0(u8);
+extern void sub_8138440(void);
+extern void sub_8138CD8(u8 taskId);
+void sub_8135AA4(void);
+void sub_8135B90(void);
+extern void sub_8138538(void);
+extern void sub_8137D28(u8 curPageIndex);
+extern void sub_8136F4C(void);
+extern void sub_81374E8(void);
+extern void sub_8137BD0(void);
+extern void sub_8138A38(void);
+extern void sub_8136DA4(const u8 * str);
+extern void sub_8136DF0(const u8 * str);
+extern void sub_8136E50(const u8 * str);
+void sub_81358DC(u8, u8);
+extern void sub_813A838(u8 invisible);
+extern void sub_813AB70(u8 invisible);
+extern void sub_8139C44(u8 invisible);
+extern void sub_813B084(u8 invisible);
+extern void sub_8139D54(u8 invisible);
+extern void sub_813A3B8(u8 invisible);
+extern void sub_813ACF8(u8 invisible);
+extern void sub_813AEB0(u8 invisible);
+extern void sub_813A0E8(u8 invisible);
+extern void sub_8139EE4(u8 invisible);
+extern void sub_81381AC(void);
+extern void sub_8136BC4(void);
+extern void sub_8136BAC(void);
+u8 sub_8135F20(void);
+extern u8 sub_8136AEC(void);
+extern void sub_81381D0(void);
+u8 sub_8136040(void);
+extern void sub_8137E28(void);
+extern void sub_81381C0(void);
+extern void sub_8136D54(void);
+extern void sub_81360D4(void);
+extern void sub_8136350(void);
+extern void sub_81367B0(void);
struct PokemonSummaryScreenData {
u16 unk0[0x800];
@@ -38,33 +89,43 @@ struct PokemonSummaryScreenData {
bool32 isEnemyParty; /* 0x3024 */
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) 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) pad3048[0x1c];
+
+ u8 ALIGNED(4) unk3064[5];
+ //u8 ALIGNED(4) unk3060[7];
+ //u8 ALIGNED(4) unk3068[16];
+ u8 ALIGNED(4) unk306C[7];
+ u8 ALIGNED(4) unk3074[ITEM_NAME_LENGTH + 1];
- u8 ALIGNED(4) unk3058[5];
- u8 ALIGNED(4) unk3060[7];
- u8 ALIGNED(4) unk3068[16];
+ u8 ALIGNED(4) unk3084[3];
+ u8 ALIGNED(4) unk3088[7];
- u8 ALIGNED(4) unk3078[3];
- u8 ALIGNED(4) unk307C[7];
- u8 ALIGNED(4) unk3084[9];
- u8 ALIGNED(4) unk3090[5][5];
+ u8 ALIGNED(4) pad3090[0x170];
- 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) unk3090[9];
+ // u8 ALIGNED(4) unk309C[5][5];
- u8 ALIGNED(4) pssd6[9];
- u8 ALIGNED(4) pssd7[9];
+ // 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) pssd8[13];
- u8 ALIGNED(4) pssd9[20];
- u8 ALIGNED(4) tempPadRemoveLater[0x2c];
+ // 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 */
@@ -123,14 +184,56 @@ struct PokemonSummaryScreenData {
};
struct Struct203B144 {
- u8 unk0[0x28];
+ u16 unk00;
+ u16 unk02;
+ u16 unk04;
+ u16 unk06;
+ u16 unk08;
+ u16 unk0A;
+ u16 unk0C;
+ u16 unk0E;
+ u16 unk10;
+
+ u16 unk12[5];
+ u16 unk1C[5];
+
+ u16 unk26;
+};
+
+struct Struct203B160 {
+ struct Sprite * sprite00[11]; /* 0x00 */
+ u16 unk2C[11]; /* 0x2c */
+ u16 unk42; /* 0x42 */
+ u16 unk44; /* 0x44 */
+};
+
+struct Struct203B15C {
+ struct Sprite * sprite00[10]; /* 0x00 */
+ u16 unk28[10]; /* 0x28 */
+ u16 unk3C; /* 0x3c */
+ u16 unk3E; /* 0x3e */
};
extern struct PokemonSummaryScreenData * gMonSummaryScreen;
extern struct Struct203B144 * gUnknown_203B144;
+extern struct Struct203B15C * gUnknown_203B15C;
+extern struct Struct203B160 * gUnknown_203B160;
extern u8 gUnknown_203B16D;
extern u8 gUnknown_203B16E;
+extern const u32 gUnknown_8E9B750[];
+extern const u32 gUnknown_8E9B950[];
+extern const u32 gUnknown_8E9B598[];
+extern const u32 gUnknown_8E9BA9C[];
+extern const u32 gUnknown_8463C80[];
+extern const u32 gUnknown_8463B88[];
+extern const u32 gUnknown_8E9BBCC[];
+extern const u16 gUnknown_8E9B310[];
+extern const u32 gUnknown_8E9A460[];
+
+extern const u32 gUnknown_84636C0[];
+extern const u32 gUnknown_8463700[];
+
void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, MainCallback savedCallback, u8 mode)
{
gMonSummaryScreen = AllocZeroed(sizeof(struct PokemonSummaryScreenData));
@@ -173,7 +276,7 @@ void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx,
gMonSummaryScreen->lockMovesFlag = FALSE;
break;
case PSS_MODE_SELECT_MOVE:
- case PSS_MODE_UNK3:
+ case PSS_MODE_FORGET_MOVE:
SetHelpContext(HELPCONTEXT_POKEMON_MOVES);
gMonSummaryScreen->curPageIndex = PSS_PAGE_MOVES_INFO;
gMonSummaryScreen->isBoxMon = FALSE;
@@ -387,3 +490,918 @@ void sub_8134840(u8 taskId)
break;
}
}
+
+static void sub_8134BAC(u8 taskId)
+{
+ s16 * data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_8135638();
+ sub_81356EC();
+ gMonSummaryScreen->lockMovesFlag = TRUE;
+ gMonSummaryScreen->unk301C = TRUE;
+ sub_813B750(gMonSummaryScreen->curPageIndex);
+ sub_8138280(gMonSummaryScreen->curPageIndex);
+ break;
+ case 1:
+ if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO)
+ {
+ if (!(gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES && gMonSummaryScreen->unk3224 == 0))
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ }
+ }
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 2);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 2, 15, 2);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 2);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 2, 15, 2);
+ break;
+ case 2:
+ sub_8135AA4();
+ sub_8135B90();
+ sub_8138538();
+ sub_8137D28(gMonSummaryScreen->curPageIndex);
+ break;
+ case 3:
+ CopyWindowToVram(gMonSummaryScreen->unk3000[0], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[1], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[2], 2);
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ }
+ else
+ return;
+
+ break;
+ case 5:
+ sub_8135514();
+ gMonSummaryScreen->unk3244 = TRUE;
+ break;
+ case 6:
+ if (!sub_81357A0(gMonSummaryScreen->unk3224))
+ return;
+
+ break;
+ case 7:
+ sub_8136F4C();
+ if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO)
+ sub_81374E8();
+
+ sub_8137BD0();
+ sub_8138A38();
+ break;
+ case 8:
+ CopyWindowToVram(gMonSummaryScreen->unk3000[3], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[4], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[5], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[6], 2);
+ break;
+ case 9:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CopyBgTilemapBufferToVram(0);
+ ShowBg(0);
+ }
+ else
+ return;
+
+ break;
+ default:
+ sub_8138440();
+
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO)
+ gTasks[gMonSummaryScreen->unk3018].func = sub_8138CD8;
+
+ DestroyTask(taskId);
+ data[0] = 0;
+ gMonSummaryScreen->lockMovesFlag = FALSE;
+ gMonSummaryScreen->unk301C = FALSE;
+ return;
+ }
+
+ data[0]++;
+}
+
+static void sub_8134E84(u8 taskId)
+{
+ switch (gMonSummaryScreen->unk3284)
+ {
+ case 0:
+ gMonSummaryScreen->lockMovesFlag = TRUE;
+ gMonSummaryScreen->unk301C = TRUE;
+ sub_8138280(gMonSummaryScreen->curPageIndex);
+ break;
+ case 1:
+ if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO)
+ {
+ if (!(gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES && gMonSummaryScreen->unk3224 == 0))
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ }
+ }
+
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 2);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 2, 15, 2);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 2);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 2, 15, 2);
+ break;
+ case 2:
+ sub_8135638();
+ sub_813B750(gMonSummaryScreen->curPageIndex);
+ sub_8135B90();
+ sub_8138538();
+ sub_8135AA4();
+ break;
+ case 3:
+ sub_8136DA4(gUnknown_8419C39);
+ if (!(gMain.inBattle || gReceivedRemoteLinkPlayers))
+ sub_8136DF0(gUnknown_8419C92);
+ else
+ sub_8136DF0(gUnknown_8419CA2);
+
+ break;
+ case 4:
+ CopyWindowToVram(gMonSummaryScreen->unk3000[0], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[1], 2);
+ break;
+ case 5:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(3);
+ }
+ else
+ return;
+
+ break;
+ case 6:
+ sub_8136F4C();
+ sub_8137BD0();
+ CopyWindowToVram(gMonSummaryScreen->unk3000[3], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[5], 2);
+ break;
+ case 7:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CopyBgTilemapBufferToVram(0);
+ sub_8135514();
+ gMonSummaryScreen->unk3244 = TRUE;
+ }
+ else
+ return;
+
+ break;
+ case 8:
+ if (!sub_81357A0(gMonSummaryScreen->unk3224))
+ return;
+
+ sub_81374E8();
+ CopyWindowToVram(gMonSummaryScreen->unk3000[4], 2);
+ break;
+ case 9:
+ sub_8138A38();
+ sub_8136E50(gUnknown_8419C45);
+ break;
+ case 10:
+ sub_81356EC();
+ CopyWindowToVram(gMonSummaryScreen->unk3000[6], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[2], 2);
+ break;
+ case 11:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ }
+ else
+ return;
+
+ break;
+ default:
+ sub_8138440();
+ gTasks[gMonSummaryScreen->unk3018].func = sub_8138CD8;
+ gMonSummaryScreen->unk3284 = 0;
+ gMonSummaryScreen->lockMovesFlag = FALSE;
+ gMonSummaryScreen->unk301C = FALSE;
+ return;
+ }
+
+ gMonSummaryScreen->unk3284++;
+ return;
+}
+
+void sub_81351A0(u8 taskId)
+{
+ switch (gMonSummaryScreen->unk3284)
+ {
+ case 0:
+ gMonSummaryScreen->lockMovesFlag = TRUE;
+ gMonSummaryScreen->unk301C = TRUE;
+ sub_8138280(gMonSummaryScreen->curPageIndex);
+ break;
+ case 1:
+ if (gMonSummaryScreen->curPageIndex != PSS_PAGE_MOVES_INFO) {
+ if (!(gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES && gMonSummaryScreen->unk3224 == 0))
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+ }
+ }
+
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 2);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 2, 15, 2);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 30, 2);
+ FillBgTilemapBufferRect_Palette0(2, 0, 0, 2, 15, 2);
+ break;
+ case 2:
+ sub_8135AA4();
+ break;
+ case 3:
+ sub_8136F4C();
+ sub_81374E8();
+ sub_8137BD0();
+ CopyWindowToVram(gMonSummaryScreen->unk3000[3], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[4], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[5], 2);
+ CopyBgTilemapBufferToVram(0);
+ break;
+ case 4:
+ sub_8136DA4(gUnknown_8419C39);
+ sub_8136DF0(gUnknown_8419C82);
+ break;
+ case 5:
+ CopyWindowToVram(gMonSummaryScreen->unk3000[0], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[1], 2);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 6:
+ sub_8135514();
+ gMonSummaryScreen->unk3244 = TRUE;
+ sub_8135638();
+ sub_813B750(gMonSummaryScreen->curPageIndex);
+ sub_8138A38();
+ break;
+ case 7:
+ break;
+ case 8:
+ if (sub_81357A0(gMonSummaryScreen->unk3224) == 0)
+ return;
+
+ sub_8136E50(gUnknown_8419C45);
+ break;
+ case 9:
+ CopyWindowToVram(gMonSummaryScreen->unk3000[6], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[2], 2);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 10:
+ sub_8135B90();
+ sub_8138538();
+ CopyBgTilemapBufferToVram(3);
+ sub_81356EC();
+ break;
+ default:
+ sub_8138440();
+ gTasks[gMonSummaryScreen->unk3018].func = sub_8134840;
+ gMonSummaryScreen->unk3284 = 0;
+ gMonSummaryScreen->lockMovesFlag = FALSE;
+ gMonSummaryScreen->unk301C = FALSE;
+ return;
+ }
+
+ gMonSummaryScreen->unk3284++;
+ return;
+}
+
+void sub_813546C(void)
+{
+ u8 i;
+ for (i = 0; i < 11; i++)
+ {
+ gUnknown_203B160->unk2C[i] = (8 * i) + 396;
+ gUnknown_203B160->sprite00[i]->pos1.x = gUnknown_203B160->unk2C[i];
+ if (i >= 9)
+ continue;
+
+ gUnknown_203B15C->unk28[i] = (8 * i) + 412;
+ gUnknown_203B15C->sprite00[i]->pos1.x = gUnknown_203B15C->unk28[i];
+ }
+}
+
+void sub_81354C4(void)
+{
+ u8 i;
+ for (i = 0; i < 11; i++)
+ {
+ gUnknown_203B160->unk2C[i] = (8 * i) + 156;
+ gUnknown_203B160->sprite00[i]->pos1.x = gUnknown_203B160->unk2C[i];
+ if (i >= 9)
+ continue;
+ gUnknown_203B15C->unk28[i] = (8 * i) + 172;
+ gUnknown_203B15C->sprite00[i]->pos1.x = gUnknown_203B15C->unk28[i];
+ }
+}
+
+void sub_8135514(void)
+{
+ s8 pageDelta = 1;
+
+ if (gMonSummaryScreen->unk3224 == 1)
+ pageDelta = -1;
+
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO)
+ {
+ gMonSummaryScreen->unk324C = 240;
+ return;
+ }
+
+ if ((gMonSummaryScreen->curPageIndex + pageDelta) == PSS_PAGE_MOVES_INFO)
+ {
+ sub_81358DC(0, 0);
+ gMonSummaryScreen->unk324C = 0;
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ return;
+ }
+
+ if (gMonSummaryScreen->unk3224 == 1)
+ {
+ gMonSummaryScreen->unk324C = 0;
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ sub_81358DC(1, 1);
+ }
+ else
+ {
+ u32 bg1Priority = GetGpuReg(REG_OFFSET_BG1CNT) & 3;
+ u32 bg2Priority = GetGpuReg(REG_OFFSET_BG2CNT) & 3;
+ gMonSummaryScreen->unk324C = 240;
+
+ if (bg1Priority > bg2Priority)
+ SetGpuReg(REG_OFFSET_BG1HOFS, 240);
+ else
+ SetGpuReg(REG_OFFSET_BG2HOFS, 240);
+
+ SetGpuReg(REG_OFFSET_BG0HOFS, 240);
+ sub_81358DC(1, 0);
+ }
+
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS)
+ {
+ if (gMonSummaryScreen->unk3224 == 1)
+ sub_81354C4();
+ else
+ sub_813546C();
+ }
+ else if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES)
+ sub_81354C4();
+
+}
+
+void sub_8135638(void)
+{
+ u8 newPage;
+
+ if (gMonSummaryScreen->unk3224 == 1)
+ newPage = gMonSummaryScreen->curPageIndex - 1;
+ else
+ newPage = gMonSummaryScreen->curPageIndex + 1;
+
+ switch (newPage)
+ {
+ case PSS_PAGE_INFO:
+ break;
+ case PSS_PAGE_SKILLS:
+ sub_813A838(1);
+ sub_813AB70(1);
+ break;
+ case PSS_PAGE_MOVES:
+ if (gMonSummaryScreen->unk3224 == 1)
+ {
+ sub_8139C44(1);
+ sub_813B084(1);
+ sub_8139D54(1);
+ sub_813A3B8(1);
+ sub_813ACF8(1);
+ sub_813AEB0(1);
+ }
+
+ break;
+ case PSS_PAGE_MOVES_INFO:
+ sub_813A0E8(1);
+ sub_8139EE4(1);
+ sub_813A3B8(1);
+ sub_813ACF8(1);
+ sub_813AEB0(1);
+ break;
+ }
+}
+
+void sub_81356EC(void)
+{
+ u8 newPage;
+
+ if (gMonSummaryScreen->unk3224 == 1)
+ newPage = gMonSummaryScreen->curPageIndex - 1;
+ else
+ newPage = gMonSummaryScreen->curPageIndex + 1;
+
+ switch (newPage)
+ {
+ case PSS_PAGE_INFO:
+ sub_813A838(0);
+ sub_813AB70(0);
+ break;
+ case PSS_PAGE_SKILLS:
+ break;
+ case PSS_PAGE_MOVES:
+ if (gMonSummaryScreen->unk3224 == 0)
+ {
+ sub_813A838(0);
+ sub_813AB70(0);
+ }
+ else
+ {
+ sub_813A0E8(0);
+ sub_813ACF8(0);
+ sub_8139EE4(0);
+ sub_813AEB0(0);
+ }
+
+ break;
+ case PSS_PAGE_MOVES_INFO:
+ sub_8139C44(0);
+ sub_813B084(0);
+ sub_813A3B8(0);
+ sub_8139D54(0);
+ sub_813ACF8(0);
+ sub_813AEB0(0);
+ break;
+ }
+}
+
+u8 sub_81357A0(u8 a0)
+{
+ s8 pageDelta = 1;
+
+ if (gMonSummaryScreen->unk3224 == 1)
+ pageDelta = -1;
+
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_MOVES_INFO)
+ if (gMonSummaryScreen->unk324C <= 0)
+ {
+ gMonSummaryScreen->unk324C = 0;
+ gMonSummaryScreen->unk3238 ^= 1;
+ sub_81358DC(0, 0);
+ gMonSummaryScreen->unk3244 = FALSE;
+ return TRUE;
+ }
+
+ if ((gMonSummaryScreen->curPageIndex + pageDelta) == PSS_PAGE_MOVES_INFO)
+ if (gMonSummaryScreen->unk324C >= 240)
+ {
+ gMonSummaryScreen->unk324C = 240;
+ gMonSummaryScreen->unk3238 ^= 1;
+ gMonSummaryScreen->unk3244 = FALSE;
+ return TRUE;
+ }
+
+ if (gMonSummaryScreen->unk3224 == 1)
+ {
+ if (gMonSummaryScreen->unk324C >= 240)
+ {
+ gMonSummaryScreen->unk324C = 240;
+ gMonSummaryScreen->unk3238 ^= 1;
+ sub_81358DC(0, 0);
+ gMonSummaryScreen->unk3244 = FALSE;
+ return TRUE;
+ }
+ }
+ else if (gMonSummaryScreen->unk324C <= 0)
+ {
+ gMonSummaryScreen->unk3238 ^= 1;
+ gMonSummaryScreen->unk324C = 0;
+ gMonSummaryScreen->unk3244 = FALSE;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_81358DC(u8 a0, u8 a1)
+{
+ u8 i;
+ u32 bg0Priority;
+ u32 bg1Priority;
+ u32 bg2Priority;
+
+ bg0Priority = GetGpuReg(REG_OFFSET_BG0CNT) & 3;
+ bg1Priority = GetGpuReg(REG_OFFSET_BG1CNT) & 3;
+ bg2Priority = GetGpuReg(REG_OFFSET_BG2CNT) & 3;
+
+ if (gMonSummaryScreen->unk3224 == 1)
+ {
+ if (a0 == 0)
+ {
+ bg0Priority = 0;
+
+ if (a1 == 0)
+ {
+ if (bg1Priority > bg2Priority)
+ bg1Priority = 1, bg2Priority = 2;
+ else
+ bg1Priority = 2, bg2Priority = 1;
+ }
+ else
+ {
+ if (bg1Priority > bg2Priority)
+ bg1Priority = 2, bg2Priority = 1;
+ else
+ bg1Priority = 1, bg2Priority = 2;
+ }
+ }
+ if (a0 == 1)
+ {
+ bg0Priority = 1;
+
+ if (a1 == 0)
+ {
+ if (bg1Priority > bg2Priority)
+ bg1Priority = 0, bg2Priority = 2;
+ else
+ bg1Priority = 2, bg2Priority = 0;
+ }
+ else
+ {
+ if (bg1Priority > bg2Priority)
+ bg1Priority = 2, bg2Priority = 0;
+ else
+ bg1Priority = 0, bg2Priority = 2;
+ }
+ }
+ }
+
+ if (gMonSummaryScreen->unk3224 == 0)
+ {
+ bg0Priority = 0;
+ if (bg1Priority > bg2Priority)
+ bg1Priority = 1, bg2Priority = 2;
+ else
+ bg1Priority = 2, bg2Priority = 1;
+ }
+
+ for (i = 0; i < 11; i++)
+ {
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS && gMonSummaryScreen->unk3224 == 1)
+ gUnknown_203B160->sprite00[i]->oam.priority = bg0Priority;
+ else
+ gUnknown_203B160->sprite00[i]->oam.priority = bg1Priority;
+
+ if (i >= 9)
+ continue;
+
+ if (gMonSummaryScreen->curPageIndex == PSS_PAGE_SKILLS && gMonSummaryScreen->unk3224 == 1)
+ gUnknown_203B15C->sprite00[i]->oam.priority = bg0Priority;
+ else
+ gUnknown_203B15C->sprite00[i]->oam.priority = bg1Priority;
+ }
+
+ SetGpuReg(REG_OFFSET_BG0CNT, (GetGpuReg(REG_OFFSET_BG0CNT) & 0xfffc) | bg0Priority);
+ SetGpuReg(REG_OFFSET_BG1CNT, (GetGpuReg(REG_OFFSET_BG1CNT) & 0xfffc) | bg1Priority);
+ SetGpuReg(REG_OFFSET_BG2CNT, (GetGpuReg(REG_OFFSET_BG2CNT) & 0xfffc) | bg2Priority);
+}
+
+void sub_8135AA4(void)
+{
+ u8 newPage;
+
+ if (gMonSummaryScreen->unk3224 == 1)
+ newPage = gMonSummaryScreen->curPageIndex - 1;
+ else
+ newPage = gMonSummaryScreen->curPageIndex + 1;
+
+ switch (newPage)
+ {
+ case PSS_PAGE_INFO:
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0);
+ break;
+ case PSS_PAGE_SKILLS:
+ if (gMonSummaryScreen->unk3224 == 1)
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk323C, gUnknown_8E9B950, 0, 0);
+ else
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk323C, gUnknown_8E9B598, 0, 0);
+
+ break;
+ case PSS_PAGE_MOVES:
+ if (gMonSummaryScreen->unk3224 == 1)
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk3240, gUnknown_8E9BA9C, 0, 0);
+ else
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0);
+
+ break;
+ case PSS_PAGE_MOVES_INFO:
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk323C, gUnknown_8E9B950, 0, 0);
+ break;
+ }
+}
+
+void sub_8135B90(void)
+{
+ u8 newPage;
+
+ if (gMonSummaryScreen->unk3224 == 1)
+ newPage = gMonSummaryScreen->curPageIndex - 1;
+ else
+ newPage = gMonSummaryScreen->curPageIndex + 1;
+
+ switch (newPage)
+ {
+ case PSS_PAGE_INFO:
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0);
+ break;
+ case PSS_PAGE_SKILLS:
+ break;
+ case PSS_PAGE_MOVES:
+ if (gMonSummaryScreen->unk3224 == 1)
+ CopyToBgTilemapBuffer(3, gUnknown_8463C80, 0, 0);
+ else
+ CopyToBgTilemapBuffer(3, gUnknown_8463B88, 0, 0);
+
+ break;
+ case PSS_PAGE_MOVES_INFO:
+ CopyToBgTilemapBuffer(3, gUnknown_8463B88, 0, 0);
+ break;
+ }
+}
+
+void sub_8135C34(void)
+{
+ switch (gMonSummaryScreen->unk3274)
+ {
+ case 0:
+ sub_81381AC();
+ break;
+ case 1:
+ sub_8136BC4();
+ break;
+ case 2:
+ sub_8136BAC();
+ break;
+ case 3:
+ if (!sub_8135F20())
+ return;
+ break;
+ case 4:
+ if (!sub_8136AEC())
+ return;
+ break;
+ case 5:
+ sub_81381D0();
+ break;
+ case 6:
+ if (!sub_8136040())
+ return;
+ break;
+ case 7:
+ sub_8136F4C();
+ break;
+ case 8:
+ sub_81374E8();
+ break;
+ case 9:
+ sub_8137BD0();
+ sub_8138A38();
+ break;
+ case 10:
+ if (gMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE || gMonSummaryScreen->mode == PSS_MODE_FORGET_MOVE)
+ CopyToBgTilemapBuffer(3, gUnknown_8463C80, 0, 0);
+ else
+ CopyToBgTilemapBuffer(3, gUnknown_8463B88, 0, 0);
+
+ sub_8138538();
+ break;
+ case 11:
+ if (gMonSummaryScreen->isEgg)
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk323C, gUnknown_8E9BBCC, 0, 0);
+ else
+ {
+ if (gMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE || gMonSummaryScreen->mode == PSS_MODE_FORGET_MOVE)
+ {
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk323C, gUnknown_8E9B950, 0, 0);
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk3240, gUnknown_8E9BA9C, 0, 0);
+ }
+ else
+ {
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk323C, gUnknown_8E9B598, 0, 0);
+ CopyToBgTilemapBuffer(gMonSummaryScreen->unk3240, gUnknown_8E9B750, 0, 0);
+ }
+ }
+
+ break;
+ case 12:
+ BlendPalettes(0xffffffff, 16, 0);
+ sub_8137D28(gMonSummaryScreen->curPageIndex);
+ sub_8137E28();
+ break;
+ case 13:
+ BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[0], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[1], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[2], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[6], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[3], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[4], 2);
+ CopyWindowToVram(gMonSummaryScreen->unk3000[5], 2);
+ break;
+ case 14:
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(3);
+ break;
+ case 15:
+ if (gMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE || gMonSummaryScreen->mode == PSS_MODE_FORGET_MOVE)
+ {
+ sub_8139EE4(0);
+ sub_813A0E8(0);
+ }
+ else
+ {
+ sub_8139C44(0);
+ sub_813B084(0);
+ sub_8139D54(0);
+ sub_813A838(0);
+ sub_813AB70(0);
+ }
+
+ sub_813A3B8(0);
+ sub_813ACF8(0);
+ sub_813AEB0(0);
+ break;
+ default:
+ sub_81381C0();
+ sub_8136D54();
+ return;
+ }
+
+ gMonSummaryScreen->unk3274++;
+}
+
+u8 sub_8135F20(void)
+{
+ switch (gMonSummaryScreen->unk3278)
+ {
+ case 0:
+ LoadPalette(gUnknown_8E9B310, 0, 0x20 * 5);
+ if (IsMonShiny(&gMonSummaryScreen->currentMon) == TRUE && !gMonSummaryScreen->isEgg)
+ {
+ LoadPalette(&gUnknown_8E9B310[16 * 6], 0, 0x20);
+ LoadPalette(&gUnknown_8E9B310[16 * 5], 0x10, 0x20);
+ }
+ else
+ {
+ LoadPalette(&gUnknown_8E9B310[16 * 0], 0, 0x20);
+ LoadPalette(&gUnknown_8E9B310[16 * 1], 0x10, 0x20);
+ }
+
+ break;
+ case 1:
+ ListMenuLoadStdPalAt(0x60, 1);
+ LoadPalette(gUnknown_84636C0, 0x70, 0x20);
+ break;
+ case 2:
+ ResetTempTileDataBuffers();
+ break;
+ case 3:
+ DecompressAndCopyTileDataToVram(2, gUnknown_8E9A460, 0, 0, 0);
+ break;
+ case 4:
+ if (FreeTempTileDataBuffersIfPossible() == TRUE)
+ return FALSE;
+ break;
+
+ case 5:
+ case 6:
+ break;
+
+ default:
+ LoadPalette(gUnknown_8463700, 0x80, 0x20);
+ return TRUE;
+ }
+
+ gMonSummaryScreen->unk3278++;
+ return FALSE;
+}
+
+u8 sub_8136040(void)
+{
+ switch (gMonSummaryScreen->unk3280)
+ {
+ case 0:
+ sub_81360D4();
+ if (gMonSummaryScreen->isEgg)
+ {
+ gMonSummaryScreen->unk3280 = 0;
+ return TRUE;
+ }
+
+ break;
+ case 1:
+ if (gMonSummaryScreen->isEgg == 0)
+ sub_8136350();
+ break;
+ case 2:
+ if (gMonSummaryScreen->isEgg == 0)
+ sub_81367B0();
+ break;
+ default:
+ gMonSummaryScreen->unk3280 = 0;
+ return TRUE;
+ }
+
+ gMonSummaryScreen->unk3280++;
+ return FALSE;
+}
+
+void sub_81360D4(void)
+{
+ u8 tempStr[20];
+ u16 dexNum;
+ u16 gender;
+ u16 heldItem;
+ u32 otId;
+
+ dexNum = SpeciesToPokedexNum(GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES));
+ if (dexNum == 0xffff)
+ StringCopy(gMonSummaryScreen->summary.unk3064, gUnknown_8416202);
+ else
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk3064, dexNum, STR_CONV_MODE_LEADING_ZEROS, 3);
+
+ gUnknown_203B144->unk00 = 0;
+
+ if (!gMonSummaryScreen->isEgg)
+ {
+ dexNum = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES);
+ GetSpeciesName(gMonSummaryScreen->summary.unk3028, dexNum);
+ }
+ else
+ {
+ GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_NICKNAME, gMonSummaryScreen->summary.unk3028);
+ return;
+ }
+
+ gMonSummaryScreen->unk3220[0] = gBaseStats[dexNum].type1;
+ gMonSummaryScreen->unk3220[1] = gBaseStats[dexNum].type2;
+
+ GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_NICKNAME, tempStr);
+ StringCopyN_Multibyte(gMonSummaryScreen->summary.unk3034, tempStr, POKEMON_NAME_LENGTH);
+ StringGetEnd10(gMonSummaryScreen->summary.unk3034);
+
+ gender = GetMonGender(&gMonSummaryScreen->currentMon);
+ dexNum = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES2);
+
+ if (gender == MON_FEMALE)
+ StringCopy(gMonSummaryScreen->summary.unk3084, gText_FemaleSymbol);
+ else if (gender == MON_MALE)
+ StringCopy(gMonSummaryScreen->summary.unk3084, gText_MaleSymbol);
+ else
+ StringCopy(gMonSummaryScreen->summary.unk3084, gString_Dummy);
+
+ if (dexNum == SPECIES_NIDORAN_M || dexNum == SPECIES_NIDORAN_F)
+ if (StringCompare(gMonSummaryScreen->summary.unk3034, gSpeciesNames[dexNum]) == 0)
+ StringCopy(gMonSummaryScreen->summary.unk3084, gString_Dummy);
+
+ GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_OT_NAME, tempStr);
+ StringCopyN_Multibyte(gMonSummaryScreen->summary.unk3040, tempStr, OT_NAME_LENGTH);
+
+ ConvertInternationalString(gMonSummaryScreen->summary.unk3040, GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_LANGUAGE));
+
+ otId = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_OT_ID) & 0xffff;
+ ConvertIntToDecimalStringN(gMonSummaryScreen->summary.unk306C, otId, STR_CONV_MODE_LEADING_ZEROS, 5);
+
+ ConvertIntToDecimalStringN(tempStr, GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_LEVEL), STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringCopy(gMonSummaryScreen->summary.unk3088, gText_Lv);
+ StringAppendN(gMonSummaryScreen->summary.unk3088, tempStr, 4);
+
+ heldItem = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_HELD_ITEM);
+
+ if (heldItem == ITEM_NONE)
+ StringCopy(gMonSummaryScreen->summary.unk3074, gUnknown_84161EF);
+ else
+ CopyItemName(heldItem, gMonSummaryScreen->summary.unk3074);
+}