diff options
Diffstat (limited to 'src/pokemon_summary_screen.c')
-rw-r--r-- | src/pokemon_summary_screen.c | 1773 |
1 files changed, 916 insertions, 857 deletions
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 14bfba4ad..3a5b06d45 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -43,10 +43,62 @@ #include "constants/items.h" #include "constants/moves.h" #include "constants/region_map_sections.h" +#include "constants/rgb.h" #include "constants/songs.h" #include "constants/species.h" -static EWRAM_DATA struct UnkSummaryStruct +// Screen titles (upper left) +#define PSS_LABEL_WINDOW_POKEMON_INFO_TITLE 0 +#define PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE 1 +#define PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE 2 +#define PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE 3 + +// Button control text (upper right) +#define PSS_LABEL_WINDOW_PROMPT_CANCEL 4 +#define PSS_LABEL_WINDOW_PROMPT_INFO 5 +#define PSS_LABEL_WINDOW_PROMPT_SWITCH 6 +#define PSS_LABEL_WINDOW_UNUSED1 7 + +// Info screen +#define PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL 8 +#define PSS_LABEL_WINDOW_POKEMON_INFO_TYPE 9 + +// Skills screen +#define PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT 10 // HP, Attack, Defense +#define PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT 11 // Sp. Attack, Sp. Defense, Speed +#define PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP 12 // EXP, Next Level +#define PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS 13 + +// Moves screen +#define PSS_LABEL_WINDOW_MOVES_POWER_ACC 14 // Also contains the power and accuracy values +#define PSS_LABEL_WINDOW_MOVES_APPEAL_JAM 15 +#define PSS_LABEL_WINDOW_UNUSED2 16 + +// Above/below the pokemon's portrait (left) +#define PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER 17 +#define PSS_LABEL_WINDOW_PORTRAIT_NICKNAME 18 // The upper name +#define PSS_LABEL_WINDOW_PORTRAIT_SPECIES 19 // The lower name +#define PSS_LABEL_WINDOW_END 20 + +// Dynamic fields for the Pokemon Info page +#define PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER 0 +#define PSS_DATA_WINDOW_INFO_ID 1 +#define PSS_DATA_WINDOW_INFO_ABILITY 2 +#define PSS_DATA_WINDOW_INFO_MEMO 3 + +// Dynamic fields for the Pokemon Skills page +#define PSS_DATA_WINDOW_SKILLS_HELD_ITEM 0 +#define PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT 1 +#define PSS_DATA_WINDOW_SKILLS_STATS_LEFT 2 // HP, Attack, Defense +#define PSS_DATA_WINDOW_SKILLS_STATS_RIGHT 3 // Sp. Attack, Sp. Defense, Speed +#define PSS_DATA_WINDOW_EXP 4 // Exp, next level + +// Dynamic fields for the Battle Moves and Contest Moves pages. +#define PSS_DATA_WINDOW_MOVE_NAMES 0 +#define PSS_DATA_WINDOW_MOVE_PP 1 +#define PSS_DATA_WINDOW_MOVE_DESCRIPTION 2 + +static EWRAM_DATA struct PokemonSummaryScreenData { /*0x00*/ union { struct Pokemon *mons; @@ -62,7 +114,7 @@ static EWRAM_DATA struct UnkSummaryStruct u8 isEgg; // 0x4 u8 level; // 0x5 u8 ribbonCount; // 0x6 - u8 unk7; // 0x7 + u8 ailment; // 0x7 u8 altAbility; // 0x8 u8 metLocation; // 0x9 u8 metLevel; // 0xA @@ -96,25 +148,22 @@ static EWRAM_DATA struct UnkSummaryStruct u8 currPageIndex; u8 minPageIndex; u8 maxPageIndex; - bool8 unk40C3; + bool8 lockMonFlag; // This is used to prevent the player from changing pokemon in the move deleter select, etc, but it is not needed because the input is handled differently there u16 newMove; u8 firstMoveIndex; u8 secondMoveIndex; bool8 unk40C8; - u8 unk40C9; + u8 bgDisplayOrder; // Determines the order page backgrounds are loaded while scrolling between them u8 filler40CA; u8 windowIds[8]; u8 spriteIds[28]; bool8 unk40EF; - s16 unk40F0; + s16 switchCounter; // Used for various switch statement cases that decompress/load graphics or pokemon data u8 unk_filler4[6]; -} *pssData = NULL; -EWRAM_DATA u8 gUnknown_0203CF20 = 0; -static EWRAM_DATA u8 gUnknown_0203CF21 = 0; -static EWRAM_DATA u8 gFiller_0203CF22[2] = {0}; -static EWRAM_DATA u8 sUnknownTaskId = 0; -static EWRAM_DATA u8 gFiller_0203CF25[3] = {0}; - +} *sMonSummaryScreen = NULL; +EWRAM_DATA u8 gLastViewedMonIndex = 0; +static EWRAM_DATA u8 sUnknown_0203CF21 = 0; +ALIGNED(4) static EWRAM_DATA u8 sUnknownTaskId = 0; extern const struct CompressedSpriteSheet gMonFrontPicTable[]; struct UnkStruct_61CC04 @@ -135,21 +184,21 @@ static bool8 SummaryScreen_DecompressGraphics(void); static void CopyMonToSummaryStruct(struct Pokemon* a); static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); static void sub_81C0348(void); -static void sub_81C0484(u8 taskId); -static void sub_81C0510(u8 taskId); -static void sub_81C0604(u8 taskId, s8 a); +static void CloseSummaryScreen(u8 taskId); +static void HandleInput(u8 taskId); +static void ChangeSummaryPokemon(u8 taskId, s8 a); static void sub_81C0704(u8 taskId); static s8 sub_81C08F8(s8 a); static s8 sub_81C09B4(s8 a); static bool8 sub_81C0A50(struct Pokemon* mon); -static void sub_81C0A8C(u8 taskId, s8 a); -static void sub_81C0B8C(u8 taskId); -static void sub_81C0C68(u8 taskId); -static void sub_81C0CC4(u8 taskId); -static void sub_81C0D44(u8 taskId); -static void sub_81C0E24(void); +static void ChangePage(u8 taskId, s8 a); +static void PssScrollRight(u8 taskId); +static void PssScrollRightEnd(u8 taskId); +static void PssScrollLeft(u8 taskId); +static void PssScrollLeftEnd(u8 taskId); +static void CheckExperienceProgressBar(void); static void sub_81C0E48(u8 taskId); -static void sub_81C0F44(u8 taskId); +static void HandleInput_MoveSelect(u8 taskId); static bool8 sub_81C1040(void); static void sub_81C1070(s16* a, s8 b, u8* c); static void sub_81C11F4(u8 a); @@ -159,11 +208,11 @@ static void sub_81C13B0(u8 taskId, bool8 b); static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2); static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2); static void sub_81C171C(u8 taskId); -static void sub_81C174C(u8 taskId); -static bool8 sub_81C18A8(void); -static void sub_81C18F4(u8 a); -static void sub_81C1940(u8 taskId); -static void sub_81C1BA0(void); +static void HandleReplaceMoveInput(u8 taskId); +static bool8 CanReplaceMove(void); +static void ShowHMMovesCantBeForgottenWindow(u8 a); +static void HandleHMMovesCantBeForgottenInput(u8 taskId); +static void DrawPagination(void); static void sub_81C1DA4(u16 a, s16 b); static void sub_81C1E20(u8 taskId); static void sub_81C1EFC(u16 a, s16 b, u16 c); @@ -171,23 +220,23 @@ static void sub_81C1F80(u8 taskId); static void sub_81C2074(u16 a, s16 b); static void sub_81C20F0(u8 taskId); static void sub_81C2194(u16 *a, u16 b, u8 c); -static void sub_81C2228(struct Pokemon* mon); +static void DrawPokerusCuredSymbol(struct Pokemon* mon); static void DrawExperienceProgressBar(struct Pokemon* mon); -static void sub_81C240C(u16 a); -static void sub_81C2524(void); -static void sub_81C2554(void); +static void DrawContestMoveHearts(u16 move); +static void LimitEggSummaryPageDisplay(void); +static void ResetWindows(void); static void sub_81C25E8(void); static void sub_81C2628(void); static void sub_81C2794(void); static void sub_81C27DC(struct Pokemon *mon, u16 a); static void PrintPageNamesAndStatsPageToWindows(void); -static void sub_81C2AFC(u8 a); -static void sub_81C2C38(u8 a); +static void CreatePageWindowTilemaps(u8 a); +static void ClearPageWindowTilemaps(u8 a); static void SummaryScreen_RemoveWindowByIndex(u8 a); -static void sub_81C2D9C(u8 a); -static void sub_81C2DE4(u8 a); -static void sub_81C2E00(void); -static void sub_81C2E40(u8 taskId); +static void PrintPageSpecificText(u8 a); +static void CreateTextPrinterTask(u8 a); +static void PrintInfoPageText(void); +static void Task_PrintInfoPage(u8 taskId); static void PrintMonOTName(void); static void PrintMonOTID(void); static void PrintMonAbilityName(void); @@ -203,40 +252,40 @@ static void PrintEggOTName(void); static void PrintEggOTID(void); static void PrintEggState(void); static void PrintEggMemo(void); -static void sub_81C3554(u8 taskId); +static void Task_PrintSkillsPage(u8 taskId); static void PrintHeldItemName(void); -static void sub_81C3530(void); +static void PrintSkillsPageText(void); static void PrintRibbonCount(void); static void BufferLeftColumnStats(void); static void PrintLeftColumnStats(void); static void BufferRightColumnStats(void); static void PrintRightColumnStats(void); static void PrintExpPointsNextLevel(void); -static void sub_81C3984(void); -static void sub_81C39F0(u8 taskId); +static void PrintBattleMoves(void); +static void Task_PrintBattleMoves(u8 taskId); static void PrintMoveNameAndPP(u8 a); -static void sub_81C3D08(void); -static void sub_81C3D54(u8 taskId); +static void PrintContestMoves(void); +static void Task_PrintContestMoves(u8 taskId); static void PrintContestMoveDescription(u8 a); static void PrintMoveDetails(u16 a); static void PrintNewMoveDetailsOrCancelText(void); static void sub_81C4064(void); static void sub_81C40A0(u8 a, u8 b); static void PrintHMMovesCantBeForgotten(void); -static void sub_81C4190(void); -static void sub_81C4204(u8 a, u8 b); -static void sub_81C424C(void); -static void sub_81C4280(void); -static void sub_81C42C8(void); -static void sub_81C43A0(void); -static void sub_81C4420(void); -static void sub_81C4484(void); -static void sub_81C44F0(void); +static void ResetSpriteIds(void); +static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible); +static void HidePageSpecificSprites(void); +static void SetTypeIcons(void); +static void CreateMoveTypeIcons(void); +static void SetMonTypeIcons(void); +static void SetMoveTypeIcons(void); +static void SetContestMoveTypeIcons(void); +static void SetNewMoveTypeIcon(void); static void sub_81C4568(u8 a, u8 b); -static u8 sub_81C45F4(struct Pokemon *a, s16 *b); +static u8 CreatePokemonSprite(struct Pokemon *a, s16 *b); static u8 sub_81C47B4(struct Pokemon *unused); -static void sub_81C4844(struct Sprite *); -static void sub_81C48F0(void); +static void SpriteCB_Pokemon(struct Sprite *); +static void StopPokemonAnimations(void); static void CreateMonMarkingsSprite(struct Pokemon *mon); static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); static void CreateCaughtBallSprite(struct Pokemon *mon); @@ -251,7 +300,7 @@ static void sub_81C4D18(u8 a); #include "data/text/move_descriptions.h" #include "data/text/nature_names.h" -static const struct BgTemplate gUnknown_0861CBB4[] = +ALIGNED(4) static const struct BgTemplate sUnknown_0861CBB4[] = { { .bg = 0, @@ -291,27 +340,27 @@ static const struct BgTemplate gUnknown_0861CBB4[] = }, }; -static const u16 gUnknown_0861CBC4[] = INCBIN_U16("graphics/interface/unk_tilemap2.bin"); -static const struct UnkStruct_61CC04 gUnknown_0861CBEC = +static const u16 sUnknown_0861CBC4[] = INCBIN_U16("graphics/interface/unk_tilemap2.bin"); +static const struct UnkStruct_61CC04 sUnknown_0861CBEC = { - gUnknown_0861CBC4, 1, 10, 2, 0, 18 + sUnknown_0861CBC4, 1, 10, 2, 0, 18 }; -static const struct UnkStruct_61CC04 gUnknown_0861CBF8 = +static const struct UnkStruct_61CC04 sUnknown_0861CBF8 = { - gUnknown_0861CBC4, 1, 10, 2, 0, 50 + sUnknown_0861CBC4, 1, 10, 2, 0, 50 }; -static const struct UnkStruct_61CC04 gUnknown_0861CC04 = +static const struct UnkStruct_61CC04 sUnknown_0861CC04 = { gSummaryScreenPowAcc_Tilemap, 0, 10, 7, 0, 45 }; -static const struct UnkStruct_61CC04 gUnknown_0861CC10 = +static const struct UnkStruct_61CC04 sUnknown_0861CC10 = { gUnknown_08DC3C34, 0, 10, 7, 0, 45 }; static const s8 gUnknown_0861CC1C[] = {0, 2, 3, 1, 4, 5}; -static const struct WindowTemplate gUnknown_0861CC24[] = +static const struct WindowTemplate sSummaryTemplate[] = { - {//Text for Pokemon Info + [PSS_LABEL_WINDOW_POKEMON_INFO_TITLE] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 0, @@ -320,7 +369,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 1, }, - {//Text for Pokemon Skills + [PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 0, @@ -329,7 +378,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 23, }, - {//Text for Battle Moves + [PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 0, @@ -338,7 +387,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 45, }, - {//Text for Contest Moves + [PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 0, @@ -347,7 +396,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 67, }, - { //Text on Pokemon Info: Button prompt: Cancel + [PSS_LABEL_WINDOW_PROMPT_CANCEL] = { .bg = 0, .tilemapLeft = 22, .tilemapTop = 0, @@ -356,7 +405,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 7, .baseBlock = 89, }, - {//Info button found under moves + [PSS_LABEL_WINDOW_PROMPT_INFO] = { .bg = 0, .tilemapLeft = 22, .tilemapTop = 0, @@ -365,7 +414,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 7, .baseBlock = 105, }, - {//Switch button under moves when viewing moves + [PSS_LABEL_WINDOW_PROMPT_SWITCH] = { .bg = 0, .tilemapLeft = 22, .tilemapTop = 0, @@ -374,7 +423,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 7, .baseBlock = 121, }, - {//Unknown + [PSS_LABEL_WINDOW_UNUSED1] = { .bg = 0, .tilemapLeft = 11, .tilemapTop = 4, @@ -383,7 +432,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 137, }, - {//Unknown + [PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL] = { .bg = 0, .tilemapLeft = 11, .tilemapTop = 4, @@ -392,7 +441,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 137, }, - {//Type on pokemon info page + [PSS_LABEL_WINDOW_POKEMON_INFO_TYPE] = { .bg = 0, .tilemapLeft = 11, .tilemapTop = 6, @@ -401,7 +450,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 173, }, - {//HP, Attack and Defense text + [PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT] = { .bg = 0, .tilemapLeft = 10, .tilemapTop = 7, @@ -410,7 +459,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 209, }, - {//Sp. atk, Sp. Def and Speed texxt + [PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT] = { .bg = 0, .tilemapLeft = 22, .tilemapTop = 7, @@ -419,7 +468,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 245, }, - {//EXP and next lvl. + [PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP] = { .bg = 0, .tilemapLeft = 10, .tilemapTop = 14, @@ -428,7 +477,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 275, }, - {//Unknown + [PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS] = { .bg = 0, .tilemapLeft = 0, .tilemapTop = 18, @@ -437,7 +486,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 319, }, - {//move text: Power, Accuracy and their numeric values. + [PSS_LABEL_WINDOW_MOVES_POWER_ACC] = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 15, @@ -446,7 +495,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 331, }, - {//contest text: appeal and jam + [PSS_LABEL_WINDOW_MOVES_APPEAL_JAM] = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 15, @@ -455,7 +504,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 367, }, - {//Unknown + [PSS_LABEL_WINDOW_UNUSED2] = { .bg = 0, .tilemapLeft = 22, .tilemapTop = 4, @@ -464,7 +513,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 387, }, - {//No. + [PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER] = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 2, @@ -473,7 +522,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 7, .baseBlock = 387, }, - {//Upper name + [PSS_LABEL_WINDOW_PORTRAIT_NICKNAME] = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 12, @@ -482,7 +531,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 395, }, - {//Lower name + [PSS_LABEL_WINDOW_PORTRAIT_SPECIES] = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 14, @@ -491,11 +540,11 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 413, }, - DUMMY_WIN_TEMPLATE + [PSS_LABEL_WINDOW_END] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gUnknown_0861CCCC[] = +static const struct WindowTemplate sPageInfoTemplate[] = { - {//Original Trainer + [PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER] = { .bg = 0, .tilemapLeft = 11, .tilemapTop = 4, @@ -504,7 +553,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] = .paletteNum = 6, .baseBlock = 449, }, - {//ID numbers + [PSS_DATA_WINDOW_INFO_ID] = { .bg = 0, .tilemapLeft = 22, .tilemapTop = 4, @@ -513,7 +562,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] = .paletteNum = 6, .baseBlock = 471, }, - {//Ability + [PSS_DATA_WINDOW_INFO_ABILITY] = { .bg = 0, .tilemapLeft = 11, .tilemapTop = 9, @@ -522,7 +571,7 @@ static const struct WindowTemplate gUnknown_0861CCCC[] = .paletteNum = 6, .baseBlock = 485, }, - {//Trainer Memo + [PSS_DATA_WINDOW_INFO_MEMO] = { .bg = 0, .tilemapLeft = 11, .tilemapTop = 14, @@ -532,9 +581,9 @@ static const struct WindowTemplate gUnknown_0861CCCC[] = .baseBlock = 557, }, }; -static const struct WindowTemplate gUnknown_0861CCEC[] = +static const struct WindowTemplate sPageSkillsTemplate[] = { - {//Held Item string + [PSS_DATA_WINDOW_SKILLS_HELD_ITEM] = { .bg = 0, .tilemapLeft = 10, .tilemapTop = 4, @@ -543,7 +592,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] = .paletteNum = 6, .baseBlock = 449, }, - {//Ribbon string + [PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT] = { .bg = 0, .tilemapLeft = 20, .tilemapTop = 4, @@ -552,7 +601,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] = .paletteNum = 6, .baseBlock = 469, }, - {//Stat numbers left (HP, ATK & DEF) + [PSS_DATA_WINDOW_SKILLS_STATS_LEFT] = { .bg = 0, .tilemapLeft = 16, .tilemapTop = 7, @@ -561,7 +610,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] = .paletteNum = 6, .baseBlock = 489, }, - {//Stat numbers right (SP.ATK, SP.DEF & SPEED) + [PSS_DATA_WINDOW_SKILLS_STATS_RIGHT] = { .bg = 0, .tilemapLeft = 27, .tilemapTop = 7, @@ -570,7 +619,7 @@ static const struct WindowTemplate gUnknown_0861CCEC[] = .paletteNum = 6, .baseBlock = 525, }, - {//Exp numbers + [PSS_DATA_WINDOW_EXP] = { .bg = 0, .tilemapLeft = 24, .tilemapTop = 14, @@ -580,9 +629,9 @@ static const struct WindowTemplate gUnknown_0861CCEC[] = .baseBlock = 543, }, }; -static const struct WindowTemplate gUnknown_0861CD14[] = +static const struct WindowTemplate sPageMovesTemplate[] = // This is used for both battle and contest moves { - {//Move names? + [PSS_DATA_WINDOW_MOVE_NAMES] = { .bg = 0, .tilemapLeft = 15, .tilemapTop = 4, @@ -591,7 +640,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] = .paletteNum = 6, .baseBlock = 449, }, - {//PP Numbers + [PSS_DATA_WINDOW_MOVE_PP] = { .bg = 0, .tilemapLeft = 24, .tilemapTop = 4, @@ -600,7 +649,7 @@ static const struct WindowTemplate gUnknown_0861CD14[] = .paletteNum = 8, .baseBlock = 539, }, - {//Move description text + [PSS_DATA_WINDOW_MOVE_DESCRIPTION] = { .bg = 0, .tilemapLeft = 10, .tilemapTop = 15, @@ -626,27 +675,31 @@ static const u8 sTextColors_861CD2C[][3] = {0, 5, 6}, {0, 7, 8} }; -static const u8 gUnknown_0861CD53[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp"); -static const u8 gUnknown_0861CDD3[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp"); -static void (*const gUnknown_0861CE54[])(void) = -{ - sub_81C2E00, - sub_81C3530, - sub_81C3984, - sub_81C3D08 + +static const u8 sSummaryAButtonBitmap[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp"); +static const u8 sSummaryBButtonBitmap[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp"); + +static void (*const sTextPrinterFunctions[])(void) = +{ + PrintInfoPageText, + PrintSkillsPageText, + PrintBattleMoves, + PrintContestMoves }; -static void (*const gUnknown_0861CE64[])(u8 taskId) = + +static void (*const sTextPrinterTasks[])(u8 taskId) = { - sub_81C2E40, - sub_81C3554, - sub_81C39F0, - sub_81C3D54 + Task_PrintInfoPage, + Task_PrintSkillsPage, + Task_PrintBattleMoves, + Task_PrintContestMoves }; -static const u8 gUnknown_0861CE74[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}"); -static const u8 gUnknown_0861CE7B[] = _("{COLOR WHITE}{SHADOW DARK_GREY}"); -static const u8 gUnknown_0861CE82[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}"); -static const u8 gUnknown_0861CE8E[] = _("{SPECIAL_F7 0x00}\n{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}"); -static const u8 gUnknown_0861CE97[] = _("{PP}{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}"); + +static const u8 sMemoNatureTextColor[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}"); +static const u8 sMemoMiscTextColor[] = _("{COLOR WHITE}{SHADOW DARK_GREY}"); // This is also affected by palettes, apparently +static const u8 sStatsLeftColumnLayout[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}"); +static const u8 sStatsRightColumnLayout[] = _("{SPECIAL_F7 0x00}\n{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}"); +static const u8 sMovesPPLayout[] = _("{PP}{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}"); #define TAG_MOVE_TYPES 30002 @@ -657,10 +710,10 @@ static const struct OamData sOamData_MoveTypes = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 1, + .shape = SPRITE_SHAPE(32x16), .x = 0, .matrixNum = 0, - .size = 2, + .size = SPRITE_SIZE(32x16), .tileNum = 0, .priority = 1, .paletteNum = 0, @@ -833,70 +886,70 @@ static const struct OamData gOamData_861CFF4 = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 0, + .shape = SPRITE_SHAPE(16x16), .x = 0, .matrixNum = 0, - .size = 1, + .size = SPRITE_SIZE(16x16), .tileNum = 0, .priority = 1, .paletteNum = 0, .affineParam = 0, }; -static const union AnimCmd gSpriteAnim_861CFFC[] = { +static const union AnimCmd sSpriteAnim_861CFFC[] = { ANIMCMD_FRAME(0, 0, FALSE, FALSE), ANIMCMD_END }; -static const union AnimCmd gSpriteAnim_861D004[] = { +static const union AnimCmd sSpriteAnim_861D004[] = { ANIMCMD_FRAME(4, 0, FALSE, FALSE), ANIMCMD_END }; -static const union AnimCmd gSpriteAnim_861D00C[] = { +static const union AnimCmd sSpriteAnim_861D00C[] = { ANIMCMD_FRAME(8, 0, FALSE, FALSE), ANIMCMD_END }; -static const union AnimCmd gSpriteAnim_861D014[] = { +static const union AnimCmd sSpriteAnim_861D014[] = { ANIMCMD_FRAME(12, 0, FALSE, FALSE), ANIMCMD_END }; -static const union AnimCmd gSpriteAnim_861D01C[] = { +static const union AnimCmd sSpriteAnim_861D01C[] = { ANIMCMD_FRAME(16, 0, FALSE, FALSE), ANIMCMD_END }; -static const union AnimCmd gSpriteAnim_861D024[] = { +static const union AnimCmd sSpriteAnim_861D024[] = { ANIMCMD_FRAME(16, 0, TRUE, FALSE), ANIMCMD_END }; -static const union AnimCmd gSpriteAnim_861D02C[] = { +static const union AnimCmd sSpriteAnim_861D02C[] = { ANIMCMD_FRAME(20, 0, FALSE, FALSE), ANIMCMD_END }; -static const union AnimCmd gSpriteAnim_861D034[] = { +static const union AnimCmd sSpriteAnim_861D034[] = { ANIMCMD_FRAME(24, 0, FALSE, FALSE), ANIMCMD_END }; -static const union AnimCmd gSpriteAnim_861D03C[] = { +static const union AnimCmd sSpriteAnim_861D03C[] = { ANIMCMD_FRAME(24, 0, TRUE, FALSE), ANIMCMD_END }; -static const union AnimCmd gSpriteAnim_861D044[] = { +static const union AnimCmd sSpriteAnim_861D044[] = { ANIMCMD_FRAME(28, 0, FALSE, FALSE), ANIMCMD_END }; -static const union AnimCmd *const gSpriteAnimTable_861D04C[] = { - gSpriteAnim_861CFFC, - gSpriteAnim_861D004, - gSpriteAnim_861D00C, - gSpriteAnim_861D014, - gSpriteAnim_861D01C, - gSpriteAnim_861D024, - gSpriteAnim_861D02C, - gSpriteAnim_861D034, - gSpriteAnim_861D03C, - gSpriteAnim_861D044, +static const union AnimCmd *const sSpriteAnimTable_861D04C[] = { + sSpriteAnim_861CFFC, + sSpriteAnim_861D004, + sSpriteAnim_861D00C, + sSpriteAnim_861D014, + sSpriteAnim_861D01C, + sSpriteAnim_861D024, + sSpriteAnim_861D02C, + sSpriteAnim_861D034, + sSpriteAnim_861D03C, + sSpriteAnim_861D044, }; -static const struct CompressedSpriteSheet gUnknown_0861D074 = +static const struct CompressedSpriteSheet sMoveSelectorSpriteSheet = { - .data = gUnknown_08D97BEC, + .data = gMoveSelectorBitmap, .size = 0x400, .tag = 30000 }; @@ -910,7 +963,7 @@ static const struct SpriteTemplate gUnknown_0861D084 = .tileTag = 30000, .paletteTag = 30000, .oam = &gOamData_861CFF4, - .anims = gSpriteAnimTable_861D04C, + .anims = sSpriteAnimTable_861D04C, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy @@ -922,10 +975,10 @@ static const struct OamData sOamData_StatusCondition = .objMode = 0, .mosaic = 0, .bpp = 0, - .shape = 1, + .shape = SPRITE_SHAPE(32x8), .x = 0, .matrixNum = 0, - .size = 1, + .size = SPRITE_SIZE(32x8), .tileNum = 0, .priority = 3, .paletteNum = 0, @@ -968,13 +1021,13 @@ static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = { sSpriteAnim_StatusPokerus, sSpriteAnim_StatusFaint, }; -static const struct CompressedSpriteSheet gUnknown_0861D0F8 = +static const struct CompressedSpriteSheet sStatusIconsSpriteSheet = { .data = gStatusGfx_Icons, .size = 0x380, .tag = 30001 }; -static const struct CompressedSpritePalette gUnknown_0861D100 = +static const struct CompressedSpritePalette sStatusIconsSpritePalette = { .data = gStatusPal_Icons, .tag = 30001 @@ -989,43 +1042,43 @@ static const struct SpriteTemplate sSpriteTemplate_StatusCondition = .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const u16 gUnknown_0861D120[] = INCBIN_U16("graphics/interface/summary_markings.gbapal"); +static const u16 sSummaryMarkingsPalette[] = INCBIN_U16("graphics/interface/summary_markings.gbapal"); // code void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) { - pssData = AllocZeroed(sizeof(*pssData)); - pssData->mode = mode; - pssData->monList.mons = mons; - pssData->curMonIndex = monIndex; - pssData->maxMonIndex = maxMonIndex; - pssData->callback = callback; + sMonSummaryScreen = AllocZeroed(sizeof(*sMonSummaryScreen)); + sMonSummaryScreen->mode = mode; + sMonSummaryScreen->monList.mons = mons; + sMonSummaryScreen->curMonIndex = monIndex; + sMonSummaryScreen->maxMonIndex = maxMonIndex; + sMonSummaryScreen->callback = callback; if (mode == PSS_MODE_BOX) - pssData->isBoxMon = TRUE; + sMonSummaryScreen->isBoxMon = TRUE; else - pssData->isBoxMon = FALSE; + sMonSummaryScreen->isBoxMon = FALSE; switch (mode) { case PSS_MODE_NORMAL: case PSS_MODE_BOX: - pssData->minPageIndex = 0; - pssData->maxPageIndex = 3; + sMonSummaryScreen->minPageIndex = 0; + sMonSummaryScreen->maxPageIndex = 3; break; case PSS_MODE_UNK1: - pssData->minPageIndex = 0; - pssData->maxPageIndex = 3; - pssData->unk40C8 = TRUE; + sMonSummaryScreen->minPageIndex = 0; + sMonSummaryScreen->maxPageIndex = 3; + sMonSummaryScreen->unk40C8 = TRUE; break; case PSS_MODE_SELECT_MOVE: - pssData->minPageIndex = 2; - pssData->maxPageIndex = 3; - pssData->unk40C3 = TRUE; + sMonSummaryScreen->minPageIndex = 2; + sMonSummaryScreen->maxPageIndex = 3; + sMonSummaryScreen->lockMonFlag = TRUE; break; } - pssData->currPageIndex = pssData->minPageIndex; + sMonSummaryScreen->currPageIndex = sMonSummaryScreen->minPageIndex; SummaryScreen_SetUnknownTaskId(-1); if (gMonSpritesGfxPtr == 0) @@ -1037,13 +1090,13 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove) { ShowPokemonSummaryScreen(PSS_MODE_SELECT_MOVE, mons, monIndex, maxMonIndex, callback); - pssData->newMove = newMove; + sMonSummaryScreen->newMove = newMove; } void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void)) { ShowPokemonSummaryScreen(mode, mons, monIndex, maxMonIndex, callback); - pssData->unk40EF = TRUE; + sMonSummaryScreen->unk40EF = TRUE; } static void SummaryScreen_MainCB2(void) @@ -1096,7 +1149,7 @@ static bool8 SummaryScreen_LoadGraphics(void) break; case 5: InitBGs(); - pssData->unk40F0 = 0; + sMonSummaryScreen->switchCounter = 0; gMain.state++; break; case 6: @@ -1104,20 +1157,20 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 7: - sub_81C2554(); + ResetWindows(); gMain.state++; break; case 8: - sub_81C1BA0(); + DrawPagination(); gMain.state++; break; case 9: - CopyMonToSummaryStruct(&pssData->currentMon); - pssData->unk40F0 = 0; + CopyMonToSummaryStruct(&sMonSummaryScreen->currentMon); + sMonSummaryScreen->switchCounter = 0; gMain.state++; break; case 10: - if (ExtractMonDataToSummaryStruct(&pssData->currentMon) != 0) + if (ExtractMonDataToSummaryStruct(&sMonSummaryScreen->currentMon) != 0) gMain.state++; break; case 11: @@ -1129,7 +1182,7 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 13: - sub_81C2D9C(pssData->currPageIndex); + PrintPageSpecificText(sMonSummaryScreen->currPageIndex); gMain.state++; break; case 14: @@ -1137,29 +1190,29 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 15: - sub_81C2AFC(pssData->currPageIndex); + CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex); gMain.state++; break; case 16: - sub_81C4190(); - sub_81C42C8(); - pssData->unk40F0 = 0; + ResetSpriteIds(); + CreateMoveTypeIcons(); + sMonSummaryScreen->switchCounter = 0; gMain.state++; break; case 17: - pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &pssData->unk40F0); - if (pssData->spriteIds[0] != 0xFF) + sMonSummaryScreen->spriteIds[0] = CreatePokemonSprite(&sMonSummaryScreen->currentMon, &sMonSummaryScreen->switchCounter); + if (sMonSummaryScreen->spriteIds[0] != 0xFF) { - pssData->unk40F0 = 0; + sMonSummaryScreen->switchCounter = 0; gMain.state++; } break; case 18: - CreateMonMarkingsSprite(&pssData->currentMon); + CreateMonMarkingsSprite(&sMonSummaryScreen->currentMon); gMain.state++; break; case 19: - CreateCaughtBallSprite(&pssData->currentMon); + CreateCaughtBallSprite(&sMonSummaryScreen->currentMon); gMain.state++; break; case 20: @@ -1167,12 +1220,12 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 21: - sub_81C4280(); + SetTypeIcons(); gMain.state++; break; case 22: - if (pssData->mode != PSS_MODE_SELECT_MOVE) - CreateTask(sub_81C0510, 0); + if (sMonSummaryScreen->mode != PSS_MODE_SELECT_MOVE) + CreateTask(HandleInput, 0); else CreateTask(sub_81C171C, 0); gMain.state++; @@ -1182,7 +1235,7 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 24: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); gPaletteFade.bufferTransferDisabled = 0; gMain.state++; break; @@ -1197,10 +1250,10 @@ static bool8 SummaryScreen_LoadGraphics(void) static void InitBGs(void) { ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_0861CBB4, ARRAY_COUNT(gUnknown_0861CBB4)); - SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); - SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0]); - SetBgTilemapBuffer(3, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]); + InitBgsFromTemplates(0, sUnknown_0861CBB4, ARRAY_COUNT(sUnknown_0861CBB4)); + SetBgTilemapBuffer(1, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); + SetBgTilemapBuffer(2, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][0]); + SetBgTilemapBuffer(3, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0]); ResetAllBgsCoordinates(); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); @@ -1215,64 +1268,64 @@ static void InitBGs(void) static bool8 SummaryScreen_DecompressGraphics(void) { - switch (pssData->unk40F0) + switch (sMonSummaryScreen->switchCounter) { case 0: reset_temp_tile_data_buffers(); - decompress_and_copy_tile_data_to_vram(1, &gUnknown_08D97D0C, 0, 0, 0); - pssData->unk40F0++; + decompress_and_copy_tile_data_to_vram(1, &gStatusScreenBitmap, 0, 0, 0); + sMonSummaryScreen->switchCounter++; break; case 1: if (free_temp_tile_data_buffers_if_possible() != 1) { - LZDecompressWram(gUnknown_08D9862C, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0]); - pssData->unk40F0++; + LZDecompressWram(gPageInfoTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0]); + sMonSummaryScreen->switchCounter++; } break; case 2: - LZDecompressWram(gUnknown_08D98CC8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][1]); - pssData->unk40F0++; + LZDecompressWram(gUnknown_08D98CC8, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1]); + sMonSummaryScreen->switchCounter++; break; case 3: - LZDecompressWram(gUnknown_08D987FC, pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1]); - pssData->unk40F0++; + LZDecompressWram(gPageSkillsTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][1]); + sMonSummaryScreen->switchCounter++; break; case 4: - LZDecompressWram(gUnknown_08D9898C, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]); - pssData->unk40F0++; + LZDecompressWram(gPageBattleMovesTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][1]); + sMonSummaryScreen->switchCounter++; break; case 5: - LZDecompressWram(gUnknown_08D98B28, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]); - pssData->unk40F0++; + LZDecompressWram(gPageContestMovesTilemap, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]); + sMonSummaryScreen->switchCounter++; break; case 6: - LoadCompressedPalette(gUnknown_08D9853C, 0, 0x100); + LoadCompressedPalette(gStatusScreenPalette, 0, 0x100); LoadPalette(&gUnknown_08D85620, 0x81, 0x1E); - pssData->unk40F0++; + sMonSummaryScreen->switchCounter++; break; case 7: LoadCompressedSpriteSheet(&sSpriteSheet_MoveTypes); - pssData->unk40F0++; + sMonSummaryScreen->switchCounter++; break; case 8: - LoadCompressedSpriteSheet(&gUnknown_0861D074); - pssData->unk40F0++; + LoadCompressedSpriteSheet(&sMoveSelectorSpriteSheet); + sMonSummaryScreen->switchCounter++; break; case 9: - LoadCompressedSpriteSheet(&gUnknown_0861D0F8); - pssData->unk40F0++; + LoadCompressedSpriteSheet(&sStatusIconsSpriteSheet); + sMonSummaryScreen->switchCounter++; break; case 10: - LoadCompressedSpritePalette(&gUnknown_0861D100); - pssData->unk40F0++; + LoadCompressedSpritePalette(&sStatusIconsSpritePalette); + sMonSummaryScreen->switchCounter++; break; case 11: LoadCompressedSpritePalette(&gUnknown_0861D07C); - pssData->unk40F0++; + sMonSummaryScreen->switchCounter++; break; case 12: LoadCompressedPalette(gMoveTypes_Pal, 0x1D0, 0x60); - pssData->unk40F0 = 0; + sMonSummaryScreen->switchCounter = 0; return TRUE; } return FALSE; @@ -1280,140 +1333,141 @@ static bool8 SummaryScreen_DecompressGraphics(void) static void CopyMonToSummaryStruct(struct Pokemon *mon) { - if (!pssData->isBoxMon) + if (!sMonSummaryScreen->isBoxMon) { - struct Pokemon *partyMon = pssData->monList.mons; - *mon = partyMon[pssData->curMonIndex]; + struct Pokemon *partyMon = sMonSummaryScreen->monList.mons; + *mon = partyMon[sMonSummaryScreen->curMonIndex]; } else { - struct BoxPokemon *boxMon = pssData->monList.boxMons; - BoxMonToMon(&boxMon[pssData->curMonIndex], mon); + struct BoxPokemon *boxMon = sMonSummaryScreen->monList.boxMons; + BoxMonToMon(&boxMon[sMonSummaryScreen->curMonIndex], mon); } } -static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *a) +static bool8 ExtractMonDataToSummaryStruct(struct Pokemon *mon) { u32 i; - struct PokeSummary *sum = &pssData->summary; - switch (pssData->unk40F0) + struct PokeSummary *sum = &sMonSummaryScreen->summary; + // Spread the data extraction over multiple frames. + switch (sMonSummaryScreen->switchCounter) { case 0: - sum->species = GetMonData(a, MON_DATA_SPECIES); - sum->species2 = GetMonData(a, MON_DATA_SPECIES2); - sum->exp = GetMonData(a, MON_DATA_EXP); - sum->level = GetMonData(a, MON_DATA_LEVEL); - sum->altAbility = GetMonData(a, MON_DATA_ALT_ABILITY); - sum->item = GetMonData(a, MON_DATA_HELD_ITEM); - sum->pid = GetMonData(a, MON_DATA_PERSONALITY); - sum->sanity = GetMonData(a, MON_DATA_SANITY_IS_BAD_EGG); + sum->species = GetMonData(mon, MON_DATA_SPECIES); + sum->species2 = GetMonData(mon, MON_DATA_SPECIES2); + sum->exp = GetMonData(mon, MON_DATA_EXP); + sum->level = GetMonData(mon, MON_DATA_LEVEL); + sum->altAbility = GetMonData(mon, MON_DATA_ALT_ABILITY); + sum->item = GetMonData(mon, MON_DATA_HELD_ITEM); + sum->pid = GetMonData(mon, MON_DATA_PERSONALITY); + sum->sanity = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG); if (sum->sanity) sum->isEgg = TRUE; else - sum->isEgg = GetMonData(a, MON_DATA_IS_EGG); + sum->isEgg = GetMonData(mon, MON_DATA_IS_EGG); break; case 1: for (i = 0; i < MAX_MON_MOVES; i++) { - sum->moves[i] = GetMonData(a, MON_DATA_MOVE1+i); - sum->pp[i] = GetMonData(a, MON_DATA_PP1+i); + sum->moves[i] = GetMonData(mon, MON_DATA_MOVE1+i); + sum->pp[i] = GetMonData(mon, MON_DATA_PP1+i); } - sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES); + sum->ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); break; case 2: - if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_BOX || pssData->unk40EF == TRUE) + if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE) { - sum->nature = GetNature(a); - sum->currentHP = GetMonData(a, MON_DATA_HP); - sum->maxHP = GetMonData(a, MON_DATA_MAX_HP); - sum->atk = GetMonData(a, MON_DATA_ATK); - sum->def = GetMonData(a, MON_DATA_DEF); - sum->spatk = GetMonData(a, MON_DATA_SPATK); - sum->spdef = GetMonData(a, MON_DATA_SPDEF); - sum->speed = GetMonData(a, MON_DATA_SPEED); + sum->nature = GetNature(mon); + sum->currentHP = GetMonData(mon, MON_DATA_HP); + sum->maxHP = GetMonData(mon, MON_DATA_MAX_HP); + sum->atk = GetMonData(mon, MON_DATA_ATK); + sum->def = GetMonData(mon, MON_DATA_DEF); + sum->spatk = GetMonData(mon, MON_DATA_SPATK); + sum->spdef = GetMonData(mon, MON_DATA_SPDEF); + sum->speed = GetMonData(mon, MON_DATA_SPEED); } else { - sum->nature = GetNature(a); - sum->currentHP = GetMonData(a, MON_DATA_HP); - sum->maxHP = GetMonData(a, MON_DATA_MAX_HP); - sum->atk = GetMonData(a, MON_DATA_ATK2); - sum->def = GetMonData(a, MON_DATA_DEF2); - sum->spatk = GetMonData(a, MON_DATA_SPATK2); - sum->spdef = GetMonData(a, MON_DATA_SPDEF2); - sum->speed = GetMonData(a, MON_DATA_SPEED2); + sum->nature = GetNature(mon); + sum->currentHP = GetMonData(mon, MON_DATA_HP); + sum->maxHP = GetMonData(mon, MON_DATA_MAX_HP); + sum->atk = GetMonData(mon, MON_DATA_ATK2); + sum->def = GetMonData(mon, MON_DATA_DEF2); + sum->spatk = GetMonData(mon, MON_DATA_SPATK2); + sum->spdef = GetMonData(mon, MON_DATA_SPDEF2); + sum->speed = GetMonData(mon, MON_DATA_SPEED2); } break; case 3: - GetMonData(a, MON_DATA_OT_NAME, &sum->OTName); - ConvertInternationalString((u8*)&sum->OTName, GetMonData(a, MON_DATA_LANGUAGE)); - sum->unk7 = sub_81B205C(a); - sum->OTGender = GetMonData(a, MON_DATA_OT_GENDER); - sum->OTID = GetMonData(a, MON_DATA_OT_ID); - sum->metLocation = GetMonData(a, MON_DATA_MET_LOCATION); - sum->metLevel = GetMonData(a, MON_DATA_MET_LEVEL); - sum->metGame = GetMonData(a, MON_DATA_MET_GAME); - sum->friendship = GetMonData(a, MON_DATA_FRIENDSHIP); + GetMonData(mon, MON_DATA_OT_NAME, sum->OTName); + ConvertInternationalString((u8*)&sum->OTName, GetMonData(mon, MON_DATA_LANGUAGE)); + sum->ailment = GetMonAilment(mon); + sum->OTGender = GetMonData(mon, MON_DATA_OT_GENDER); + sum->OTID = GetMonData(mon, MON_DATA_OT_ID); + sum->metLocation = GetMonData(mon, MON_DATA_MET_LOCATION); + sum->metLevel = GetMonData(mon, MON_DATA_MET_LEVEL); + sum->metGame = GetMonData(mon, MON_DATA_MET_GAME); + sum->friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); break; default: - sum->ribbonCount = GetMonData(a, MON_DATA_RIBBON_COUNT); + sum->ribbonCount = GetMonData(mon, MON_DATA_RIBBON_COUNT); return TRUE; } - pssData->unk40F0++; + sMonSummaryScreen->switchCounter++; return FALSE; } static void sub_81C0348(void) { - if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES) + if (sMonSummaryScreen->currPageIndex != PSS_PAGE_BATTLE_MOVES && sMonSummaryScreen->currPageIndex != PSS_PAGE_CONTEST_MOVES) { sub_81C1DA4(0, 255); sub_81C1EFC(0, 255, 0); } else { - sub_81C240C(pssData->summary.moves[pssData->firstMoveIndex]); - sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); - sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); - SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]); - SetBgTilemapBuffer(2, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); + DrawContestMoveHearts(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]); + sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); + sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); + SetBgTilemapBuffer(1, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]); + SetBgTilemapBuffer(2, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0]); ChangeBgX(2, 0x10000, 1); - ClearWindowTilemap(19); - ClearWindowTilemap(13); + ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); } - if (pssData->summary.unk7 == 0) + if (sMonSummaryScreen->summary.ailment == AILMENT_NONE) { sub_81C2074(0, 0xFF); } else { - if (pssData->currPageIndex != PSS_PAGE_BATTLE_MOVES && pssData->currPageIndex != PSS_PAGE_CONTEST_MOVES) - PutWindowTilemap(13); + if (sMonSummaryScreen->currPageIndex != PSS_PAGE_BATTLE_MOVES && sMonSummaryScreen->currPageIndex != PSS_PAGE_CONTEST_MOVES) + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); } - sub_81C2524(); - sub_81C2228(&pssData->currentMon); + LimitEggSummaryPageDisplay(); + DrawPokerusCuredSymbol(&sMonSummaryScreen->currentMon); } static void sub_81C0434(void) { FreeAllWindowBuffers(); - Free(pssData); + Free(sMonSummaryScreen); } -static void sub_81C044C(u8 taskId) +static void BeginCloseSummaryScreen(u8 taskId) { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_81C0484; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + gTasks[taskId].func = CloseSummaryScreen; } -static void sub_81C0484(u8 taskId) +static void CloseSummaryScreen(u8 taskId) { if (sub_81221EC() != TRUE && !gPaletteFade.active) { - SetMainCallback2(pssData->callback); - gUnknown_0203CF20 = pssData->curMonIndex; + SetMainCallback2(sMonSummaryScreen->callback); + gLastViewedMonIndex = sMonSummaryScreen->curMonIndex; SummaryScreen_DestroyUnknownTask(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -1426,35 +1480,35 @@ static void sub_81C0484(u8 taskId) } } -static void sub_81C0510(u8 taskId) +static void HandleInput(u8 taskId) { if (sub_81221EC() != TRUE && !gPaletteFade.active) { if (gMain.newKeys & DPAD_UP) { - sub_81C0604(taskId, -1); + ChangeSummaryPokemon(taskId, -1); } else if (gMain.newKeys & DPAD_DOWN) { - sub_81C0604(taskId, 1); + ChangeSummaryPokemon(taskId, 1); } else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1) { - sub_81C0A8C(taskId, -1); + ChangePage(taskId, -1); } else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2) { - sub_81C0A8C(taskId, 1); + ChangePage(taskId, 1); } else if (gMain.newKeys & A_BUTTON) { - if (pssData->currPageIndex != PSS_PAGE_SKILLS) + if (sMonSummaryScreen->currPageIndex != PSS_PAGE_SKILLS) { - if (pssData->currPageIndex == PSS_PAGE_INFO) + if (sMonSummaryScreen->currPageIndex == PSS_PAGE_INFO) { - sub_81C48F0(); + StopPokemonAnimations(); PlaySE(SE_SELECT); - sub_81C044C(taskId); + BeginCloseSummaryScreen(taskId); } else { @@ -1465,57 +1519,59 @@ static void sub_81C0510(u8 taskId) } else if (gMain.newKeys & B_BUTTON) { - sub_81C48F0(); + StopPokemonAnimations(); PlaySE(SE_SELECT); - sub_81C044C(taskId); + BeginCloseSummaryScreen(taskId); } } } -static void sub_81C0604(u8 taskId, s8 a) +static void ChangeSummaryPokemon(u8 taskId, s8 delta) { - s8 r4_2; + s8 v1; + s8 v2; - if (!pssData->unk40C3) + if (!sMonSummaryScreen->lockMonFlag) { - if (pssData->isBoxMon == TRUE) + if (sMonSummaryScreen->isBoxMon == TRUE) { - if (pssData->currPageIndex != PSS_PAGE_INFO) + + if (sMonSummaryScreen->currPageIndex != PSS_PAGE_INFO) { - if (a == 1) - a = 0; + if (delta == 1) + delta = 0; else - a = 2; + delta = 2; } else { - if (a == 1) - a = 1; + if (delta == 1) + delta = 1; else - a = 3; + delta = 3; } - r4_2 = sub_80D214C(pssData->monList.boxMons, pssData->curMonIndex, pssData->maxMonIndex, a); + v1 = sub_80D214C(sMonSummaryScreen->monList.boxMons, sMonSummaryScreen->curMonIndex, sMonSummaryScreen->maxMonIndex, delta); } else if (IsMultiBattle() == TRUE) { - r4_2 = sub_81C09B4(a); + v1 = sub_81C09B4(delta); } else { - r4_2 = sub_81C08F8(a); + v1 = sub_81C08F8(delta); } - if (r4_2 != -1) + if (v1 != -1) { PlaySE(SE_SELECT); - if (pssData->summary.unk7 != 0) + if (sMonSummaryScreen->summary.ailment != AILMENT_NONE) { - sub_81C4204(2, 1); - ClearWindowTilemap(13); + SetSpriteInvisibility(2, 1); + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); schedule_bg_copy_tilemap_to_vram(0); sub_81C2074(0, 2); } - pssData->curMonIndex = r4_2; + sMonSummaryScreen->curMonIndex = v1; gTasks[taskId].data[0] = 0; gTasks[taskId].func = sub_81C0704; } @@ -1533,57 +1589,57 @@ static void sub_81C0704(u8 taskId) break; case 1: SummaryScreen_DestroyUnknownTask(); - DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[0]]); + DestroySpriteAndFreeResources(&gSprites[sMonSummaryScreen->spriteIds[0]]); break; case 2: - DestroySpriteAndFreeResources(&gSprites[pssData->spriteIds[1]]); + DestroySpriteAndFreeResources(&gSprites[sMonSummaryScreen->spriteIds[1]]); break; case 3: - CopyMonToSummaryStruct(&pssData->currentMon); - pssData->unk40F0 = 0; + CopyMonToSummaryStruct(&sMonSummaryScreen->currentMon); + sMonSummaryScreen->switchCounter = 0; break; case 4: - if (ExtractMonDataToSummaryStruct(&pssData->currentMon) == FALSE) + if (ExtractMonDataToSummaryStruct(&sMonSummaryScreen->currentMon) == FALSE) return; break; case 5: - RemoveAndCreateMonMarkingsSprite(&pssData->currentMon); + RemoveAndCreateMonMarkingsSprite(&sMonSummaryScreen->currentMon); break; case 6: - CreateCaughtBallSprite(&pssData->currentMon); + CreateCaughtBallSprite(&sMonSummaryScreen->currentMon); break; case 7: - if (pssData->summary.unk7) + if (sMonSummaryScreen->summary.ailment != AILMENT_NONE) sub_81C2074(10, -2); - sub_81C2228(&pssData->currentMon); + DrawPokerusCuredSymbol(&sMonSummaryScreen->currentMon); data[1] = 0; break; case 8: - pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &data[1]); - if (pssData->spriteIds[0] == 0xFF) + sMonSummaryScreen->spriteIds[0] = CreatePokemonSprite(&sMonSummaryScreen->currentMon, &data[1]); + if (sMonSummaryScreen->spriteIds[0] == 0xFF) return; - gSprites[pssData->spriteIds[0]].data[2] = 1; - sub_81C0E24(); + gSprites[sMonSummaryScreen->spriteIds[0]].data[2] = 1; + CheckExperienceProgressBar(); data[1] = 0; break; case 9: - sub_81C4280(); + SetTypeIcons(); break; case 10: sub_81C25E8(); break; case 11: - sub_81C2D9C(pssData->currPageIndex); - sub_81C2524(); + PrintPageSpecificText(sMonSummaryScreen->currPageIndex); + LimitEggSummaryPageDisplay(); break; case 12: - gSprites[pssData->spriteIds[0]].data[2] = 0; + gSprites[sMonSummaryScreen->spriteIds[0]].data[2] = 0; break; default: if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0) { data[0] = 0; - gTasks[taskId].func = sub_81C0510; + gTasks[taskId].func = HandleInput; } return; } @@ -1592,25 +1648,25 @@ static void sub_81C0704(u8 taskId) static s8 sub_81C08F8(s8 a) { - struct Pokemon *mon = pssData->monList.mons; + struct Pokemon *mon = sMonSummaryScreen->monList.mons; - if (pssData->currPageIndex == PSS_PAGE_INFO) + if (sMonSummaryScreen->currPageIndex == PSS_PAGE_INFO) { - if (a == -1 && pssData->curMonIndex == 0) + if (a == -1 && sMonSummaryScreen->curMonIndex == 0) return -1; - else if (a == 1 && pssData->curMonIndex >= pssData->maxMonIndex) + else if (a == 1 && sMonSummaryScreen->curMonIndex >= sMonSummaryScreen->maxMonIndex) return -1; else - return pssData->curMonIndex + a; + return sMonSummaryScreen->curMonIndex + a; } else { - s8 index = pssData->curMonIndex; + s8 index = sMonSummaryScreen->curMonIndex; do { index += a; - if (index < 0 || index > pssData->maxMonIndex) + if (index < 0 || index > sMonSummaryScreen->maxMonIndex) return -1; } while (GetMonData(&mon[index], MON_DATA_IS_EGG) != 0); return index; @@ -1619,13 +1675,13 @@ static s8 sub_81C08F8(s8 a) static s8 sub_81C09B4(s8 a) { - struct Pokemon *mon = pssData->monList.mons; + struct Pokemon *mon = sMonSummaryScreen->monList.mons; s8 r5 = 0; u8 i; for (i = 0; i < 6; i++) { - if (gUnknown_0861CC1C[i] == pssData->curMonIndex) + if (gUnknown_0861CC1C[i] == sMonSummaryScreen->curMonIndex) { r5 = i; break; @@ -1650,42 +1706,42 @@ static bool8 sub_81C0A50(struct Pokemon* mon) { if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NONE) return FALSE; - else if (pssData->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) + else if (sMonSummaryScreen->curMonIndex != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0) return TRUE; else return FALSE; } -static void sub_81C0A8C(u8 taskId, s8 b) +static void ChangePage(u8 taskId, s8 delta) { - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; s16 *data = gTasks[taskId].data; if (summary->isEgg) return; - else if (b == -1 && pssData->currPageIndex == pssData->minPageIndex) + else if (delta == -1 && sMonSummaryScreen->currPageIndex == sMonSummaryScreen->minPageIndex) return; - else if (b == 1 && pssData->currPageIndex == pssData->maxPageIndex) + else if (delta == 1 && sMonSummaryScreen->currPageIndex == sMonSummaryScreen->maxPageIndex) return; PlaySE(SE_SELECT); - sub_81C2C38(pssData->currPageIndex); - pssData->currPageIndex += b; + ClearPageWindowTilemaps(sMonSummaryScreen->currPageIndex); + sMonSummaryScreen->currPageIndex += delta; data[0] = 0; - if (b == 1) - SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func); + if (delta == 1) + SetTaskFuncWithFollowupFunc(taskId, PssScrollRight, gTasks[taskId].func); else - SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func); - sub_81C2DE4(pssData->currPageIndex); - sub_81C424C(); + SetTaskFuncWithFollowupFunc(taskId, PssScrollLeft, gTasks[taskId].func); + CreateTextPrinterTask(sMonSummaryScreen->currPageIndex); + HidePageSpecificSprites(); } -static void sub_81C0B8C(u8 taskId) +static void PssScrollRight(u8 taskId) // Scroll right { s16 *data = gTasks[taskId].data; if (data[0] == 0) { - if (pssData->unk40C9 == 0) + if (sMonSummaryScreen->bgDisplayOrder == 0) { data[1] = 1; SetBgAttribute(1, BG_ATTR_PRIORITY, 1); @@ -1700,35 +1756,35 @@ static void sub_81C0B8C(u8 taskId) schedule_bg_copy_tilemap_to_vram(2); } ChangeBgX(data[1], 0, 0); - SetBgTilemapBuffer(data[1], pssData->bgTilemapBuffers[pssData->currPageIndex][0]); + SetBgTilemapBuffer(data[1], sMonSummaryScreen->bgTilemapBuffers[sMonSummaryScreen->currPageIndex][0]); ShowBg(1); ShowBg(2); } ChangeBgX(data[1], 0x2000, 1); data[0] += 32; if (data[0] > 0xFF) - gTasks[taskId].func = sub_81C0C68; + gTasks[taskId].func = PssScrollRightEnd; } -static void sub_81C0C68(u8 taskId) +static void PssScrollRightEnd(u8 taskId) // display right { s16 *data = gTasks[taskId].data; - pssData->unk40C9 ^= 1; + sMonSummaryScreen->bgDisplayOrder ^= 1; data[1] = 0; data[0] = 0; - sub_81C1BA0(); - sub_81C2AFC(pssData->currPageIndex); - sub_81C4280(); - sub_81C0E24(); + DrawPagination(); + CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex); + SetTypeIcons(); + CheckExperienceProgressBar(); SwitchTaskToFollowupFunc(taskId); } -static void sub_81C0CC4(u8 taskId) +static void PssScrollLeft(u8 taskId) // Scroll left { s16 *data = gTasks[taskId].data; if (data[0] == 0) { - if (pssData->unk40C9 == 0) + if (sMonSummaryScreen->bgDisplayOrder == 0) data[1] = 2; else data[1] = 1; @@ -1737,13 +1793,13 @@ static void sub_81C0CC4(u8 taskId) ChangeBgX(data[1], 0x2000, 2); data[0] += 32; if (data[0] > 0xFF) - gTasks[taskId].func = sub_81C0D44; + gTasks[taskId].func = PssScrollLeftEnd; } -static void sub_81C0D44(u8 taskId) +static void PssScrollLeftEnd(u8 taskId) // display left { s16 *data = gTasks[taskId].data; - if (pssData->unk40C9 == 0) + if (sMonSummaryScreen->bgDisplayOrder == 0) { SetBgAttribute(1, BG_ATTR_PRIORITY, 1); SetBgAttribute(2, BG_ATTR_PRIORITY, 2); @@ -1755,57 +1811,57 @@ static void sub_81C0D44(u8 taskId) SetBgAttribute(1, BG_ATTR_PRIORITY, 2); schedule_bg_copy_tilemap_to_vram(1); } - if (pssData->currPageIndex > 1) + if (sMonSummaryScreen->currPageIndex > 1) { - SetBgTilemapBuffer(data[1], (u8*)pssData + ((pssData->currPageIndex << 12) + 0xFFFFF0BC)); + SetBgTilemapBuffer(data[1], (u8*)sMonSummaryScreen + ((sMonSummaryScreen->currPageIndex << 12) + 0xFFFFF0BC)); ChangeBgX(data[1], 0x10000, 0); } ShowBg(1); ShowBg(2); - pssData->unk40C9 ^= 1; + sMonSummaryScreen->bgDisplayOrder ^= 1; data[1] = 0; data[0] = 0; - sub_81C1BA0(); - sub_81C2AFC(pssData->currPageIndex); - sub_81C4280(); - sub_81C0E24(); + DrawPagination(); + CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex); + SetTypeIcons(); + CheckExperienceProgressBar(); SwitchTaskToFollowupFunc(taskId); } -static void sub_81C0E24(void) +static void CheckExperienceProgressBar(void) { - if (pssData->currPageIndex == 1) - DrawExperienceProgressBar(&pssData->currentMon); + if (sMonSummaryScreen->currPageIndex == 1) + DrawExperienceProgressBar(&sMonSummaryScreen->currentMon); } static void sub_81C0E48(u8 taskId) { u16 move; - pssData->firstMoveIndex = 0; - move = pssData->summary.moves[pssData->firstMoveIndex]; - ClearWindowTilemap(0x13); - if (gSprites[pssData->spriteIds[2]].invisible == 0) - ClearWindowTilemap(0xD); + sMonSummaryScreen->firstMoveIndex = 0; + move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]; + ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); + if (gSprites[sMonSummaryScreen->spriteIds[2]].invisible == 0) + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); - if (!pssData->unk40C8) + if (!sMonSummaryScreen->unk40C8) { - ClearWindowTilemap(5); - PutWindowTilemap(6); + ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO); + PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_SWITCH); } - sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); - sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); + sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); + sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); PrintMoveDetails(move); PrintNewMoveDetailsOrCancelText(); - sub_81C44F0(); + SetNewMoveTypeIcon(); schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); sub_81C4AF8(8); - gTasks[taskId].func = sub_81C0F44; + gTasks[taskId].func = HandleInput_MoveSelect; } -static void sub_81C0F44(u8 taskId) +static void HandleInput_MoveSelect(u8 taskId) { u8 id = taskId; s16 *data = gTasks[taskId].data; @@ -1815,17 +1871,17 @@ static void sub_81C0F44(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 4; - sub_81C1070(data, -1, &pssData->firstMoveIndex); + sub_81C1070(data, -1, &sMonSummaryScreen->firstMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 4; - sub_81C1070(data, 1, &pssData->firstMoveIndex); + sub_81C1070(data, 1, &sMonSummaryScreen->firstMoveIndex); } else if (gMain.newKeys & A_BUTTON) { - if (pssData->unk40C8 == TRUE - || (pssData->newMove == MOVE_NONE && pssData->firstMoveIndex == MAX_MON_MOVES)) + if (sMonSummaryScreen->unk40C8 == TRUE + || (sMonSummaryScreen->newMove == MOVE_NONE && sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES)) { PlaySE(SE_SELECT); sub_81C11F4(taskId); @@ -1853,7 +1909,7 @@ static bool8 sub_81C1040(void) u8 i; for (i = 1; i < MAX_MON_MOVES; i++) { - if (pssData->summary.moves[i] != 0) + if (sMonSummaryScreen->summary.moves[i] != 0) return TRUE; } return FALSE; @@ -1876,36 +1932,36 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c) moveIndex = a[0]; if (moveIndex == MAX_MON_MOVES) { - move = pssData->newMove; + move = sMonSummaryScreen->newMove; break; } - move = pssData->summary.moves[moveIndex]; + move = sMonSummaryScreen->summary.moves[moveIndex]; if (move != 0) break; } - sub_81C240C(move); + DrawContestMoveHearts(move); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); PrintMoveDetails(move); - if ((*c == 4 && pssData->newMove == MOVE_NONE) || a[1] == 1) + if ((*c == 4 && sMonSummaryScreen->newMove == MOVE_NONE) || a[1] == 1) { - ClearWindowTilemap(19); - if (!gSprites[pssData->spriteIds[2]].invisible) - ClearWindowTilemap(13); + ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); + if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible) + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); } - if (*c != 4 && moveIndex == 4 && pssData->newMove == MOVE_NONE) + if (*c != 4 && moveIndex == 4 && sMonSummaryScreen->newMove == MOVE_NONE) { - ClearWindowTilemap(14); - ClearWindowTilemap(15); + ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC); + ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(0, 3); sub_81C1EFC(0, 3, 0); } *c = moveIndex; - if (c == &pssData->firstMoveIndex) + if (c == &sMonSummaryScreen->firstMoveIndex) sub_81C4D18(8); else sub_81C4D18(18); @@ -1914,28 +1970,28 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c) static void sub_81C11F4(u8 taskId) { sub_81C4C60(8); - ClearWindowTilemap(6); - PutWindowTilemap(5); + ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_SWITCH); + PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO); PrintMoveDetails(0); - sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1); - sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1); + sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 1); + sub_81C2194(sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 1); sub_81C4064(); - if (pssData->firstMoveIndex != MAX_MON_MOVES) + if (sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES) { - ClearWindowTilemap(14); - ClearWindowTilemap(15); + ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC); + ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM); sub_81C1DA4(0, 3); sub_81C1EFC(0, 3, 0); } schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); - gTasks[taskId].func = sub_81C0510; + gTasks[taskId].func = HandleInput; } static void sub_81C129C(u8 taskId) { - pssData->secondMoveIndex = pssData->firstMoveIndex; + sMonSummaryScreen->secondMoveIndex = sMonSummaryScreen->firstMoveIndex; sub_81C4C84(1); sub_81C4AF8(18); gTasks[taskId].func = sub_81C12E4; @@ -1950,16 +2006,16 @@ static void sub_81C12E4(u8 taskId) if (gMain.newKeys & DPAD_UP) { data[0] = 3; - sub_81C1070(&data[0], -1, &pssData->secondMoveIndex); + sub_81C1070(&data[0], -1, &sMonSummaryScreen->secondMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 3; - sub_81C1070(&data[0], 1, &pssData->secondMoveIndex); + sub_81C1070(&data[0], 1, &sMonSummaryScreen->secondMoveIndex); } else if (gMain.newKeys & A_BUTTON) { - if (pssData->firstMoveIndex == pssData->secondMoveIndex) + if (sMonSummaryScreen->firstMoveIndex == sMonSummaryScreen->secondMoveIndex) { sub_81C13B0(taskId, 0); } @@ -1985,33 +2041,33 @@ static void sub_81C13B0(u8 taskId, bool8 b) if (b == TRUE) { - if (!pssData->isBoxMon) + if (!sMonSummaryScreen->isBoxMon) { - struct Pokemon *why = pssData->monList.mons; - SwapMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex); + struct Pokemon *why = sMonSummaryScreen->monList.mons; + SwapMonMoves(&why[sMonSummaryScreen->curMonIndex], sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex); } else { - struct BoxPokemon *why = pssData->monList.boxMons; - SwapBoxMonMoves(&why[pssData->curMonIndex], pssData->firstMoveIndex, pssData->secondMoveIndex); + struct BoxPokemon *why = sMonSummaryScreen->monList.boxMons; + SwapBoxMonMoves(&why[sMonSummaryScreen->curMonIndex], sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex); } - CopyMonToSummaryStruct(&pssData->currentMon); - sub_81C40A0(pssData->firstMoveIndex, pssData->secondMoveIndex); - sub_81C4568(pssData->firstMoveIndex, pssData->secondMoveIndex); - pssData->firstMoveIndex = pssData->secondMoveIndex; + CopyMonToSummaryStruct(&sMonSummaryScreen->currentMon); + sub_81C40A0(sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex); + sub_81C4568(sMonSummaryScreen->firstMoveIndex, sMonSummaryScreen->secondMoveIndex); + sMonSummaryScreen->firstMoveIndex = sMonSummaryScreen->secondMoveIndex; } - move = pssData->summary.moves[pssData->firstMoveIndex]; + move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]; PrintMoveDetails(move); - sub_81C240C(move); + DrawContestMoveHearts(move); schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(2); - gTasks[taskId].func = sub_81C0F44; + gTasks[taskId].func = HandleInput_MoveSelect; } static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2) { - struct PokeSummary* summary = &pssData->summary; + struct PokeSummary* summary = &sMonSummaryScreen->summary; u16 move1 = summary->moves[moveIndex1]; u16 move2 = summary->moves[moveIndex2]; @@ -2020,9 +2076,9 @@ static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2) u8 ppBonuses = summary->ppBonuses; // Calculate PP bonuses - u8 ppUpMask1 = gUnknown_08329D22[moveIndex1]; + u8 ppUpMask1 = gPPUpGetMask[moveIndex1]; u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2); - u8 ppUpMask2 = gUnknown_08329D22[moveIndex2]; + u8 ppUpMask2 = gPPUpGetMask[moveIndex2]; u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2); ppBonuses &= ~ppUpMask1; ppBonuses &= ~ppUpMask2; @@ -2046,7 +2102,7 @@ static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2) static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2) { - struct PokeSummary* summary = &pssData->summary; + struct PokeSummary* summary = &sMonSummaryScreen->summary; u16 move1 = summary->moves[moveIndex1]; u16 move2 = summary->moves[moveIndex2]; @@ -2055,9 +2111,9 @@ static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2 u8 ppBonuses = summary->ppBonuses; // Calculate PP bonuses - u8 ppUpMask1 = gUnknown_08329D22[moveIndex1]; + u8 ppUpMask1 = gPPUpGetMask[moveIndex1]; u8 ppBonusMove1 = (ppBonuses & ppUpMask1) >> (moveIndex1 * 2); - u8 ppUpMask2 = gUnknown_08329D22[moveIndex2]; + u8 ppUpMask2 = gPPUpGetMask[moveIndex2]; u8 ppBonusMove2 = (ppBonuses & ppUpMask2) >> (moveIndex2 * 2); ppBonuses &= ~ppUpMask1; ppBonuses &= ~ppUpMask2; @@ -2081,86 +2137,87 @@ static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2 static void sub_81C171C(u8 taskId) { - sub_81C44F0(); + SetNewMoveTypeIcon(); sub_81C4AF8(8); - gTasks[taskId].func = sub_81C174C; + gTasks[taskId].func = HandleReplaceMoveInput; } -static void sub_81C174C(u8 taskId) +static void HandleReplaceMoveInput(u8 taskId) { s16* data = gTasks[taskId].data; - if (sub_81221EC() != 1) + if (sub_81221EC() != TRUE) { - if (gPaletteFade.active != 1) + if (gPaletteFade.active != TRUE) { if (gMain.newKeys & DPAD_UP) { data[0] = 4; - sub_81C1070(data, -1, &pssData->firstMoveIndex); + sub_81C1070(data, -1, &sMonSummaryScreen->firstMoveIndex); } else if (gMain.newKeys & DPAD_DOWN) { data[0] = 4; - sub_81C1070(data, 1, &pssData->firstMoveIndex); + sub_81C1070(data, 1, &sMonSummaryScreen->firstMoveIndex); } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) { - sub_81C0A8C(taskId, -1); + ChangePage(taskId, -1); } else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) { - sub_81C0A8C(taskId, 1); + ChangePage(taskId, 1); } else if (gMain.newKeys & A_BUTTON) { - if (sub_81C18A8() == TRUE) + if (CanReplaceMove() == TRUE) { - sub_81C48F0(); + StopPokemonAnimations(); PlaySE(SE_SELECT); - gUnknown_0203CF21 = pssData->firstMoveIndex; - gSpecialVar_0x8005 = gUnknown_0203CF21; - sub_81C044C(taskId); + sUnknown_0203CF21 = sMonSummaryScreen->firstMoveIndex; + gSpecialVar_0x8005 = sUnknown_0203CF21; + BeginCloseSummaryScreen(taskId); } else { PlaySE(SE_HAZURE); - sub_81C18F4(taskId); + ShowHMMovesCantBeForgottenWindow(taskId); } } else if (gMain.newKeys & B_BUTTON) { u32 var1; - sub_81C48F0(); + StopPokemonAnimations(); PlaySE(SE_SELECT); - gUnknown_0203CF21 = 4; + sUnknown_0203CF21 = 4; gSpecialVar_0x8005 = 4; - sub_81C044C(taskId); + BeginCloseSummaryScreen(taskId); } } } } -static bool8 sub_81C18A8(void) +static bool8 CanReplaceMove(void) { - if (pssData->firstMoveIndex == MAX_MON_MOVES || pssData->newMove == MOVE_NONE || IsMoveHm(pssData->summary.moves[pssData->firstMoveIndex]) != 1) + if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES || sMonSummaryScreen->newMove == MOVE_NONE || IsMoveHm(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]) != 1) return TRUE; else return FALSE; } -static void sub_81C18F4(u8 taskId) +static void ShowHMMovesCantBeForgottenWindow(u8 taskId) { - ClearWindowTilemap(14); - ClearWindowTilemap(15); + ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC); + ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(0, 3); sub_81C1EFC(0, 3, 0); PrintHMMovesCantBeForgotten(); - gTasks[taskId].func = sub_81C1940; + gTasks[taskId].func = HandleHMMovesCantBeForgottenInput; } -static void sub_81C1940(u8 taskId) +// This redraws the power/accuracy window when the player scrolls out of the "HM Moves can't be forgotten" message +static void HandleHMMovesCantBeForgottenInput(u8 taskId) { s16* data = gTasks[taskId].data; u16 move; @@ -2170,67 +2227,67 @@ static void sub_81C1940(u8 taskId) { data[1] = 1; data[0] = 4; - sub_81C1070(&data[0], -1, &pssData->firstMoveIndex); + sub_81C1070(&data[0], -1, &sMonSummaryScreen->firstMoveIndex); data[1] = 0; - gTasks[taskId].func = sub_81C174C; + gTasks[taskId].func = HandleReplaceMoveInput; } else if (gMain.newKeys & DPAD_DOWN) { data[1] = 1; data[0] = 4; - sub_81C1070(&data[0], 1, &pssData->firstMoveIndex); + sub_81C1070(&data[0], 1, &sMonSummaryScreen->firstMoveIndex); data[1] = 0; - gTasks[taskId].func = sub_81C174C; + gTasks[taskId].func = HandleReplaceMoveInput; } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) { - if (pssData->currPageIndex != 2) + if (sMonSummaryScreen->currPageIndex != 2) { - ClearWindowTilemap(19); - if (!gSprites[pssData->spriteIds[2]].invisible) - ClearWindowTilemap(13); - move = pssData->summary.moves[pssData->firstMoveIndex]; - gTasks[taskId].func = sub_81C174C; - sub_81C0A8C(taskId, -1); + ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); + if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible) + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); + move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]; + gTasks[taskId].func = HandleReplaceMoveInput; + ChangePage(taskId, -1); sub_81C1DA4(9, -2); sub_81C1EFC(9, -2, move); } } else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) { - if (pssData->currPageIndex != 3) + if (sMonSummaryScreen->currPageIndex != 3) { - ClearWindowTilemap(19); - if (!gSprites[pssData->spriteIds[2]].invisible) - ClearWindowTilemap(13); - move = pssData->summary.moves[pssData->firstMoveIndex]; - gTasks[taskId].func = sub_81C174C; - sub_81C0A8C(taskId, 1); + ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); + if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible) + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); + move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]; + gTasks[taskId].func = HandleReplaceMoveInput; + ChangePage(taskId, 1); sub_81C1DA4(9, -2); sub_81C1EFC(9, -2, move); } } else if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - ClearWindowTilemap(19); - if (!gSprites[pssData->spriteIds[2]].invisible) - ClearWindowTilemap(13); - move = pssData->summary.moves[pssData->firstMoveIndex]; + ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); + if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible) + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); + move = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]; PrintMoveDetails(move); schedule_bg_copy_tilemap_to_vram(0); sub_81C1DA4(9, -3); sub_81C1EFC(9, -3, move); - gTasks[taskId].func = sub_81C174C; + gTasks[taskId].func = HandleReplaceMoveInput; } } } u8 sub_81C1B94(void) { - return gUnknown_0203CF21; + return sUnknown_0203CF21; } -static void sub_81C1BA0(void) +static void DrawPagination(void) // Updates the pagination dots at the top of the summary screen { u16 *alloced = Alloc(32); u8 i; @@ -2239,30 +2296,30 @@ static void sub_81C1BA0(void) { u8 j = i * 2; - if (i < pssData->minPageIndex) + if (i < sMonSummaryScreen->minPageIndex) { alloced[j + 0] = 0x40; alloced[j + 1] = 0x40; alloced[j + 8] = 0x50; alloced[j + 9] = 0x50; } - else if (i > pssData->maxPageIndex) + else if (i > sMonSummaryScreen->maxPageIndex) { alloced[j + 0] = 0x4A; alloced[j + 1] = 0x4A; alloced[j + 8] = 0x5A; alloced[j + 9] = 0x5A; } - else if (i < pssData->currPageIndex) + else if (i < sMonSummaryScreen->currPageIndex) { alloced[j + 0] = 0x46; alloced[j + 1] = 0x47; alloced[j + 8] = 0x56; alloced[j + 9] = 0x57; } - else if (i == pssData->currPageIndex) + else if (i == sMonSummaryScreen->currPageIndex) { - if (i != pssData->maxPageIndex) + if (i != sMonSummaryScreen->maxPageIndex) { alloced[j + 0] = 0x41; alloced[j + 1] = 0x42; @@ -2277,7 +2334,7 @@ static void sub_81C1BA0(void) alloced[j + 9] = 0x5C; } } - else if (i != pssData->maxPageIndex) + else if (i != sMonSummaryScreen->maxPageIndex) { alloced[j + 0] = 0x43; alloced[j + 1] = 0x44; @@ -2328,11 +2385,11 @@ static void sub_81C1CB0(const struct UnkStruct_61CC04 *unkStruct, u16 *dest, u8 static void sub_81C1DA4(u16 a, s16 b) { - if (b > gUnknown_0861CC04.field_6) - b = gUnknown_0861CC04.field_6; - if (b == 0 || b == gUnknown_0861CC04.field_6) + if (b > sUnknown_0861CC04.field_6) + b = sUnknown_0861CC04.field_6; + if (b == 0 || b == sUnknown_0861CC04.field_6) { - sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1); + sub_81C1CB0(&sUnknown_0861CC04, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], b, 1); } else { @@ -2354,23 +2411,23 @@ static void sub_81C1E20(u8 taskId) { data[1] = 0; } - else if (data[1] > gUnknown_0861CC04.field_6) + else if (data[1] > sUnknown_0861CC04.field_6) { - data[1] = gUnknown_0861CC04.field_6; + data[1] = sUnknown_0861CC04.field_6; } - sub_81C1CB0(&gUnknown_0861CC04, pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1); - if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6) + sub_81C1CB0(&sUnknown_0861CC04, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], data[1], 1); + if (data[1] <= 0 || data[1] >= sUnknown_0861CC04.field_6) { if (data[0] < 0) { - if (pssData->currPageIndex == 2) - PutWindowTilemap(14); + if (sMonSummaryScreen->currPageIndex == 2) + PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC); } else { - if (!gSprites[pssData->spriteIds[2]].invisible) - PutWindowTilemap(13); - PutWindowTilemap(19); + if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible) + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); + PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); } schedule_bg_copy_tilemap_to_vram(0); DestroyTask(taskId); @@ -2381,10 +2438,10 @@ static void sub_81C1E20(u8 taskId) static void sub_81C1EFC(u16 a, s16 b, u16 move) { - if (b > gUnknown_0861CC10.field_6) - b = gUnknown_0861CC10.field_6; - if (b == 0 || b == gUnknown_0861CC10.field_6) - sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1); + if (b > sUnknown_0861CC10.field_6) + b = sUnknown_0861CC10.field_6; + if (b == 0 || b == sUnknown_0861CC10.field_6) + sub_81C1CB0(&sUnknown_0861CC10, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], b, 1); else { u8 taskId = FindTaskIdByFunc(sub_81C1F80); @@ -2404,26 +2461,26 @@ static void sub_81C1F80(u8 taskId) { data[1] = 0; } - else if (data[1] > gUnknown_0861CC10.field_6) + else if (data[1] > sUnknown_0861CC10.field_6) { - data[1] = gUnknown_0861CC10.field_6; + data[1] = sUnknown_0861CC10.field_6; } - sub_81C1CB0(&gUnknown_0861CC10, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1); - if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6) + sub_81C1CB0(&sUnknown_0861CC10, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], data[1], 1); + if (data[1] <= 0 || data[1] >= sUnknown_0861CC10.field_6) { if (data[0] < 0) { - if (pssData->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0) - PutWindowTilemap(15); - sub_81C240C(data[2]); + if (sMonSummaryScreen->currPageIndex == 3 && FuncIsActiveTask(PssScrollRight) == 0) + PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM); + DrawContestMoveHearts(data[2]); } else { - if (!gSprites[pssData->spriteIds[2]].invisible) + if (!gSprites[sMonSummaryScreen->spriteIds[2]].invisible) { - PutWindowTilemap(13); + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); } - PutWindowTilemap(19); + PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); } schedule_bg_copy_tilemap_to_vram(0); DestroyTask(taskId); @@ -2434,12 +2491,12 @@ static void sub_81C1F80(u8 taskId) static void sub_81C2074(u16 a, s16 b) { - if (b > gUnknown_0861CBEC.field_6) - b = gUnknown_0861CBEC.field_6; - if (b == 0 || b == gUnknown_0861CBEC.field_6) + if (b > sUnknown_0861CBEC.field_6) + b = sUnknown_0861CBEC.field_6; + if (b == 0 || b == sUnknown_0861CBEC.field_6) { - sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); - sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); + sub_81C1CB0(&sUnknown_0861CBEC, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); + sub_81C1CB0(&sUnknown_0861CBF8, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], b, 0); } else { @@ -2455,17 +2512,17 @@ static void sub_81C20F0(u8 taskId) data[1] += data[0]; if (data[1] < 0) data[1] = 0; - else if (data[1] > gUnknown_0861CBEC.field_6) - data[1] = gUnknown_0861CBEC.field_6; - sub_81C1CB0(&gUnknown_0861CBEC, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); - sub_81C1CB0(&gUnknown_0861CBF8, pssData->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); + else if (data[1] > sUnknown_0861CBEC.field_6) + data[1] = sUnknown_0861CBEC.field_6; + sub_81C1CB0(&sUnknown_0861CBEC, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); + sub_81C1CB0(&sUnknown_0861CBF8, sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0], data[1], 0); schedule_bg_copy_tilemap_to_vram(3); - if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6) + if (data[1] <= 0 || data[1] >= sUnknown_0861CBEC.field_6) { if (data[0] < 0) { CreateSetStatusSprite(); - PutWindowTilemap(13); + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS); schedule_bg_copy_tilemap_to_vram(0); } DestroyTask(taskId); @@ -2500,17 +2557,17 @@ static void sub_81C2194(u16 *output, u16 palette, bool8 c) } } -static void sub_81C2228(struct Pokemon *mon) +static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mon has been cured of pokerus { - if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) + if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0)) // If yes it draws the cured symbol { - pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C; - pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C; + sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x2C; + sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x2C; } else { - pssData->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A; - pssData->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A; + sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][0][0x223] = 0x81A; + sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_INFO][1][0x223] = 0x81A; } schedule_bg_copy_tilemap_to_vram(3); } @@ -2527,7 +2584,7 @@ static void sub_81C228C(bool8 isMonShiny) static void DrawExperienceProgressBar(struct Pokemon *unused) { s64 numExpProgressBarTicks; - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; u16 *r9; u8 i; @@ -2548,7 +2605,7 @@ static void DrawExperienceProgressBar(struct Pokemon *unused) numExpProgressBarTicks = 0; } - r9 = &pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255]; + r9 = &sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][1][0x255]; for (i = 0; i < 8; i++) { if (numExpProgressBarTicks > 7) @@ -2560,15 +2617,15 @@ static void DrawExperienceProgressBar(struct Pokemon *unused) numExpProgressBarTicks = 0; } - if (GetBgTilemapBuffer(1) == pssData->bgTilemapBuffers[PSS_PAGE_SKILLS][0]) + if (GetBgTilemapBuffer(1) == sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_SKILLS][0]) schedule_bg_copy_tilemap_to_vram(1); else schedule_bg_copy_tilemap_to_vram(2); } -static void sub_81C240C(u16 move) +static void DrawContestMoveHearts(u16 move) { - u16 *tilemap = pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]; + u16 *tilemap = sMonSummaryScreen->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1]; u8 i; u8 effectValue; @@ -2610,27 +2667,27 @@ static void sub_81C240C(u16 move) } } -static void sub_81C2524(void) +static void LimitEggSummaryPageDisplay(void) // If the pokemon is an egg, limit the number of pages displayed to 1 { - if (pssData->summary.isEgg) + if (sMonSummaryScreen->summary.isEgg) ChangeBgX(3, 0x10000, 0); else ChangeBgX(3, 0, 0); } -static void sub_81C2554(void) +static void ResetWindows(void) { u8 i; - InitWindows(gUnknown_0861CC24); + InitWindows(sSummaryTemplate); DeactivateAllTextPrinters(); for (i = 0; i < 20; i++) { - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); } - for (i = 0; i < 8; i++) + for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++) { - pssData->windowIds[i] = 0xFF; + sMonSummaryScreen->windowIds[i] = 0xFF; } } @@ -2641,10 +2698,10 @@ static void SummaryScreen_PrintTextOnWindow(u8 windowId, const u8 *string, u8 x, static void sub_81C25E8(void) { - FillWindowPixelBuffer(17, 0); - FillWindowPixelBuffer(18, 0); - FillWindowPixelBuffer(19, 0); - if (!pssData->summary.isEgg) + FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, PIXEL_FILL(0)); + FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, PIXEL_FILL(0)); + FillWindowPixelBuffer(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, PIXEL_FILL(0)); + if (!sMonSummaryScreen->summary.isEgg) sub_81C2628(); else sub_81C2794(); @@ -2654,8 +2711,8 @@ static void sub_81C25E8(void) static void sub_81C2628(void) { u8 strArray[16]; - struct Pokemon *mon = &pssData->currentMon; - struct PokeSummary *summary = &pssData->summary; + struct Pokemon *mon = &sMonSummaryScreen->currentMon; + struct PokeSummary *summary = &sMonSummaryScreen->summary; u16 dexNum = SpeciesToPokedexNum(summary->species); if (dexNum != 0xFFFF) { @@ -2664,19 +2721,19 @@ static void sub_81C2628(void) StringAppend(gStringVar1, gStringVar2); if (!IsMonShiny(mon)) { - SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 1); sub_81C228C(FALSE); } else { - SummaryScreen_PrintTextOnWindow(17, gStringVar1, 0, 1, 0, 7); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 7); sub_81C228C(TRUE); } - PutWindowTilemap(17); + PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER); } else { - ClearWindowTilemap(17); + ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER); if (!IsMonShiny(mon)) sub_81C228C(FALSE); else @@ -2685,24 +2742,24 @@ static void sub_81C2628(void) StringCopy(gStringVar1, &gText_LevelSymbol[0]); ConvertIntToDecimalStringN(gStringVar2, summary->level, 0, 3); StringAppend(gStringVar1, gStringVar2); - SummaryScreen_PrintTextOnWindow(19, gStringVar1, 0x18, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gStringVar1, 0x18, 17, 0, 1); GetMonNickname(mon, gStringVar1); - SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1); strArray[0] = CHAR_SLASH; StringCopy(&strArray[1], &gSpeciesNames[summary->species2][0]); - SummaryScreen_PrintTextOnWindow(19, &strArray[0], 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, &strArray[0], 0, 1, 0, 1); sub_81C27DC(mon, summary->species2); - PutWindowTilemap(18); - PutWindowTilemap(19); + PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME); + PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); } static void sub_81C2794(void) { - GetMonNickname(&pssData->currentMon, gStringVar1); - SummaryScreen_PrintTextOnWindow(18, gStringVar1, 0, 1, 0, 1); - PutWindowTilemap(18); - ClearWindowTilemap(17); - ClearWindowTilemap(19); + GetMonNickname(&sMonSummaryScreen->currentMon, gStringVar1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME, gStringVar1, 0, 1, 0, 1); + PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_NICKNAME); + ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER); + ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_SPECIES); } static void sub_81C27DC(struct Pokemon *mon, u16 species) @@ -2713,10 +2770,10 @@ static void sub_81C27DC(struct Pokemon *mon, u16 species) switch (gender) { case MON_MALE: - SummaryScreen_PrintTextOnWindow(19, gText_MaleSymbol, 57, 17, 0, 3); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gText_MaleSymbol, 57, 17, 0, 3); break; case MON_FEMALE: - SummaryScreen_PrintTextOnWindow(19, gText_FemaleSymbol, 57, 17, 0, 4); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_SPECIES, gText_FemaleSymbol, 57, 17, 0, 4); break; } } @@ -2724,7 +2781,8 @@ static void sub_81C27DC(struct Pokemon *mon, u16 species) static void PrintAOrBButtonIcon(u8 windowId, bool8 bButton, u32 x) { - BlitBitmapToWindow(windowId, (bButton) ? gUnknown_0861CDD3 : gUnknown_0861CDD3 - 0x80, x, 0, 16, 16); + // sSummaryBButtonBitmap - 0x80 = sSummaryAButtonBitmap + BlitBitmapToWindow(windowId, (bButton) ? sSummaryBButtonBitmap : sSummaryBButtonBitmap - 0x80, x, 0, 16, 16); } static void PrintPageNamesAndStatsPageToWindows(void) @@ -2733,154 +2791,154 @@ static void PrintPageNamesAndStatsPageToWindows(void) int iconXPos; int statsXPos; - SummaryScreen_PrintTextOnWindow(0, gText_PkmnInfo, 2, 1, 0, 1); - SummaryScreen_PrintTextOnWindow(1, gText_PkmnSkills, 2, 1, 0, 1); - SummaryScreen_PrintTextOnWindow(2, gText_BattleMoves, 2, 1, 0, 1); - SummaryScreen_PrintTextOnWindow(3, gText_ContestMoves, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_INFO_TITLE, gText_PkmnInfo, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE, gText_PkmnSkills, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE, gText_BattleMoves, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE, gText_ContestMoves, 2, 1, 0, 1); stringXPos = GetStringRightAlignXOffset(1, gText_Cancel2, 62); iconXPos = stringXPos - 16; if (iconXPos < 0) iconXPos = 0; - PrintAOrBButtonIcon(4, FALSE, iconXPos); - SummaryScreen_PrintTextOnWindow(4, gText_Cancel2, stringXPos, 1, 0, 0); + PrintAOrBButtonIcon(PSS_LABEL_WINDOW_PROMPT_CANCEL, FALSE, iconXPos); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PROMPT_CANCEL, gText_Cancel2, stringXPos, 1, 0, 0); stringXPos = GetStringRightAlignXOffset(1, gText_Info, 0x3E); iconXPos = stringXPos - 16; if (iconXPos < 0) iconXPos = 0; - PrintAOrBButtonIcon(5, FALSE, iconXPos); - SummaryScreen_PrintTextOnWindow(5, gText_Info, stringXPos, 1, 0, 0); + PrintAOrBButtonIcon(PSS_LABEL_WINDOW_PROMPT_INFO, FALSE, iconXPos); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PROMPT_INFO, gText_Info, stringXPos, 1, 0, 0); stringXPos = GetStringRightAlignXOffset(1, gText_Switch, 0x3E); iconXPos = stringXPos - 16; if (iconXPos < 0) iconXPos = 0; - PrintAOrBButtonIcon(6, FALSE, iconXPos); - SummaryScreen_PrintTextOnWindow(6, gText_Switch, stringXPos, 1, 0, 0); + PrintAOrBButtonIcon(PSS_LABEL_WINDOW_PROMPT_SWITCH, FALSE, iconXPos); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_PROMPT_SWITCH, gText_Switch, stringXPos, 1, 0, 0); - SummaryScreen_PrintTextOnWindow(8, gText_RentalPkmn, 0, 1, 0, 1); - SummaryScreen_PrintTextOnWindow(9, gText_TypeSlash, 0, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL, gText_RentalPkmn, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_INFO_TYPE, gText_TypeSlash, 0, 1, 0, 0); statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_HP4, 42); - SummaryScreen_PrintTextOnWindow(10, gText_HP4, statsXPos, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT, gText_HP4, statsXPos, 1, 0, 1); statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Attack3, 42); - SummaryScreen_PrintTextOnWindow(10, gText_Attack3, statsXPos, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT, gText_Attack3, statsXPos, 17, 0, 1); statsXPos = 6 + GetStringCenterAlignXOffset(1, gText_Defense3, 42); - SummaryScreen_PrintTextOnWindow(10, gText_Defense3, statsXPos, 33, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT, gText_Defense3, statsXPos, 33, 0, 1); statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpAtk4, 36); - SummaryScreen_PrintTextOnWindow(11, gText_SpAtk4, statsXPos, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT, gText_SpAtk4, statsXPos, 1, 0, 1); statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_SpDef4, 36); - SummaryScreen_PrintTextOnWindow(11, gText_SpDef4, statsXPos, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT, gText_SpDef4, statsXPos, 17, 0, 1); statsXPos = 2 + GetStringCenterAlignXOffset(1, gText_Speed2, 36); - SummaryScreen_PrintTextOnWindow(11, gText_Speed2, statsXPos, 33, 0, 1); - SummaryScreen_PrintTextOnWindow(12, gText_ExpPoints, 6, 1, 0, 1); - SummaryScreen_PrintTextOnWindow(12, gText_NextLv, 6, 17, 0, 1); - SummaryScreen_PrintTextOnWindow(13, gText_Status, 2, 1, 0, 1); - SummaryScreen_PrintTextOnWindow(14, gText_Power, 0, 1, 0, 1); - SummaryScreen_PrintTextOnWindow(14, gText_Accuracy2, 0, 17, 0, 1); - SummaryScreen_PrintTextOnWindow(15, gText_Appeal, 0, 1, 0, 1); - SummaryScreen_PrintTextOnWindow(15, gText_Jam, 0, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT, gText_Speed2, statsXPos, 33, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP, gText_ExpPoints, 6, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP, gText_NextLv, 6, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATUS, gText_Status, 2, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, gText_Power, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, gText_Accuracy2, 0, 17, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM, gText_Appeal, 0, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM, gText_Jam, 0, 17, 0, 1); } -static void sub_81C2AFC(u8 a) +static void CreatePageWindowTilemaps(u8 page) { u8 i; - ClearWindowTilemap(0); - ClearWindowTilemap(1); - ClearWindowTilemap(2); - ClearWindowTilemap(3); + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TITLE); + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE); + ClearWindowTilemap(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE); + ClearWindowTilemap(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE); - switch (a) + switch (page) { - case 0: - PutWindowTilemap(0); - PutWindowTilemap(4); - if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE) - PutWindowTilemap(8); - PutWindowTilemap(9); + case PSS_PAGE_INFO: + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TITLE); + PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_CANCEL); + if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE) + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL); + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TYPE); break; - case 1: - PutWindowTilemap(1); - PutWindowTilemap(10); - PutWindowTilemap(11); - PutWindowTilemap(12); + case PSS_PAGE_SKILLS: + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_TITLE); + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT); + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT); + PutWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP); break; - case 2: - PutWindowTilemap(2); - if (pssData->mode == PSS_MODE_SELECT_MOVE) + case PSS_PAGE_BATTLE_MOVES: + PutWindowTilemap(PSS_LABEL_WINDOW_BATTLE_MOVES_TITLE); + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { - if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) - PutWindowTilemap(14); + if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES) + PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC); } else { - PutWindowTilemap(5); + PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO); } break; - case 3: - PutWindowTilemap(3); - if (pssData->mode == PSS_MODE_SELECT_MOVE) + case PSS_PAGE_CONTEST_MOVES: + PutWindowTilemap(PSS_LABEL_WINDOW_CONTEST_MOVES_TITLE); + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { - if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) - PutWindowTilemap(15); + if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES) + PutWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM); } else { - PutWindowTilemap(5); + PutWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO); } break; } - for (i = 0; i < 8; i++) + for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++) { - PutWindowTilemap(pssData->windowIds[i]); + PutWindowTilemap(sMonSummaryScreen->windowIds[i]); } schedule_bg_copy_tilemap_to_vram(0); } -static void sub_81C2C38(u8 a) +static void ClearPageWindowTilemaps(u8 page) { u8 i; - switch (a) + switch (page) { - case 0: - ClearWindowTilemap(4); - if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE) - ClearWindowTilemap(8); - ClearWindowTilemap(9); + case PSS_PAGE_INFO: + ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_CANCEL); + if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE) + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_RENTAL); + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_INFO_TYPE); break; - case 1: - ClearWindowTilemap(10); - ClearWindowTilemap(11); - ClearWindowTilemap(12); + case PSS_PAGE_SKILLS: + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_LEFT); + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_STATS_RIGHT); + ClearWindowTilemap(PSS_LABEL_WINDOW_POKEMON_SKILLS_EXP); break; - case 2: - if (pssData->mode == PSS_MODE_SELECT_MOVE) + case PSS_PAGE_BATTLE_MOVES: + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { - if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) - ClearWindowTilemap(14); + if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES) + ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_POWER_ACC); } else { - ClearWindowTilemap(5); + ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO); } break; - case 3: - if (pssData->mode == PSS_MODE_SELECT_MOVE) + case PSS_PAGE_CONTEST_MOVES: + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { - if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) - ClearWindowTilemap(15); + if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES) + ClearWindowTilemap(PSS_LABEL_WINDOW_MOVES_APPEAL_JAM); } else { - ClearWindowTilemap(5); + ClearWindowTilemap(PSS_LABEL_WINDOW_PROMPT_INFO); } break; } - for (i = 0; i < 8; i++) + for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++) { SummaryScreen_RemoveWindowByIndex(i); } @@ -2890,18 +2948,18 @@ static void sub_81C2C38(u8 a) static u8 AddWindowFromTemplateList(const struct WindowTemplate *template, u8 templateId) { - u8 *windowIdPtr = &(pssData->windowIds[templateId]); + u8 *windowIdPtr = &(sMonSummaryScreen->windowIds[templateId]); if (*windowIdPtr == 0xFF) { *windowIdPtr = AddWindow(&template[templateId]); - FillWindowPixelBuffer(*windowIdPtr, 0); + FillWindowPixelBuffer(*windowIdPtr, PIXEL_FILL(0)); } return *windowIdPtr; } static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex) { - u8 *windowIdPtr = &(pssData->windowIds[windowIndex]); + u8 *windowIdPtr = &(sMonSummaryScreen->windowIds[windowIndex]); if (*windowIdPtr != 0xFF) { ClearWindowTilemap(*windowIdPtr); @@ -2910,25 +2968,25 @@ static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex) } } -static void sub_81C2D9C(u8 pageIndex) +static void PrintPageSpecificText(u8 pageIndex) { u16 i; - for (i = 0; i < 8; i++) + for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++) { - if (pssData->windowIds[i] != 0xFF) - FillWindowPixelBuffer(pssData->windowIds[i], 0); + if (sMonSummaryScreen->windowIds[i] != 0xFF) + FillWindowPixelBuffer(sMonSummaryScreen->windowIds[i], PIXEL_FILL(0)); } - gUnknown_0861CE54[pageIndex](); + sTextPrinterFunctions[pageIndex](); } -static void sub_81C2DE4(u8 pageIndex) +static void CreateTextPrinterTask(u8 pageIndex) { - CreateTask(gUnknown_0861CE64[pageIndex], 16); + CreateTask(sTextPrinterTasks[pageIndex], 16); } -static void sub_81C2E00(void) +static void PrintInfoPageText(void) { - if (pssData->summary.isEgg) + if (sMonSummaryScreen->summary.isEgg) { PrintEggOTName(); PrintEggOTID(); @@ -2946,7 +3004,7 @@ static void sub_81C2E00(void) } } -static void sub_81C2E40(u8 taskId) +static void Task_PrintInfoPage(u8 taskId) { s16 *data = gTasks[taskId].data; switch (data[0]) @@ -2980,52 +3038,52 @@ static void PrintMonOTName(void) { u8 windowId; int x; - if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE) + if (InBattleFactory() != TRUE && InSlateportBattleTent() != TRUE) { - windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0); + windowId = AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER); SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1); x = GetStringWidth(1, gText_OTSlash, 0); - if (pssData->summary.OTGender == 0) - SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 5); + if (sMonSummaryScreen->summary.OTGender == 0) + SummaryScreen_PrintTextOnWindow(windowId, sMonSummaryScreen->summary.OTName, x, 1, 0, 5); else - SummaryScreen_PrintTextOnWindow(windowId, pssData->summary.OTName, x, 1, 0, 6); + SummaryScreen_PrintTextOnWindow(windowId, sMonSummaryScreen->summary.OTName, x, 1, 0, 6); } } static void PrintMonOTID(void) { int xPos; - if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE) + if (InBattleFactory() != TRUE && InSlateportBattleTent() != TRUE) { - ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)pssData->summary.OTID, 2, 5); + ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)sMonSummaryScreen->summary.OTID, 2, 5); xPos = GetStringRightAlignXOffset(1, gStringVar1, 56); - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, xPos, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ID), gStringVar1, xPos, 1, 0, 1); } } static void PrintMonAbilityName(void) { - u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility); - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1); + u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.altAbility); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), gAbilityNames[ability], 0, 1, 0, 1); } static void PrintMonAbilityDescription(void) { - u8 ability = GetAbilityBySpecies(pssData->summary.species, pssData->summary.altAbility); - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); + u8 ability = GetAbilityBySpecies(sMonSummaryScreen->summary.species, sMonSummaryScreen->summary.altAbility); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), gAbilityDescriptionPointers[ability], 0, 17, 0, 0); } static void BufferMonTrainerMemo(void) { - struct PokeSummary *sum = &pssData->summary; + struct PokeSummary *sum = &sMonSummaryScreen->summary; const u8 *text; DynamicPlaceholderTextUtil_Reset(); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_0861CE74); - DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_0861CE7B); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, sMemoNatureTextColor); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, sMemoMiscTextColor); BufferNatureString(); - if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || IsInGamePartnerMon() == TRUE) + if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE || IsInGamePartnerMon() == TRUE) { DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_XNature); } @@ -3069,19 +3127,19 @@ static void BufferMonTrainerMemo(void) static void PrintMonTrainerMemo(void) { - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_MEMO), gStringVar4, 0, 1, 0, 0); } static void BufferNatureString(void) { - struct UnkSummaryStruct *sumStruct = pssData; + struct PokemonSummaryScreenData *sumStruct = sMonSummaryScreen; DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5); } static void GetMetLevelString(u8 *output) { - u8 level = pssData->summary.metLevel; + u8 level = sMonSummaryScreen->summary.metLevel; if (level == 0) level = EGG_HATCH_LEVEL; ConvertIntToDecimalStringN(output, level, 0, 3); @@ -3090,11 +3148,11 @@ static void GetMetLevelString(u8 *output) static bool8 DoesMonOTMatchOwner(void) { - struct PokeSummary *sum = &pssData->summary; + struct PokeSummary *sum = &sMonSummaryScreen->summary; u32 trainerId; u8 gender; - if (pssData->monList.mons == gEnemyParty) + if (sMonSummaryScreen->monList.mons == gEnemyParty) { u8 multiID = GetMultiplayerId() ^ 1; trainerId = (u16)gLinkPlayers[multiID].trainerId; @@ -3116,7 +3174,7 @@ static bool8 DoesMonOTMatchOwner(void) static bool8 DidMonComeFromGBAGames(void) { - struct PokeSummary *sum = &pssData->summary; + struct PokeSummary *sum = &sMonSummaryScreen->summary; if (sum->metGame > 0 && sum->metGame <= VERSION_LEAF_GREEN) return TRUE; return FALSE; @@ -3124,7 +3182,7 @@ static bool8 DidMonComeFromGBAGames(void) bool8 DidMonComeFromRSE(void) { - struct PokeSummary *sum = &pssData->summary; + struct PokeSummary *sum = &sMonSummaryScreen->summary; if (sum->metGame > 0 && sum->metGame <= VERSION_EMERALD) return TRUE; return FALSE; @@ -3134,7 +3192,7 @@ static bool8 IsInGamePartnerMon(void) { if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle) { - if (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5) + if (sMonSummaryScreen->curMonIndex == 1 || sMonSummaryScreen->curMonIndex == 4 || sMonSummaryScreen->curMonIndex == 5) return TRUE; } return FALSE; @@ -3142,7 +3200,7 @@ static bool8 IsInGamePartnerMon(void) static void PrintEggOTName(void) { - u32 windowId = AddWindowFromTemplateList(gUnknown_0861CCCC, 0); + u32 windowId = AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ORIGINAL_TRAINER); u32 width = GetStringWidth(1, gText_OTSlash, 0); SummaryScreen_PrintTextOnWindow(windowId, gText_OTSlash, 0, 1, 0, 1); SummaryScreen_PrintTextOnWindow(windowId, gText_FiveMarks, width, 1, 0, 1); @@ -3154,15 +3212,15 @@ static void PrintEggOTID(void) StringCopy(gStringVar1, gText_UnkCtrlF907F908); StringAppend(gStringVar1, gText_FiveMarks); x = GetStringRightAlignXOffset(1, gStringVar1, 56); - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 1), gStringVar1, x, 1, 0, 1); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ID), gStringVar1, x, 1, 0, 1); } static void PrintEggState(void) { const u8 *text; - struct PokeSummary *sum = &pssData->summary; + struct PokeSummary *sum = &sMonSummaryScreen->summary; - if (pssData->summary.sanity == TRUE) + if (sMonSummaryScreen->summary.sanity == TRUE) text = gText_EggWillTakeALongTime; else if (sum->friendship <= 5) text = gText_EggAboutToHatch; @@ -3173,15 +3231,15 @@ static void PrintEggState(void) else text = gText_EggWillTakeALongTime; - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 2), text, 0, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_ABILITY), text, 0, 1, 0, 0); } static void PrintEggMemo(void) { const u8 *text; - struct PokeSummary *sum = &pssData->summary; + struct PokeSummary *sum = &sMonSummaryScreen->summary; - if (pssData->summary.sanity != 1) + if (sMonSummaryScreen->summary.sanity != 1) { if (sum->metLocation == METLOC_FATEFUL_ENCOUNTER) text = gText_PeculiarEggNicePlace; @@ -3197,10 +3255,10 @@ static void PrintEggMemo(void) text = gText_OddEggFoundByCouple; } - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageInfoTemplate, PSS_DATA_WINDOW_INFO_MEMO), text, 0, 1, 0, 0); } -static void sub_81C3530(void) +static void PrintSkillsPageText(void) { PrintHeldItemName(); PrintRibbonCount(); @@ -3211,7 +3269,7 @@ static void sub_81C3530(void) PrintExpPointsNextLevel(); } -static void sub_81C3554(u8 taskId) +static void Task_PrintSkillsPage(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -3250,22 +3308,22 @@ static void PrintHeldItemName(void) const u8 *text; int offset; - if (pssData->summary.item == ITEM_ENIGMA_BERRY && IsMultiBattle() == TRUE && (pssData->curMonIndex == 1 || pssData->curMonIndex == 4 || pssData->curMonIndex == 5)) + if (sMonSummaryScreen->summary.item == ITEM_ENIGMA_BERRY && IsMultiBattle() == TRUE && (sMonSummaryScreen->curMonIndex == 1 || sMonSummaryScreen->curMonIndex == 4 || sMonSummaryScreen->curMonIndex == 5)) { text = ItemId_GetName(ITEM_ENIGMA_BERRY); } - else if (pssData->summary.item == ITEM_NONE) + else if (sMonSummaryScreen->summary.item == ITEM_NONE) { text = gText_None; } else { - CopyItemName(pssData->summary.item, gStringVar1); + CopyItemName(sMonSummaryScreen->summary.item, gStringVar1); text = gStringVar1; } offset = GetStringCenterAlignXOffset(1, text, 72) + 6; - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 0), text, offset, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_HELD_ITEM), text, offset, 1, 0, 0); } static void PrintRibbonCount(void) @@ -3273,19 +3331,19 @@ static void PrintRibbonCount(void) const u8 *text; int offset; - if (pssData->summary.ribbonCount == 0) + if (sMonSummaryScreen->summary.ribbonCount == 0) { text = gText_None; } else { - ConvertIntToDecimalStringN(gStringVar1, pssData->summary.ribbonCount, 1, 2); + ConvertIntToDecimalStringN(gStringVar1, sMonSummaryScreen->summary.ribbonCount, 1, 2); StringExpandPlaceholders(gStringVar4, gText_RibbonsVar1); text = gStringVar4; } offset = GetStringCenterAlignXOffset(1, text, 70) + 6; - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 1), text, offset, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_RIBBON_COUNT), text, offset, 1, 0, 0); } static void BufferLeftColumnStats(void) @@ -3295,17 +3353,17 @@ static void BufferLeftColumnStats(void) u8 *attackString = Alloc(8); u8 *defenseString = Alloc(8); - ConvertIntToDecimalStringN(currentHPString, pssData->summary.currentHP, 1, 3); - ConvertIntToDecimalStringN(maxHPString, pssData->summary.maxHP, 1, 3); - ConvertIntToDecimalStringN(attackString, pssData->summary.atk, 1, 7); - ConvertIntToDecimalStringN(defenseString, pssData->summary.def, 1, 7); + ConvertIntToDecimalStringN(currentHPString, sMonSummaryScreen->summary.currentHP, 1, 3); + ConvertIntToDecimalStringN(maxHPString, sMonSummaryScreen->summary.maxHP, 1, 3); + ConvertIntToDecimalStringN(attackString, sMonSummaryScreen->summary.atk, 1, 7); + ConvertIntToDecimalStringN(defenseString, sMonSummaryScreen->summary.def, 1, 7); DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, currentHPString); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, maxHPString); DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, attackString); DynamicPlaceholderTextUtil_SetPlaceholderPtr(3, defenseString); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE82); + DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsLeftColumnLayout); Free(currentHPString); Free(maxHPString); @@ -3315,31 +3373,31 @@ static void BufferLeftColumnStats(void) static void PrintLeftColumnStats(void) { - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_STATS_LEFT), gStringVar4, 4, 1, 0, 0); } static void BufferRightColumnStats(void) { - ConvertIntToDecimalStringN(gStringVar1, pssData->summary.spatk, 1, 3); - ConvertIntToDecimalStringN(gStringVar2, pssData->summary.spdef, 1, 3); - ConvertIntToDecimalStringN(gStringVar3, pssData->summary.speed, 1, 3); + ConvertIntToDecimalStringN(gStringVar1, sMonSummaryScreen->summary.spatk, 1, 3); + ConvertIntToDecimalStringN(gStringVar2, sMonSummaryScreen->summary.spdef, 1, 3); + ConvertIntToDecimalStringN(gStringVar3, sMonSummaryScreen->summary.speed, 1, 3); DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gStringVar3); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE8E); + DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sStatsRightColumnLayout); } static void PrintRightColumnStats(void) { - SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_SKILLS_STATS_RIGHT), gStringVar4, 2, 1, 0, 0); } static void PrintExpPointsNextLevel(void) { - struct PokeSummary *sum = &pssData->summary; - u8 windowId = AddWindowFromTemplateList(gUnknown_0861CCEC, 4); + struct PokeSummary *sum = &sMonSummaryScreen->summary; + u8 windowId = AddWindowFromTemplateList(sPageSkillsTemplate, PSS_DATA_WINDOW_EXP); int offset; u32 expToNextLevel; @@ -3357,29 +3415,29 @@ static void PrintExpPointsNextLevel(void) SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 17, 0, 0); } -static void sub_81C3984(void) +static void PrintBattleMoves(void) { PrintMoveNameAndPP(0); PrintMoveNameAndPP(1); PrintMoveNameAndPP(2); PrintMoveNameAndPP(3); - if (pssData->mode == PSS_MODE_SELECT_MOVE) + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { PrintNewMoveDetailsOrCancelText(); - if (pssData->firstMoveIndex == MAX_MON_MOVES) + if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES) { - if (pssData->newMove != MOVE_NONE) - PrintMoveDetails(pssData->newMove); + if (sMonSummaryScreen->newMove != MOVE_NONE) + PrintMoveDetails(sMonSummaryScreen->newMove); } else { - PrintMoveDetails(pssData->summary.moves[pssData->firstMoveIndex]); + PrintMoveDetails(sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]); } } } -static void sub_81C39F0(u8 taskId) +static void Task_PrintBattleMoves(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -3398,22 +3456,22 @@ static void sub_81C39F0(u8 taskId) PrintMoveNameAndPP(3); break; case 5: - if (pssData->mode == PSS_MODE_SELECT_MOVE) + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) PrintNewMoveDetailsOrCancelText(); break; case 6: - if (pssData->mode == PSS_MODE_SELECT_MOVE) + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { - if (pssData->firstMoveIndex == MAX_MON_MOVES) - data[1] = pssData->newMove; + if (sMonSummaryScreen->firstMoveIndex == MAX_MON_MOVES) + data[1] = sMonSummaryScreen->newMove; else - data[1] = pssData->summary.moves[pssData->firstMoveIndex]; + data[1] = sMonSummaryScreen->summary.moves[sMonSummaryScreen->firstMoveIndex]; } break; case 7: - if (pssData->mode == PSS_MODE_SELECT_MOVE) + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { - if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) + if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES) PrintMoveDetails(data[1]); } break; @@ -3430,9 +3488,9 @@ static void PrintMoveNameAndPP(u8 moveIndex) u32 ppState; const u8 *text; u32 offset; - struct UnkSummaryStruct *summaryStruct = pssData; - u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0); - u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1); + struct PokemonSummaryScreenData *summaryStruct = sMonSummaryScreen; + u8 moveNameWindowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES); + u8 ppValueWindowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_PP); u16 move = summaryStruct->summary.moves[moveIndex]; if (move != 0) @@ -3444,7 +3502,7 @@ static void PrintMoveNameAndPP(u8 moveIndex) DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar2); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97); + DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sMovesPPLayout); text = gStringVar4; ppState = GetCurrentPpToMaxPpState(summaryStruct->summary.pp[moveIndex], pp) + 9; offset = GetStringRightAlignXOffset(1, text, 44); @@ -3465,7 +3523,7 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex) const u8 *text; if (moveIndex != 0) { - FillWindowPixelRect(14, 0, 53, 0, 19, 32); + FillWindowPixelRect(PSS_LABEL_WINDOW_MOVES_POWER_ACC, PIXEL_FILL(0), 53, 0, 19, 32); if (gBattleMoves[moveIndex].power < 2) { @@ -3477,7 +3535,7 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex) text = gStringVar1; } - SummaryScreen_PrintTextOnWindow(14, text, 53, 1, 0, 0); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, text, 53, 1, 0, 0); if (gBattleMoves[moveIndex].accuracy == 0) { @@ -3489,25 +3547,25 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex) text = gStringVar1; } - SummaryScreen_PrintTextOnWindow(14, text, 53, 17, 0, 0); + SummaryScreen_PrintTextOnWindow(PSS_LABEL_WINDOW_MOVES_POWER_ACC, text, 53, 17, 0, 0); } } -static void sub_81C3D08(void) +static void PrintContestMoves(void) { PrintMoveNameAndPP(0); PrintMoveNameAndPP(1); PrintMoveNameAndPP(2); PrintMoveNameAndPP(3); - if (pssData->mode == PSS_MODE_SELECT_MOVE) + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { PrintNewMoveDetailsOrCancelText(); - PrintContestMoveDescription(pssData->firstMoveIndex); + PrintContestMoveDescription(sMonSummaryScreen->firstMoveIndex); } } -static void sub_81C3D54(u8 taskId) +static void Task_PrintContestMoves(u8 taskId) { s16 *data = gTasks[taskId].data; s16 dataa = data[0] - 1; @@ -3527,14 +3585,14 @@ static void sub_81C3D54(u8 taskId) PrintMoveNameAndPP(3); break; case 4: - if (pssData->mode == PSS_MODE_SELECT_MOVE) + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) PrintNewMoveDetailsOrCancelText(); break; case 5: - if (pssData->mode == PSS_MODE_SELECT_MOVE) + if (sMonSummaryScreen->mode == PSS_MODE_SELECT_MOVE) { - if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) - PrintContestMoveDescription(pssData->firstMoveIndex); + if (sMonSummaryScreen->newMove != MOVE_NONE || sMonSummaryScreen->firstMoveIndex != MAX_MON_MOVES) + PrintContestMoveDescription(sMonSummaryScreen->firstMoveIndex); } break; case 6: @@ -3549,24 +3607,24 @@ static void PrintContestMoveDescription(u8 moveSlot) u16 move; if (moveSlot == MAX_MON_MOVES) - move = pssData->newMove; + move = sMonSummaryScreen->newMove; else - move = pssData->summary.moves[moveSlot]; + move = sMonSummaryScreen->summary.moves[moveSlot]; if (move != MOVE_NONE) { - u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); + u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION); SummaryScreen_PrintTextOnWindow(windowId, gContestEffectDescriptionPointers[gContestMoves[move].effect], 6, 1, 0, 0); } } static void PrintMoveDetails(u16 move) { - u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); - FillWindowPixelBuffer(windowId, 0); + u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION); + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); if (move != MOVE_NONE) { - if (pssData->currPageIndex == 2) + if (sMonSummaryScreen->currPageIndex == PSS_MODE_BOX) { PrintMovePowerAndAccuracy(move); SummaryScreen_PrintTextOnWindow(windowId, gMoveDescriptionPointers[move - 1], 6, 1, 0, 0); @@ -3587,18 +3645,18 @@ static void PrintMoveDetails(u16 move) static void PrintNewMoveDetailsOrCancelText(void) { - u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0); - u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1); + u8 windowId1 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES); + u8 windowId2 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_PP); - if (pssData->newMove == MOVE_NONE) + if (sMonSummaryScreen->newMove == MOVE_NONE) { SummaryScreen_PrintTextOnWindow(windowId1, gText_Cancel, 0, 65, 0, 1); } else { - u16 move = pssData->newMove; + u16 move = sMonSummaryScreen->newMove; - if (pssData->currPageIndex == 2) + if (sMonSummaryScreen->currPageIndex == 2) SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 6); else SummaryScreen_PrintTextOnWindow(windowId1, gMoveNames[move], 0, 65, 0, 5); @@ -3607,28 +3665,28 @@ static void PrintNewMoveDetailsOrCancelText(void) DynamicPlaceholderTextUtil_Reset(); DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStringVar1); DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gStringVar1); - DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_0861CE97); + DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, sMovesPPLayout); SummaryScreen_PrintTextOnWindow(windowId2, gStringVar4, GetStringRightAlignXOffset(1, gStringVar4, 0x2C), 0x41, 0, 12); } } static void sub_81C4064(void) { - u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0); - FillWindowPixelRect(windowId, 0, 0, 66, 72, 16); + u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES); + FillWindowPixelRect(windowId, PIXEL_FILL(0), 0, 66, 72, 16); CopyWindowToVram(windowId, 2); } static void sub_81C40A0(u8 moveIndex1, u8 moveIndex2) { - u8 windowId1 = AddWindowFromTemplateList(gUnknown_0861CD14, 0); - u8 windowId2 = AddWindowFromTemplateList(gUnknown_0861CD14, 1); + u8 windowId1 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_NAMES); + u8 windowId2 = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_PP); - FillWindowPixelRect(windowId1, 0, 0, moveIndex1 * 16, 0x48, 0x10); - FillWindowPixelRect(windowId1, 0, 0, moveIndex2 * 16, 0x48, 0x10); + FillWindowPixelRect(windowId1, PIXEL_FILL(0), 0, moveIndex1 * 16, 0x48, 0x10); + FillWindowPixelRect(windowId1, PIXEL_FILL(0), 0, moveIndex2 * 16, 0x48, 0x10); - FillWindowPixelRect(windowId2, 0, 0, moveIndex1 * 16, 0x30, 0x10); - FillWindowPixelRect(windowId2, 0, 0, moveIndex2 * 16, 0x30, 0x10); + FillWindowPixelRect(windowId2, PIXEL_FILL(0), 0, moveIndex1 * 16, 0x30, 0x10); + FillWindowPixelRect(windowId2, PIXEL_FILL(0), 0, moveIndex2 * 16, 0x30, 0x10); PrintMoveNameAndPP(moveIndex1); PrintMoveNameAndPP(moveIndex2); @@ -3636,94 +3694,95 @@ static void sub_81C40A0(u8 moveIndex1, u8 moveIndex2) static void PrintHMMovesCantBeForgotten(void) { - u8 windowId = AddWindowFromTemplateList(gUnknown_0861CD14, 2); - FillWindowPixelBuffer(windowId, 0); + u8 windowId = AddWindowFromTemplateList(sPageMovesTemplate, PSS_DATA_WINDOW_MOVE_DESCRIPTION); + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0); } -static void sub_81C4190(void) +static void ResetSpriteIds(void) { u8 i; - for (i = 0; i < 28; i++) + for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->spriteIds); i++) { - pssData->spriteIds[i] = 0xFF; + sMonSummaryScreen->spriteIds[i] = 0xFF; } } static void DestroySpriteInArray(u8 spriteArrayId) { - if (pssData->spriteIds[spriteArrayId] != 0xFF) + if (sMonSummaryScreen->spriteIds[spriteArrayId] != 0xFF) { - DestroySprite(&gSprites[pssData->spriteIds[spriteArrayId]]); - pssData->spriteIds[spriteArrayId] = 0xFF; + DestroySprite(&gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]]); + sMonSummaryScreen->spriteIds[spriteArrayId] = 0xFF; } } -static void sub_81C4204(u8 spriteArrayId, bool8 invisible) +static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible) { - gSprites[pssData->spriteIds[spriteArrayId]].invisible = invisible; + gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]].invisible = invisible; } -static void sub_81C424C(void) +static void HidePageSpecificSprites(void) { +// Keeps Pokémon, caught ball and status sprites visible. u8 i; - for (i = 3; i < 28; i++) + for (i = 3; i < ARRAY_COUNT(sMonSummaryScreen->spriteIds); i++) { - if (pssData->spriteIds[i] != 0xFF) - sub_81C4204(i, TRUE); + if (sMonSummaryScreen->spriteIds[i] != 0xFF) + SetSpriteInvisibility(i, TRUE); } } -static void sub_81C4280(void) +static void SetTypeIcons(void) { - switch (pssData->currPageIndex) + switch (sMonSummaryScreen->currPageIndex) { - case 0: - sub_81C43A0(); + case PSS_PAGE_INFO: + SetMonTypeIcons(); break; - case 2: - sub_81C4420(); - sub_81C44F0(); + case PSS_PAGE_BATTLE_MOVES: + SetMoveTypeIcons(); + SetNewMoveTypeIcon(); break; - case 3: - sub_81C4484(); - sub_81C44F0(); + case PSS_PAGE_CONTEST_MOVES: + SetContestMoveTypeIcons(); + SetNewMoveTypeIcon(); break; } } -static void sub_81C42C8(void) +static void CreateMoveTypeIcons(void) { u8 i; for (i = 3; i < 8; i++) { - if (pssData->spriteIds[i] == 0xFF) - pssData->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2); + if (sMonSummaryScreen->spriteIds[i] == 0xFF) + sMonSummaryScreen->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2); - sub_81C4204(i, TRUE); + SetSpriteInvisibility(i, TRUE); } } static void SetMoveTypeSpritePosAndType(u8 typeId, u8 x, u8 y, u8 spriteArrayId) { - struct Sprite *sprite = &gSprites[pssData->spriteIds[spriteArrayId]]; + struct Sprite *sprite = &gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]]; StartSpriteAnim(sprite, typeId); sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId]; sprite->pos1.x = x + 16; sprite->pos1.y = y + 8; - sub_81C4204(spriteArrayId, FALSE); + SetSpriteInvisibility(spriteArrayId, FALSE); } -static void sub_81C43A0(void) +static void SetMonTypeIcons(void) { - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; if (summary->isEgg) { SetMoveTypeSpritePosAndType(TYPE_MYSTERY, 120, 48, 3); - sub_81C4204(4, TRUE); + SetSpriteInvisibility(4, TRUE); } else { @@ -3731,60 +3790,60 @@ static void sub_81C43A0(void) if (gBaseStats[summary->species].type1 != gBaseStats[summary->species].type2) { SetMoveTypeSpritePosAndType(gBaseStats[summary->species].type2, 0xA0, 0x30, 4); - sub_81C4204(4, FALSE); + SetSpriteInvisibility(4, FALSE); } else { - sub_81C4204(4, TRUE); + SetSpriteInvisibility(4, TRUE); } } } -static void sub_81C4420(void) +static void SetMoveTypeIcons(void) { u8 i; - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; for (i = 0; i < MAX_MON_MOVES; i++) { if (summary->moves[i] != MOVE_NONE) SetMoveTypeSpritePosAndType(gBattleMoves[summary->moves[i]].type, 0x55, 0x20 + (i * 0x10), i + 3); else - sub_81C4204(i + 3, TRUE); + SetSpriteInvisibility(i + 3, TRUE); } } -static void sub_81C4484(void) +static void SetContestMoveTypeIcons(void) { u8 i; - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; for (i = 0; i < MAX_MON_MOVES; i++) { if (summary->moves[i] != MOVE_NONE) SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[summary->moves[i]].contestCategory, 0x55, 0x20 + (i * 0x10), i + 3); else - sub_81C4204(i + 3, TRUE); + SetSpriteInvisibility(i + 3, TRUE); } } -static void sub_81C44F0(void) +static void SetNewMoveTypeIcon(void) { - if (pssData->newMove == MOVE_NONE) + if (sMonSummaryScreen->newMove == MOVE_NONE) { - sub_81C4204(7, TRUE); + SetSpriteInvisibility(7, TRUE); } else { - if (pssData->currPageIndex == 2) - SetMoveTypeSpritePosAndType(gBattleMoves[pssData->newMove].type, 85, 96, 7); + if (sMonSummaryScreen->currPageIndex == 2) + SetMoveTypeSpritePosAndType(gBattleMoves[sMonSummaryScreen->newMove].type, 85, 96, 7); else - SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[pssData->newMove].contestCategory, 85, 96, 7); + SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[sMonSummaryScreen->newMove].contestCategory, 85, 96, 7); } } static void sub_81C4568(u8 a0, u8 a1) { - struct Sprite *sprite1 = &gSprites[pssData->spriteIds[a0 + 3]]; - struct Sprite *sprite2 = &gSprites[pssData->spriteIds[a1 + 3]]; + struct Sprite *sprite1 = &gSprites[sMonSummaryScreen->spriteIds[a0 + 3]]; + struct Sprite *sprite2 = &gSprites[sMonSummaryScreen->spriteIds[a1 + 3]]; u8 temp = sprite1->animNum; sprite1->animNum = sprite2->animNum; @@ -3800,10 +3859,10 @@ static void sub_81C4568(u8 a0, u8 a1) sprite2->animEnded = FALSE; } -static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) +static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1) { const struct CompressedSpritePalette *pal; - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; switch (*a1) { @@ -3812,7 +3871,7 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) case 0: if (gMain.inBattle) { - if (sub_80688F8(3, pssData->curMonIndex)) + if (sub_80688F8(3, sMonSummaryScreen->curMonIndex)) { HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); } @@ -3825,7 +3884,7 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) { if (gMonSpritesGfxPtr != NULL) { - if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_BOX || pssData->unk40EF == TRUE) + if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE) { HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], gMonSpritesGfxPtr->sprites[1], summary->species2, summary->pid); } @@ -3836,7 +3895,7 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) } else { - if (pssData->monList.mons == gPlayerParty || pssData->mode == PSS_MODE_BOX || pssData->unk40EF == TRUE) + if (sMonSummaryScreen->monList.mons == gPlayerParty || sMonSummaryScreen->mode == PSS_MODE_BOX || sMonSummaryScreen->unk40EF == TRUE) { HandleLoadSpecialPokePic_2(&gMonFrontPicTable[summary->species2], sub_806F4F8(0, 1), summary->species2, summary->pid); } @@ -3847,22 +3906,22 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) } } (*a1)++; - return -1; + return 0xFF; case 1: pal = GetMonSpritePalStructFromOtIdPersonality(summary->species2, summary->OTID, summary->pid); LoadCompressedSpritePalette(pal); SetMultiuseSpriteTemplateToPokemon(pal->tag, 1); (*a1)++; - return -1; + return 0xFF; } } -static void sub_81C4778(void) +static void PlayMonCry(void) { - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; if (!summary->isEgg) { - if (ShouldPlayNormalMonCry(&pssData->currentMon) == TRUE) + if (ShouldPlayNormalMonCry(&sMonSummaryScreen->currentMon) == TRUE) { PlayCry3(summary->species2, 0, 0); } @@ -3875,7 +3934,7 @@ static void sub_81C4778(void) static u8 sub_81C47B4(struct Pokemon *unused) { - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; u8 spriteId = CreateSprite(&gMultiuseSpriteTemplate, 40, 64, 5); struct Sprite *sprite = &gSprites[spriteId]; @@ -3883,7 +3942,7 @@ static u8 sub_81C47B4(struct Pokemon *unused) sprite->data[0] = summary->species2; sprite->data[2] = 0; - gSprites[spriteId].callback = sub_81C4844; + gSprites[spriteId].callback = SpriteCB_Pokemon; sprite->oam.priority = 0; if (!IsMonSpriteNotFlipped(summary->species2)) @@ -3898,14 +3957,14 @@ static u8 sub_81C47B4(struct Pokemon *unused) return spriteId; } -static void sub_81C4844(struct Sprite *sprite) +static void SpriteCB_Pokemon(struct Sprite *sprite) { - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; if (!gPaletteFade.active && sprite->data[2] != 1) { sprite->data[1] = IsMonSpriteNotFlipped(sprite->data[0]); - sub_81C4778(); + PlayMonCry(); PokemonSummaryDoMonAnimation(sprite, sprite->data[0], summary->isEgg); } } @@ -3926,7 +3985,7 @@ void SummaryScreen_DestroyUnknownTask(void) static bool32 SummaryScreen_DoesSpriteHaveCallback(void) { - if (gSprites[pssData->spriteIds[0]].callback == SpriteCallbackDummy) + if (gSprites[sMonSummaryScreen->spriteIds[0]].callback == SpriteCallbackDummy) { return FALSE; } @@ -3936,16 +3995,16 @@ static bool32 SummaryScreen_DoesSpriteHaveCallback(void) } } -static void sub_81C48F0(void) +static void StopPokemonAnimations(void) // A subtle effect, this function stops pokemon animations when leaving the PSS { u16 i; u16 paletteIndex; - gSprites[pssData->spriteIds[0]].animPaused = TRUE; - gSprites[pssData->spriteIds[0]].callback = SpriteCallbackDummy; - sub_806EE98(); + gSprites[sMonSummaryScreen->spriteIds[0]].animPaused = TRUE; + gSprites[sMonSummaryScreen->spriteIds[0]].callback = SpriteCallbackDummy; + StopPokemonAnimationDelayTask(); - paletteIndex = (gSprites[pssData->spriteIds[0]].oam.paletteNum * 16) | 0x100; + paletteIndex = (gSprites[sMonSummaryScreen->spriteIds[0]].oam.paletteNum * 16) | 0x100; for (i = 0; i < 16; i++) { @@ -3955,22 +4014,22 @@ static void sub_81C48F0(void) static void CreateMonMarkingsSprite(struct Pokemon *mon) { - struct Sprite *sprite = sub_811FF94(30003, 30003, gUnknown_0861D120); + struct Sprite *sprite = sub_811FF94(30003, 30003, sSummaryMarkingsPalette); - pssData->markingsSprite = sprite; + sMonSummaryScreen->markingsSprite = sprite; if (sprite != NULL) { StartSpriteAnim(sprite, GetMonData(mon, MON_DATA_MARKINGS)); - pssData->markingsSprite->pos1.x = 60; - pssData->markingsSprite->pos1.y = 26; - pssData->markingsSprite->oam.priority = 1; + sMonSummaryScreen->markingsSprite->pos1.x = 60; + sMonSummaryScreen->markingsSprite->pos1.y = 26; + sMonSummaryScreen->markingsSprite->oam.priority = 1; } } static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon) { - DestroySprite(pssData->markingsSprite); + DestroySprite(sMonSummaryScreen->markingsSprite); FreeSpriteTilesByTag(30003); CreateMonMarkingsSprite(mon); } @@ -3980,14 +4039,14 @@ static void CreateCaughtBallSprite(struct Pokemon *mon) u8 ball = ItemIdToBallId(GetMonData(mon, MON_DATA_POKEBALL)); LoadBallGfx(ball); - pssData->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0); - gSprites[pssData->spriteIds[1]].callback = SpriteCallbackDummy; - gSprites[pssData->spriteIds[1]].oam.priority = 3; + sMonSummaryScreen->spriteIds[1] = CreateSprite(&gBallSpriteTemplates[ball], 16, 136, 0); + gSprites[sMonSummaryScreen->spriteIds[1]].callback = SpriteCallbackDummy; + gSprites[sMonSummaryScreen->spriteIds[1]].oam.priority = 3; } static void CreateSetStatusSprite(void) { - u8 *spriteId = &pssData->spriteIds[2]; + u8 *spriteId = &sMonSummaryScreen->spriteIds[2]; u8 anim; if (*spriteId == 0xFF) @@ -3995,25 +4054,25 @@ static void CreateSetStatusSprite(void) *spriteId = CreateSprite(&sSpriteTemplate_StatusCondition, 64, 152, 0); } - anim = sub_81B205C(&pssData->currentMon); + anim = GetMonAilment(&sMonSummaryScreen->currentMon); if (anim != 0) { StartSpriteAnim(&gSprites[*spriteId], anim - 1); - sub_81C4204(2, FALSE); + SetSpriteInvisibility(2, FALSE); } else { - sub_81C4204(2, TRUE); + SetSpriteInvisibility(2, TRUE); } } static void sub_81C4AF8(u8 a0) { u8 i; - u8 *spriteIds = &pssData->spriteIds[a0]; + u8 *spriteIds = &sMonSummaryScreen->spriteIds[a0]; - if (pssData->currPageIndex > 1) + if (sMonSummaryScreen->currPageIndex > 1) { u8 subsprite = 0; if (a0 == 8) @@ -4065,11 +4124,11 @@ static void sub_81C4BE4(struct Sprite *sprite) if (sprite->data[0] == 8) { - sprite->pos2.y = pssData->firstMoveIndex * 16; + sprite->pos2.y = sMonSummaryScreen->firstMoveIndex * 16; } else { - sprite->pos2.y = pssData->secondMoveIndex * 16; + sprite->pos2.y = sMonSummaryScreen->secondMoveIndex * 16; } } @@ -4085,7 +4144,7 @@ static void sub_81C4C60(u8 a0) static void sub_81C4C84(u8 a0) { u8 i; - u8 *spriteIds = &pssData->spriteIds[8]; + u8 *spriteIds = &sMonSummaryScreen->spriteIds[8]; a0 *= 3; for (i = 0; i < 10; i++) @@ -4108,7 +4167,7 @@ static void sub_81C4C84(u8 a0) static void sub_81C4D18(u8 firstSpriteId) { u8 i; - u8 *spriteIds = &pssData->spriteIds[firstSpriteId]; + u8 *spriteIds = &sMonSummaryScreen->spriteIds[firstSpriteId]; for (i = 0; i < 10; i++) { |