Merge pull request #542 from Slawter666/pss

Label some summary screen functions
This commit is contained in:
Diegoisawesome 2019-02-04 09:46:39 -06:00 committed by GitHub
commit 646533cfa3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -43,10 +43,11 @@
#include "constants/items.h" #include "constants/items.h"
#include "constants/moves.h" #include "constants/moves.h"
#include "constants/region_map_sections.h" #include "constants/region_map_sections.h"
#include "constants/rgb.h"
#include "constants/songs.h" #include "constants/songs.h"
#include "constants/species.h" #include "constants/species.h"
static EWRAM_DATA struct UnkSummaryStruct static EWRAM_DATA struct PssData
{ {
/*0x00*/ union { /*0x00*/ union {
struct Pokemon *mons; struct Pokemon *mons;
@ -135,21 +136,21 @@ static bool8 SummaryScreen_DecompressGraphics(void);
static void CopyMonToSummaryStruct(struct Pokemon* a); static void CopyMonToSummaryStruct(struct Pokemon* a);
static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a);
static void sub_81C0348(void); static void sub_81C0348(void);
static void sub_81C0484(u8 taskId); static void CloseSummaryScreen(u8 taskId);
static void sub_81C0510(u8 taskId); static void HandleInput(u8 taskId);
static void sub_81C0604(u8 taskId, s8 a); static void ChangePokemon(u8 taskId, s8 a);
static void sub_81C0704(u8 taskId); static void sub_81C0704(u8 taskId);
static s8 sub_81C08F8(s8 a); static s8 sub_81C08F8(s8 a);
static s8 sub_81C09B4(s8 a); static s8 sub_81C09B4(s8 a);
static bool8 sub_81C0A50(struct Pokemon* mon); static bool8 sub_81C0A50(struct Pokemon* mon);
static void sub_81C0A8C(u8 taskId, s8 a); static void ChangePage(u8 taskId, s8 a);
static void sub_81C0B8C(u8 taskId); static void sub_81C0B8C(u8 taskId);
static void sub_81C0C68(u8 taskId); static void sub_81C0C68(u8 taskId);
static void sub_81C0CC4(u8 taskId); static void sub_81C0CC4(u8 taskId);
static void sub_81C0D44(u8 taskId); static void sub_81C0D44(u8 taskId);
static void sub_81C0E24(void); static void sub_81C0E24(void);
static void sub_81C0E48(u8 taskId); static void sub_81C0E48(u8 taskId);
static void sub_81C0F44(u8 taskId); static void HandleInput_MoveSelect(u8 taskId);
static bool8 sub_81C1040(void); static bool8 sub_81C1040(void);
static void sub_81C1070(s16* a, s8 b, u8* c); static void sub_81C1070(s16* a, s8 b, u8* c);
static void sub_81C11F4(u8 a); static void sub_81C11F4(u8 a);
@ -173,21 +174,21 @@ static void sub_81C20F0(u8 taskId);
static void sub_81C2194(u16 *a, u16 b, u8 c); static void sub_81C2194(u16 *a, u16 b, u8 c);
static void sub_81C2228(struct Pokemon* mon); static void sub_81C2228(struct Pokemon* mon);
static void DrawExperienceProgressBar(struct Pokemon* mon); static void DrawExperienceProgressBar(struct Pokemon* mon);
static void sub_81C240C(u16 a); static void DrawContestMoveHearts(u16 move);
static void sub_81C2524(void); static void sub_81C2524(void);
static void sub_81C2554(void); static void ResetWindows(void);
static void sub_81C25E8(void); static void sub_81C25E8(void);
static void sub_81C2628(void); static void sub_81C2628(void);
static void sub_81C2794(void); static void sub_81C2794(void);
static void sub_81C27DC(struct Pokemon *mon, u16 a); static void sub_81C27DC(struct Pokemon *mon, u16 a);
static void PrintPageNamesAndStatsPageToWindows(void); static void PrintPageNamesAndStatsPageToWindows(void);
static void sub_81C2AFC(u8 a); static void CreatePageWindowTilemaps(u8 a);
static void sub_81C2C38(u8 a); static void ClearPageWindowTilemaps(u8 a);
static void SummaryScreen_RemoveWindowByIndex(u8 a); static void SummaryScreen_RemoveWindowByIndex(u8 a);
static void sub_81C2D9C(u8 a); static void PrintPageSpecificText(u8 a);
static void sub_81C2DE4(u8 a); static void CreateTextPrinterTask(u8 a);
static void sub_81C2E00(void); static void PrintInfoPageText(void);
static void sub_81C2E40(u8 taskId); static void Task_PrintInfoPage(u8 taskId);
static void PrintMonOTName(void); static void PrintMonOTName(void);
static void PrintMonOTID(void); static void PrintMonOTID(void);
static void PrintMonAbilityName(void); static void PrintMonAbilityName(void);
@ -203,39 +204,39 @@ static void PrintEggOTName(void);
static void PrintEggOTID(void); static void PrintEggOTID(void);
static void PrintEggState(void); static void PrintEggState(void);
static void PrintEggMemo(void); static void PrintEggMemo(void);
static void sub_81C3554(u8 taskId); static void Task_PrintSkillsPage(u8 taskId);
static void PrintHeldItemName(void); static void PrintHeldItemName(void);
static void sub_81C3530(void); static void PrintSkillsPageText(void);
static void PrintRibbonCount(void); static void PrintRibbonCount(void);
static void BufferLeftColumnStats(void); static void BufferLeftColumnStats(void);
static void PrintLeftColumnStats(void); static void PrintLeftColumnStats(void);
static void BufferRightColumnStats(void); static void BufferRightColumnStats(void);
static void PrintRightColumnStats(void); static void PrintRightColumnStats(void);
static void PrintExpPointsNextLevel(void); static void PrintExpPointsNextLevel(void);
static void sub_81C3984(void); static void PrintBattleMoves(void);
static void sub_81C39F0(u8 taskId); static void Task_PrintBattleMoves(u8 taskId);
static void PrintMoveNameAndPP(u8 a); static void PrintMoveNameAndPP(u8 a);
static void sub_81C3D08(void); static void PrintContestMoves(void);
static void sub_81C3D54(u8 taskId); static void Task_PrintContestMoves(u8 taskId);
static void PrintContestMoveDescription(u8 a); static void PrintContestMoveDescription(u8 a);
static void PrintMoveDetails(u16 a); static void PrintMoveDetails(u16 a);
static void PrintNewMoveDetailsOrCancelText(void); static void PrintNewMoveDetailsOrCancelText(void);
static void sub_81C4064(void); static void sub_81C4064(void);
static void sub_81C40A0(u8 a, u8 b); static void sub_81C40A0(u8 a, u8 b);
static void PrintHMMovesCantBeForgotten(void); static void PrintHMMovesCantBeForgotten(void);
static void sub_81C4190(void); static void ResetSpriteIds(void);
static void sub_81C4204(u8 a, u8 b); static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible);
static void sub_81C424C(void); static void HidePageSpecificSprites(void);
static void sub_81C4280(void); static void SetTypeIcons(void);
static void sub_81C42C8(void); static void CreateMoveTypeIcons(void);
static void sub_81C43A0(void); static void SetMonTypeIcons(void);
static void sub_81C4420(void); static void SetMoveTypeIcons(void);
static void sub_81C4484(void); static void SetContestMoveTypeIcons(void);
static void sub_81C44F0(void); static void SetNewMoveTypeIcon(void);
static void sub_81C4568(u8 a, u8 b); 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 u8 sub_81C47B4(struct Pokemon *unused);
static void sub_81C4844(struct Sprite *); static void SpriteCB_Pokemon(struct Sprite *);
static void sub_81C48F0(void); static void sub_81C48F0(void);
static void CreateMonMarkingsSprite(struct Pokemon *mon); static void CreateMonMarkingsSprite(struct Pokemon *mon);
static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon);
@ -626,22 +627,26 @@ static const u8 sTextColors_861CD2C[][3] =
{0, 5, 6}, {0, 5, 6},
{0, 7, 8} {0, 7, 8}
}; };
static const u8 gUnknown_0861CD53[] = INCBIN_U8("graphics/interface/summary_a_button.4bpp"); 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 const u8 gUnknown_0861CDD3[] = INCBIN_U8("graphics/interface/summary_b_button.4bpp");
static void (*const gUnknown_0861CE54[])(void) =
static void (*const sTextPrinterFunctions[])(void) =
{ {
sub_81C2E00, PrintInfoPageText,
sub_81C3530, PrintSkillsPageText,
sub_81C3984, PrintBattleMoves,
sub_81C3D08 PrintContestMoves
}; };
static void (*const gUnknown_0861CE64[])(u8 taskId) =
static void (*const sTextPrinterTasks[])(u8 taskId) =
{ {
sub_81C2E40, Task_PrintInfoPage,
sub_81C3554, Task_PrintSkillsPage,
sub_81C39F0, Task_PrintBattleMoves,
sub_81C3D54 Task_PrintContestMoves
}; };
static const u8 gUnknown_0861CE74[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}"); static const u8 gUnknown_0861CE74[] = _("{COLOR LIGHT_RED}{SHADOW GREEN}");
static const u8 gUnknown_0861CE7B[] = _("{COLOR WHITE}{SHADOW DARK_GREY}"); 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_0861CE82[] = _("{SPECIAL_F7 0x00}/{SPECIAL_F7 0x01}\n{SPECIAL_F7 0x02}\n{SPECIAL_F7 0x03}");
@ -968,13 +973,13 @@ static const union AnimCmd *const sSpriteAnimTable_StatusCondition[] = {
sSpriteAnim_StatusPokerus, sSpriteAnim_StatusPokerus,
sSpriteAnim_StatusFaint, sSpriteAnim_StatusFaint,
}; };
static const struct CompressedSpriteSheet gUnknown_0861D0F8 = static const struct CompressedSpriteSheet sStatusIconsSpriteSheet =
{ {
.data = gStatusGfx_Icons, .data = gStatusGfx_Icons,
.size = 0x380, .size = 0x380,
.tag = 30001 .tag = 30001
}; };
static const struct CompressedSpritePalette gUnknown_0861D100 = static const struct CompressedSpritePalette sStatusIconsSpritePalette =
{ {
.data = gStatusPal_Icons, .data = gStatusPal_Icons,
.tag = 30001 .tag = 30001
@ -1104,7 +1109,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++; gMain.state++;
break; break;
case 7: case 7:
sub_81C2554(); ResetWindows();
gMain.state++; gMain.state++;
break; break;
case 8: case 8:
@ -1129,7 +1134,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++; gMain.state++;
break; break;
case 13: case 13:
sub_81C2D9C(pssData->currPageIndex); PrintPageSpecificText(pssData->currPageIndex);
gMain.state++; gMain.state++;
break; break;
case 14: case 14:
@ -1137,17 +1142,17 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++; gMain.state++;
break; break;
case 15: case 15:
sub_81C2AFC(pssData->currPageIndex); CreatePageWindowTilemaps(pssData->currPageIndex);
gMain.state++; gMain.state++;
break; break;
case 16: case 16:
sub_81C4190(); ResetSpriteIds();
sub_81C42C8(); CreateMoveTypeIcons();
pssData->unk40F0 = 0; pssData->unk40F0 = 0;
gMain.state++; gMain.state++;
break; break;
case 17: case 17:
pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &pssData->unk40F0); pssData->spriteIds[0] = CreatePokemonSprite(&pssData->currentMon, &pssData->unk40F0);
if (pssData->spriteIds[0] != 0xFF) if (pssData->spriteIds[0] != 0xFF)
{ {
pssData->unk40F0 = 0; pssData->unk40F0 = 0;
@ -1167,12 +1172,12 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++; gMain.state++;
break; break;
case 21: case 21:
sub_81C4280(); SetTypeIcons();
gMain.state++; gMain.state++;
break; break;
case 22: case 22:
if (pssData->mode != PSS_MODE_SELECT_MOVE) if (pssData->mode != PSS_MODE_SELECT_MOVE)
CreateTask(sub_81C0510, 0); CreateTask(HandleInput, 0);
else else
CreateTask(sub_81C171C, 0); CreateTask(sub_81C171C, 0);
gMain.state++; gMain.state++;
@ -1182,7 +1187,7 @@ static bool8 SummaryScreen_LoadGraphics(void)
gMain.state++; gMain.state++;
break; break;
case 24: case 24:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
gPaletteFade.bufferTransferDisabled = 0; gPaletteFade.bufferTransferDisabled = 0;
gMain.state++; gMain.state++;
break; break;
@ -1259,11 +1264,11 @@ static bool8 SummaryScreen_DecompressGraphics(void)
pssData->unk40F0++; pssData->unk40F0++;
break; break;
case 9: case 9:
LoadCompressedSpriteSheet(&gUnknown_0861D0F8); LoadCompressedSpriteSheet(&sStatusIconsSpriteSheet);
pssData->unk40F0++; pssData->unk40F0++;
break; break;
case 10: case 10:
LoadCompressedSpritePalette(&gUnknown_0861D100); LoadCompressedSpritePalette(&sStatusIconsSpritePalette);
pssData->unk40F0++; pssData->unk40F0++;
break; break;
case 11: case 11:
@ -1374,7 +1379,7 @@ static void sub_81C0348(void)
} }
else else
{ {
sub_81C240C(pssData->summary.moves[pssData->firstMoveIndex]); DrawContestMoveHearts(pssData->summary.moves[pssData->firstMoveIndex]);
sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0); sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_BATTLE_MOVES][0], 3, 0);
sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]); SetBgTilemapBuffer(1, pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0]);
@ -1402,13 +1407,13 @@ static void sub_81C0434(void)
Free(pssData); Free(pssData);
} }
static void sub_81C044C(u8 taskId) static void BeginCloseSummaryScreen(u8 taskId)
{ {
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gTasks[taskId].func = sub_81C0484; gTasks[taskId].func = CloseSummaryScreen;
} }
static void sub_81C0484(u8 taskId) static void CloseSummaryScreen(u8 taskId)
{ {
if (sub_81221EC() != TRUE && !gPaletteFade.active) if (sub_81221EC() != TRUE && !gPaletteFade.active)
{ {
@ -1426,25 +1431,25 @@ static void sub_81C0484(u8 taskId)
} }
} }
static void sub_81C0510(u8 taskId) static void HandleInput(u8 taskId)
{ {
if (sub_81221EC() != TRUE && !gPaletteFade.active) if (sub_81221EC() != TRUE && !gPaletteFade.active)
{ {
if (gMain.newKeys & DPAD_UP) if (gMain.newKeys & DPAD_UP)
{ {
sub_81C0604(taskId, -1); ChangePokemon(taskId, -1);
} }
else if (gMain.newKeys & DPAD_DOWN) else if (gMain.newKeys & DPAD_DOWN)
{ {
sub_81C0604(taskId, 1); ChangePokemon(taskId, 1);
} }
else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1) else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1)
{ {
sub_81C0A8C(taskId, -1); ChangePage(taskId, -1);
} }
else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2) else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2)
{ {
sub_81C0A8C(taskId, 1); ChangePage(taskId, 1);
} }
else if (gMain.newKeys & A_BUTTON) else if (gMain.newKeys & A_BUTTON)
{ {
@ -1454,7 +1459,7 @@ static void sub_81C0510(u8 taskId)
{ {
sub_81C48F0(); sub_81C48F0();
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
sub_81C044C(taskId); BeginCloseSummaryScreen(taskId);
} }
else else
{ {
@ -1467,12 +1472,12 @@ static void sub_81C0510(u8 taskId)
{ {
sub_81C48F0(); sub_81C48F0();
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
sub_81C044C(taskId); BeginCloseSummaryScreen(taskId);
} }
} }
} }
static void sub_81C0604(u8 taskId, s8 a) static void ChangePokemon(u8 taskId, s8 a)
{ {
s8 r4_2; s8 r4_2;
@ -1510,7 +1515,7 @@ static void sub_81C0604(u8 taskId, s8 a)
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
if (pssData->summary.unk7 != 0) if (pssData->summary.unk7 != 0)
{ {
sub_81C4204(2, 1); SetSpriteInvisibility(2, 1);
ClearWindowTilemap(13); ClearWindowTilemap(13);
schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(0);
sub_81C2074(0, 2); sub_81C2074(0, 2);
@ -1559,7 +1564,7 @@ static void sub_81C0704(u8 taskId)
data[1] = 0; data[1] = 0;
break; break;
case 8: case 8:
pssData->spriteIds[0] = sub_81C45F4(&pssData->currentMon, &data[1]); pssData->spriteIds[0] = CreatePokemonSprite(&pssData->currentMon, &data[1]);
if (pssData->spriteIds[0] == 0xFF) if (pssData->spriteIds[0] == 0xFF)
return; return;
gSprites[pssData->spriteIds[0]].data[2] = 1; gSprites[pssData->spriteIds[0]].data[2] = 1;
@ -1567,13 +1572,13 @@ static void sub_81C0704(u8 taskId)
data[1] = 0; data[1] = 0;
break; break;
case 9: case 9:
sub_81C4280(); SetTypeIcons();
break; break;
case 10: case 10:
sub_81C25E8(); sub_81C25E8();
break; break;
case 11: case 11:
sub_81C2D9C(pssData->currPageIndex); PrintPageSpecificText(pssData->currPageIndex);
sub_81C2524(); sub_81C2524();
break; break;
case 12: case 12:
@ -1583,7 +1588,7 @@ static void sub_81C0704(u8 taskId)
if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0) if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0)
{ {
data[0] = 0; data[0] = 0;
gTasks[taskId].func = sub_81C0510; gTasks[taskId].func = HandleInput;
} }
return; return;
} }
@ -1656,7 +1661,7 @@ static bool8 sub_81C0A50(struct Pokemon* mon)
return FALSE; return FALSE;
} }
static void sub_81C0A8C(u8 taskId, s8 b) static void ChangePage(u8 taskId, s8 b)
{ {
struct PokeSummary *summary = &pssData->summary; struct PokeSummary *summary = &pssData->summary;
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
@ -1669,15 +1674,15 @@ static void sub_81C0A8C(u8 taskId, s8 b)
return; return;
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
sub_81C2C38(pssData->currPageIndex); ClearPageWindowTilemaps(pssData->currPageIndex);
pssData->currPageIndex += b; pssData->currPageIndex += b;
data[0] = 0; data[0] = 0;
if (b == 1) if (b == 1)
SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func); SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func);
else else
SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func); SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func);
sub_81C2DE4(pssData->currPageIndex); CreateTextPrinterTask(pssData->currPageIndex);
sub_81C424C(); HidePageSpecificSprites();
} }
static void sub_81C0B8C(u8 taskId) static void sub_81C0B8C(u8 taskId)
@ -1717,8 +1722,8 @@ static void sub_81C0C68(u8 taskId)
data[1] = 0; data[1] = 0;
data[0] = 0; data[0] = 0;
sub_81C1BA0(); sub_81C1BA0();
sub_81C2AFC(pssData->currPageIndex); CreatePageWindowTilemaps(pssData->currPageIndex);
sub_81C4280(); SetTypeIcons();
sub_81C0E24(); sub_81C0E24();
SwitchTaskToFollowupFunc(taskId); SwitchTaskToFollowupFunc(taskId);
} }
@ -1766,8 +1771,8 @@ static void sub_81C0D44(u8 taskId)
data[1] = 0; data[1] = 0;
data[0] = 0; data[0] = 0;
sub_81C1BA0(); sub_81C1BA0();
sub_81C2AFC(pssData->currPageIndex); CreatePageWindowTilemaps(pssData->currPageIndex);
sub_81C4280(); SetTypeIcons();
sub_81C0E24(); sub_81C0E24();
SwitchTaskToFollowupFunc(taskId); SwitchTaskToFollowupFunc(taskId);
} }
@ -1797,15 +1802,15 @@ static void sub_81C0E48(u8 taskId)
sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0); sub_81C2194(pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][0], 1, 0);
PrintMoveDetails(move); PrintMoveDetails(move);
PrintNewMoveDetailsOrCancelText(); PrintNewMoveDetailsOrCancelText();
sub_81C44F0(); SetNewMoveTypeIcon();
schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2); schedule_bg_copy_tilemap_to_vram(2);
sub_81C4AF8(8); 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; u8 id = taskId;
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
@ -1883,7 +1888,7 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c)
if (move != 0) if (move != 0)
break; break;
} }
sub_81C240C(move); DrawContestMoveHearts(move);
schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2); schedule_bg_copy_tilemap_to_vram(2);
PrintMoveDetails(move); PrintMoveDetails(move);
@ -1930,7 +1935,7 @@ static void sub_81C11F4(u8 taskId)
schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(0);
schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2); schedule_bg_copy_tilemap_to_vram(2);
gTasks[taskId].func = sub_81C0510; gTasks[taskId].func = HandleInput;
} }
static void sub_81C129C(u8 taskId) static void sub_81C129C(u8 taskId)
@ -2003,10 +2008,10 @@ static void sub_81C13B0(u8 taskId, bool8 b)
move = pssData->summary.moves[pssData->firstMoveIndex]; move = pssData->summary.moves[pssData->firstMoveIndex];
PrintMoveDetails(move); PrintMoveDetails(move);
sub_81C240C(move); DrawContestMoveHearts(move);
schedule_bg_copy_tilemap_to_vram(1); schedule_bg_copy_tilemap_to_vram(1);
schedule_bg_copy_tilemap_to_vram(2); 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) static void SwapMonMoves(struct Pokemon *mon, u8 moveIndex1, u8 moveIndex2)
@ -2081,7 +2086,7 @@ static void SwapBoxMonMoves(struct BoxPokemon *mon, u8 moveIndex1, u8 moveIndex2
static void sub_81C171C(u8 taskId) static void sub_81C171C(u8 taskId)
{ {
sub_81C44F0(); SetNewMoveTypeIcon();
sub_81C4AF8(8); sub_81C4AF8(8);
gTasks[taskId].func = sub_81C174C; gTasks[taskId].func = sub_81C174C;
} }
@ -2106,11 +2111,11 @@ static void sub_81C174C(u8 taskId)
} }
else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1) else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
{ {
sub_81C0A8C(taskId, -1); ChangePage(taskId, -1);
} }
else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2) else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
{ {
sub_81C0A8C(taskId, 1); ChangePage(taskId, 1);
} }
else if (gMain.newKeys & A_BUTTON) else if (gMain.newKeys & A_BUTTON)
{ {
@ -2120,7 +2125,7 @@ static void sub_81C174C(u8 taskId)
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
gUnknown_0203CF21 = pssData->firstMoveIndex; gUnknown_0203CF21 = pssData->firstMoveIndex;
gSpecialVar_0x8005 = gUnknown_0203CF21; gSpecialVar_0x8005 = gUnknown_0203CF21;
sub_81C044C(taskId); BeginCloseSummaryScreen(taskId);
} }
else else
{ {
@ -2135,7 +2140,7 @@ static void sub_81C174C(u8 taskId)
PlaySE(SE_SELECT); PlaySE(SE_SELECT);
gUnknown_0203CF21 = 4; gUnknown_0203CF21 = 4;
gSpecialVar_0x8005 = 4; gSpecialVar_0x8005 = 4;
sub_81C044C(taskId); BeginCloseSummaryScreen(taskId);
} }
} }
} }
@ -2191,7 +2196,7 @@ static void sub_81C1940(u8 taskId)
ClearWindowTilemap(13); ClearWindowTilemap(13);
move = pssData->summary.moves[pssData->firstMoveIndex]; move = pssData->summary.moves[pssData->firstMoveIndex];
gTasks[taskId].func = sub_81C174C; gTasks[taskId].func = sub_81C174C;
sub_81C0A8C(taskId, -1); ChangePage(taskId, -1);
sub_81C1DA4(9, -2); sub_81C1DA4(9, -2);
sub_81C1EFC(9, -2, move); sub_81C1EFC(9, -2, move);
} }
@ -2205,7 +2210,7 @@ static void sub_81C1940(u8 taskId)
ClearWindowTilemap(13); ClearWindowTilemap(13);
move = pssData->summary.moves[pssData->firstMoveIndex]; move = pssData->summary.moves[pssData->firstMoveIndex];
gTasks[taskId].func = sub_81C174C; gTasks[taskId].func = sub_81C174C;
sub_81C0A8C(taskId, 1); ChangePage(taskId, 1);
sub_81C1DA4(9, -2); sub_81C1DA4(9, -2);
sub_81C1EFC(9, -2, move); sub_81C1EFC(9, -2, move);
} }
@ -2415,7 +2420,7 @@ static void sub_81C1F80(u8 taskId)
{ {
if (pssData->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0) if (pssData->currPageIndex == 3 && FuncIsActiveTask(sub_81C0B8C) == 0)
PutWindowTilemap(15); PutWindowTilemap(15);
sub_81C240C(data[2]); DrawContestMoveHearts(data[2]);
} }
else else
{ {
@ -2566,7 +2571,7 @@ static void DrawExperienceProgressBar(struct Pokemon *unused)
schedule_bg_copy_tilemap_to_vram(2); 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 = pssData->bgTilemapBuffers[PSS_PAGE_CONTEST_MOVES][1];
u8 i; u8 i;
@ -2618,7 +2623,7 @@ static void sub_81C2524(void)
ChangeBgX(3, 0, 0); ChangeBgX(3, 0, 0);
} }
static void sub_81C2554(void) static void ResetWindows(void)
{ {
u8 i; u8 i;
InitWindows(gUnknown_0861CC24); InitWindows(gUnknown_0861CC24);
@ -2628,7 +2633,7 @@ static void sub_81C2554(void)
{ {
FillWindowPixelBuffer(i, 0); FillWindowPixelBuffer(i, 0);
} }
for (i = 0; i < 8; i++) for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
{ {
pssData->windowIds[i] = 0xFF; pssData->windowIds[i] = 0xFF;
} }
@ -2782,7 +2787,7 @@ static void PrintPageNamesAndStatsPageToWindows(void)
SummaryScreen_PrintTextOnWindow(15, gText_Jam, 0, 17, 0, 1); SummaryScreen_PrintTextOnWindow(15, gText_Jam, 0, 17, 0, 1);
} }
static void sub_81C2AFC(u8 a) static void CreatePageWindowTilemaps(u8 page)
{ {
u8 i; u8 i;
@ -2791,22 +2796,22 @@ static void sub_81C2AFC(u8 a)
ClearWindowTilemap(2); ClearWindowTilemap(2);
ClearWindowTilemap(3); ClearWindowTilemap(3);
switch (a) switch (page)
{ {
case 0: case PSS_PAGE_INFO:
PutWindowTilemap(0); PutWindowTilemap(0);
PutWindowTilemap(4); PutWindowTilemap(4);
if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE) if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE)
PutWindowTilemap(8); PutWindowTilemap(8);
PutWindowTilemap(9); PutWindowTilemap(9);
break; break;
case 1: case PSS_PAGE_SKILLS:
PutWindowTilemap(1); PutWindowTilemap(1);
PutWindowTilemap(10); PutWindowTilemap(10);
PutWindowTilemap(11); PutWindowTilemap(11);
PutWindowTilemap(12); PutWindowTilemap(12);
break; break;
case 2: case PSS_PAGE_BATTLE_MOVES:
PutWindowTilemap(2); PutWindowTilemap(2);
if (pssData->mode == PSS_MODE_SELECT_MOVE) if (pssData->mode == PSS_MODE_SELECT_MOVE)
{ {
@ -2818,7 +2823,7 @@ static void sub_81C2AFC(u8 a)
PutWindowTilemap(5); PutWindowTilemap(5);
} }
break; break;
case 3: case PSS_PAGE_CONTEST_MOVES:
PutWindowTilemap(3); PutWindowTilemap(3);
if (pssData->mode == PSS_MODE_SELECT_MOVE) if (pssData->mode == PSS_MODE_SELECT_MOVE)
{ {
@ -2832,7 +2837,7 @@ static void sub_81C2AFC(u8 a)
break; break;
} }
for (i = 0; i < 8; i++) for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
{ {
PutWindowTilemap(pssData->windowIds[i]); PutWindowTilemap(pssData->windowIds[i]);
} }
@ -2840,23 +2845,23 @@ static void sub_81C2AFC(u8 a)
schedule_bg_copy_tilemap_to_vram(0); schedule_bg_copy_tilemap_to_vram(0);
} }
static void sub_81C2C38(u8 a) static void ClearPageWindowTilemaps(u8 page)
{ {
u8 i; u8 i;
switch (a) switch (page)
{ {
case 0: case PSS_PAGE_INFO:
ClearWindowTilemap(4); ClearWindowTilemap(4);
if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE) if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE)
ClearWindowTilemap(8); ClearWindowTilemap(8);
ClearWindowTilemap(9); ClearWindowTilemap(9);
break; break;
case 1: case PSS_PAGE_SKILLS:
ClearWindowTilemap(10); ClearWindowTilemap(10);
ClearWindowTilemap(11); ClearWindowTilemap(11);
ClearWindowTilemap(12); ClearWindowTilemap(12);
break; break;
case 2: case PSS_PAGE_BATTLE_MOVES:
if (pssData->mode == PSS_MODE_SELECT_MOVE) if (pssData->mode == PSS_MODE_SELECT_MOVE)
{ {
if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
@ -2867,7 +2872,7 @@ static void sub_81C2C38(u8 a)
ClearWindowTilemap(5); ClearWindowTilemap(5);
} }
break; break;
case 3: case PSS_PAGE_CONTEST_MOVES:
if (pssData->mode == PSS_MODE_SELECT_MOVE) if (pssData->mode == PSS_MODE_SELECT_MOVE)
{ {
if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES) if (pssData->newMove != MOVE_NONE || pssData->firstMoveIndex != MAX_MON_MOVES)
@ -2880,7 +2885,7 @@ static void sub_81C2C38(u8 a)
break; break;
} }
for (i = 0; i < 8; i++) for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
{ {
SummaryScreen_RemoveWindowByIndex(i); SummaryScreen_RemoveWindowByIndex(i);
} }
@ -2910,23 +2915,23 @@ static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex)
} }
} }
static void sub_81C2D9C(u8 pageIndex) static void PrintPageSpecificText(u8 pageIndex)
{ {
u16 i; u16 i;
for (i = 0; i < 8; i++) for (i = 0; i < ARRAY_COUNT(pssData->windowIds); i++)
{ {
if (pssData->windowIds[i] != 0xFF) if (pssData->windowIds[i] != 0xFF)
FillWindowPixelBuffer(pssData->windowIds[i], 0); FillWindowPixelBuffer(pssData->windowIds[i], 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 (pssData->summary.isEgg)
{ {
@ -2946,7 +2951,7 @@ static void sub_81C2E00(void)
} }
} }
static void sub_81C2E40(u8 taskId) static void Task_PrintInfoPage(u8 taskId)
{ {
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
switch (data[0]) switch (data[0])
@ -3074,7 +3079,7 @@ static void PrintMonTrainerMemo(void)
static void BufferNatureString(void) static void BufferNatureString(void)
{ {
struct UnkSummaryStruct *sumStruct = pssData; struct PssData *sumStruct = pssData;
DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]); DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gNatureNamePointers[sumStruct->summary.nature]);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5); DynamicPlaceholderTextUtil_SetPlaceholderPtr(5, gText_EmptyString5);
} }
@ -3200,7 +3205,7 @@ static void PrintEggMemo(void)
SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0); SummaryScreen_PrintTextOnWindow(AddWindowFromTemplateList(gUnknown_0861CCCC, 3), text, 0, 1, 0, 0);
} }
static void sub_81C3530(void) static void PrintSkillsPageText(void)
{ {
PrintHeldItemName(); PrintHeldItemName();
PrintRibbonCount(); PrintRibbonCount();
@ -3211,7 +3216,7 @@ static void sub_81C3530(void)
PrintExpPointsNextLevel(); PrintExpPointsNextLevel();
} }
static void sub_81C3554(u8 taskId) static void Task_PrintSkillsPage(u8 taskId)
{ {
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
@ -3357,7 +3362,7 @@ static void PrintExpPointsNextLevel(void)
SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 17, 0, 0); SummaryScreen_PrintTextOnWindow(windowId, gStringVar1, offset, 17, 0, 0);
} }
static void sub_81C3984(void) static void PrintBattleMoves(void)
{ {
PrintMoveNameAndPP(0); PrintMoveNameAndPP(0);
PrintMoveNameAndPP(1); PrintMoveNameAndPP(1);
@ -3379,7 +3384,7 @@ static void sub_81C3984(void)
} }
} }
static void sub_81C39F0(u8 taskId) static void Task_PrintBattleMoves(u8 taskId)
{ {
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
@ -3430,7 +3435,7 @@ static void PrintMoveNameAndPP(u8 moveIndex)
u32 ppState; u32 ppState;
const u8 *text; const u8 *text;
u32 offset; u32 offset;
struct UnkSummaryStruct *summaryStruct = pssData; struct PssData *summaryStruct = pssData;
u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0); u8 moveNameWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 0);
u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1); u8 ppValueWindowId = AddWindowFromTemplateList(gUnknown_0861CD14, 1);
u16 move = summaryStruct->summary.moves[moveIndex]; u16 move = summaryStruct->summary.moves[moveIndex];
@ -3493,7 +3498,7 @@ static void PrintMovePowerAndAccuracy(u16 moveIndex)
} }
} }
static void sub_81C3D08(void) static void PrintContestMoves(void)
{ {
PrintMoveNameAndPP(0); PrintMoveNameAndPP(0);
PrintMoveNameAndPP(1); PrintMoveNameAndPP(1);
@ -3507,7 +3512,7 @@ static void sub_81C3D08(void)
} }
} }
static void sub_81C3D54(u8 taskId) static void Task_PrintContestMoves(u8 taskId)
{ {
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
s16 dataa = data[0] - 1; s16 dataa = data[0] - 1;
@ -3641,11 +3646,11 @@ static void PrintHMMovesCantBeForgotten(void)
SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0); SummaryScreen_PrintTextOnWindow(windowId, gText_HMMovesCantBeForgotten2, 6, 1, 0, 0);
} }
static void sub_81C4190(void) static void ResetSpriteIds(void)
{ {
u8 i; u8 i;
for (i = 0; i < 28; i++) for (i = 0; i < ARRAY_COUNT(pssData->spriteIds); i++)
{ {
pssData->spriteIds[i] = 0xFF; pssData->spriteIds[i] = 0xFF;
} }
@ -3660,41 +3665,42 @@ static void DestroySpriteInArray(u8 spriteArrayId)
} }
} }
static void sub_81C4204(u8 spriteArrayId, bool8 invisible) static void SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible)
{ {
gSprites[pssData->spriteIds[spriteArrayId]].invisible = invisible; gSprites[pssData->spriteIds[spriteArrayId]].invisible = invisible;
} }
static void sub_81C424C(void) static void HidePageSpecificSprites(void)
{ {
// Keeps Pokémon, caught ball and status sprites visible.
u8 i; u8 i;
for (i = 3; i < 28; i++) for (i = 3; i < ARRAY_COUNT(pssData->spriteIds); i++)
{ {
if (pssData->spriteIds[i] != 0xFF) if (pssData->spriteIds[i] != 0xFF)
sub_81C4204(i, TRUE); SetSpriteInvisibility(i, TRUE);
} }
} }
static void sub_81C4280(void) static void SetTypeIcons(void)
{ {
switch (pssData->currPageIndex) switch (pssData->currPageIndex)
{ {
case 0: case PSS_PAGE_INFO:
sub_81C43A0(); SetMonTypeIcons();
break; break;
case 2: case PSS_PAGE_BATTLE_MOVES:
sub_81C4420(); SetMoveTypeIcons();
sub_81C44F0(); SetNewMoveTypeIcon();
break; break;
case 3: case PSS_PAGE_CONTEST_MOVES:
sub_81C4484(); SetContestMoveTypeIcons();
sub_81C44F0(); SetNewMoveTypeIcon();
break; break;
} }
} }
static void sub_81C42C8(void) static void CreateMoveTypeIcons(void)
{ {
u8 i; u8 i;
@ -3703,7 +3709,7 @@ static void sub_81C42C8(void)
if (pssData->spriteIds[i] == 0xFF) if (pssData->spriteIds[i] == 0xFF)
pssData->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2); pssData->spriteIds[i] = CreateSprite(&sSpriteTemplate_MoveTypes, 0, 0, 2);
sub_81C4204(i, TRUE); SetSpriteInvisibility(i, TRUE);
} }
} }
@ -3714,16 +3720,16 @@ static void SetMoveTypeSpritePosAndType(u8 typeId, u8 x, u8 y, u8 spriteArrayId)
sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId]; sprite->oam.paletteNum = sMoveTypeToOamPaletteNum[typeId];
sprite->pos1.x = x + 16; sprite->pos1.x = x + 16;
sprite->pos1.y = y + 8; 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 = &pssData->summary;
if (summary->isEgg) if (summary->isEgg)
{ {
SetMoveTypeSpritePosAndType(TYPE_MYSTERY, 120, 48, 3); SetMoveTypeSpritePosAndType(TYPE_MYSTERY, 120, 48, 3);
sub_81C4204(4, TRUE); SetSpriteInvisibility(4, TRUE);
} }
else else
{ {
@ -3731,16 +3737,16 @@ static void sub_81C43A0(void)
if (gBaseStats[summary->species].type1 != gBaseStats[summary->species].type2) if (gBaseStats[summary->species].type1 != gBaseStats[summary->species].type2)
{ {
SetMoveTypeSpritePosAndType(gBaseStats[summary->species].type2, 0xA0, 0x30, 4); SetMoveTypeSpritePosAndType(gBaseStats[summary->species].type2, 0xA0, 0x30, 4);
sub_81C4204(4, FALSE); SetSpriteInvisibility(4, FALSE);
} }
else else
{ {
sub_81C4204(4, TRUE); SetSpriteInvisibility(4, TRUE);
} }
} }
} }
static void sub_81C4420(void) static void SetMoveTypeIcons(void)
{ {
u8 i; u8 i;
struct PokeSummary *summary = &pssData->summary; struct PokeSummary *summary = &pssData->summary;
@ -3749,11 +3755,11 @@ static void sub_81C4420(void)
if (summary->moves[i] != MOVE_NONE) if (summary->moves[i] != MOVE_NONE)
SetMoveTypeSpritePosAndType(gBattleMoves[summary->moves[i]].type, 0x55, 0x20 + (i * 0x10), i + 3); SetMoveTypeSpritePosAndType(gBattleMoves[summary->moves[i]].type, 0x55, 0x20 + (i * 0x10), i + 3);
else else
sub_81C4204(i + 3, TRUE); SetSpriteInvisibility(i + 3, TRUE);
} }
} }
static void sub_81C4484(void) static void SetContestMoveTypeIcons(void)
{ {
u8 i; u8 i;
struct PokeSummary *summary = &pssData->summary; struct PokeSummary *summary = &pssData->summary;
@ -3762,15 +3768,15 @@ static void sub_81C4484(void)
if (summary->moves[i] != MOVE_NONE) if (summary->moves[i] != MOVE_NONE)
SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[summary->moves[i]].contestCategory, 0x55, 0x20 + (i * 0x10), i + 3); SetMoveTypeSpritePosAndType(NUMBER_OF_MON_TYPES + gContestMoves[summary->moves[i]].contestCategory, 0x55, 0x20 + (i * 0x10), i + 3);
else 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 (pssData->newMove == MOVE_NONE)
{ {
sub_81C4204(7, TRUE); SetSpriteInvisibility(7, TRUE);
} }
else else
{ {
@ -3800,7 +3806,7 @@ static void sub_81C4568(u8 a0, u8 a1)
sprite2->animEnded = FALSE; sprite2->animEnded = FALSE;
} }
static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1) static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1)
{ {
const struct CompressedSpritePalette *pal; const struct CompressedSpritePalette *pal;
struct PokeSummary *summary = &pssData->summary; struct PokeSummary *summary = &pssData->summary;
@ -3847,17 +3853,17 @@ static u8 sub_81C45F4(struct Pokemon *mon, s16 *a1)
} }
} }
(*a1)++; (*a1)++;
return -1; return 0xFF;
case 1: case 1:
pal = GetMonSpritePalStructFromOtIdPersonality(summary->species2, summary->OTID, summary->pid); pal = GetMonSpritePalStructFromOtIdPersonality(summary->species2, summary->OTID, summary->pid);
LoadCompressedSpritePalette(pal); LoadCompressedSpritePalette(pal);
SetMultiuseSpriteTemplateToPokemon(pal->tag, 1); SetMultiuseSpriteTemplateToPokemon(pal->tag, 1);
(*a1)++; (*a1)++;
return -1; return 0xFF;
} }
} }
static void sub_81C4778(void) static void PlayMonCry(void)
{ {
struct PokeSummary *summary = &pssData->summary; struct PokeSummary *summary = &pssData->summary;
if (!summary->isEgg) if (!summary->isEgg)
@ -3883,7 +3889,7 @@ static u8 sub_81C47B4(struct Pokemon *unused)
sprite->data[0] = summary->species2; sprite->data[0] = summary->species2;
sprite->data[2] = 0; sprite->data[2] = 0;
gSprites[spriteId].callback = sub_81C4844; gSprites[spriteId].callback = SpriteCB_Pokemon;
sprite->oam.priority = 0; sprite->oam.priority = 0;
if (!IsMonSpriteNotFlipped(summary->species2)) if (!IsMonSpriteNotFlipped(summary->species2))
@ -3898,14 +3904,14 @@ static u8 sub_81C47B4(struct Pokemon *unused)
return spriteId; return spriteId;
} }
static void sub_81C4844(struct Sprite *sprite) static void SpriteCB_Pokemon(struct Sprite *sprite)
{ {
struct PokeSummary *summary = &pssData->summary; struct PokeSummary *summary = &pssData->summary;
if (!gPaletteFade.active && sprite->data[2] != 1) if (!gPaletteFade.active && sprite->data[2] != 1)
{ {
sprite->data[1] = IsMonSpriteNotFlipped(sprite->data[0]); sprite->data[1] = IsMonSpriteNotFlipped(sprite->data[0]);
sub_81C4778(); PlayMonCry();
PokemonSummaryDoMonAnimation(sprite, sprite->data[0], summary->isEgg); PokemonSummaryDoMonAnimation(sprite, sprite->data[0], summary->isEgg);
} }
} }
@ -4000,11 +4006,11 @@ static void CreateSetStatusSprite(void)
if (anim != 0) if (anim != 0)
{ {
StartSpriteAnim(&gSprites[*spriteId], anim - 1); StartSpriteAnim(&gSprites[*spriteId], anim - 1);
sub_81C4204(2, FALSE); SetSpriteInvisibility(2, FALSE);
} }
else else
{ {
sub_81C4204(2, TRUE); SetSpriteInvisibility(2, TRUE);
} }
} }