diff options
author | Phlosioneer <mattmdrr2@gmail.com> | 2019-03-15 01:19:00 -0400 |
---|---|---|
committer | Phlosioneer <mattmdrr2@gmail.com> | 2019-03-15 01:19:00 -0400 |
commit | 31ded7cc6f40876421c7186e15f8a9fa606ff569 (patch) | |
tree | 831d96edb6d2b4d239affc57ef98d6ccb2f1bccb /src | |
parent | 2e789dbbdc18f56cba62aef51156d44136b20632 (diff) | |
parent | 8e1537fb57dc7ed17079b30f7a3851132cf462bd (diff) |
Merge branch 'master' into pokenav-decomp-again
Diffstat (limited to 'src')
165 files changed, 18543 insertions, 5372 deletions
diff --git a/src/apprentice.c b/src/apprentice.c index 9cf8cd4b4..27ff8e36e 100644 --- a/src/apprentice.c +++ b/src/apprentice.c @@ -1619,7 +1619,7 @@ static u8 CreateAndShowWindow(u8 left, u8 top, u8 width, u8 height) static void RemoveAndHideWindow(u8 windowId) { - sub_8198070(windowId, TRUE); + ClearStdWindowAndFrameToTransparent(windowId, TRUE); RemoveWindow(windowId); } @@ -1826,7 +1826,7 @@ static void Script_PrintMessage(void) FreezeEventObjects(); sub_808B864(); sub_808BCF4(); - NewMenuHelpers_DrawDialogueFrame(0, 1); + DrawDialogueFrame(0, 1); PrintMessage(); } diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 0c6f2ef11..80b3258b4 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -16,9 +16,6 @@ #include "constants/rgb.h" #include "constants/songs.h" -extern void sub_8108C94(struct Sprite *); -extern void sub_810310C(u8, struct Sprite *); - void sub_8103448(struct Sprite *); void sub_8103498(struct Sprite *); void sub_810358C(struct Sprite *); @@ -1417,7 +1414,7 @@ static void AnimTask_WithdrawStep(u8 taskId) } } -// Animates a "zap of energy" used in KINESIS. +// Animates a "zap of energy" used in KINESIS. // arg 0: x pixel offset // arg 1: y pixel offset // arg 2: vertical flip @@ -1592,7 +1589,7 @@ void sub_8103AA4(struct Sprite *sprite) sprite->data[3] = sub_8151534(sub_8151534(b, a), sub_8151624(0x1C0)); sprite->data[4] = sub_8151534(sub_8151534(c, a), sub_8151624(0x1C0)); sprite->callback = sub_8103A00; - } + } } static void sub_8103BE4(u8 taskId) @@ -3470,7 +3467,7 @@ void AnimOrbitFast(struct Sprite *sprite) static void AnimOrbitFastStep(struct Sprite *sprite) { - if ((u16)(sprite->data[1] - 64) < 128) + if (sprite->data[1] >= 64 && sprite->data[1] <= 191) sprite->subpriority = sprite->data[7] + 1; else sprite->subpriority = sprite->data[7] - 1; diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 49fb69342..efa2620fd 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -24,9 +24,6 @@ #include "constants/species.h" #include "constants/weather.h" -extern u8 sub_807521C(s16 x, s16 y, u8 a3); -extern void sub_810E2C8(struct Sprite *); - extern const struct SpriteTemplate gUnknown_08593114; extern const union AffineAnimCmd *const gUnknown_082FF6C0[]; extern const union AffineAnimCmd *const gUnknown_082FF694[]; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 05da72e16..23d469c27 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -16,6 +16,7 @@ #include "palette.h" #include "pokeball.h" #include "pokemon.h" +#include "recorded_battle.h" #include "reshow_battle_screen.h" #include "sound.h" #include "string_util.h" @@ -26,15 +27,12 @@ #include "constants/battle_anim.h" #include "constants/songs.h" #include "constants/trainers.h" +#include "recorded_battle.h" extern struct MusicPlayerInfo gMPlayInfo_BGM; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; -extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon); -extern void sub_81851A8(u8 *); -extern u16 sub_8068B48(void); - // this file's functions static void LinkOpponentHandleGetMonData(void); static void LinkOpponentHandleGetRawMonData(void); @@ -92,7 +90,7 @@ static void LinkOpponentHandleBattleAnimation(void); static void LinkOpponentHandleLinkStandbyMsg(void); static void LinkOpponentHandleResetActionMoveSelection(void); static void LinkOpponentHandleCmd55(void); -static void nullsub_92(void); +static void LinkOpponentCmdEnd(void); static void LinkOpponentBufferRunCommand(void); static void LinkOpponentBufferExecCompleted(void); @@ -164,7 +162,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkOpponentHandleLinkStandbyMsg, LinkOpponentHandleResetActionMoveSelection, LinkOpponentHandleCmd55, - nullsub_92 + LinkOpponentCmdEnd }; static void nullsub_28(void) @@ -1857,6 +1855,6 @@ static void LinkOpponentHandleCmd55(void) gBattlerControllerFuncs[gActiveBattler] = sub_80587B0; } -static void nullsub_92(void) +static void LinkOpponentCmdEnd(void) { } diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 19d39609f..22633c5bc 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -16,6 +16,7 @@ #include "palette.h" #include "pokeball.h" #include "pokemon.h" +#include "recorded_battle.h" #include "reshow_battle_screen.h" #include "sound.h" #include "string_util.h" @@ -26,13 +27,11 @@ #include "constants/battle_anim.h" #include "constants/songs.h" #include "constants/trainers.h" +#include "recorded_battle.h" extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; -extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon); -extern void sub_81851A8(u8 *); - // this file's functions static void LinkPartnerHandleGetMonData(void); static void LinkPartnerHandleGetRawMonData(void); @@ -90,7 +89,7 @@ static void LinkPartnerHandleBattleAnimation(void); static void LinkPartnerHandleLinkStandbyMsg(void); static void LinkPartnerHandleResetActionMoveSelection(void); static void LinkPartnerHandleCmd55(void); -static void nullsub_113(void); +static void LinkPartnerCmdEnd(void); static void LinkPartnerBufferRunCommand(void); static void LinkPartnerBufferExecCompleted(void); @@ -161,10 +160,10 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkPartnerHandleLinkStandbyMsg, LinkPartnerHandleResetActionMoveSelection, LinkPartnerHandleCmd55, - nullsub_113 + LinkPartnerCmdEnd }; -static void nullsub_112(void) +static void SpriteCB_Null2(void) { } @@ -1564,7 +1563,7 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void) gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; gBattleSpritesDataPtr->animationData->field_9_x1 = 1; - gBattlerControllerFuncs[gActiveBattler] = nullsub_112; + gBattlerControllerFuncs[gActiveBattler] = SpriteCB_Null2; } static void sub_814DCCC(u8 taskId) @@ -1687,6 +1686,6 @@ static void LinkPartnerHandleCmd55(void) gBattlerControllerFuncs[gActiveBattler] = sub_80587B0; } -static void nullsub_113(void) +static void LinkPartnerCmdEnd(void) { } diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 99bb0c588..7d940cb89 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -32,14 +32,12 @@ #include "constants/moves.h" #include "constants/songs.h" #include "constants/trainers.h" +#include "trainer_hill.h" extern struct MusicPlayerInfo gMPlayInfo_BGM; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; -extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon); -extern u8 GetTrainerHillTrainerFrontSpriteId(u16 trainerId); - // this file's functions static void OpponentHandleGetMonData(void); static void OpponentHandleGetRawMonData(void); @@ -97,7 +95,7 @@ static void OpponentHandleBattleAnimation(void); static void OpponentHandleLinkStandbyMsg(void); static void OpponentHandleResetActionMoveSelection(void); static void OpponentHandleCmd55(void); -static void nullsub_91(void); +static void OpponentCmdEnd(void); static void OpponentBufferRunCommand(void); static void OpponentBufferExecCompleted(void); @@ -169,7 +167,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = OpponentHandleLinkStandbyMsg, OpponentHandleResetActionMoveSelection, OpponentHandleCmd55, - nullsub_91 + OpponentCmdEnd }; // unknown unused data @@ -2003,6 +2001,6 @@ static void OpponentHandleCmd55(void) OpponentBufferExecCompleted(); } -static void nullsub_91(void) +static void OpponentCmdEnd(void) { } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 6bcc97c68..b377ecf64 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -39,10 +39,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; -extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon); -extern void sub_81AABB0(void); -extern void sub_81851A8(u8 *); - // this file's functions static void PlayerHandleGetMonData(void); static void PlayerHandleSetMonData(void); @@ -99,7 +95,7 @@ static void PlayerHandleBattleAnimation(void); static void PlayerHandleLinkStandbyMsg(void); static void PlayerHandleResetActionMoveSelection(void); static void PlayerHandleCmd55(void); -static void nullsub_22(void); +static void PlayerCmdEnd(void); static void PlayerBufferRunCommand(void); static void HandleInputChooseTarget(void); @@ -186,7 +182,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerHandleLinkStandbyMsg, PlayerHandleResetActionMoveSelection, PlayerHandleCmd55, - nullsub_22 + PlayerCmdEnd }; static const u8 sTargetIdentities[] = {B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT}; @@ -3105,6 +3101,6 @@ static void PlayerHandleCmd55(void) gBattlerControllerFuncs[gActiveBattler] = sub_80587B0; } -static void nullsub_22(void) +static void PlayerCmdEnd(void) { } diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index a9b0f376b..2c53938c1 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -30,9 +30,6 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; -extern void sub_81358F4(void); -extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon); - // this file's functions static void PlayerPartnerHandleGetMonData(void); static void PlayerPartnerHandleGetRawMonData(void); @@ -90,7 +87,7 @@ static void PlayerPartnerHandleBattleAnimation(void); static void PlayerPartnerHandleLinkStandbyMsg(void); static void PlayerPartnerHandleResetActionMoveSelection(void); static void PlayerPartnerHandleCmd55(void); -static void nullsub_128(void); +static void PlayerPartnerCmdEnd(void); static void PlayerPartnerBufferRunCommand(void); static void PlayerPartnerBufferExecCompleted(void); @@ -167,7 +164,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerPartnerHandleLinkStandbyMsg, PlayerPartnerHandleResetActionMoveSelection, PlayerPartnerHandleCmd55, - nullsub_128 + PlayerPartnerCmdEnd }; // unknown unused data @@ -1928,6 +1925,6 @@ static void PlayerPartnerHandleCmd55(void) gBattlerControllerFuncs[gActiveBattler] = sub_80587B0; } -static void nullsub_128(void) +static void PlayerPartnerCmdEnd(void) { } diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 911eb6ce5..e43c5f8ae 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -33,9 +33,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; -extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon); -extern u16 sub_8068B48(void); - // this file's functions static void RecordedOpponentHandleGetMonData(void); static void RecordedOpponentHandleGetRawMonData(void); @@ -93,7 +90,7 @@ static void RecordedOpponentHandleBattleAnimation(void); static void RecordedOpponentHandleLinkStandbyMsg(void); static void RecordedOpponentHandleResetActionMoveSelection(void); static void RecordedOpponentHandleCmd55(void); -static void nullsub_119(void); +static void RecordedOpponentCmdEnd(void); static void RecordedOpponentBufferRunCommand(void); static void RecordedOpponentBufferExecCompleted(void); @@ -165,7 +162,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void RecordedOpponentHandleLinkStandbyMsg, RecordedOpponentHandleResetActionMoveSelection, RecordedOpponentHandleCmd55, - nullsub_119 + RecordedOpponentCmdEnd }; static void nullsub_70(void) @@ -1791,6 +1788,6 @@ static void RecordedOpponentHandleCmd55(void) gBattlerControllerFuncs[gActiveBattler] = sub_80587B0; } -static void nullsub_119(void) +static void RecordedOpponentCmdEnd(void) { } diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index b2dfca6a0..412c49f17 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -30,8 +30,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM; extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; -extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon); - // this file's functions static void RecordedPlayerHandleGetMonData(void); static void RecordedPlayerHandleGetRawMonData(void); @@ -89,7 +87,7 @@ static void RecordedPlayerHandleBattleAnimation(void); static void RecordedPlayerHandleLinkStandbyMsg(void); static void RecordedPlayerHandleResetActionMoveSelection(void); static void RecordedPlayerHandleCmd55(void); -static void nullsub_121(void); +static void RecordedPlayerCmdEnd(void); static void RecordedPlayerBufferRunCommand(void); static void RecordedPlayerBufferExecCompleted(void); @@ -160,7 +158,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) RecordedPlayerHandleLinkStandbyMsg, RecordedPlayerHandleResetActionMoveSelection, RecordedPlayerHandleCmd55, - nullsub_121 + RecordedPlayerCmdEnd }; static void nullsub_120(void) @@ -1808,6 +1806,6 @@ static void RecordedPlayerHandleCmd55(void) gBattlerControllerFuncs[gActiveBattler] = sub_80587B0; } -static void nullsub_121(void) +static void RecordedPlayerCmdEnd(void) { } diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 54ba04ab4..e9da16252 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -25,8 +25,6 @@ extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; -extern void sub_81358F4(void); - // this file's functions static void SafariHandleGetMonData(void); static void SafariHandleGetRawMonData(void); @@ -84,7 +82,7 @@ static void SafariHandleBattleAnimation(void); static void SafariHandleLinkStandbyMsg(void); static void SafariHandleResetActionMoveSelection(void); static void SafariHandleCmd55(void); -static void nullsub_115(void); +static void SafariCmdEnd(void); static void SafariBufferRunCommand(void); static void SafariBufferExecCompleted(void); @@ -148,10 +146,10 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) = SafariHandleLinkStandbyMsg, SafariHandleResetActionMoveSelection, SafariHandleCmd55, - nullsub_115 + SafariCmdEnd }; -static void nullsub_114(void) +static void SpriteCB_Null4(void) { } @@ -688,6 +686,6 @@ static void SafariHandleCmd55(void) gBattlerControllerFuncs[gActiveBattler] = sub_81595E4; } -static void nullsub_115(void) +static void SafariCmdEnd(void) { } diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index d891b96b6..f1b783b21 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -33,8 +33,6 @@ extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[]; -extern void sub_8172EF0(u8 battlerId, struct Pokemon *mon); - // this file's functions static void WallyHandleGetMonData(void); static void WallyHandleGetRawMonData(void); @@ -92,7 +90,7 @@ static void WallyHandleBattleAnimation(void); static void WallyHandleLinkStandbyMsg(void); static void WallyHandleResetActionMoveSelection(void); static void WallyHandleCmd55(void); -static void nullsub_118(void); +static void WallyCmdEnd(void); static void WallyBufferRunCommand(void); static void WallyBufferExecCompleted(void); @@ -161,10 +159,10 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) = WallyHandleLinkStandbyMsg, WallyHandleResetActionMoveSelection, WallyHandleCmd55, - nullsub_118 + WallyCmdEnd }; -static void nullsub_117(void) +static void SpriteCB_Null7(void) { } @@ -1559,6 +1557,6 @@ static void WallyHandleCmd55(void) gBattlerControllerFuncs[gActiveBattler] = sub_80587B0; } -static void nullsub_118(void) +static void WallyCmdEnd(void) { } diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 70a53f332..29272c19a 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -767,7 +767,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId) { if (IsLinkMaster()) { - sub_800A620(); + CheckShouldAdvanceLinkState(); gTasks[taskId].data[11]++; } else diff --git a/src/battle_dome.c b/src/battle_dome.c index bfede1b28..f86faeffb 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -3794,7 +3794,7 @@ static void sub_8190CD4(u8 taskId) for (i = windowId; i < windowId + 9; i++) { CopyWindowToVram(i, 2); - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); } gTasks[taskId].data[0] = 3; break; diff --git a/src/battle_factory_screen.c b/src/battle_factory_screen.c index bb9fe8e28..85c0b2808 100644 --- a/src/battle_factory_screen.c +++ b/src/battle_factory_screen.c @@ -1183,7 +1183,7 @@ static void CB2_InitSelectScreen(void) break; case 5: if (sFactorySelectScreen->fromSummaryScreen == TRUE) - sFactorySelectScreen->cursorPos = gUnknown_0203CF20; + sFactorySelectScreen->cursorPos = gLastViewedMonIndex; Select_InitMonsData(); Select_InitAllSprites(); if (sFactorySelectScreen->fromSummaryScreen == TRUE) @@ -1741,7 +1741,7 @@ static void Select_CopyMonsToPlayerParty(void) { gPlayerParty[i] = sFactorySelectScreen->mons[j].monData; gSaveBlock2Ptr->frontier.rentalMons[i].monId = sFactorySelectScreen->mons[j].monSetId; - gSaveBlock2Ptr->frontier.rentalMons[i].personality = GetMonData(&gPlayerParty[i].box, MON_DATA_PERSONALITY, NULL); + gSaveBlock2Ptr->frontier.rentalMons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY, NULL); gSaveBlock2Ptr->frontier.rentalMons[i].abilityBit = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ALT_ABILITY, NULL); gSaveBlock2Ptr->frontier.rentalMons[i].ivs = GetBoxMonData(&gPlayerParty[i].box, MON_DATA_ATK_IV, NULL); break; @@ -1786,14 +1786,14 @@ static void sub_819B958(u8 windowId) { gSprites[sFactorySelectScreen->menuCursor1SpriteId].invisible = TRUE; gSprites[sFactorySelectScreen->menuCursor2SpriteId].invisible = TRUE; - FillWindowPixelBuffer(windowId, 0); + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); CopyWindowToVram(windowId, 2); ClearWindowTilemap(windowId); } static void Select_PrintRentalPkmnString(void) { - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); AddTextPrinterParameterized(0, 1, gText_RentalPkmn2, 2, 1, 0, NULL); CopyWindowToVram(0, 3); } @@ -1804,7 +1804,7 @@ static void Select_PrintMonSpecies(void) u8 x; u8 monId = sFactorySelectScreen->cursorPos; - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL); StringCopy(gStringVar4, gSpeciesNames[species]); x = GetStringRightAlignXOffset(1, gStringVar4, 86); @@ -1816,7 +1816,7 @@ static void Select_PrintSelectMonString(void) { const u8 *str = NULL; - FillWindowPixelBuffer(2, 0); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); if (sFactorySelectScreen->selectingMonsState == 1) str = gText_SelectFirstPkmn; else if (sFactorySelectScreen->selectingMonsState == 2) @@ -1832,7 +1832,7 @@ static void Select_PrintSelectMonString(void) static void Select_PrintCantSelectSameMon(void) { - FillWindowPixelBuffer(2, 0); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); AddTextPrinterParameterized(2, 1, gText_CantSelectSamePkmn, 2, 5, 0, NULL); CopyWindowToVram(2, 2); } @@ -1842,7 +1842,7 @@ static void Select_PrintMenuOptions(void) u8 selectedId = sFactorySelectScreen->mons[sFactorySelectScreen->cursorPos].selectedId; PutWindowTilemap(3); - FillWindowPixelBuffer(3, 0); + FillWindowPixelBuffer(3, PIXEL_FILL(0)); AddTextPrinterParameterized3(3, 1, 7, 1, gUnknown_08610476, 0, gText_Summary); if (selectedId != 0) AddTextPrinterParameterized3(3, 1, 7, 17, gUnknown_08610476, 0, gText_Deselect); @@ -1856,7 +1856,7 @@ static void Select_PrintMenuOptions(void) static void Select_PrintYesNoOptions(void) { PutWindowTilemap(4); - FillWindowPixelBuffer(4, 0); + FillWindowPixelBuffer(4, PIXEL_FILL(0)); AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610476, 0, gText_Yes2); AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610476, 0, gText_No2); CopyWindowToVram(4, 3); @@ -1924,7 +1924,7 @@ static void Select_PrintMonCategory(void) if (monId < SELECTABLE_MONS_COUNT) { PutWindowTilemap(5); - FillWindowPixelBuffer(5, 0); + FillWindowPixelBuffer(5, PIXEL_FILL(0)); species = GetMonData(&sFactorySelectScreen->mons[monId].monData, MON_DATA_SPECIES, NULL); CopyMonCategoryText(SpeciesToNationalPokedexNum(species), text); x = GetStringRightAlignXOffset(1, text, 0x76); @@ -2873,7 +2873,7 @@ static void sub_819D588(u8 taskId) case 3: if (!gPaletteFade.active) { - FillWindowPixelBuffer(5, 0); + FillWindowPixelBuffer(5, PIXEL_FILL(0)); CopyWindowToVram(5, 2); if (sFactorySwapScreen->inEnemyScreen == TRUE) { @@ -3002,7 +3002,7 @@ static void sub_819D770(u8 taskId) gTasks[taskId].data[0]++; break; case 6: - FillWindowPixelBuffer(5, 0); + FillWindowPixelBuffer(5, PIXEL_FILL(0)); CopyWindowToVram(5, 2); gTasks[taskId].data[0]++; break; @@ -3172,7 +3172,7 @@ static void CB2_InitSwapScreen(void) break; case 5: if (sFactorySwapScreen->fromSummaryScreen == TRUE) - sFactorySwapScreen->cursorPos = gUnknown_0203CF20; + sFactorySwapScreen->cursorPos = gLastViewedMonIndex; gMain.state++; break; case 6: @@ -3546,7 +3546,7 @@ static void sub_819EA64(u8 windowId) { gSprites[sFactorySwapScreen->menuCursor1SpriteId].invisible = TRUE; gSprites[sFactorySwapScreen->menuCursor2SpriteId].invisible = TRUE; - FillWindowPixelBuffer(windowId, 0); + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); CopyWindowToVram(windowId, 2); ClearWindowTilemap(windowId); } @@ -3554,14 +3554,14 @@ static void sub_819EA64(u8 windowId) static void sub_819EAC0(void) { PutWindowTilemap(1); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); CopyWindowToVram(1, 2); } static void sub_819EADC(void) { PutWindowTilemap(7); - FillWindowPixelBuffer(7, 0); + FillWindowPixelBuffer(7, PIXEL_FILL(0)); CopyWindowToVram(7, 2); } @@ -3569,13 +3569,13 @@ static void sub_819EAF8(void) { sub_819EAC0(); PutWindowTilemap(5); - FillWindowPixelBuffer(5, 0); + FillWindowPixelBuffer(5, PIXEL_FILL(0)); CopyWindowToVram(5, 2); } static void Swap_PrintPkmnSwap(void) { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized(0, 1, gText_PkmnSwap, 2, 1, 0, NULL); CopyWindowToVram(0, 3); } @@ -3585,7 +3585,7 @@ static void Swap_PrintMonSpecies(void) u16 species; u8 x; - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); if (sFactorySwapScreen->cursorPos > 2) { CopyWindowToVram(1, 2); @@ -3606,7 +3606,7 @@ static void Swap_PrintMonSpecies(void) static void Swap_PrintOnInfoWindow(const u8 *str) { - FillWindowPixelBuffer(2, 0); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); AddTextPrinterParameterized(2, 1, str, 2, 5, 0, NULL); CopyWindowToVram(2, 2); } @@ -3614,7 +3614,7 @@ static void Swap_PrintOnInfoWindow(const u8 *str) static void Swap_PrintMenuOptions(void) { PutWindowTilemap(3); - FillWindowPixelBuffer(3, 0); + FillWindowPixelBuffer(3, PIXEL_FILL(0)); AddTextPrinterParameterized3(3, 1, 15, 1, gUnknown_08610922, 0, gText_Summary2); AddTextPrinterParameterized3(3, 1, 15, 17, gUnknown_08610922, 0, gText_Swap); AddTextPrinterParameterized3(3, 1, 15, 33, gUnknown_08610922, 0, gText_Rechoose); @@ -3624,7 +3624,7 @@ static void Swap_PrintMenuOptions(void) static void Swap_PrintYesNoOptions(void) { PutWindowTilemap(4); - FillWindowPixelBuffer(4, 0); + FillWindowPixelBuffer(4, PIXEL_FILL(0)); AddTextPrinterParameterized3(4, 1, 7, 1, gUnknown_08610922, 0, gText_Yes3); AddTextPrinterParameterized3(4, 1, 7, 17, gUnknown_08610922, 0, gText_No3); CopyWindowToVram(4, 3); @@ -3638,7 +3638,7 @@ static void Swap_PrintActionString(const u8 *str, u32 y, u32 windowId) static void Swap_PrintActionStrings(void) { - FillWindowPixelBuffer(5, 0); + FillWindowPixelBuffer(5, PIXEL_FILL(0)); switch (sFactorySwapScreen->inEnemyScreen) { case TRUE: @@ -3652,7 +3652,7 @@ static void Swap_PrintActionStrings(void) static void Swap_PrintActionStrings2(void) { - FillWindowPixelBuffer(3, 0); + FillWindowPixelBuffer(3, PIXEL_FILL(0)); switch (sFactorySwapScreen->inEnemyScreen) { case TRUE: @@ -3693,7 +3693,7 @@ static void Swap_PrintMonSpecies2(void) LoadPalette(pal, 0xF0, 0xA); PutWindowTilemap(7); - FillWindowPixelBuffer(7, 0); + FillWindowPixelBuffer(7, PIXEL_FILL(0)); if (sFactorySwapScreen->cursorPos > 2) { CopyWindowToVram(7, 3); @@ -3745,7 +3745,7 @@ static void Swap_PrintMonCategory(void) u8 x; u8 monId = sFactorySwapScreen->cursorPos; - FillWindowPixelBuffer(8, 0); + FillWindowPixelBuffer(8, PIXEL_FILL(0)); if (monId > 2) { CopyWindowToVram(8, 2); @@ -3940,7 +3940,7 @@ static void Task_SwapCantHaveSameMons(u8 taskId) case 2: if (sFactorySwapScreen->unk30 != TRUE) { - FillWindowPixelBuffer(5, 0); + FillWindowPixelBuffer(5, PIXEL_FILL(0)); CopyWindowToVram(5, 2); gTasks[taskId].data[0]++; } diff --git a/src/battle_interface.c b/src/battle_interface.c index 0eb494db4..f2916012e 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -35,125 +35,126 @@ struct TestingBar }; enum -{ - HEALTHBOX_GFX_0, - HEALTHBOX_GFX_1, - HEALTHBOX_GFX_2, - HEALTHBOX_GFX_HP_BAR_GREEN, - HEALTHBOX_GFX_4, - HEALTHBOX_GFX_5, - HEALTHBOX_GFX_6, - HEALTHBOX_GFX_7, - HEALTHBOX_GFX_8, - HEALTHBOX_GFX_9, - HEALTHBOX_GFX_10, - HEALTHBOX_GFX_11, - HEALTHBOX_GFX_12, - HEALTHBOX_GFX_13, - HEALTHBOX_GFX_14, - HEALTHBOX_GFX_15, - HEALTHBOX_GFX_16, - HEALTHBOX_GFX_17, - HEALTHBOX_GFX_18, - HEALTHBOX_GFX_19, - HEALTHBOX_GFX_20, - HEALTHBOX_GFX_STATUS_PSN_BATTLER0, - HEALTHBOX_GFX_22, - HEALTHBOX_GFX_23, - HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, +{ // Corresponds to gHealthboxElementsGfxTable (and the tables after it) in graphics.c + // These are indexes into the tables, which are filled with 8x8 square pixel data. + HEALTHBOX_GFX_0, //hp bar [black section] + HEALTHBOX_GFX_1, //hp bar "H" + HEALTHBOX_GFX_2, //hp bar "P" + HEALTHBOX_GFX_HP_BAR_GREEN, //hp bar [0 pixels] + HEALTHBOX_GFX_4, //hp bar [1 pixels] + HEALTHBOX_GFX_5, //hp bar [2 pixels] + HEALTHBOX_GFX_6, //hp bar [3 pixels] + HEALTHBOX_GFX_7, //hp bar [4 pixels] + HEALTHBOX_GFX_8, //hp bar [5 pixels] + HEALTHBOX_GFX_9, //hp bar [6 pixels] + HEALTHBOX_GFX_10, //hp bar [7 pixels] + HEALTHBOX_GFX_11, //hp bar [8 pixels] + HEALTHBOX_GFX_12, //exp bar [0 pixels] + HEALTHBOX_GFX_13, //exp bar [1 pixels] + HEALTHBOX_GFX_14, //exp bar [2 pixels] + HEALTHBOX_GFX_15, //exp bar [3 pixels] + HEALTHBOX_GFX_16, //exp bar [4 pixels] + HEALTHBOX_GFX_17, //exp bar [5 pixels] + HEALTHBOX_GFX_18, //exp bar [6 pixels] + HEALTHBOX_GFX_19, //exp bar [7 pixels] + HEALTHBOX_GFX_20, //exp bar [8 pixels] + HEALTHBOX_GFX_STATUS_PSN_BATTLER0, //status psn "(P" + HEALTHBOX_GFX_22, //status psn "SN" + HEALTHBOX_GFX_23, //status psn "|)"" + HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, //status prz HEALTHBOX_GFX_25, HEALTHBOX_GFX_26, - HEALTHBOX_GFX_STATUS_SLP_BATTLER0, + HEALTHBOX_GFX_STATUS_SLP_BATTLER0, //status slp HEALTHBOX_GFX_28, HEALTHBOX_GFX_29, - HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, + HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, //status frz HEALTHBOX_GFX_31, HEALTHBOX_GFX_32, - HEALTHBOX_GFX_STATUS_BRN_BATTLER0, + HEALTHBOX_GFX_STATUS_BRN_BATTLER0, //status brn HEALTHBOX_GFX_34, HEALTHBOX_GFX_35, - HEALTHBOX_GFX_36, - HEALTHBOX_GFX_37, - HEALTHBOX_GFX_38, - HEALTHBOX_GFX_39, - HEALTHBOX_GFX_40, - HEALTHBOX_GFX_41, - HEALTHBOX_GFX_42, - HEALTHBOX_GFX_43, - HEALTHBOX_GFX_44, - HEALTHBOX_GFX_45, - HEALTHBOX_GFX_46, - HEALTHBOX_GFX_HP_BAR_YELLOW, - HEALTHBOX_GFX_48, - HEALTHBOX_GFX_49, - HEALTHBOX_GFX_50, - HEALTHBOX_GFX_51, - HEALTHBOX_GFX_52, - HEALTHBOX_GFX_53, - HEALTHBOX_GFX_54, - HEALTHBOX_GFX_55, - HEALTHBOX_GFX_HP_BAR_RED, - HEALTHBOX_GFX_57, - HEALTHBOX_GFX_58, - HEALTHBOX_GFX_59, - HEALTHBOX_GFX_60, - HEALTHBOX_GFX_61, - HEALTHBOX_GFX_62, - HEALTHBOX_GFX_63, - HEALTHBOX_GFX_64, - HEALTHBOX_GFX_65, - HEALTHBOX_GFX_66, - HEALTHBOX_GFX_67, - HEALTHBOX_GFX_68, - HEALTHBOX_GFX_69, - HEALTHBOX_GFX_70, - HEALTHBOX_GFX_STATUS_PSN_BATTLER1, + HEALTHBOX_GFX_36, //misc [Black section] + HEALTHBOX_GFX_37, //misc [Black section] + HEALTHBOX_GFX_38, //misc [Black section] + HEALTHBOX_GFX_39, //misc [Blank Health Window?] + HEALTHBOX_GFX_40, //misc [Blank Health Window?] + HEALTHBOX_GFX_41, //misc [Blank Health Window?] + HEALTHBOX_GFX_42, //misc [Blank Health Window?] + HEALTHBOX_GFX_43, //misc [Top of Health Window?] + HEALTHBOX_GFX_44, //misc [Top of Health Window?] + HEALTHBOX_GFX_45, //misc [Top of Health Window?] + HEALTHBOX_GFX_46, //misc [Blank Health Window?] + HEALTHBOX_GFX_HP_BAR_YELLOW, //hp bar yellow [0 pixels] + HEALTHBOX_GFX_48, //hp bar yellow [1 pixels] + HEALTHBOX_GFX_49, //hp bar yellow [2 pixels] + HEALTHBOX_GFX_50, //hp bar yellow [3 pixels] + HEALTHBOX_GFX_51, //hp bar yellow [4 pixels] + HEALTHBOX_GFX_52, //hp bar yellow [5 pixels] + HEALTHBOX_GFX_53, //hp bar yellow [6 pixels] + HEALTHBOX_GFX_54, //hp bar yellow [7 pixels] + HEALTHBOX_GFX_55, //hp bar yellow [8 pixels] + HEALTHBOX_GFX_HP_BAR_RED, //hp bar red [0 pixels] + HEALTHBOX_GFX_57, //hp bar red [1 pixels] + HEALTHBOX_GFX_58, //hp bar red [2 pixels] + HEALTHBOX_GFX_59, //hp bar red [3 pixels] + HEALTHBOX_GFX_60, //hp bar red [4 pixels] + HEALTHBOX_GFX_61, //hp bar red [5 pixels] + HEALTHBOX_GFX_62, //hp bar red [6 pixels] + HEALTHBOX_GFX_63, //hp bar red [7 pixels] + HEALTHBOX_GFX_64, //hp bar red [8 pixels] + HEALTHBOX_GFX_65, //hp bar frame end + HEALTHBOX_GFX_66, //status ball [full] + HEALTHBOX_GFX_67, //status ball [empty] + HEALTHBOX_GFX_68, //status ball [fainted] + HEALTHBOX_GFX_69, //status ball [statused] + HEALTHBOX_GFX_70, //status ball [unused extra] + HEALTHBOX_GFX_STATUS_PSN_BATTLER1, //status2 "PSN" HEALTHBOX_GFX_72, HEALTHBOX_GFX_73, - HEALTHBOX_GFX_STATUS_PRZ_BATTLER1, + HEALTHBOX_GFX_STATUS_PRZ_BATTLER1, //status2 "PRZ" HEALTHBOX_GFX_75, HEALTHBOX_GFX_76, - HEALTHBOX_GFX_STATUS_SLP_BATTLER1, + HEALTHBOX_GFX_STATUS_SLP_BATTLER1, //status2 "SLP" HEALTHBOX_GFX_78, HEALTHBOX_GFX_79, - HEALTHBOX_GFX_STATUS_FRZ_BATTLER1, + HEALTHBOX_GFX_STATUS_FRZ_BATTLER1, //status2 "FRZ" HEALTHBOX_GFX_81, HEALTHBOX_GFX_82, - HEALTHBOX_GFX_STATUS_BRN_BATTLER1, + HEALTHBOX_GFX_STATUS_BRN_BATTLER1, //status2 "BRN" HEALTHBOX_GFX_84, HEALTHBOX_GFX_85, - HEALTHBOX_GFX_STATUS_PSN_BATTLER2, + HEALTHBOX_GFX_STATUS_PSN_BATTLER2, //status3 "PSN" HEALTHBOX_GFX_87, HEALTHBOX_GFX_88, - HEALTHBOX_GFX_STATUS_PRZ_BATTLER2, + HEALTHBOX_GFX_STATUS_PRZ_BATTLER2, //status3 "PRZ" HEALTHBOX_GFX_90, HEALTHBOX_GFX_91, - HEALTHBOX_GFX_STATUS_SLP_BATTLER2, + HEALTHBOX_GFX_STATUS_SLP_BATTLER2, //status3 "SLP" HEALTHBOX_GFX_93, HEALTHBOX_GFX_94, - HEALTHBOX_GFX_STATUS_FRZ_BATTLER2, + HEALTHBOX_GFX_STATUS_FRZ_BATTLER2, //status3 "FRZ" HEALTHBOX_GFX_96, HEALTHBOX_GFX_97, - HEALTHBOX_GFX_STATUS_BRN_BATTLER2, + HEALTHBOX_GFX_STATUS_BRN_BATTLER2, //status3 "BRN" HEALTHBOX_GFX_99, HEALTHBOX_GFX_100, - HEALTHBOX_GFX_STATUS_PSN_BATTLER3, + HEALTHBOX_GFX_STATUS_PSN_BATTLER3, //status4 "PSN" HEALTHBOX_GFX_102, HEALTHBOX_GFX_103, - HEALTHBOX_GFX_STATUS_PRZ_BATTLER3, + HEALTHBOX_GFX_STATUS_PRZ_BATTLER3, //status4 "PRZ" HEALTHBOX_GFX_105, HEALTHBOX_GFX_106, - HEALTHBOX_GFX_STATUS_SLP_BATTLER3, + HEALTHBOX_GFX_STATUS_SLP_BATTLER3, //status4 "SLP" HEALTHBOX_GFX_108, HEALTHBOX_GFX_109, - HEALTHBOX_GFX_STATUS_FRZ_BATTLER3, + HEALTHBOX_GFX_STATUS_FRZ_BATTLER3, //status4 "FRZ" HEALTHBOX_GFX_111, HEALTHBOX_GFX_112, - HEALTHBOX_GFX_STATUS_BRN_BATTLER3, + HEALTHBOX_GFX_STATUS_BRN_BATTLER3, //status4 "BRN" HEALTHBOX_GFX_114, HEALTHBOX_GFX_115, - HEALTHBOX_GFX_116, - HEALTHBOX_GFX_117, + HEALTHBOX_GFX_116, //unknown_D12FEC + HEALTHBOX_GFX_117, //unknown_D1300C }; extern const u8 *const gNatureNamePointers[]; @@ -2578,7 +2579,7 @@ static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, struct WindowTemplate winTemplate = sHealthboxWindowTemplate; winId = AddWindow(&winTemplate); - FillWindowPixelBuffer(winId, (bgColor << 4) | (bgColor)); + FillWindowPixelBuffer(winId, PIXEL_FILL(bgColor)); color[0] = bgColor; color[1] = 1; diff --git a/src/battle_main.c b/src/battle_main.c index 043e75808..2b0c5980e 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -57,6 +57,7 @@ #include "constants/songs.h" #include "constants/species.h" #include "constants/trainers.h" +#include "cable_club.h" extern struct MusicPlayerInfo gMPlayInfo_SE1; extern struct MusicPlayerInfo gMPlayInfo_SE2; @@ -69,9 +70,6 @@ extern const u8 *const gBattlescriptsForRunningByItem[]; extern const u8 *const gBattlescriptsForUsingItem[]; extern const u8 *const gBattlescriptsForSafariActions[]; -// functions -extern void sub_80B3AF8(u8 taskId); // cable club - // this file's functions static void CB2_InitBattleInternal(void); static void CB2_PreInitMultiBattle(void); @@ -3279,7 +3277,7 @@ void FaintClearSetData(void) gProtectStructs[gActiveBattler].targetNotAffected = 0; gProtectStructs[gActiveBattler].chargingTurn = 0; gProtectStructs[gActiveBattler].fleeFlag = 0; - gProtectStructs[gActiveBattler].usedImprisionedMove = 0; + gProtectStructs[gActiveBattler].usedImprisonedMove = 0; gProtectStructs[gActiveBattler].loveImmobility = 0; gProtectStructs[gActiveBattler].usedDisabledMove = 0; gProtectStructs[gActiveBattler].usedTauntedMove = 0; diff --git a/src/battle_message.c b/src/battle_message.c index 164108dec..6762cd416 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1357,7 +1357,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = { // The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c { // 0 Standard battle message - .fillValue = 0xFF, + .fillValue = PIXEL_FILL(0xF), .fontId = 1, .x = 0, .y = 1, @@ -1369,7 +1369,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 6, }, { // 1 "What will (pokemon) do?" - .fillValue = 0xFF, + .fillValue = PIXEL_FILL(0xF), .fontId = 1, .x = 1, .y = 1, @@ -1381,7 +1381,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 6, }, { // 2 "Fight/Pokemon/Bag/Run" - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 0, .y = 1, @@ -1393,7 +1393,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 3 Top left move - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1405,7 +1405,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 4 Top right move - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1417,7 +1417,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 5 Bottom left move - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1429,7 +1429,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 6 Bottom right move - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1441,7 +1441,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 7 "PP" - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1453,7 +1453,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 11, }, { // 8 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 0, .y = 1, @@ -1465,7 +1465,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 9 PP remaining - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 2, .y = 1, @@ -1477,7 +1477,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 11, }, { // 10 "type" - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1489,7 +1489,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 11 "switch which?" - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1501,7 +1501,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 12 "gText_BattleYesNoChoice" - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 0, .y = 1, @@ -1513,7 +1513,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 13 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 0, .y = 1, @@ -1525,7 +1525,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 14 - .fillValue = 0x0, + .fillValue = PIXEL_FILL(0), .fontId = 1, .x = 32, .y = 1, @@ -1537,7 +1537,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 2, }, { // 15 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1549,7 +1549,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 16 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1561,7 +1561,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 17 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1573,7 +1573,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 18 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1585,7 +1585,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 19 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1597,7 +1597,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 20 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1609,7 +1609,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 15, }, { // 21 - .fillValue = 0x0, + .fillValue = PIXEL_FILL(0), .fontId = 1, .x = -1, .y = 1, @@ -1621,7 +1621,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 6, }, { // 22 - .fillValue = 0x0, + .fillValue = PIXEL_FILL(0), .fontId = 1, .x = -1, .y = 1, @@ -1633,7 +1633,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = .shadowColor = 6, }, { // 23 - .fillValue = 0x0, + .fillValue = PIXEL_FILL(0x0), .fontId = 1, .x = -1, .y = 1, @@ -1649,7 +1649,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = { { // 0 - .fillValue = 0xFF, + .fillValue = PIXEL_FILL(0xF), .fontId = 1, .x = 0, .y = 1, @@ -1661,7 +1661,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 6, }, { // 1 - .fillValue = 0xFF, + .fillValue = PIXEL_FILL(0xF), .fontId = 1, .x = 1, .y = 1, @@ -1673,7 +1673,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 6, }, { // 2 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 0, .y = 1, @@ -1685,7 +1685,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 3 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1697,7 +1697,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 4 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1709,7 +1709,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 5 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1721,7 +1721,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 6 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1733,7 +1733,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 7 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1745,7 +1745,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 11, }, { // 8 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 0, .y = 1, @@ -1757,7 +1757,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 9 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 2, .y = 1, @@ -1769,7 +1769,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 11, }, { // 10 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1781,7 +1781,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 11 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 7, .x = 0, .y = 1, @@ -1793,7 +1793,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 12 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 0, .y = 1, @@ -1805,7 +1805,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 13 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = 0, .y = 1, @@ -1817,7 +1817,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 14 - .fillValue = 0x0, + .fillValue = PIXEL_FILL(0), .fontId = 1, .x = 32, .y = 1, @@ -1829,7 +1829,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 2, }, { // 15 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1841,7 +1841,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 16 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1853,7 +1853,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 17 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1865,7 +1865,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 18 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1877,7 +1877,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 19 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1889,7 +1889,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 20 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1901,7 +1901,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 21 - .fillValue = 0xEE, + .fillValue = PIXEL_FILL(0xE), .fontId = 1, .x = -1, .y = 1, @@ -1913,7 +1913,7 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] = .shadowColor = 15, }, { // 22 - .fillValue = 0x11, + .fillValue = PIXEL_FILL(0x1), .fontId = 1, .x = 0, .y = 1, diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index a2fa4120f..34da3a25d 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1267,7 +1267,7 @@ static u8 GetPostBattleDirectionHintTextIndex(int *hintType, u8 minDistanceForEx { for (x = 0; x < 32; x++) { - if ((map[x] & 0x3FF) == FLOOR_EXIT_METATILE) + if ((map[x] & METATILE_ID_MASK) == FLOOR_EXIT_METATILE) { x += 7 - gEventObjects[gSelectedEventObject].initialCoords.x; y += 7 - gEventObjects[gSelectedEventObject].initialCoords.y; @@ -1568,7 +1568,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio { for (x = 0; x < mapLayout->width; x++) { - if ((layoutMap[x] & 0x3FF) != FLOOR_EXIT_METATILE) + if ((layoutMap[x] & METATILE_ID_MASK) != FLOOR_EXIT_METATILE) { map[x] = layoutMap[x]; } @@ -1590,7 +1590,7 @@ void GenerateBattlePyramidFloorLayout(u16 *backupMapData, bool8 setPlayerPositio layoutMap += mapLayout->width; } } - mapheader_run_script_with_tag_x1(); + RunOnLoadMapScript(); free(floorLayoutOffsets); } diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 1f0672dcb..2e13ea08b 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -651,7 +651,7 @@ static void PrintItemDescription(s32 listMenuId) StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1); desc = gStringVar4; } - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); PrintOnWindow_Font1(1, desc, 3, 0, 0, 1, 0, 0); } @@ -804,7 +804,7 @@ static void sub_81C5A98(u8 listMenuTaskId, u8 arg1) static void sub_81C5AB8(u8 y, u8 arg1) { if (arg1 == 0xFF) - FillWindowPixelRect(0, 0, 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1)); + FillWindowPixelRect(0, PIXEL_FILL(0), 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1)); else PrintOnWindow_Font1(0, gText_SelectorArrow2, 0, y, 0, 0, 0, arg1); } @@ -911,7 +911,7 @@ static void sub_81C5D20(u8 taskId) CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); if (gPyramidBagResources->menuActionsCount == 1) sub_81C5EAC(sub_81C6D24(0)); @@ -1048,7 +1048,7 @@ static void BagAction_UseOnField(u8 taskId) else if (ItemId_GetFieldFunc(gSpecialVar_ItemId) != NULL) { sub_81C61A8(); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); schedule_bg_copy_tilemap_to_vram(0); ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); } @@ -1086,7 +1086,7 @@ static void BagAction_Toss(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); sub_81C6404(); gTasks[taskId].func = sub_81C64B4; @@ -1100,7 +1100,7 @@ static void sub_81C6350(u8 taskId) CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2); StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); sub_81C6DAC(taskId, &sYesNoTossFuncions); } @@ -1146,7 +1146,7 @@ static void sub_81C64B4(u8 taskId) else if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - sub_8198070(3, 0); + ClearStdWindowAndFrameToTransparent(3, 0); ClearWindowTilemap(3); schedule_bg_copy_tilemap_to_vram(1); sub_81C6350(taskId); @@ -1154,7 +1154,7 @@ static void sub_81C64B4(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - sub_8198070(3, 0); + ClearStdWindowAndFrameToTransparent(3, 0); ClearWindowTilemap(3); schedule_bg_copy_tilemap_to_vram(1); DontTossItem(taskId); @@ -1168,7 +1168,7 @@ static void TossItem(u8 taskId) CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 2); StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); gTasks[taskId].func = sub_81C65CC; } @@ -1265,7 +1265,7 @@ static void Task_BeginItemSwap(u8 taskId) ListMenuSetUnkIndicatorsStructField(data[0], 0x10, 1); CopyItemName(gSaveBlock2Ptr->frontier.pyramidBag.itemId[gSaveBlock2Ptr->frontier.lvlMode][data[1]], gStringVar1); StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); PrintOnWindow_Font1(1, gStringVar4, 3, 0, 0, 1, 0, 0); sub_81C5A98(data[0], 1); sub_81C704C(data[1]); @@ -1395,7 +1395,7 @@ static void sub_81C6BD8(void) LoadPalette(gUnknown_0860F074, 0xF0, 0x20); for (i = 0; i < 5; i++) - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); PutWindowTilemap(0); PutWindowTilemap(1); @@ -1415,7 +1415,7 @@ static void PrintOnWindow_Font7(u8 windowId, const u8 *src, u8 x, u8 y, u8 lette static void sub_81C6CEC(u8 windowId) { - SetWindowBorderStyle(windowId, 0, 1, 0xE); + DrawStdFrameWithCustomTileAndPalette(windowId, 0, 1, 0xE); schedule_bg_copy_tilemap_to_vram(1); } @@ -1430,7 +1430,7 @@ static u8 sub_81C6D24(u8 windowArrayId) if (*windowId == 0xFF) { *windowId = AddWindow(&gUnknown_0861F350[windowArrayId]); - SetWindowBorderStyle(*windowId, FALSE, 1, 0xE); + DrawStdFrameWithCustomTileAndPalette(*windowId, FALSE, 1, 0xE); schedule_bg_copy_tilemap_to_vram(1); } return *windowId; @@ -1441,7 +1441,7 @@ static void sub_81C6D6C(u8 windowArrayId) u8 *windowId = &gPyramidBagResources->windowIds[windowArrayId]; if (*windowId != 0xFF) { - sub_8198070(*windowId, FALSE); + ClearStdWindowAndFrameToTransparent(*windowId, FALSE); ClearWindowTilemap(*windowId); RemoveWindow(*windowId); schedule_bg_copy_tilemap_to_vram(1); @@ -1456,14 +1456,15 @@ static void sub_81C6DAC(u8 taskId, const struct YesNoFuncTable *yesNoTable) void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId)) { - FillWindowPixelBuffer(2, 0x11); + FillWindowPixelBuffer(2, PIXEL_FILL(1)); DisplayMessageAndContinueTask(taskId, 2, 0xA, 0xD, 1, GetPlayerTextSpeedDelay(), str, callback); schedule_bg_copy_tilemap_to_vram(1); } static void sub_81C6E1C(void) { - sub_8197DF8(2, FALSE); + ClearDialogWindowAndFrameToTransparent(2, FALSE); + // This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it. ClearWindowTilemap(2); schedule_bg_copy_tilemap_to_vram(1); } diff --git a/src/battle_records.c b/src/battle_records.c index f9c40d8de..fdd915d07 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -21,8 +21,7 @@ #include "alloc.h" #include "gpu_regs.h" #include "constants/game_stat.h" - -extern void PrintOnTrainerHillRecordsWindow(void); // pokenav.s +#include "trainer_hill.h" // this file's functions static void Task_CloseTrainerHillRecordsOnButton(u8 taskId); @@ -320,8 +319,8 @@ void ShowLinkBattleRecords(void) s32 i, x; gRecordsWindowId = AddWindow(&sLinkBattleRecordsWindow); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); StringExpandPlaceholders(gStringVar4, gText_PlayersBattleResults); x = GetStringCenterAlignXOffset(1, gStringVar4, 208); @@ -342,7 +341,7 @@ void ShowLinkBattleRecords(void) void RemoveRecordsWindow(void) { - sub_819746C(gRecordsWindowId, FALSE); + ClearStdWindowAndFrame(gRecordsWindowId, FALSE); RemoveWindow(gRecordsWindowId); } @@ -383,7 +382,7 @@ static void Task_ExitTrainerHillRecords(u8 taskId) static void RemoveTrainerHillRecordsWindow(u8 windowId) { - FillWindowPixelBuffer(windowId, 0); + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); ClearWindowTilemap(windowId); CopyWindowToVram(windowId, 2); RemoveWindow(windowId); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index a53fa30f2..ac9fb3073 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -48,6 +48,7 @@ #include "battle_pyramid.h" #include "field_specials.h" #include "pokemon_summary_screen.h" +#include "pokenav.h" extern struct MusicPlayerInfo gMPlayInfo_BGM; @@ -55,9 +56,6 @@ extern const u8* const gBattleScriptsForMoveEffects[]; // functions extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s -extern void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s -extern void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s -extern u8 sub_813B21C(void); #define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED)) @@ -297,7 +295,7 @@ static void atkD7_setyawn(void); static void atkD8_setdamagetohealthdifference(void); static void atkD9_scaledamagebyhealthratio(void); static void atkDA_tryswapabilities(void); -static void atkDB_tryimprision(void); +static void atkDB_tryimprison(void); static void atkDC_trysetgrudge(void); static void atkDD_weightdamagecalculation(void); static void atkDE_asistattackselect(void); @@ -549,7 +547,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkD8_setdamagetohealthdifference, atkD9_scaledamagebyhealthratio, atkDA_tryswapabilities, - atkDB_tryimprision, + atkDB_tryimprison, atkDC_trysetgrudge, atkDD_weightdamagecalculation, atkDE_asistattackselect, @@ -9611,7 +9609,7 @@ static void atkDA_tryswapabilities(void) // skill swap } } -static void atkDB_tryimprision(void) +static void atkDB_tryimprison(void) { if ((gStatuses3[gBattlerAttacker] & STATUS3_IMPRISONED_OTHERS)) { @@ -9622,7 +9620,7 @@ static void atkDB_tryimprision(void) u8 battlerId, sideAttacker; sideAttacker = GetBattlerSide(gBattlerAttacker); - PressurePPLoseOnUsingImprision(gBattlerAttacker); + PressurePPLoseOnUsingImprison(gBattlerAttacker); for (battlerId = 0; battlerId < gBattlersCount; battlerId++) { if (sideAttacker != GetBattlerSide(battlerId)) diff --git a/src/battle_setup.c b/src/battle_setup.c index 7626420e9..347486a0b 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -44,6 +44,7 @@ #include "mirage_tower.h" #include "constants/map_types.h" #include "constants/battle_frontier.h" +#include "field_screen_effect.h" enum { @@ -62,10 +63,6 @@ struct TrainerBattleParameter u8 ptrType; }; -extern void ClearPoisonStepCounter(void); -extern void sub_808BCF4(void); -extern void sub_80AF6F0(void); - // this file's functions static void DoBattlePikeWildBattle(void); static void DoSafariBattle(void); @@ -641,7 +638,7 @@ u8 BattleSetup_GetTerrainId(void) return BATTLE_TERRAIN_BUILDING; case MAP_TYPE_UNDERWATER: return BATTLE_TERRAIN_UNDERWATER; - case MAP_TYPE_6: + case MAP_TYPE_OCEAN_ROUTE: if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior)) return BATTLE_TERRAIN_WATER; return BATTLE_TERRAIN_PLAIN; diff --git a/src/battle_tent.c b/src/battle_tent.c index b07020822..85194417f 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -269,7 +269,7 @@ static void sub_81B9E88(void) DoBattleFactorySwapScreen(); } -bool8 sub_81B9E94(void) +bool8 InSlateportBattleTent(void) { return gMapHeader.regionMapSectionId == MAPSEC_SLATEPORT_CITY && (gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_CORRIDOR || gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_BATTLE_ROOM); diff --git a/src/battle_tower.c b/src/battle_tower.c index fbb77789e..46aab4bac 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -51,7 +51,7 @@ static void AwardBattleTowerRibbons(void); static void SaveBattleTowerProgress(void); static void sub_8163914(void); static void nullsub_61(void); -static void nullsub_116(void); +static void SpriteCB_Null6(void); static void sub_81642A0(void); static void sub_8164828(void); static void sub_8164B74(void); @@ -1061,7 +1061,7 @@ static void (* const gUnknown_085DF96C[])(void) = SaveBattleTowerProgress, sub_8163914, nullsub_61, - nullsub_116, + SpriteCB_Null6, sub_81642A0, sub_8164828, sub_8164B74, @@ -2401,9 +2401,9 @@ static void sub_8163EE4(void) for (i = 0; i < 6; i++) { - playerRecord->greeting[i] = gSaveBlock1Ptr->unk2BBC[i]; - playerRecord->speechWon[i] = gSaveBlock1Ptr->unk2BC8[i]; - playerRecord->speechLost[i] = gSaveBlock1Ptr->unk2BD4[i]; + playerRecord->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i]; + playerRecord->speechWon[i] = gSaveBlock1Ptr->easyChatBattleWon[i]; + playerRecord->speechLost[i] = gSaveBlock1Ptr->easyChatBattleLost[i]; } for (i = 0; i < 4; i++) @@ -2437,7 +2437,7 @@ static void nullsub_61(void) } -static void nullsub_116(void) +static void SpriteCB_Null6(void) { } @@ -3059,7 +3059,7 @@ static void FillEReaderTrainerWithPlayerData(void) j = 7; for (i = 0; i < 6; i++) { - ereaderTrainer->greeting[i] = gSaveBlock1Ptr->unk2BBC[i]; + ereaderTrainer->greeting[i] = gSaveBlock1Ptr->easyChatBattleStart[i]; ereaderTrainer->farewellPlayerLost[i] = j; ereaderTrainer->farewellPlayerWon[i] = j + 6; j++; diff --git a/src/battle_util.c b/src/battle_util.c index 2f583a9c7..aa88cf952 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -106,10 +106,10 @@ void PressurePPLose(u8 target, u8 attacker, u16 move) } } -void PressurePPLoseOnUsingImprision(u8 attacker) +void PressurePPLoseOnUsingImprison(u8 attacker) { int i, j; - int imprisionPos = 4; + int imprisonPos = 4; u8 atkSide = GetBattlerSide(attacker); for (i = 0; i < gBattlersCount; i++) @@ -123,19 +123,19 @@ void PressurePPLoseOnUsingImprision(u8 attacker) } if (j != MAX_MON_MOVES) { - imprisionPos = j; + imprisonPos = j; if (gBattleMons[attacker].pp[j] != 0) gBattleMons[attacker].pp[j]--; } } } - if (imprisionPos != 4 + if (imprisonPos != 4 && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisionPos])) + && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisonPos])) { gActiveBattler = attacker; - BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisionPos]); + BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisonPos]); MarkBattlerForControllerExec(gActiveBattler); } } @@ -224,7 +224,7 @@ bool8 WasUnableToUseMove(u8 battler) { if (gProtectStructs[battler].prlzImmobility || gProtectStructs[battler].targetNotAffected - || gProtectStructs[battler].usedImprisionedMove + || gProtectStructs[battler].usedImprisonedMove || gProtectStructs[battler].loveImmobility || gProtectStructs[battler].usedDisabledMove || gProtectStructs[battler].usedTauntedMove @@ -365,12 +365,12 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisionedMoveInPalace; + gPalaceSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisonedMoveInPalace; gProtectStructs[gActiveBattler].palaceUnableToUseMove = 1; } else { - gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisionedMove; + gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisonedMove; limitations++; } } @@ -438,7 +438,7 @@ u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check) unusableMoves |= gBitTable[i]; if (gDisableStructs[battlerId].tauntTimer && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0) unusableMoves |= gBitTable[i]; - if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISION) + if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISON) unusableMoves |= gBitTable[i]; if (gDisableStructs[battlerId].encoreTimer && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; @@ -469,7 +469,7 @@ bool8 AreAllMovesUnusable(void) u8 GetImprisonedMovesCount(u8 battlerId, u16 move) { s32 i; - u8 imprisionedMoves = 0; + u8 imprisonedMoves = 0; u8 battlerSide = GetBattlerSide(battlerId); for (i = 0; i < gBattlersCount; i++) @@ -483,11 +483,11 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move) break; } if (j < MAX_MON_MOVES) - imprisionedMoves++; + imprisonedMoves++; } } - return imprisionedMoves; + return imprisonedMoves; } enum @@ -1466,7 +1466,7 @@ u8 AtkCanceller_UnableToUseMove(void) case CANCELLER_IMPRISONED: // imprisoned if (GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove)) { - gProtectStructs[gBattlerAttacker].usedImprisionedMove = 1; + gProtectStructs[gBattlerAttacker].usedImprisonedMove = 1; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; @@ -1526,7 +1526,7 @@ u8 AtkCanceller_UnableToUseMove(void) } else { - BattleScriptPush(BattleScript_MoveUsedIsParalyzedCantAttack); + BattleScriptPush(BattleScript_MoveUsedIsInLoveCantAttack); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; gProtectStructs[gBattlerAttacker].loveImmobility = 1; CancelMultiTurnMoves(gBattlerAttacker); diff --git a/src/berry.c b/src/berry.c index bd596db7f..cbac06a3d 100644 --- a/src/berry.c +++ b/src/berry.c @@ -11,11 +11,9 @@ #include "text.h" #include "constants/event_object_movement_constants.h" #include "constants/items.h" +#include "event_object_movement.h" + -extern u8 EventObjectGetBerryTreeId(u8 eventObjectId); -extern void sub_8092EF0(u8 mapId, u8 mapNumber, u8 mapGroup); -extern void CB2_ChooseBerry(void); -extern bool8 IsBerryTreeSparkling(u8, u8, u8); extern const u8 BerryTreeScript[]; diff --git a/src/berry_blender.c b/src/berry_blender.c index c85d0e827..450bcae42 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -34,6 +34,8 @@ #include "battle_records.h" #include "graphics.h" #include "new_game.h" +#include "save.h" +#include "link.h" #define BLENDER_SCORE_BEST 0 #define BLENDER_SCORE_GOOD 1 @@ -140,16 +142,6 @@ extern const u8 gText_Space[]; extern const u8 gText_BlenderMaxSpeedRecord[]; extern const u8 gText_234Players[]; -extern void sub_800A418(void); -extern u8 sub_800A9D8(void); -extern void sub_81AABF0(void (*callback)(void)); -extern void sub_800B4C0(void); -extern void ClearLinkCallback(void); -extern void sub_8009F8C(void); -extern void sub_8153430(void); -extern bool8 sub_8153474(void); -extern void sub_80EECEC(void); - // this file's functions static void BerryBlender_SetBackgroundsPos(void); static void sub_8080EA4(u8 taskId); @@ -945,7 +937,7 @@ static void InitBerryBlenderWindows(void) DeactivateAllTextPrinters(); for (i = 0; i < 5; i++) - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14); sub_81978B0(0xE0); @@ -1251,7 +1243,7 @@ static void sub_8080018(void) case 10: if (++sBerryBlenderData->framesToWait > 20) { - sub_8197DF8(4, TRUE); + ClearDialogWindowAndFrameToTransparent(4, TRUE); if (GetBlockReceivedStatus() == sub_800A9D8()) { for (i = 0; i < GetLinkPlayerCount(); i++) @@ -2600,7 +2592,7 @@ static bool8 LinkPlayAgainHandleSaving(void) } break; case 2: - sub_8153430(); + FullSaveGame(); sBerryBlenderData->field_1A0++; sBerryBlenderData->framesToWait = 0; break; @@ -2614,7 +2606,7 @@ static bool8 LinkPlayAgainHandleSaving(void) case 4: if (IsLinkTaskFinished()) { - if (sub_8153474()) + if (CheckSaveFile()) { sBerryBlenderData->field_1A0 = 5; } @@ -3325,7 +3317,7 @@ static bool8 Blender_PrintBlendingResults(void) sBerryBlenderData->mainState++; break; case 5: - sub_8198070(5, 1); + ClearStdWindowAndFrameToTransparent(5, 1); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { @@ -3466,7 +3458,7 @@ static bool8 Blender_PrintBlendingRanking(void) } break; case 3: - SetWindowBorderStyle(5, 0, 1, 0xD); + DrawStdFrameWithCustomTileAndPalette(5, 0, 1, 0xD); xPos = GetStringCenterAlignXOffset(1, sText_Ranking, 0xA8); Blender_AddTextPrinter(5, sText_Ranking, xPos, 1, TEXT_SPEED_FF, 0); @@ -3537,8 +3529,8 @@ void ShowBerryBlenderRecordWindow(void) winTemplate = sBlenderRecordWindowTemplate; gRecordsWindowId = AddWindow(&winTemplate); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, 0); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, 0); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 0x90); AddTextPrinterParameterized(gRecordsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL); @@ -3647,7 +3639,7 @@ static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s3 if (caseId != 3) { - FillWindowPixelBuffer(windowId, txtColor[0] | (txtColor[0] << 4)); + FillWindowPixelBuffer(windowId, PIXEL_FILL(txtColor[0])); } AddTextPrinterParameterized4(windowId, 1, x, y, letterSpacing, 1, txtColor, speed, string); @@ -3658,7 +3650,7 @@ static bool32 Blender_PrintText(s16 *textState, const u8 *string, s32 textSpeed) switch (*textState) { case 0: - sub_8197B1C(4, FALSE, 0x14, 0xF); + DrawDialogFrameWithCustomTileAndPalette(4, FALSE, 0x14, 0xF); Blender_AddTextPrinter(4, string, 0, 1, textSpeed, 0); PutWindowTilemap(4); CopyWindowToVram(4, 3); diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c index 3631c083a..37be569f8 100644 --- a/src/berry_fix_program.c +++ b/src/berry_fix_program.c @@ -226,9 +226,9 @@ static void berry_fix_gpu_set(void) DmaCopy32(3, sUnknown_08618138, BG_PLTT + 0x1E0, 0x20); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP); - FillWindowPixelBuffer(2, 0); - FillWindowPixelBuffer(3, 0); - FillWindowPixelBuffer(0, 0xAA); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + FillWindowPixelBuffer(3, PIXEL_FILL(0)); + FillWindowPixelBuffer(0, PIXEL_FILL(0xA)); width = GetStringWidth(0, sUnknown_08617E9B, 0); left = (0x78 - width) / 2; @@ -273,7 +273,7 @@ static int berry_fix_text_update(int checkval) static void berry_fix_text_print(int scene) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); - FillWindowPixelBuffer(1, 0xAA); + FillWindowPixelBuffer(1, PIXEL_FILL(0xA)); AddTextPrinterParameterized3(1, 1, 0, 0, sUnknown_08618158, -1, gUnknown_08618160[scene]); PutWindowTilemap(1); CopyWindowToVram(1, 2); diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 6e968fc0a..a7cf4daf2 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -381,7 +381,7 @@ static void PrintTextInBerryTagScreen(u8 windowId, const u8 *text, u8 x, u8 y, s static void AddBerryTagTextToBg0(void) { memcpy(GetBgTilemapBuffer(0), sBerryTag->tilemapBuffers[2], sizeof(sBerryTag->tilemapBuffers[2])); - FillWindowPixelBuffer(WIN_BERRY_TAG, 0xFF); + FillWindowPixelBuffer(WIN_BERRY_TAG, PIXEL_FILL(15)); PrintTextInBerryTagScreen(WIN_BERRY_TAG, gText_BerryTag, GetStringCenterAlignXOffset(1, gText_BerryTag, 0x40), 1, 0, 1); PutWindowTilemap(WIN_BERRY_TAG); schedule_bg_copy_tilemap_to_vram(0); @@ -598,7 +598,7 @@ static void Task_DisplayAnotherBerry(u8 taskId) switch (data[0]) { case 0x30: - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); break; case 0x40: PrintBerryNumberAndName(); @@ -608,7 +608,7 @@ static void Task_DisplayAnotherBerry(u8 taskId) CreateBerrySprite(); break; case 0x60: - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); break; case 0x70: PrintBerrySize(); @@ -620,7 +620,7 @@ static void Task_DisplayAnotherBerry(u8 taskId) SetFlavorCirclesVisiblity(); break; case 0xA0: - FillWindowPixelBuffer(2, 0); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); break; case 0xB0: PrintBerryDescription1(); @@ -635,7 +635,7 @@ static void Task_DisplayAnotherBerry(u8 taskId) switch (data[0]) { case 0x30: - FillWindowPixelBuffer(2, 0); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); break; case 0x40: PrintBerryDescription2(); @@ -647,7 +647,7 @@ static void Task_DisplayAnotherBerry(u8 taskId) SetFlavorCirclesVisiblity(); break; case 0x70: - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); break; case 0x80: PrintBerryFirmness(); @@ -660,7 +660,7 @@ static void Task_DisplayAnotherBerry(u8 taskId) CreateBerrySprite(); break; case 0xB0: - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); break; case 0xC0: PrintBerryNumberAndName(); @@ -1056,7 +1056,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt for (x16 = x; x16 < (x + width); x16++) { CopyTileMapEntry(&firstTileNum, &((u16*)sGpuBgConfigs2[bg].tilemap)[(u16)GetTileMapIndexFromCoords(x16, y16, attribute, mode, mode2)], paletteSlot, 0, 0); - firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF); + firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK); } } break; @@ -1067,7 +1067,7 @@ void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 widt for (x16 = x; x16 < (x + width); x16++) { ((u8*)sGpuBgConfigs2[bg].tilemap)[(y16 * mode3) + x16] = firstTileNum; - firstTileNum = (firstTileNum & 0xFC00) + ((firstTileNum + tileNumDelta) & 0x3FF); + firstTileNum = (firstTileNum & (METATILE_COLLISION_MASK | METATILE_ELEVATION_MASK)) + ((firstTileNum + tileNumDelta) & METATILE_ID_MASK); } } break; diff --git a/src/bike.c b/src/bike.c index 1e91baab0..530742bdf 100644 --- a/src/bike.c +++ b/src/bike.c @@ -14,12 +14,6 @@ extern bool8 gBikeCyclingChallenge; extern u8 gBikeCollisions; -extern u8 sub_808B980(u8 direction); -extern u8 sub_808B9BC(u8 direction); -extern u8 sub_808B9A4(u8 direction); -extern u8 sub_808C1B4(u8 direction); -extern u8 sub_808B9D4(u8 direction); - // this file's functions static void MovePlayerOnMachBike(u8, u16, u16); static u8 GetMachBikeTransition(u8 *); diff --git a/src/cable_car.c b/src/cable_car.c index 207a0c22d..420bdd30f 100755 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -358,7 +358,7 @@ static void CleanupCableCar(void) HideBg(3); sub_8150B6C(0); gSpriteCoordOffsetX = 0; - sub_80AB130(WEATHER_NONE); + SetCurrentAndNextWeatherNoDelay(WEATHER_NONE); for (i = 0; i < 20; i++) gWeatherPtr->sprites.s2.ashSprites[i] = NULL; @@ -394,7 +394,7 @@ static void sub_81503E4(u8 taskId) case 0: if (sCableCar->timer == sCableCar->unk4) { - ChangeWeather(sCableCar->weather); + SetNextWeather(sCableCar->weather); sCableCar->state = 1; } break; @@ -798,7 +798,7 @@ static void LoadCableCarSprites(void) gSprites[spriteId].data[1] = 99; sCableCar->weather = WEATHER_ASH; sCableCar->unk4 = 0x15e; - sub_80AB130(WEATHER_SUNNY); + SetCurrentAndNextWeatherNoDelay(WEATHER_SUNNY); break; case 1: CopyToBgTilemapBufferRect_ChangePalette(0, sCableCar->mtChimneyTilemap + 0x24, 24, 26, 12, 3, 17); @@ -822,7 +822,7 @@ static void LoadCableCarSprites(void) gSprites[spriteId].data[1] = 0x41; sCableCar->weather = WEATHER_SUNNY; sCableCar->unk4 = 0x109; - sub_80AB130(WEATHER_ASH); + SetCurrentAndNextWeatherNoDelay(WEATHER_ASH); break; } for (i = 0; i < 9; i++) diff --git a/src/cable_club.c b/src/cable_club.c index 303b0d016..b80e76e99 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -92,7 +92,9 @@ static void sub_80B23B0(u16 windowId, u32 value) static void sub_80B241C(u16 windowId) { - sub_819746C(windowId, FALSE); + // Following this call with a copy-to-vram with mode 3 is identical to + // calling ClearStdWindowAndFrame(windowId, TRUE). + ClearStdWindowAndFrame(windowId, FALSE); CopyWindowToVram(windowId, 3); } @@ -282,7 +284,7 @@ static void sub_80B2804(u8 taskId) if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN) { - if (sub_800AA48() != GetLinkPlayerCount_2()) + if (GetSavedPlayerCount() != GetLinkPlayerCount_2()) { ShowFieldAutoScrollMessage(gText_ConfirmLinkWhenPlayersReady); gTasks[taskId].func = sub_80B270C; @@ -295,7 +297,7 @@ static void sub_80B2804(u8 taskId) else if (gMain.heldKeys & A_BUTTON) { PlaySE(SE_SELECT); - sub_800A620(); + CheckShouldAdvanceLinkState(); gTasks[taskId].func = sub_80B28A8; } } @@ -310,7 +312,7 @@ static void sub_80B28A8(u8 taskId) || sub_80B2D6C(taskId) == TRUE) return; - if (GetLinkPlayerCount_2() != sub_800AA48()) + if (GetLinkPlayerCount_2() != GetSavedPlayerCount()) { gTasks[taskId].func = sub_80B2D2C; } @@ -352,7 +354,7 @@ static void sub_80B2918(u8 taskId) else { gFieldLinkPlayerCount = GetLinkPlayerCount_2(); - gUnknown_03005DB4 = GetMultiplayerId(); + gLocalLinkPlayerId = GetMultiplayerId(); sub_800AA04(gFieldLinkPlayerCount); card = (struct TrainerCard *)gBlockSendBuffer; TrainerCard_GenerateCardForPlayer(card); @@ -399,7 +401,7 @@ static void sub_80B2A08(u8 taskId) else { gFieldLinkPlayerCount = GetLinkPlayerCount_2(); - gUnknown_03005DB4 = GetMultiplayerId(); + gLocalLinkPlayerId = GetMultiplayerId(); sub_800AA04(gFieldLinkPlayerCount); card = (struct TrainerCard *)gBlockSendBuffer; TrainerCard_GenerateCardForPlayer(card); @@ -764,9 +766,9 @@ static void sub_80B3194(u8 taskId) static void sub_80B31E8(u8 taskId) { - if (sub_800AA48() == GetLinkPlayerCount_2()) + if (GetSavedPlayerCount() == GetLinkPlayerCount_2()) { - sub_800A620(); + CheckShouldAdvanceLinkState(); gTasks[taskId].func = sub_80B3220; } } @@ -972,7 +974,7 @@ void sub_80B360C(void) if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2) { - UpdatePlayerLinkBattleRecords(gUnknown_03005DB4 ^ 1); + UpdatePlayerLinkBattleRecords(gLocalLinkPlayerId ^ 1); if (gWirelessCommType) { switch (gBattleOutcome) @@ -993,13 +995,13 @@ void sub_80B360C(void) } else { - gMain.savedCallback = c2_8056854; + gMain.savedCallback = CB2_ReturnToFieldFromMultiplayer; } SetMainCallback2(sub_80A0514); } -void sub_80B36EC(void) +void CleanupLinkRoomState(void) { if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2 || gSpecialVar_0x8004 == 5 || gSpecialVar_0x8004 == 9) { @@ -1009,9 +1011,9 @@ void sub_80B36EC(void) SetWarpDestinationToDynamicWarp(0x7F); } -void sub_80B371C(void) +void ExitLinkRoom(void) { - sub_80872B0(); + QueueExitLinkRoomKey(); } static void sub_80B3728(u8 taskId) @@ -1028,7 +1030,7 @@ static void sub_80B3728(u8 taskId) if (IsFieldMessageBoxHidden()) { sub_8087288(); - sub_8009628(gSpecialVar_0x8005); + SetLocalLinkPlayerId(gSpecialVar_0x8005); task->data[0] = 2; } break; @@ -1130,7 +1132,8 @@ static void sub_80B3894(u8 taskId) } } -void sub_80B3924(void) +// Note: VAR_0x8005 is set to the ID of the trade seat. +void PlayerEnteredTradeSeat(void) { if (gWirelessCommType != 0) { @@ -1152,7 +1155,8 @@ void nullsub_37(void) } -void sub_80B3968(void) +// Note: VAR_0x8005 is set to the ID of the player spot. +void ColosseumPlayerSpotTriggered(void) { gLinkType = 0x2211; @@ -1166,6 +1170,7 @@ void sub_80B3968(void) } } +// This function is never called. static void sub_80B39A4(void) { u8 taskId = CreateTask(sub_80B3728, 80); @@ -1177,14 +1182,16 @@ void sp02A_crash_sound(void) ShowTrainerCardInLink(gSpecialVar_0x8006, CB2_ReturnToFieldContinueScriptPlayMapMusic); } -bool32 sub_80B39D4(u8 linkPlayerIndex) +// Returns FALSE if the player has no stars. Returns TRUE otherwise, and puts the name of the +// color into gStringVar2. +bool32 GetLinkTrainerCardColor(u8 linkPlayerIndex) { u32 trainerCardColorIndex; gSpecialVar_0x8006 = linkPlayerIndex; StringCopy(gStringVar1, gLinkPlayers[linkPlayerIndex].name); - trainerCardColorIndex = sub_80C4904(linkPlayerIndex); + trainerCardColorIndex = GetTrainerCardStars(linkPlayerIndex); if (trainerCardColorIndex == 0) return FALSE; @@ -1263,13 +1270,13 @@ void sub_80B3AF8(u8 taskId) } break; case 2: - if (GetLinkPlayerCount_2() >= sub_800AA48()) + if (GetLinkPlayerCount_2() >= GetSavedPlayerCount()) { if (IsLinkMaster()) { if (++data[1] > 30) { - sub_800A620(); + CheckShouldAdvanceLinkState(); data[0]++; } } diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index 5ec90e10c..c1d6930c7 100644 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -79,7 +79,7 @@ void CB2_InitClearSaveDataScreen(void) static void Task_DoClearSaveDataScreenYesNo(u8 taskId) { - SetWindowBorderStyle(0, 0, 2, 14); + DrawStdFrameWithCustomTileAndPalette(0, 0, 2, 14); AddTextPrinterParameterized(0, 1, gText_ClearAllSaveData, 0, 1, 0, 0); CreateYesNoMenu(sClearSaveYesNo, 2, 14, 1); gTasks[taskId].func = Task_ClearSaveDataScreenYesNoChoice; @@ -90,7 +90,7 @@ static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId) switch (Menu_ProcessInputNoWrapClearOnChoose()) { case 0: - FillWindowPixelBuffer(0, 17); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized(0, 1, gText_ClearingData, 0, 1, 0, 0); gTasks[taskId].func = Task_ClearSaveData; break; @@ -203,7 +203,7 @@ static void InitClearSaveDataScreenWindows(void) { InitWindows(sClearSaveTextWindow); DeactivateAllTextPrinters(); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); LoadWindowGfx(0, 0, 2, 224); LoadPalette(gUnknown_0860F074, 0xF0, 0x20); } diff --git a/src/coins.c b/src/coins.c index 967eb92ac..b838c303e 100644 --- a/src/coins.c +++ b/src/coins.c @@ -27,15 +27,15 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y) struct WindowTemplate template; SetWindowTemplateFields(&template, 0, x, y, 8, 2, 0xF, 0x141); sCoinsWindowId = AddWindow(&template); - FillWindowPixelBuffer(sCoinsWindowId, 0); + FillWindowPixelBuffer(sCoinsWindowId, PIXEL_FILL(0)); PutWindowTilemap(sCoinsWindowId); - SetWindowBorderStyle(sCoinsWindowId, FALSE, 0x214, 0xE); + DrawStdFrameWithCustomTileAndPalette(sCoinsWindowId, FALSE, 0x214, 0xE); PrintCoinsString(coinAmount); } void HideCoinsWindow(void) { - sub_819746C(sCoinsWindowId, TRUE); + ClearStdWindowAndFrame(sCoinsWindowId, TRUE); RemoveWindow(sCoinsWindowId); } diff --git a/src/contest.c b/src/contest.c index 7be4aa23b..114a1fb69 100644 --- a/src/contest.c +++ b/src/contest.c @@ -45,8 +45,6 @@ #include "constants/rgb.h" #include "contest_ai.h" -extern void sub_80FC9F8(u8); // contest_link_80FC4F4.c - // This file's functions. static void sub_80D782C(void); static void sub_80D7C7C(u8 taskId); @@ -819,7 +817,7 @@ static void sub_80D8490(u8 taskId) } r5 = StringCopy(r5, gMoveNames[move]); - FillWindowPixelBuffer(i + 5, 0); + FillWindowPixelBuffer(i + 5, PIXEL_FILL(0)); Contest_PrintTextToBg0WindowAt(i + 5, sp8, 5, 1, 7); } @@ -941,7 +939,7 @@ static void sub_80D895C(u8 taskId) for (i = 0; i < 4; i++) { - FillWindowPixelBuffer(5 + i, 0); + FillWindowPixelBuffer(5 + i, PIXEL_FILL(0)); PutWindowTilemap(5 + i); CopyWindowToVram(5 + i, 2); } @@ -2258,7 +2256,7 @@ static void sub_80DAEA4(void) for (i = 0; i < 4; i++) { - FillWindowPixelBuffer(gUnknown_02039F26[i], 0); + FillWindowPixelBuffer(gUnknown_02039F26[i], PIXEL_FILL(0)); sub_80DAF04(i); sub_80DAF88(i); } @@ -2478,7 +2476,7 @@ static void prints_contest_move_description(u16 a) ContestBG_FillBoxWithTile(0, 0x5036, 0x15, 0x20, 0x08, 0x01, 0x11); ContestBG_FillBoxWithTile(0, 0x5014, 0x15, 0x20, numHearts, 0x01, 0x11); - FillWindowPixelBuffer(10, 0); + FillWindowPixelBuffer(10, PIXEL_FILL(0)); Contest_PrintTextToBg0WindowStd(10, gContestEffectDescriptionPointers[gContestMoves[a].effect]); Contest_PrintTextToBg0WindowStd(9, gText_Slash); } @@ -2621,7 +2619,7 @@ static void sub_80DB884(void) static void sub_80DB89C(void) { - FillWindowPixelBuffer(4, 0); + FillWindowPixelBuffer(4, PIXEL_FILL(0)); CopyWindowToVram(4, 2); Contest_SetBgCopyFlags(0); } @@ -3456,7 +3454,7 @@ static void sub_80DCD48(void) break; default: for (i = 0; i < 4; i++) - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); for (i = 0; i < 4; i++) { value = sContestantStatus[i].unk4; @@ -5038,7 +5036,7 @@ static void sub_80DF750(void) return; for (i = 0; i < 4; i++) - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); if (gHeap[0x1A000] == 2) { diff --git a/src/contest_link_80F57C4.c b/src/contest_link_80F57C4.c index 485065d71..a4b88c074 100644 --- a/src/contest_link_80F57C4.c +++ b/src/contest_link_80F57C4.c @@ -39,6 +39,7 @@ #include "constants/rgb.h" #include "constants/songs.h" #include "constants/vars.h" +#include "contest.h" struct ContestLinkUnk0 { @@ -99,8 +100,6 @@ extern const struct SpriteSheet gUnknown_0858D810[]; extern const struct SpritePalette gUnknown_0858D850; extern const struct SpriteTemplate gSpriteTemplate_858D860; -extern void sub_81D9DE4(u8); - static void sub_80F6A9C(void); static void sub_80F71C8(void); u8 sub_80F7310(u8, u8); @@ -372,12 +371,12 @@ static void sub_80F5CE4(u8 taskId) sub_80DEDA8(0xFE); gUnknown_02039F5C = 1; gUnknown_02039F5D = sub_80DEFA8(0xFE, 0); - var = VarGet(VAR_0x4086); - VarSet(VAR_0x4086, 0); + var = VarGet(VAR_LINK_CONTEST_ROOM_STATE); + VarSet(VAR_LINK_CONTEST_ROOM_STATE, 0); SetContinueGameWarpStatusToDynamicWarp(); TrySavingData(SAVE_LINK); ClearContinueGameWarpStatus2(); - VarSet(VAR_0x4086, var); + VarSet(VAR_LINK_CONTEST_ROOM_STATE, var); gTasks[taskId].data[0]++; break; case 1: @@ -935,7 +934,7 @@ static void sub_80F6AE8(void) // windowTemplate.width = 30; // windowTemplate.height = 2; // windowId = AddWindow(&windowTemplate); -// FillWindowPixelBuffer(windowId, 0x11); +// FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); // origWidth = GetStringWidth(1, text, 0) + 9; // strWidth = origWidth; // if (strWidth < 0) diff --git a/src/contest_painting.c b/src/contest_painting.c index 2f0c97764..931deb01b 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -279,7 +279,7 @@ static void InitContestPaintingWindow(void) SetBgTilemapBuffer(1, AllocZeroed(BG_SCREEN_SIZE)); gContestPaintingWindowId = AddWindow(&gUnknown_085B07EC); DeactivateAllTextPrinters(); - FillWindowPixelBuffer(gContestPaintingWindowId, 0); + FillWindowPixelBuffer(gContestPaintingWindowId, PIXEL_FILL(0)); PutWindowTilemap(gContestPaintingWindowId); CopyWindowToVram(gContestPaintingWindowId, 3); ShowBg(1); diff --git a/src/credits.c b/src/credits.c index aee5332f5..4483e3160 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1592,7 +1592,7 @@ static void sub_8175DA0(u8 taskIdB) case 5: if (!gPaletteFade.active) { - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); CopyWindowToVram(0, 2); gTasks[taskIdB].data[TDB_0] = 2; } diff --git a/src/data/easy_chat/easy_chat_group_actions.h b/src/data/easy_chat/easy_chat_group_actions.h new file mode 100755 index 000000000..06a8e7303 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_actions.h @@ -0,0 +1,471 @@ +const u8 gEasyChatWord_Meets[] = _("MEETS"); +const u8 gEasyChatWord_Concede[] = _("CONCEDE"); +const u8 gEasyChatWord_Give[] = _("GIVE"); +const u8 gEasyChatWord_Gives[] = _("GIVES"); +const u8 gEasyChatWord_Played[] = _("PLAYED"); +const u8 gEasyChatWord_Plays[] = _("PLAYS"); +const u8 gEasyChatWord_Collect[] = _("COLLECT"); +const u8 gEasyChatWord_Walking[] = _("WALKING"); +const u8 gEasyChatWord_Walks[] = _("WALKS"); +const u8 gEasyChatWord_Says[] = _("SAYS"); +const u8 gEasyChatWord_Went[] = _("WENT"); +const u8 gEasyChatWord_Said[] = _("SAID"); +const u8 gEasyChatWord_WakeUp[] = _("WAKE UP"); +const u8 gEasyChatWord_WakesUp[] = _("WAKES UP"); +const u8 gEasyChatWord_Angers[] = _("ANGERS"); +const u8 gEasyChatWord_Teach[] = _("TEACH"); +const u8 gEasyChatWord_Teaches[] = _("TEACHES"); +const u8 gEasyChatWord_Please[] = _("PLEASE"); +const u8 gEasyChatWord_Learn[] = _("LEARN"); +const u8 gEasyChatWord_Change[] = _("CHANGE"); +const u8 gEasyChatWord_Story[] = _("STORY"); +const u8 gEasyChatWord_Trust[] = _("TRUST"); +const u8 gEasyChatWord_Lavish[] = _("LAVISH"); +const u8 gEasyChatWord_Listens[] = _("LISTENS"); +const u8 gEasyChatWord_Hearing[] = _("HEARING"); +const u8 gEasyChatWord_Trains[] = _("TRAINS"); +const u8 gEasyChatWord_Choose[] = _("CHOOSE"); +const u8 gEasyChatWord_Come[] = _("COME"); +const u8 gEasyChatWord_Came[] = _("CAME"); +const u8 gEasyChatWord_Search[] = _("SEARCH"); +const u8 gEasyChatWord_Make[] = _("MAKE"); +const u8 gEasyChatWord_Cause[] = _("CAUSE"); +const u8 gEasyChatWord_Know[] = _("KNOW"); +const u8 gEasyChatWord_Knows[] = _("KNOWS"); +const u8 gEasyChatWord_Refuse[] = _("REFUSE"); +const u8 gEasyChatWord_Stores[] = _("STORES"); +const u8 gEasyChatWord_Brag[] = _("BRAG"); +const u8 gEasyChatWord_Ignorant[] = _("IGNORANT"); +const u8 gEasyChatWord_Thinks[] = _("THINKS"); +const u8 gEasyChatWord_Believe[] = _("BELIEVE"); +const u8 gEasyChatWord_Slide[] = _("SLIDE"); +const u8 gEasyChatWord_Eats[] = _("EATS"); +const u8 gEasyChatWord_Use[] = _("USE"); +const u8 gEasyChatWord_Uses[] = _("USES"); +const u8 gEasyChatWord_Using[] = _("USING"); +const u8 gEasyChatWord_Couldnt[] = _("COULDN'T"); +const u8 gEasyChatWord_Capable[] = _("CAPABLE"); +const u8 gEasyChatWord_Disappear[] = _("DISAPPEAR"); +const u8 gEasyChatWord_Appear[] = _("APPEAR"); +const u8 gEasyChatWord_Throw[] = _("THROW"); +const u8 gEasyChatWord_Worry[] = _("WORRY"); +const u8 gEasyChatWord_Slept[] = _("SLEPT"); +const u8 gEasyChatWord_Sleep[] = _("SLEEP"); +const u8 gEasyChatWord_Release[] = _("RELEASE"); +const u8 gEasyChatWord_Drinks[] = _("DRINKS"); +const u8 gEasyChatWord_Runs[] = _("RUNS"); +const u8 gEasyChatWord_Run[] = _("RUN"); +const u8 gEasyChatWord_Works[] = _("WORKS"); +const u8 gEasyChatWord_Working[] = _("WORKING"); +const u8 gEasyChatWord_Talking[] = _("TALKING"); +const u8 gEasyChatWord_Talk[] = _("TALK"); +const u8 gEasyChatWord_Sink[] = _("SINK"); +const u8 gEasyChatWord_Smack[] = _("SMACK"); +const u8 gEasyChatWord_Pretend[] = _("PRETEND"); +const u8 gEasyChatWord_Praise[] = _("PRAISE"); +const u8 gEasyChatWord_Overdo[] = _("OVERDO"); +const u8 gEasyChatWord_Show[] = _("SHOW"); +const u8 gEasyChatWord_Looks[] = _("LOOKS"); +const u8 gEasyChatWord_Sees[] = _("SEES"); +const u8 gEasyChatWord_Seek[] = _("SEEK"); +const u8 gEasyChatWord_Own[] = _("OWN"); +const u8 gEasyChatWord_Take[] = _("TAKE"); +const u8 gEasyChatWord_Allow[] = _("ALLOW"); +const u8 gEasyChatWord_Forget[] = _("FORGET"); +const u8 gEasyChatWord_Forgets[] = _("FORGETS"); +const u8 gEasyChatWord_Appears[] = _("APPEARS"); +const u8 gEasyChatWord_Faint[] = _("FAINT"); +const u8 gEasyChatWord_Fainted[] = _("FAINTED"); + +const struct EasyChatWordInfo gEasyChatGroup_Actions[] = { + { + .text = gEasyChatWord_Meets, + .alphabeticalOrder = 72, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Concede, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Give, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Gives, + .alphabeticalOrder = 75, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Played, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Plays, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Collect, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Walking, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Walks, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Says, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Went, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Said, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WakeUp, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WakesUp, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Angers, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Teach, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Teaches, + .alphabeticalOrder = 54, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Please, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Learn, + .alphabeticalOrder = 76, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Change, + .alphabeticalOrder = 77, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Story, + .alphabeticalOrder = 73, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Trust, + .alphabeticalOrder = 74, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lavish, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Listens, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hearing, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Trains, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Choose, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Come, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Came, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Search, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Make, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cause, + .alphabeticalOrder = 67, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Know, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Knows, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Refuse, + .alphabeticalOrder = 65, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Stores, + .alphabeticalOrder = 70, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Brag, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ignorant, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Thinks, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Believe, + .alphabeticalOrder = 64, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Slide, + .alphabeticalOrder = 63, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Eats, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Use, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Uses, + .alphabeticalOrder = 56, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Using, + .alphabeticalOrder = 55, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Couldnt, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Capable, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Disappear, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Appear, + .alphabeticalOrder = 69, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Throw, + .alphabeticalOrder = 68, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Worry, + .alphabeticalOrder = 66, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Slept, + .alphabeticalOrder = 61, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sleep, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Release, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Drinks, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Runs, + .alphabeticalOrder = 62, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Run, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Works, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Working, + .alphabeticalOrder = 71, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Talking, + .alphabeticalOrder = 60, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Talk, + .alphabeticalOrder = 59, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sink, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Smack, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pretend, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Praise, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Overdo, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Show, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Looks, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sees, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Seek, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Own, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Take, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Allow, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Forget, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Forgets, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Appears, + .alphabeticalOrder = 58, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Faint, + .alphabeticalOrder = 57, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fainted, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_adjectives.h b/src/data/easy_chat/easy_chat_group_adjectives.h new file mode 100755 index 000000000..1c7474118 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_adjectives.h @@ -0,0 +1,219 @@ +const u8 gEasyChatWord_Wandering[] = _("WANDERING"); +const u8 gEasyChatWord_Rickety[] = _("RICKETY"); +const u8 gEasyChatWord_RockSolid[] = _("ROCK-SOLID"); +const u8 gEasyChatWord_Hungry[] = _("HUNGRY"); +const u8 gEasyChatWord_Tight[] = _("TIGHT"); +const u8 gEasyChatWord_Ticklish[] = _("TICKLISH"); +const u8 gEasyChatWord_Twirling[] = _("TWIRLING"); +const u8 gEasyChatWord_Spiraling[] = _("SPIRALING"); +const u8 gEasyChatWord_Thirsty[] = _("THIRSTY"); +const u8 gEasyChatWord_Lolling[] = _("LOLLING"); +const u8 gEasyChatWord_Silky[] = _("SILKY"); +const u8 gEasyChatWord_Sadly[] = _("SADLY"); +const u8 gEasyChatWord_Hopeless[] = _("HOPELESS"); +const u8 gEasyChatWord_Useless[] = _("USELESS"); +const u8 gEasyChatWord_Drooling[] = _("DROOLING"); +const u8 gEasyChatWord_Exciting[] = _("EXCITING"); +const u8 gEasyChatWord_Thick[] = _("THICK"); +const u8 gEasyChatWord_Smooth[] = _("SMOOTH"); +const u8 gEasyChatWord_Slimy[] = _("SLIMY"); +const u8 gEasyChatWord_Thin[] = _("THIN"); +const u8 gEasyChatWord_Break[] = _("BREAK"); +const u8 gEasyChatWord_Voracious[] = _("VORACIOUS"); +const u8 gEasyChatWord_Scatter[] = _("SCATTER"); +const u8 gEasyChatWord_Awesome[] = _("AWESOME"); +const u8 gEasyChatWord_Wimpy[] = _("WIMPY"); +const u8 gEasyChatWord_Wobbly[] = _("WOBBLY"); +const u8 gEasyChatWord_Shaky[] = _("SHAKY"); +const u8 gEasyChatWord_Ripped[] = _("RIPPED"); +const u8 gEasyChatWord_Shredded[] = _("SHREDDED"); +const u8 gEasyChatWord_Increasing[] = _("INCREASING"); +const u8 gEasyChatWord_Yet[] = _("YET"); +const u8 gEasyChatWord_Destroyed[] = _("DESTROYED"); +const u8 gEasyChatWord_Fiery[] = _("FIERY"); +const u8 gEasyChatWord_LoveyDovey[] = _("LOVEY-DOVEY"); +const u8 gEasyChatWord_Happily[] = _("HAPPILY"); +const u8 gEasyChatWord_Anticipation[] = _("ANTICIPATION"); + +const struct EasyChatWordInfo gEasyChatGroup_Adjectives[] = { + { + .text = gEasyChatWord_Wandering, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rickety, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_RockSolid, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hungry, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tight, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ticklish, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Twirling, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Spiraling, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Thirsty, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lolling, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Silky, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sadly, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hopeless, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Useless, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Drooling, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Exciting, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Thick, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Smooth, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Slimy, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Thin, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Break, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Voracious, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Scatter, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Awesome, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wimpy, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wobbly, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Shaky, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ripped, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Shredded, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Increasing, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Yet, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Destroyed, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fiery, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_LoveyDovey, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Happily, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Anticipation, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_battle.h b/src/data/easy_chat/easy_chat_group_battle.h new file mode 100755 index 000000000..0f97f50c9 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_battle.h @@ -0,0 +1,381 @@ +const u8 gEasyChatWord_MatchUp[] = _("MATCH UP"); +const u8 gEasyChatWord_Go[] = _("GO"); +const u8 gEasyChatWord_No1[] = _("NO. 1"); +const u8 gEasyChatWord_Decide[] = _("DECIDE"); +const u8 gEasyChatWord_LetMeWin[] = _("LET ME WIN"); +const u8 gEasyChatWord_Wins[] = _("WINS"); +const u8 gEasyChatWord_Win[] = _("WIN"); +const u8 gEasyChatWord_Won[] = _("WON"); +const u8 gEasyChatWord_IfIWin[] = _("IF I WIN"); +const u8 gEasyChatWord_WhenIWin[] = _("WHEN I WIN"); +const u8 gEasyChatWord_CantWin[] = _("CAN'T WIN"); +const u8 gEasyChatWord_CanWin[] = _("CAN WIN"); +const u8 gEasyChatWord_NoMatch[] = _("NO MATCH"); +const u8 gEasyChatWord_Spirit[] = _("SPIRIT"); +const u8 gEasyChatWord_Decided[] = _("DECIDED"); +const u8 gEasyChatWord_TrumpCard[] = _("TRUMP CARD"); +const u8 gEasyChatWord_TakeThat[] = _("TAKE THAT"); +const u8 gEasyChatWord_ComeOn[] = _("COME ON"); +const u8 gEasyChatWord_Attack[] = _("ATTACK"); +const u8 gEasyChatWord_Surrender[] = _("SURRENDER"); +const u8 gEasyChatWord_Gutsy[] = _("GUTSY"); +const u8 gEasyChatWord_Talent[] = _("TALENT"); +const u8 gEasyChatWord_Strategy[] = _("STRATEGY"); +const u8 gEasyChatWord_Smite[] = _("SMITE"); +const u8 gEasyChatWord_Match[] = _("MATCH"); +const u8 gEasyChatWord_Victory[] = _("VICTORY"); +const u8 gEasyChatWord_Offensive[] = _("OFFENSIVE"); +const u8 gEasyChatWord_Sense[] = _("SENSE"); +const u8 gEasyChatWord_Versus[] = _("VERSUS"); +const u8 gEasyChatWord_Fights[] = _("FIGHTS"); +const u8 gEasyChatWord_Power[] = _("POWER"); +const u8 gEasyChatWord_Challenge[] = _("CHALLENGE"); +const u8 gEasyChatWord_Strong[] = _("STRONG"); +const u8 gEasyChatWord_TooStrong[] = _("TOO STRONG"); +const u8 gEasyChatWord_GoEasy[] = _("GO EASY"); +const u8 gEasyChatWord_Foe[] = _("FOE"); +const u8 gEasyChatWord_Genius[] = _("GENIUS"); +const u8 gEasyChatWord_Legend[] = _("LEGEND"); +const u8 gEasyChatWord_Escape[] = _("ESCAPE"); +const u8 gEasyChatWord_Aim[] = _("AIM"); +const u8 gEasyChatWord_Battle[] = _("BATTLE"); +const u8 gEasyChatWord_Fight[] = _("FIGHT"); +const u8 gEasyChatWord_Resuscitate[] = _("RESUSCITATE"); +const u8 gEasyChatWord_Points[] = _("POINTS"); +const u8 gEasyChatWord_Serious[] = _("SERIOUS"); +const u8 gEasyChatWord_GiveUp[] = _("GIVE UP"); +const u8 gEasyChatWord_Loss[] = _("LOSS"); +const u8 gEasyChatWord_IfILose[] = _("IF I LOSE"); +const u8 gEasyChatWord_Lost[] = _("LOST"); +const u8 gEasyChatWord_Lose[] = _("LOSE"); +const u8 gEasyChatWord_Guard[] = _("GUARD"); +const u8 gEasyChatWord_Partner[] = _("PARTNER"); +const u8 gEasyChatWord_Reject[] = _("REJECT"); +const u8 gEasyChatWord_Accept[] = _("ACCEPT"); +const u8 gEasyChatWord_Invincible[] = _("INVINCIBLE"); +const u8 gEasyChatWord_Received[] = _("RECEIVED"); +const u8 gEasyChatWord_Easy[] = _("EASY"); +const u8 gEasyChatWord_Weak[] = _("WEAK"); +const u8 gEasyChatWord_TooWeak[] = _("TOO WEAK"); +const u8 gEasyChatWord_Pushover[] = _("PUSHOVER"); +const u8 gEasyChatWord_Leader[] = _("LEADER"); +const u8 gEasyChatWord_Rule[] = _("RULE"); +const u8 gEasyChatWord_Move[] = _("MOVE"); + +const struct EasyChatWordInfo gEasyChatGroup_Battle[] = { + { + .text = gEasyChatWord_MatchUp, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Go, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_No1, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Decide, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_LetMeWin, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wins, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Win, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Won, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_IfIWin, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WhenIWin, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_CantWin, + .alphabeticalOrder = 56, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_CanWin, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_NoMatch, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Spirit, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Decided, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_TrumpCard, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_TakeThat, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ComeOn, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Attack, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Surrender, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Gutsy, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Talent, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Strategy, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Smite, + .alphabeticalOrder = 54, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Match, + .alphabeticalOrder = 60, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Victory, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Offensive, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sense, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Versus, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fights, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Power, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Challenge, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Strong, + .alphabeticalOrder = 62, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_TooStrong, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_GoEasy, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Foe, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Genius, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Legend, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Escape, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Aim, + .alphabeticalOrder = 59, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Battle, + .alphabeticalOrder = 55, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fight, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Resuscitate, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Points, + .alphabeticalOrder = 61, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Serious, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_GiveUp, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Loss, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_IfILose, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lost, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lose, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Guard, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Partner, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Reject, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Accept, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Invincible, + .alphabeticalOrder = 58, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Received, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Easy, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Weak, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_TooWeak, + .alphabeticalOrder = 57, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pushover, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Leader, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rule, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Move, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_conditions.h b/src/data/easy_chat/easy_chat_group_conditions.h new file mode 100755 index 000000000..a8d8ee874 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_conditions.h @@ -0,0 +1,417 @@ +const u8 gEasyChatWord_Hot[] = _("HOT"); +const u8 gEasyChatWord_Exists[] = _("EXISTS"); +const u8 gEasyChatWord_Excess[] = _("EXCESS"); +const u8 gEasyChatWord_Approved[] = _("APPROVED"); +const u8 gEasyChatWord_Has[] = _("HAS"); +const u8 gEasyChatWord_Good[] = _("GOOD"); +const u8 gEasyChatWord_Less[] = _("LESS"); +const u8 gEasyChatWord_Momentum[] = _("MOMENTUM"); +const u8 gEasyChatWord_Going[] = _("GOING"); +const u8 gEasyChatWord_Weird[] = _("WEIRD"); +const u8 gEasyChatWord_Busy[] = _("BUSY"); +const u8 gEasyChatWord_Together[] = _("TOGETHER"); +const u8 gEasyChatWord_Full[] = _("FULL"); +const u8 gEasyChatWord_Absent[] = _("ABSENT"); +const u8 gEasyChatWord_Being[] = _("BEING"); +const u8 gEasyChatWord_Need[] = _("NEED"); +const u8 gEasyChatWord_Tasty[] = _("TASTY"); +const u8 gEasyChatWord_Skilled[] = _("SKILLED"); +const u8 gEasyChatWord_Noisy[] = _("NOISY"); +const u8 gEasyChatWord_Big[] = _("BIG"); +const u8 gEasyChatWord_Late[] = _("LATE"); +const u8 gEasyChatWord_Close[] = _("CLOSE"); +const u8 gEasyChatWord_Docile[] = _("DOCILE"); +const u8 gEasyChatWord_Amusing[] = _("AMUSING"); +const u8 gEasyChatWord_Entertaining[] = _("ENTERTAINING"); +const u8 gEasyChatWord_Perfection[] = _("PERFECTION"); +const u8 gEasyChatWord_Pretty[] = _("PRETTY"); +const u8 gEasyChatWord_Healthy[] = _("HEALTHY"); +const u8 gEasyChatWord_Excellent[] = _("EXCELLENT"); +const u8 gEasyChatWord_UpsideDown[] = _("UPSIDE DOWN"); +const u8 gEasyChatWord_Cold[] = _("COLD"); +const u8 gEasyChatWord_Refreshing[] = _("REFRESHING"); +const u8 gEasyChatWord_Unavoidable[] = _("UNAVOIDABLE"); +const u8 gEasyChatWord_Much[] = _("MUCH"); +const u8 gEasyChatWord_Overwhelming[] = _("OVERWHELMING"); +const u8 gEasyChatWord_Fabulous[] = _("FABULOUS"); +const u8 gEasyChatWord_Else[] = _("ELSE"); +const u8 gEasyChatWord_Expensive[] = _("EXPENSIVE"); +const u8 gEasyChatWord_Correct[] = _("CORRECT"); +const u8 gEasyChatWord_Impossible[] = _("IMPOSSIBLE"); +const u8 gEasyChatWord_Small[] = _("SMALL"); +const u8 gEasyChatWord_Different[] = _("DIFFERENT"); +const u8 gEasyChatWord_Tired[] = _("TIRED"); +const u8 gEasyChatWord_Skill[] = _("SKILL"); +const u8 gEasyChatWord_Top[] = _("TOP"); +const u8 gEasyChatWord_NonStop[] = _("NON-STOP"); +const u8 gEasyChatWord_Preposterous[] = _("PREPOSTEROUS"); +const u8 gEasyChatWord_None[] = _("NONE"); +const u8 gEasyChatWord_Nothing[] = _("NOTHING"); +const u8 gEasyChatWord_Natural[] = _("NATURAL"); +const u8 gEasyChatWord_Becomes[] = _("BECOMES"); +const u8 gEasyChatWord_Lukewarm[] = _("LUKEWARM"); +const u8 gEasyChatWord_Fast[] = _("FAST"); +const u8 gEasyChatWord_Low[] = _("LOW"); +const u8 gEasyChatWord_Awful[] = _("AWFUL"); +const u8 gEasyChatWord_Alone[] = _("ALONE"); +const u8 gEasyChatWord_Bored[] = _("BORED"); +const u8 gEasyChatWord_Secret[] = _("SECRET"); +const u8 gEasyChatWord_Mystery[] = _("MYSTERY"); +const u8 gEasyChatWord_Lacks[] = _("LACKS"); +const u8 gEasyChatWord_Best[] = _("BEST"); +const u8 gEasyChatWord_Lousy[] = _("LOUSY"); +const u8 gEasyChatWord_Mistake[] = _("MISTAKE"); +const u8 gEasyChatWord_Kind[] = _("KIND"); +const u8 gEasyChatWord_Well[] = _("WELL"); +const u8 gEasyChatWord_Weakened[] = _("WEAKENED"); +const u8 gEasyChatWord_Simple[] = _("SIMPLE"); +const u8 gEasyChatWord_Seems[] = _("SEEMS"); +const u8 gEasyChatWord_Badly[] = _("BADLY"); + +const struct EasyChatWordInfo gEasyChatGroup_Conditions[] = { + { + .text = gEasyChatWord_Hot, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Exists, + .alphabeticalOrder = 55, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Excess, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Approved, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Has, + .alphabeticalOrder = 54, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Good, + .alphabeticalOrder = 68, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Less, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Momentum, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Going, + .alphabeticalOrder = 60, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Weird, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Busy, + .alphabeticalOrder = 56, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Together, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Full, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Absent, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Being, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Need, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tasty, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Skilled, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Noisy, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Big, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Late, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Close, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Docile, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Amusing, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Entertaining, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Perfection, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pretty, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Healthy, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Excellent, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_UpsideDown, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cold, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Refreshing, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Unavoidable, + .alphabeticalOrder = 63, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Much, + .alphabeticalOrder = 59, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Overwhelming, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fabulous, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Else, + .alphabeticalOrder = 61, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Expensive, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Correct, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Impossible, + .alphabeticalOrder = 62, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Small, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Different, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tired, + .alphabeticalOrder = 58, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Skill, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Top, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_NonStop, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Preposterous, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_None, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Nothing, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Natural, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Becomes, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lukewarm, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fast, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Low, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Awful, + .alphabeticalOrder = 57, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Alone, + .alphabeticalOrder = 67, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Bored, + .alphabeticalOrder = 66, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Secret, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mystery, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lacks, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Best, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lousy, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mistake, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Kind, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Well, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Weakened, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Simple, + .alphabeticalOrder = 65, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Seems, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Badly, + .alphabeticalOrder = 64, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_endings.h b/src/data/easy_chat/easy_chat_group_endings.h new file mode 100755 index 000000000..afaea48cb --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_endings.h @@ -0,0 +1,417 @@ +const u8 gEasyChatWord_Will[] = _("WILL"); +const u8 gEasyChatWord_WillBeHere[] = _("WILL BE HERE"); +const u8 gEasyChatWord_Or[] = _("OR"); +const u8 gEasyChatWord_Times[] = _("TIMES"); +const u8 gEasyChatWord_Wonder[] = _("WONDER"); +const u8 gEasyChatWord_IsItQues[] = _("IS IT?"); +const u8 gEasyChatWord_Be[] = _("BE"); +const u8 gEasyChatWord_Gimme[] = _("GIMME"); +const u8 gEasyChatWord_Could[] = _("COULD"); +const u8 gEasyChatWord_LikelyTo[] = _("LIKELY TO"); +const u8 gEasyChatWord_Would[] = _("WOULD"); +const u8 gEasyChatWord_Is[] = _("IS"); +const u8 gEasyChatWord_IsntItQues[] = _("ISN'T IT?"); +const u8 gEasyChatWord_Lets[] = _("LET'S"); +const u8 gEasyChatWord_Other[] = _("OTHER"); +const u8 gEasyChatWord_Are[] = _("ARE"); +const u8 gEasyChatWord_Was[] = _("WAS"); +const u8 gEasyChatWord_Were[] = _("WERE"); +const u8 gEasyChatWord_Those[] = _("THOSE"); +const u8 gEasyChatWord_Isnt[] = _("ISN'T"); +const u8 gEasyChatWord_Wont[] = _("WON'T"); +const u8 gEasyChatWord_Cant[] = _("CAN'T"); +const u8 gEasyChatWord_Can[] = _("CAN"); +const u8 gEasyChatWord_Dont[] = _("DON'T"); +const u8 gEasyChatWord_Do[] = _("DO"); +const u8 gEasyChatWord_Does[] = _("DOES"); +const u8 gEasyChatWord_Whom[] = _("WHOM"); +const u8 gEasyChatWord_Which[] = _("WHICH"); +const u8 gEasyChatWord_Wasnt[] = _("WASN'T"); +const u8 gEasyChatWord_Werent[] = _("WEREN'T"); +const u8 gEasyChatWord_Have[] = _("HAVE"); +const u8 gEasyChatWord_Havent[] = _("HAVEN'T"); +const u8 gEasyChatWord_A[] = _("A"); +const u8 gEasyChatWord_An[] = _("AN"); +const u8 gEasyChatWord_Not[] = _("NOT"); +const u8 gEasyChatWord_There[] = _("THERE"); +const u8 gEasyChatWord_OkQues[] = _("OK?"); +const u8 gEasyChatWord_So[] = _("SO"); +const u8 gEasyChatWord_Maybe[] = _("MAYBE"); +const u8 gEasyChatWord_About[] = _("ABOUT"); +const u8 gEasyChatWord_Over[] = _("OVER"); +const u8 gEasyChatWord_It[] = _("IT"); +const u8 gEasyChatWord_All[] = _("ALL"); +const u8 gEasyChatWord_For[] = _("FOR"); +const u8 gEasyChatWord_On[] = _("ON"); +const u8 gEasyChatWord_Off[] = _("OFF"); +const u8 gEasyChatWord_As[] = _("AS"); +const u8 gEasyChatWord_To[] = _("TO"); +const u8 gEasyChatWord_With[] = _("WITH"); +const u8 gEasyChatWord_Better[] = _("BETTER"); +const u8 gEasyChatWord_Ever[] = _("EVER"); +const u8 gEasyChatWord_Since[] = _("SINCE"); +const u8 gEasyChatWord_Of[] = _("OF"); +const u8 gEasyChatWord_BelongsTo[] = _("BELONGS TO"); +const u8 gEasyChatWord_At[] = _("AT"); +const u8 gEasyChatWord_In[] = _("IN"); +const u8 gEasyChatWord_Out[] = _("OUT"); +const u8 gEasyChatWord_Too[] = _("TOO"); +const u8 gEasyChatWord_Like[] = _("LIKE"); +const u8 gEasyChatWord_Did[] = _("DID"); +const u8 gEasyChatWord_Didnt[] = _("DIDN'T"); +const u8 gEasyChatWord_Doesnt[] = _("DOESN'T"); +const u8 gEasyChatWord_Without[] = _("WITHOUT"); +const u8 gEasyChatWord_After[] = _("AFTER"); +const u8 gEasyChatWord_Before[] = _("BEFORE"); +const u8 gEasyChatWord_While[] = _("WHILE"); +const u8 gEasyChatWord_Than[] = _("THAN"); +const u8 gEasyChatWord_Once[] = _("ONCE"); +const u8 gEasyChatWord_Anywhere[] = _("ANYWHERE"); + +const struct EasyChatWordInfo gEasyChatGroup_Endings[] = { + { + .text = gEasyChatWord_Will, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WillBeHere, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Or, + .alphabeticalOrder = 63, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Times, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wonder, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_IsItQues, + .alphabeticalOrder = 68, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Be, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Gimme, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Could, + .alphabeticalOrder = 54, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_LikelyTo, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Would, + .alphabeticalOrder = 64, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Is, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_IsntItQues, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lets, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Other, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Are, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Was, + .alphabeticalOrder = 59, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Were, + .alphabeticalOrder = 60, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Those, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Isnt, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wont, + .alphabeticalOrder = 61, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cant, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Can, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Dont, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Do, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Does, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Whom, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Which, + .alphabeticalOrder = 55, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wasnt, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Werent, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Have, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Havent, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_A, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_An, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Not, + .alphabeticalOrder = 58, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_There, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_OkQues, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_So, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Maybe, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_About, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Over, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_It, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_All, + .alphabeticalOrder = 67, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_For, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_On, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Off, + .alphabeticalOrder = 56, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_As, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_To, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_With, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Better, + .alphabeticalOrder = 66, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ever, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Since, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Of, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_BelongsTo, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_At, + .alphabeticalOrder = 57, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_In, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Out, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Too, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Like, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Did, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Didnt, + .alphabeticalOrder = 65, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Doesnt, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Without, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_After, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Before, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_While, + .alphabeticalOrder = 62, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Than, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Once, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Anywhere, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_events.h b/src/data/easy_chat/easy_chat_group_events.h new file mode 100755 index 000000000..8d9cf7e24 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_events.h @@ -0,0 +1,177 @@ +const u8 gEasyChatWord_Appeal[] = _("APPEAL"); +const u8 gEasyChatWord_Events[] = _("EVENTS"); +const u8 gEasyChatWord_StayAtHome[] = _("STAY-AT-HOME"); +const u8 gEasyChatWord_Berry[] = _("BERRY"); +const u8 gEasyChatWord_Contest[] = _("CONTEST"); +const u8 gEasyChatWord_Mc[] = _("MC"); +const u8 gEasyChatWord_Judge[] = _("JUDGE"); +const u8 gEasyChatWord_Super[] = _("SUPER"); +const u8 gEasyChatWord_Stage[] = _("STAGE"); +const u8 gEasyChatWord_HallOfFame[] = _("HALL OF FAME"); +const u8 gEasyChatWord_Evolution[] = _("EVOLUTION"); +const u8 gEasyChatWord_Hyper[] = _("HYPER"); +const u8 gEasyChatWord_BattleTower[] = _("BATTLE TOWER"); +const u8 gEasyChatWord_Leaders[] = _("LEADERS"); +const u8 gEasyChatWord_BattleRoom[] = _("BATTLE ROOM"); +const u8 gEasyChatWord_Hidden[] = _("HIDDEN"); +const u8 gEasyChatWord_SecretBase[] = _("SECRET BASE"); +const u8 gEasyChatWord_Blend[] = _("BLEND"); +const u8 gEasyChatWord_POKEBLOCK[] = _("{POKEBLOCK}"); +const u8 gEasyChatWord_Master[] = _("MASTER"); +const u8 gEasyChatWord_Rank[] = _("RANK"); +const u8 gEasyChatWord_Ribbon[] = _("RIBBON"); +const u8 gEasyChatWord_Crush[] = _("CRUSH"); +const u8 gEasyChatWord_Direct[] = _("DIRECT"); +const u8 gEasyChatWord_Tower[] = _("TOWER"); +const u8 gEasyChatWord_Union[] = _("UNION"); +const u8 gEasyChatWord_Room[] = _("ROOM"); +const u8 gEasyChatWord_Wireless[] = _("WIRELESS"); +const u8 gEasyChatWord_Frontier[] = _("FRONTIER"); + +const struct EasyChatWordInfo gEasyChatGroup_Events[] = { + { + .text = gEasyChatWord_Appeal, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Events, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_StayAtHome, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Berry, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Contest, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mc, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Judge, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Super, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Stage, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HallOfFame, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Evolution, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hyper, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_BattleTower, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Leaders, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_BattleRoom, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hidden, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SecretBase, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Blend, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_POKEBLOCK, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Master, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rank, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ribbon, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Crush, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Direct, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tower, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Union, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Room, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wireless, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Frontier, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_feelings.h b/src/data/easy_chat/easy_chat_group_feelings.h new file mode 100755 index 000000000..2dda71808 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_feelings.h @@ -0,0 +1,417 @@ +const u8 gEasyChatWord_Meet[] = _("MEET"); +const u8 gEasyChatWord_Play[] = _("PLAY"); +const u8 gEasyChatWord_Hurried[] = _("HURRIED"); +const u8 gEasyChatWord_Goes[] = _("GOES"); +const u8 gEasyChatWord_Giddy[] = _("GIDDY"); +const u8 gEasyChatWord_Happy[] = _("HAPPY"); +const u8 gEasyChatWord_Happiness[] = _("HAPPINESS"); +const u8 gEasyChatWord_Excite[] = _("EXCITE"); +const u8 gEasyChatWord_Important[] = _("IMPORTANT"); +const u8 gEasyChatWord_Funny[] = _("FUNNY"); +const u8 gEasyChatWord_Got[] = _("GOT"); +const u8 gEasyChatWord_GoHome[] = _("GO HOME"); +const u8 gEasyChatWord_Disappointed[] = _("DISAPPOINTED"); +const u8 gEasyChatWord_Disappoints[] = _("DISAPPOINTS"); +const u8 gEasyChatWord_Sad[] = _("SAD"); +const u8 gEasyChatWord_Try[] = _("TRY"); +const u8 gEasyChatWord_Tries[] = _("TRIES"); +const u8 gEasyChatWord_Hears[] = _("HEARS"); +const u8 gEasyChatWord_Think[] = _("THINK"); +const u8 gEasyChatWord_Hear[] = _("HEAR"); +const u8 gEasyChatWord_Wants[] = _("WANTS"); +const u8 gEasyChatWord_Misheard[] = _("MISHEARD"); +const u8 gEasyChatWord_Dislike[] = _("DISLIKE"); +const u8 gEasyChatWord_Angry[] = _("ANGRY"); +const u8 gEasyChatWord_Anger[] = _("ANGER"); +const u8 gEasyChatWord_Scary[] = _("SCARY"); +const u8 gEasyChatWord_Lonesome[] = _("LONESOME"); +const u8 gEasyChatWord_Disappoint[] = _("DISAPPOINT"); +const u8 gEasyChatWord_Joy[] = _("JOY"); +const u8 gEasyChatWord_Gets[] = _("GETS"); +const u8 gEasyChatWord_Never[] = _("NEVER"); +const u8 gEasyChatWord_Darn[] = _("DARN"); +const u8 gEasyChatWord_Downcast[] = _("DOWNCAST"); +const u8 gEasyChatWord_Incredible[] = _("INCREDIBLE"); +const u8 gEasyChatWord_Likes[] = _("LIKES"); +const u8 gEasyChatWord_Dislikes[] = _("DISLIKES"); +const u8 gEasyChatWord_Boring[] = _("BORING"); +const u8 gEasyChatWord_Care[] = _("CARE"); +const u8 gEasyChatWord_Cares[] = _("CARES"); +const u8 gEasyChatWord_AllRight[] = _("ALL RIGHT"); +const u8 gEasyChatWord_Adore[] = _("ADORE"); +const u8 gEasyChatWord_Disaster[] = _("DISASTER"); +const u8 gEasyChatWord_Enjoy[] = _("ENJOY"); +const u8 gEasyChatWord_Enjoys[] = _("ENJOYS"); +const u8 gEasyChatWord_Eat[] = _("EAT"); +const u8 gEasyChatWord_Lacking[] = _("LACKING"); +const u8 gEasyChatWord_Bad[] = _("BAD"); +const u8 gEasyChatWord_Hard[] = _("HARD"); +const u8 gEasyChatWord_Terrible[] = _("TERRIBLE"); +const u8 gEasyChatWord_Should[] = _("SHOULD"); +const u8 gEasyChatWord_Nice[] = _("NICE"); +const u8 gEasyChatWord_Drink[] = _("DRINK"); +const u8 gEasyChatWord_Surprise[] = _("SURPRISE"); +const u8 gEasyChatWord_Fear[] = _("FEAR"); +const u8 gEasyChatWord_Want[] = _("WANT"); +const u8 gEasyChatWord_Wait[] = _("WAIT"); +const u8 gEasyChatWord_Satisfied[] = _("SATISFIED"); +const u8 gEasyChatWord_See[] = _("SEE"); +const u8 gEasyChatWord_Rare[] = _("RARE"); +const u8 gEasyChatWord_Negative[] = _("NEGATIVE"); +const u8 gEasyChatWord_Done[] = _("DONE"); +const u8 gEasyChatWord_Danger[] = _("DANGER"); +const u8 gEasyChatWord_Defeated[] = _("DEFEATED"); +const u8 gEasyChatWord_Beat[] = _("BEAT"); +const u8 gEasyChatWord_Great[] = _("GREAT"); +const u8 gEasyChatWord_Romantic[] = _("ROMANTIC"); +const u8 gEasyChatWord_Question[] = _("QUESTION"); +const u8 gEasyChatWord_Understand[] = _("UNDERSTAND"); +const u8 gEasyChatWord_Understands[] = _("UNDERSTANDS"); + +const struct EasyChatWordInfo gEasyChatGroup_Feelings[] = { + { + .text = gEasyChatWord_Meet, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Play, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hurried, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Goes, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Giddy, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Happy, + .alphabeticalOrder = 63, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Happiness, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Excite, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Important, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Funny, + .alphabeticalOrder = 61, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Got, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_GoHome, + .alphabeticalOrder = 62, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Disappointed, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Disappoints, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sad, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Try, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tries, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hears, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Think, + .alphabeticalOrder = 60, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hear, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wants, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Misheard, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Dislike, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Angry, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Anger, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Scary, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lonesome, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Disappoint, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Joy, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Gets, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Never, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Darn, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Downcast, + .alphabeticalOrder = 64, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Incredible, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Likes, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Dislikes, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Boring, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Care, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cares, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_AllRight, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Adore, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Disaster, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Enjoy, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Enjoys, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Eat, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lacking, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Bad, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hard, + .alphabeticalOrder = 59, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Terrible, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Should, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Nice, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Drink, + .alphabeticalOrder = 66, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Surprise, + .alphabeticalOrder = 58, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fear, + .alphabeticalOrder = 65, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Want, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wait, + .alphabeticalOrder = 56, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Satisfied, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_See, + .alphabeticalOrder = 57, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rare, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Negative, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Done, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Danger, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Defeated, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Beat, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Great, + .alphabeticalOrder = 67, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Romantic, + .alphabeticalOrder = 68, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Question, + .alphabeticalOrder = 55, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Understand, + .alphabeticalOrder = 54, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Understands, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_greetings.h b/src/data/easy_chat/easy_chat_group_greetings.h new file mode 100755 index 000000000..4df08bf7d --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_greetings.h @@ -0,0 +1,255 @@ +const u8 gEasyChatWord_Thanks[] = _("THANKS"); +const u8 gEasyChatWord_Yes[] = _("YES"); +const u8 gEasyChatWord_HereGoes[] = _("HERE GOES"); +const u8 gEasyChatWord_HereICome[] = _("HERE I COME"); +const u8 gEasyChatWord_HereItIs[] = _("HERE IT IS"); +const u8 gEasyChatWord_Yeah[] = _("YEAH"); +const u8 gEasyChatWord_Welcome[] = _("WELCOME"); +const u8 gEasyChatWord_Oi[] = _("OI"); +const u8 gEasyChatWord_HowDo[] = _("HOW DO"); +const u8 gEasyChatWord_Congrats[] = _("CONGRATS"); +const u8 gEasyChatWord_GiveMe[] = _("GIVE ME"); +const u8 gEasyChatWord_Sorry[] = _("SORRY"); +const u8 gEasyChatWord_Apologize[] = _("APOLOGIZE"); +const u8 gEasyChatWord_Forgive[] = _("FORGIVE"); +const u8 gEasyChatWord_HeyThere[] = _("HEY, THERE"); +const u8 gEasyChatWord_Hello[] = _("HELLO"); +const u8 gEasyChatWord_GoodBye[] = _("GOOD-BYE"); +const u8 gEasyChatWord_ThankYou[] = _("THANK YOU"); +const u8 gEasyChatWord_IveArrived[] = _("I'VE ARRIVED"); +const u8 gEasyChatWord_Pardon[] = _("PARDON"); +const u8 gEasyChatWord_Excuse[] = _("EXCUSE"); +const u8 gEasyChatWord_SeeYa[] = _("SEE YA"); +const u8 gEasyChatWord_ExcuseMe[] = _("EXCUSE ME"); +const u8 gEasyChatWord_WellThen[] = _("WELL, THEN"); +const u8 gEasyChatWord_GoAhead[] = _("GO AHEAD"); +const u8 gEasyChatWord_Appreciate[] = _("APPRECIATE"); +const u8 gEasyChatWord_HeyQues[] = _("HEY?"); +const u8 gEasyChatWord_WhatsUpQues[] = _("WHAT'S UP?"); +const u8 gEasyChatWord_HuhQues[] = _("HUH?"); +const u8 gEasyChatWord_No[] = _("NO"); +const u8 gEasyChatWord_Hi[] = _("HI"); +const u8 gEasyChatWord_YeahYeah[] = _("YEAH, YEAH"); +const u8 gEasyChatWord_ByeBye[] = _("BYE-BYE"); +const u8 gEasyChatWord_MeetYou[] = _("MEET YOU"); +const u8 gEasyChatWord_Hey[] = _("HEY"); +const u8 gEasyChatWord_Smell[] = _("SMELL"); +const u8 gEasyChatWord_Listening[] = _("LISTENING"); +const u8 gEasyChatWord_HooHah[] = _("HOO-HAH"); +const u8 gEasyChatWord_Yahoo[] = _("YAHOO"); +const u8 gEasyChatWord_Yo[] = _("YO"); +const u8 gEasyChatWord_ComeOver[] = _("COME OVER"); +const u8 gEasyChatWord_CountOn[] = _("COUNT ON"); + +const struct EasyChatWordInfo gEasyChatGroup_Greetings[] = { + { + .text = gEasyChatWord_Thanks, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Yes, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HereGoes, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HereICome, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HereItIs, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Yeah, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Welcome, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Oi, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HowDo, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Congrats, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_GiveMe, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sorry, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Apologize, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Forgive, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HeyThere, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hello, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_GoodBye, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ThankYou, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_IveArrived, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pardon, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Excuse, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SeeYa, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ExcuseMe, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WellThen, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_GoAhead, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Appreciate, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HeyQues, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WhatsUpQues, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HuhQues, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_No, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hi, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_YeahYeah, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ByeBye, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_MeetYou, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hey, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Smell, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Listening, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HooHah, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Yahoo, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Yo, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ComeOver, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_CountOn, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_hobbies.h b/src/data/easy_chat/easy_chat_group_hobbies.h new file mode 100755 index 000000000..fcd73d017 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_hobbies.h @@ -0,0 +1,327 @@ +const u8 gEasyChatWord_Idol[] = _("IDOL"); +const u8 gEasyChatWord_Anime[] = _("ANIME"); +const u8 gEasyChatWord_Song[] = _("SONG"); +const u8 gEasyChatWord_Movie[] = _("MOVIE"); +const u8 gEasyChatWord_Sweets[] = _("SWEETS"); +const u8 gEasyChatWord_Chat[] = _("CHAT"); +const u8 gEasyChatWord_ChildsPlay[] = _("CHILD'S PLAY"); +const u8 gEasyChatWord_Toys[] = _("TOYS"); +const u8 gEasyChatWord_Music[] = _("MUSIC"); +const u8 gEasyChatWord_Cards[] = _("CARDS"); +const u8 gEasyChatWord_Shopping[] = _("SHOPPING"); +const u8 gEasyChatWord_Camera[] = _("CAMERA"); +const u8 gEasyChatWord_Viewing[] = _("VIEWING"); +const u8 gEasyChatWord_Spectator[] = _("SPECTATOR"); +const u8 gEasyChatWord_Gourmet[] = _("GOURMET"); +const u8 gEasyChatWord_Game[] = _("GAME"); +const u8 gEasyChatWord_Rpg[] = _("RPG"); +const u8 gEasyChatWord_Collection[] = _("COLLECTION"); +const u8 gEasyChatWord_Complete[] = _("COMPLETE"); +const u8 gEasyChatWord_Magazine[] = _("MAGAZINE"); +const u8 gEasyChatWord_Walk[] = _("WALK"); +const u8 gEasyChatWord_Bike[] = _("BIKE"); +const u8 gEasyChatWord_Hobby[] = _("HOBBY"); +const u8 gEasyChatWord_Sports[] = _("SPORTS"); +const u8 gEasyChatWord_Software[] = _("SOFTWARE"); +const u8 gEasyChatWord_Songs[] = _("SONGS"); +const u8 gEasyChatWord_Diet[] = _("DIET"); +const u8 gEasyChatWord_Treasure[] = _("TREASURE"); +const u8 gEasyChatWord_Travel[] = _("TRAVEL"); +const u8 gEasyChatWord_Dance[] = _("DANCE"); +const u8 gEasyChatWord_Channel[] = _("CHANNEL"); +const u8 gEasyChatWord_Making[] = _("MAKING"); +const u8 gEasyChatWord_Fishing[] = _("FISHING"); +const u8 gEasyChatWord_Date[] = _("DATE"); +const u8 gEasyChatWord_Design[] = _("DESIGN"); +const u8 gEasyChatWord_Locomotive[] = _("LOCOMOTIVE"); +const u8 gEasyChatWord_PlushDoll[] = _("PLUSH DOLL"); +const u8 gEasyChatWord_Pc[] = _("PC"); +const u8 gEasyChatWord_Flowers[] = _("FLOWERS"); +const u8 gEasyChatWord_Hero[] = _("HERO"); +const u8 gEasyChatWord_Nap[] = _("NAP"); +const u8 gEasyChatWord_Heroine[] = _("HEROINE"); +const u8 gEasyChatWord_Fashion[] = _("FASHION"); +const u8 gEasyChatWord_Adventure[] = _("ADVENTURE"); +const u8 gEasyChatWord_Board[] = _("BOARD"); +const u8 gEasyChatWord_Ball[] = _("BALL"); +const u8 gEasyChatWord_Book[] = _("BOOK"); +const u8 gEasyChatWord_Festival[] = _("FESTIVAL"); +const u8 gEasyChatWord_Comics[] = _("COMICS"); +const u8 gEasyChatWord_Holiday[] = _("HOLIDAY"); +const u8 gEasyChatWord_Plans[] = _("PLANS"); +const u8 gEasyChatWord_Trendy[] = _("TRENDY"); +const u8 gEasyChatWord_Vacation[] = _("VACATION"); +const u8 gEasyChatWord_Look[] = _("LOOK"); + +const struct EasyChatWordInfo gEasyChatGroup_Hobbies[] = { + { + .text = gEasyChatWord_Idol, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Anime, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Song, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Movie, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sweets, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Chat, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ChildsPlay, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Toys, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Music, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cards, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Shopping, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Camera, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Viewing, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Spectator, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Gourmet, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Game, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rpg, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Collection, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Complete, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Magazine, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Walk, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Bike, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hobby, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sports, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Software, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Songs, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Diet, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Treasure, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Travel, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Dance, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Channel, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Making, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fishing, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Date, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Design, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Locomotive, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_PlushDoll, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pc, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Flowers, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hero, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Nap, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Heroine, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fashion, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Adventure, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Board, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ball, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Book, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Festival, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Comics, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Holiday, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Plans, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Trendy, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Vacation, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Look, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_lifestyle.h b/src/data/easy_chat/easy_chat_group_lifestyle.h new file mode 100755 index 000000000..9ed60025d --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_lifestyle.h @@ -0,0 +1,273 @@ +const u8 gEasyChatWord_Chores[] = _("CHORES"); +const u8 gEasyChatWord_Home[] = _("HOME"); +const u8 gEasyChatWord_Money[] = _("MONEY"); +const u8 gEasyChatWord_Allowance[] = _("ALLOWANCE"); +const u8 gEasyChatWord_Bath[] = _("BATH"); +const u8 gEasyChatWord_Conversation[] = _("CONVERSATION"); +const u8 gEasyChatWord_School[] = _("SCHOOL"); +const u8 gEasyChatWord_Commemorate[] = _("COMMEMORATE"); +const u8 gEasyChatWord_Habit[] = _("HABIT"); +const u8 gEasyChatWord_Group[] = _("GROUP"); +const u8 gEasyChatWord_Word[] = _("WORD"); +const u8 gEasyChatWord_Store[] = _("STORE"); +const u8 gEasyChatWord_Service[] = _("SERVICE"); +const u8 gEasyChatWord_Work[] = _("WORK"); +const u8 gEasyChatWord_System[] = _("SYSTEM"); +const u8 gEasyChatWord_Train[] = _("TRAIN"); +const u8 gEasyChatWord_Class[] = _("CLASS"); +const u8 gEasyChatWord_Lessons[] = _("LESSONS"); +const u8 gEasyChatWord_Information[] = _("INFORMATION"); +const u8 gEasyChatWord_Living[] = _("LIVING"); +const u8 gEasyChatWord_Teacher[] = _("TEACHER"); +const u8 gEasyChatWord_Tournament[] = _("TOURNAMENT"); +const u8 gEasyChatWord_Letter[] = _("LETTER"); +const u8 gEasyChatWord_Event[] = _("EVENT"); +const u8 gEasyChatWord_Digital[] = _("DIGITAL"); +const u8 gEasyChatWord_Test[] = _("TEST"); +const u8 gEasyChatWord_DeptStore[] = _("DEPT. STORE"); +const u8 gEasyChatWord_Television[] = _("TELEVISION"); +const u8 gEasyChatWord_Phone[] = _("PHONE"); +const u8 gEasyChatWord_Item[] = _("ITEM"); +const u8 gEasyChatWord_Name[] = _("NAME"); +const u8 gEasyChatWord_News[] = _("NEWS"); +const u8 gEasyChatWord_Popular[] = _("POPULAR"); +const u8 gEasyChatWord_Party[] = _("PARTY"); +const u8 gEasyChatWord_Study[] = _("STUDY"); +const u8 gEasyChatWord_Machine[] = _("MACHINE"); +const u8 gEasyChatWord_Mail[] = _("MAIL"); +const u8 gEasyChatWord_Message[] = _("MESSAGE"); +const u8 gEasyChatWord_Promise[] = _("PROMISE"); +const u8 gEasyChatWord_Dream[] = _("DREAM"); +const u8 gEasyChatWord_Kindergarten[] = _("KINDERGARTEN"); +const u8 gEasyChatWord_Life[] = _("LIFE"); +const u8 gEasyChatWord_Radio[] = _("RADIO"); +const u8 gEasyChatWord_Rental[] = _("RENTAL"); +const u8 gEasyChatWord_World[] = _("WORLD"); + +const struct EasyChatWordInfo gEasyChatGroup_Lifestyle[] = { + { + .text = gEasyChatWord_Chores, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Home, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Money, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Allowance, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Bath, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Conversation, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_School, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Commemorate, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Habit, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Group, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Word, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Store, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Service, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Work, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_System, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Train, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Class, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lessons, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Information, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Living, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Teacher, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tournament, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Letter, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Event, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Digital, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Test, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_DeptStore, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Television, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Phone, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Item, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Name, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_News, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Popular, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Party, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Study, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Machine, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mail, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Message, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Promise, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Dream, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Kindergarten, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Life, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Radio, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rental, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_World, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_misc.h b/src/data/easy_chat/easy_chat_group_misc.h new file mode 100755 index 000000000..fbc9a7069 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_misc.h @@ -0,0 +1,255 @@ +const u8 gEasyChatWord_Highs[] = _("HIGHS"); +const u8 gEasyChatWord_Lows[] = _("LOWS"); +const u8 gEasyChatWord_Um[] = _("UM"); +const u8 gEasyChatWord_Rear[] = _("REAR"); +const u8 gEasyChatWord_Things[] = _("THINGS"); +const u8 gEasyChatWord_Thing[] = _("THING"); +const u8 gEasyChatWord_Below[] = _("BELOW"); +const u8 gEasyChatWord_Above[] = _("ABOVE"); +const u8 gEasyChatWord_Back[] = _("BACK"); +const u8 gEasyChatWord_High[] = _("HIGH"); +const u8 gEasyChatWord_Here[] = _("HERE"); +const u8 gEasyChatWord_Inside[] = _("INSIDE"); +const u8 gEasyChatWord_Outside[] = _("OUTSIDE"); +const u8 gEasyChatWord_Beside[] = _("BESIDE"); +const u8 gEasyChatWord_ThisIsItExcl[] = _("THIS IS IT!"); +const u8 gEasyChatWord_This[] = _("THIS"); +const u8 gEasyChatWord_Every[] = _("EVERY"); +const u8 gEasyChatWord_These[] = _("THESE"); +const u8 gEasyChatWord_TheseWere[] = _("THESE WERE"); +const u8 gEasyChatWord_Down[] = _("DOWN"); +const u8 gEasyChatWord_That[] = _("THAT"); +const u8 gEasyChatWord_ThoseAre[] = _("THOSE ARE"); +const u8 gEasyChatWord_ThoseWere[] = _("THOSE WERE"); +const u8 gEasyChatWord_ThatsItExcl[] = _("THAT'S IT!"); +const u8 gEasyChatWord_Am[] = _("AM"); +const u8 gEasyChatWord_ThatWas[] = _("THAT WAS"); +const u8 gEasyChatWord_Front[] = _("FRONT"); +const u8 gEasyChatWord_Up[] = _("UP"); +const u8 gEasyChatWord_Choice[] = _("CHOICE"); +const u8 gEasyChatWord_Far[] = _("FAR"); +const u8 gEasyChatWord_Away[] = _("AWAY"); +const u8 gEasyChatWord_Near[] = _("NEAR"); +const u8 gEasyChatWord_Where[] = _("WHERE"); +const u8 gEasyChatWord_When[] = _("WHEN"); +const u8 gEasyChatWord_What[] = _("WHAT"); +const u8 gEasyChatWord_Deep[] = _("DEEP"); +const u8 gEasyChatWord_Shallow[] = _("SHALLOW"); +const u8 gEasyChatWord_Why[] = _("WHY"); +const u8 gEasyChatWord_Confused[] = _("CONFUSED"); +const u8 gEasyChatWord_Opposite[] = _("OPPOSITE"); +const u8 gEasyChatWord_Left[] = _("LEFT"); +const u8 gEasyChatWord_Right[] = _("RIGHT"); + +const struct EasyChatWordInfo gEasyChatGroup_Misc[] = { + { + .text = gEasyChatWord_Highs, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lows, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Um, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rear, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Things, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Thing, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Below, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Above, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Back, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_High, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Here, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Inside, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Outside, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Beside, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ThisIsItExcl, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_This, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Every, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_These, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_TheseWere, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Down, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_That, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ThoseAre, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ThoseWere, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ThatsItExcl, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Am, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ThatWas, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Front, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Up, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Choice, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Far, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Away, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Near, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Where, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_When, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_What, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Deep, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Shallow, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Why, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Confused, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Opposite, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Left, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Right, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_move_1.h b/src/data/easy_chat/easy_chat_group_move_1.h new file mode 100755 index 000000000..3b0e8acca --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_move_1.h @@ -0,0 +1,158 @@ +#include "constants/moves.h" + +const u16 gEasyChatGroup_Move1[] = { + MOVE_ABSORB, + MOVE_AEROBLAST, + MOVE_AGILITY, + MOVE_AIR_CUTTER, + MOVE_ANCIENT_POWER, + MOVE_AROMATHERAPY, + MOVE_ASTONISH, + MOVE_AURORA_BEAM, + MOVE_BIDE, + MOVE_BIND, + MOVE_BITE, + MOVE_BRICK_BREAK, + MOVE_BUBBLE, + MOVE_CHARGE, + MOVE_CHARM, + MOVE_CLAMP, + MOVE_CONFUSE_RAY, + MOVE_CONSTRICT, + MOVE_COSMIC_POWER, + MOVE_COUNTER, + MOVE_CRABHAMMER, + MOVE_CROSS_CHOP, + MOVE_CRUNCH, + MOVE_CUT, + MOVE_DIG, + MOVE_DISABLE, + MOVE_DOUBLE_TEAM, + MOVE_DOUBLE_EDGE, + MOVE_DOUBLE_SLAP, + MOVE_EARTHQUAKE, + MOVE_ENCORE, + MOVE_ENDEAVOR, + MOVE_ENDURE, + MOVE_EXTRASENSORY, + MOVE_EXTREME_SPEED, + MOVE_FACADE, + MOVE_FAKE_TEARS, + MOVE_FISSURE, + MOVE_FLAIL, + MOVE_FLAME_WHEEL, + MOVE_FLAMETHROWER, + MOVE_FLATTER, + MOVE_FLY, + MOVE_FOCUS_ENERGY, + MOVE_FOCUS_PUNCH, + MOVE_FOLLOW_ME, + MOVE_GIGA_DRAIN, + MOVE_GRASS_WHISTLE, + MOVE_GROWTH, + MOVE_GRUDGE, + MOVE_GUST, + MOVE_HAIL, + MOVE_HARDEN, + MOVE_HAZE, + MOVE_HEADBUTT, + MOVE_HEAL_BELL, + MOVE_HYPNOSIS, + MOVE_ICE_BALL, + MOVE_ICY_WIND, + MOVE_IRON_TAIL, + MOVE_KARATE_CHOP, + MOVE_KINESIS, + MOVE_LEECH_LIFE, + MOVE_LICK, + MOVE_LOVELY_KISS, + MOVE_LOW_KICK, + MOVE_MEAN_LOOK, + MOVE_MEMENTO, + MOVE_METAL_SOUND, + MOVE_METEOR_MASH, + MOVE_MIND_READER, + MOVE_MIRROR_MOVE, + MOVE_MIST, + MOVE_MORNING_SUN, + MOVE_NATURE_POWER, + MOVE_NIGHTMARE, + MOVE_OCTAZOOKA, + MOVE_ODOR_SLEUTH, + MOVE_OUTRAGE, + MOVE_OVERHEAT, + MOVE_PAIN_SPLIT, + MOVE_POWDER_SNOW, + MOVE_PSYBEAM, + MOVE_PSYCH_UP, + MOVE_PSYCHIC, + MOVE_PSYCHO_BOOST, + MOVE_PSYWAVE, + MOVE_PURSUIT, + MOVE_RAGE, + MOVE_RAIN_DANCE, + MOVE_RAPID_SPIN, + MOVE_RAZOR_WIND, + MOVE_RECOVER, + MOVE_RETURN, + MOVE_REVERSAL, + MOVE_ROCK_SLIDE, + MOVE_ROCK_SMASH, + MOVE_ROCK_THROW, + MOVE_ROCK_TOMB, + MOVE_ROLLOUT, + MOVE_SACRED_FIRE, + MOVE_SAFEGUARD, + MOVE_SAND_TOMB, + MOVE_SAND_ATTACK, + MOVE_SANDSTORM, + MOVE_SCARY_FACE, + MOVE_SCREECH, + MOVE_SELF_DESTRUCT, + MOVE_SHADOW_BALL, + MOVE_SHADOW_PUNCH, + MOVE_SHARPEN, + MOVE_SHEER_COLD, + MOVE_SIGNAL_BEAM, + MOVE_SILVER_WIND, + MOVE_SING, + MOVE_SKETCH, + MOVE_SKILL_SWAP, + MOVE_SKY_ATTACK, + MOVE_SKY_UPPERCUT, + MOVE_SLASH, + MOVE_SMELLING_SALT, + MOVE_SMOG, + MOVE_SMOKESCREEN, + MOVE_SNORE, + MOVE_SOLAR_BEAM, + MOVE_SONIC_BOOM, + MOVE_SPARK, + MOVE_SPIDER_WEB, + MOVE_SPITE, + MOVE_SPORE, + MOVE_STRENGTH, + MOVE_STRING_SHOT, + MOVE_STUN_SPORE, + MOVE_SUBMISSION, + MOVE_SUPER_FANG, + MOVE_SWAGGER, + MOVE_SWEET_SCENT, + MOVE_SWIFT, + MOVE_SYNTHESIS, + MOVE_TAIL_WHIP, + MOVE_THRASH, + MOVE_THUNDER, + MOVE_THUNDERBOLT, + MOVE_THUNDER_PUNCH, + MOVE_TICKLE, + MOVE_TORMENT, + MOVE_UPROAR, + MOVE_VITAL_THROW, + MOVE_WATER_SPOUT, + MOVE_WEATHER_BALL, + MOVE_WHIRLPOOL, + MOVE_WILL_O_WISP, + MOVE_WITHDRAW, + MOVE_YAWN, +}; diff --git a/src/data/easy_chat/easy_chat_group_move_2.h b/src/data/easy_chat/easy_chat_group_move_2.h new file mode 100755 index 000000000..e0a0cd379 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_move_2.h @@ -0,0 +1,204 @@ +#include "constants/moves.h" + +const u16 gEasyChatGroup_Move2[] = { + MOVE_ACID, + MOVE_ACID_ARMOR, + MOVE_AERIAL_ACE, + MOVE_AMNESIA, + MOVE_ARM_THRUST, + MOVE_ASSIST, + MOVE_ATTRACT, + MOVE_BARRAGE, + MOVE_BARRIER, + MOVE_BATON_PASS, + MOVE_BEAT_UP, + MOVE_BELLY_DRUM, + MOVE_BLAST_BURN, + MOVE_BLAZE_KICK, + MOVE_BLIZZARD, + MOVE_BLOCK, + MOVE_BODY_SLAM, + MOVE_BONE_CLUB, + MOVE_BONE_RUSH, + MOVE_BONEMERANG, + MOVE_BOUNCE, + MOVE_BUBBLE_BEAM, + MOVE_BULK_UP, + MOVE_BULLET_SEED, + MOVE_CALM_MIND, + MOVE_CAMOUFLAGE, + MOVE_COMET_PUNCH, + MOVE_CONFUSION, + MOVE_CONVERSION, + MOVE_CONVERSION_2, + MOVE_COTTON_SPORE, + MOVE_COVET, + MOVE_CRUSH_CLAW, + MOVE_CURSE, + MOVE_DEFENSE_CURL, + MOVE_DESTINY_BOND, + MOVE_DETECT, + MOVE_DIVE, + MOVE_DIZZY_PUNCH, + MOVE_DOOM_DESIRE, + MOVE_DOUBLE_KICK, + MOVE_DRAGON_CLAW, + MOVE_DRAGON_DANCE, + MOVE_DRAGON_RAGE, + MOVE_DRAGON_BREATH, + MOVE_DREAM_EATER, + MOVE_DRILL_PECK, + MOVE_DYNAMIC_PUNCH, + MOVE_EGG_BOMB, + MOVE_EMBER, + MOVE_ERUPTION, + MOVE_EXPLOSION, + MOVE_FAINT_ATTACK, + MOVE_FAKE_OUT, + MOVE_FALSE_SWIPE, + MOVE_FEATHER_DANCE, + MOVE_FIRE_BLAST, + MOVE_FIRE_PUNCH, + MOVE_FIRE_SPIN, + MOVE_FLASH, + MOVE_FORESIGHT, + MOVE_FRENZY_PLANT, + MOVE_FRUSTRATION, + MOVE_FURY_ATTACK, + MOVE_FURY_CUTTER, + MOVE_FURY_SWIPES, + MOVE_FUTURE_SIGHT, + MOVE_GLARE, + MOVE_GROWL, + MOVE_GUILLOTINE, + MOVE_HEAT_WAVE, + MOVE_HELPING_HAND, + MOVE_HI_JUMP_KICK, + MOVE_HIDDEN_POWER, + MOVE_HORN_ATTACK, + MOVE_HORN_DRILL, + MOVE_HOWL, + MOVE_HYDRO_CANNON, + MOVE_HYDRO_PUMP, + MOVE_HYPER_BEAM, + MOVE_HYPER_FANG, + MOVE_HYPER_VOICE, + MOVE_ICE_BEAM, + MOVE_ICE_PUNCH, + MOVE_ICICLE_SPEAR, + MOVE_IMPRISON, + MOVE_INGRAIN, + MOVE_IRON_DEFENSE, + MOVE_JUMP_KICK, + MOVE_KNOCK_OFF, + MOVE_LEAF_BLADE, + MOVE_LEECH_SEED, + MOVE_LEER, + MOVE_LIGHT_SCREEN, + MOVE_LOCK_ON, + MOVE_LUSTER_PURGE, + MOVE_MACH_PUNCH, + MOVE_MAGIC_COAT, + MOVE_MAGICAL_LEAF, + MOVE_MAGNITUDE, + MOVE_MEDITATE, + MOVE_MEGA_DRAIN, + MOVE_MEGA_KICK, + MOVE_MEGA_PUNCH, + MOVE_MEGAHORN, + MOVE_METAL_CLAW, + MOVE_METRONOME, + MOVE_MILK_DRINK, + MOVE_MIMIC, + MOVE_MINIMIZE, + MOVE_MIRROR_COAT, + MOVE_MIST_BALL, + MOVE_MOONLIGHT, + MOVE_MUD_SHOT, + MOVE_MUD_SPORT, + MOVE_MUD_SLAP, + MOVE_MUDDY_WATER, + MOVE_NEEDLE_ARM, + MOVE_NIGHT_SHADE, + MOVE_PAY_DAY, + MOVE_PECK, + MOVE_PERISH_SONG, + MOVE_PETAL_DANCE, + MOVE_PIN_MISSILE, + MOVE_POISON_FANG, + MOVE_POISON_GAS, + MOVE_POISON_STING, + MOVE_POISON_TAIL, + MOVE_POISON_POWDER, + MOVE_POUND, + MOVE_PRESENT, + MOVE_PROTECT, + MOVE_QUICK_ATTACK, + MOVE_RAZOR_LEAF, + MOVE_RECYCLE, + MOVE_REFLECT, + MOVE_REFRESH, + MOVE_REST, + MOVE_REVENGE, + MOVE_ROAR, + MOVE_ROCK_BLAST, + MOVE_ROLE_PLAY, + MOVE_ROLLING_KICK, + MOVE_SCRATCH, + MOVE_SECRET_POWER, + MOVE_SEISMIC_TOSS, + MOVE_SHOCK_WAVE, + MOVE_SKULL_BASH, + MOVE_SLACK_OFF, + MOVE_SLAM, + MOVE_SLEEP_POWDER, + MOVE_SLEEP_TALK, + MOVE_SLUDGE, + MOVE_SLUDGE_BOMB, + MOVE_SNATCH, + MOVE_SOFT_BOILED, + MOVE_SPIKE_CANNON, + MOVE_SPIKES, + MOVE_SPIT_UP, + MOVE_SPLASH, + MOVE_STEEL_WING, + MOVE_STOCKPILE, + MOVE_STOMP, + MOVE_STRUGGLE, + MOVE_SUBSTITUTE, + MOVE_SUNNY_DAY, + MOVE_SUPERPOWER, + MOVE_SUPERSONIC, + MOVE_SURF, + MOVE_SWALLOW, + MOVE_SWEET_KISS, + MOVE_SWORDS_DANCE, + MOVE_TACKLE, + MOVE_TAIL_GLOW, + MOVE_TAKE_DOWN, + MOVE_TAUNT, + MOVE_TEETER_DANCE, + MOVE_TELEPORT, + MOVE_THIEF, + MOVE_THUNDER_WAVE, + MOVE_THUNDER_SHOCK, + MOVE_TOXIC, + MOVE_TRANSFORM, + MOVE_TRI_ATTACK, + MOVE_TRICK, + MOVE_TRIPLE_KICK, + MOVE_TWINEEDLE, + MOVE_TWISTER, + MOVE_VICE_GRIP, + MOVE_VINE_WHIP, + MOVE_VOLT_TACKLE, + MOVE_WATER_GUN, + MOVE_WATER_PULSE, + MOVE_WATER_SPORT, + MOVE_WATERFALL, + MOVE_WHIRLWIND, + MOVE_WING_ATTACK, + MOVE_WISH, + MOVE_WRAP, + MOVE_ZAP_CANNON, +}; diff --git a/src/data/easy_chat/easy_chat_group_people.h b/src/data/easy_chat/easy_chat_group_people.h new file mode 100755 index 000000000..17d2d5339 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_people.h @@ -0,0 +1,453 @@ +const u8 gEasyChatWord_Opponent[] = _("OPPONENT"); +const u8 gEasyChatWord_I[] = _("I"); +const u8 gEasyChatWord_You[] = _("YOU"); +const u8 gEasyChatWord_Yours[] = _("YOURS"); +const u8 gEasyChatWord_Son[] = _("SON"); +const u8 gEasyChatWord_Your[] = _("YOUR"); +const u8 gEasyChatWord_Youre[] = _("YOU'RE"); +const u8 gEasyChatWord_Youve[] = _("YOU'VE"); +const u8 gEasyChatWord_Mother[] = _("MOTHER"); +const u8 gEasyChatWord_Grandfather[] = _("GRANDFATHER"); +const u8 gEasyChatWord_Uncle[] = _("UNCLE"); +const u8 gEasyChatWord_Father[] = _("FATHER"); +const u8 gEasyChatWord_Boy[] = _("BOY"); +const u8 gEasyChatWord_Adult[] = _("ADULT"); +const u8 gEasyChatWord_Brother[] = _("BROTHER"); +const u8 gEasyChatWord_Sister[] = _("SISTER"); +const u8 gEasyChatWord_Grandmother[] = _("GRANDMOTHER"); +const u8 gEasyChatWord_Aunt[] = _("AUNT"); +const u8 gEasyChatWord_Parent[] = _("PARENT"); +const u8 gEasyChatWord_Man[] = _("MAN"); +const u8 gEasyChatWord_Me[] = _("ME"); +const u8 gEasyChatWord_Girl[] = _("GIRL"); +const u8 gEasyChatWord_Babe[] = _("BABE"); +const u8 gEasyChatWord_Family[] = _("FAMILY"); +const u8 gEasyChatWord_Her[] = _("HER"); +const u8 gEasyChatWord_Him[] = _("HIM"); +const u8 gEasyChatWord_He[] = _("HE"); +const u8 gEasyChatWord_Place[] = _("PLACE"); +const u8 gEasyChatWord_Daughter[] = _("DAUGHTER"); +const u8 gEasyChatWord_His[] = _("HIS"); +const u8 gEasyChatWord_Hes[] = _("HE'S"); +const u8 gEasyChatWord_Arent[] = _("AREN'T"); +const u8 gEasyChatWord_Siblings[] = _("SIBLINGS"); +const u8 gEasyChatWord_Kid[] = _("KID"); +const u8 gEasyChatWord_Children[] = _("CHILDREN"); +const u8 gEasyChatWord_Mr[] = _("MR."); +const u8 gEasyChatWord_Mrs[] = _("MRS."); +const u8 gEasyChatWord_Myself[] = _("MYSELF"); +const u8 gEasyChatWord_IWas[] = _("I WAS"); +const u8 gEasyChatWord_ToMe[] = _("TO ME"); +const u8 gEasyChatWord_My[] = _("MY"); +const u8 gEasyChatWord_IAm[] = _("I AM"); +const u8 gEasyChatWord_Ive[] = _("I'VE"); +const u8 gEasyChatWord_Who[] = _("WHO"); +const u8 gEasyChatWord_Someone[] = _("SOMEONE"); +const u8 gEasyChatWord_WhoWas[] = _("WHO WAS"); +const u8 gEasyChatWord_ToWhom[] = _("TO WHOM"); +const u8 gEasyChatWord_Whose[] = _("WHOSE"); +const u8 gEasyChatWord_WhoIs[] = _("WHO IS"); +const u8 gEasyChatWord_Its[] = _("IT'S"); +const u8 gEasyChatWord_Lady[] = _("LADY"); +const u8 gEasyChatWord_Friend[] = _("FRIEND"); +const u8 gEasyChatWord_Ally[] = _("ALLY"); +const u8 gEasyChatWord_Person[] = _("PERSON"); +const u8 gEasyChatWord_Dude[] = _("DUDE"); +const u8 gEasyChatWord_They[] = _("THEY"); +const u8 gEasyChatWord_TheyWere[] = _("THEY WERE"); +const u8 gEasyChatWord_ToThem[] = _("TO THEM"); +const u8 gEasyChatWord_Their[] = _("THEIR"); +const u8 gEasyChatWord_Theyre[] = _("THEY'RE"); +const u8 gEasyChatWord_Theyve[] = _("THEY'VE"); +const u8 gEasyChatWord_We[] = _("WE"); +const u8 gEasyChatWord_Been[] = _("BEEN"); +const u8 gEasyChatWord_ToUs[] = _("TO US"); +const u8 gEasyChatWord_Our[] = _("OUR"); +const u8 gEasyChatWord_WeAre[] = _("WE'RE"); +const u8 gEasyChatWord_Rival[] = _("RIVAL"); +const u8 gEasyChatWord_Weve[] = _("WE'VE"); +const u8 gEasyChatWord_Woman[] = _("WOMAN"); +const u8 gEasyChatWord_She[] = _("SHE"); +const u8 gEasyChatWord_SheWas[] = _("SHE WAS"); +const u8 gEasyChatWord_ToHer[] = _("TO HER"); +const u8 gEasyChatWord_Hers[] = _("HERS"); +const u8 gEasyChatWord_SheIs[] = _("SHE IS"); +const u8 gEasyChatWord_Some[] = _("SOME"); + +const struct EasyChatWordInfo gEasyChatGroup_People[] = { + { + .text = gEasyChatWord_Opponent, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_I, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_You, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Yours, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Son, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Your, + .alphabeticalOrder = 62, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Youre, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Youve, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mother, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Grandfather, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Uncle, + .alphabeticalOrder = 54, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Father, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Boy, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Adult, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Brother, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sister, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Grandmother, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Aunt, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Parent, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Man, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Me, + .alphabeticalOrder = 72, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Girl, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Babe, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Family, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Her, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Him, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_He, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Place, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Daughter, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_His, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hes, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Arent, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Siblings, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Kid, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Children, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mr, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mrs, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Myself, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_IWas, + .alphabeticalOrder = 64, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ToMe, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_My, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_IAm, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ive, + .alphabeticalOrder = 66, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Who, + .alphabeticalOrder = 69, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Someone, + .alphabeticalOrder = 73, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WhoWas, + .alphabeticalOrder = 70, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ToWhom, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Whose, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WhoIs, + .alphabeticalOrder = 74, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Its, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lady, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Friend, + .alphabeticalOrder = 58, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ally, + .alphabeticalOrder = 55, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Person, + .alphabeticalOrder = 56, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Dude, + .alphabeticalOrder = 59, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_They, + .alphabeticalOrder = 60, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_TheyWere, + .alphabeticalOrder = 71, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ToThem, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Their, + .alphabeticalOrder = 57, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Theyre, + .alphabeticalOrder = 63, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Theyve, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_We, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Been, + .alphabeticalOrder = 61, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ToUs, + .alphabeticalOrder = 65, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Our, + .alphabeticalOrder = 67, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WeAre, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rival, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Weve, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Woman, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_She, + .alphabeticalOrder = 68, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SheWas, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ToHer, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hers, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SheIs, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Some, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_pokemon.h b/src/data/easy_chat/easy_chat_group_pokemon.h new file mode 100755 index 000000000..9993a5144 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_pokemon.h @@ -0,0 +1,206 @@ +#include "constants/species.h" + +const u16 gEasyChatGroup_Pokemon[] = { + SPECIES_ABRA, + SPECIES_ABSOL, + SPECIES_AGGRON, + SPECIES_ALAKAZAM, + SPECIES_ALTARIA, + SPECIES_ANORITH, + SPECIES_ARMALDO, + SPECIES_ARON, + SPECIES_AZUMARILL, + SPECIES_AZURILL, + SPECIES_BAGON, + SPECIES_BALTOY, + SPECIES_BANETTE, + SPECIES_BARBOACH, + SPECIES_BEAUTIFLY, + SPECIES_BELDUM, + SPECIES_BELLOSSOM, + SPECIES_BLAZIKEN, + SPECIES_BRELOOM, + SPECIES_CACNEA, + SPECIES_CACTURNE, + SPECIES_CAMERUPT, + SPECIES_CARVANHA, + SPECIES_CASCOON, + SPECIES_CASTFORM, + SPECIES_CHIMECHO, + SPECIES_CHINCHOU, + SPECIES_CLAMPERL, + SPECIES_CLAYDOL, + SPECIES_COMBUSKEN, + SPECIES_CORPHISH, + SPECIES_CORSOLA, + SPECIES_CRADILY, + SPECIES_CRAWDAUNT, + SPECIES_CROBAT, + SPECIES_DELCATTY, + SPECIES_DEOXYS, + SPECIES_DODRIO, + SPECIES_DODUO, + SPECIES_DONPHAN, + SPECIES_DUSCLOPS, + SPECIES_DUSKULL, + SPECIES_DUSTOX, + SPECIES_ELECTRIKE, + SPECIES_ELECTRODE, + SPECIES_EXPLOUD, + SPECIES_FEEBAS, + SPECIES_FLYGON, + SPECIES_GARDEVOIR, + SPECIES_GEODUDE, + SPECIES_GIRAFARIG, + SPECIES_GLALIE, + SPECIES_GLOOM, + SPECIES_GOLBAT, + SPECIES_GOLDEEN, + SPECIES_GOLDUCK, + SPECIES_GOLEM, + SPECIES_GOREBYSS, + SPECIES_GRAVELER, + SPECIES_GRIMER, + SPECIES_GROUDON, + SPECIES_GROVYLE, + SPECIES_GRUMPIG, + SPECIES_GULPIN, + SPECIES_GYARADOS, + SPECIES_HARIYAMA, + SPECIES_HERACROSS, + SPECIES_HORSEA, + SPECIES_HUNTAIL, + SPECIES_IGGLYBUFF, + SPECIES_ILLUMISE, + SPECIES_JIGGLYPUFF, + SPECIES_JIRACHI, + SPECIES_KADABRA, + SPECIES_KECLEON, + SPECIES_KINGDRA, + SPECIES_KIRLIA, + SPECIES_KOFFING, + SPECIES_KYOGRE, + SPECIES_LAIRON, + SPECIES_LANTURN, + SPECIES_LATIAS, + SPECIES_LATIOS, + SPECIES_LILEEP, + SPECIES_LINOONE, + SPECIES_LOMBRE, + SPECIES_LOTAD, + SPECIES_LOUDRED, + SPECIES_LUDICOLO, + SPECIES_LUNATONE, + SPECIES_LUVDISC, + SPECIES_MACHAMP, + SPECIES_MACHOKE, + SPECIES_MACHOP, + SPECIES_MAGCARGO, + SPECIES_MAGIKARP, + SPECIES_MAGNEMITE, + SPECIES_MAGNETON, + SPECIES_MAKUHITA, + SPECIES_MANECTRIC, + SPECIES_MARILL, + SPECIES_MARSHTOMP, + SPECIES_MASQUERAIN, + SPECIES_MAWILE, + SPECIES_MEDICHAM, + SPECIES_MEDITITE, + SPECIES_METAGROSS, + SPECIES_METANG, + SPECIES_MIGHTYENA, + SPECIES_MILOTIC, + SPECIES_MINUN, + SPECIES_MUDKIP, + SPECIES_MUK, + SPECIES_NATU, + SPECIES_NINCADA, + SPECIES_NINETALES, + SPECIES_NINJASK, + SPECIES_NOSEPASS, + SPECIES_NUMEL, + SPECIES_NUZLEAF, + SPECIES_ODDISH, + SPECIES_PELIPPER, + SPECIES_PHANPY, + SPECIES_PICHU, + SPECIES_PIKACHU, + SPECIES_PINSIR, + SPECIES_PLUSLE, + SPECIES_POOCHYENA, + SPECIES_PSYDUCK, + SPECIES_RAICHU, + SPECIES_RALTS, + SPECIES_RAYQUAZA, + SPECIES_REGICE, + SPECIES_REGIROCK, + SPECIES_REGISTEEL, + SPECIES_RELICANTH, + SPECIES_RHYDON, + SPECIES_RHYHORN, + SPECIES_ROSELIA, + SPECIES_SABLEYE, + SPECIES_SALAMENCE, + SPECIES_SANDSHREW, + SPECIES_SANDSLASH, + SPECIES_SCEPTILE, + SPECIES_SEADRA, + SPECIES_SEAKING, + SPECIES_SEALEO, + SPECIES_SEEDOT, + SPECIES_SEVIPER, + SPECIES_SHARPEDO, + SPECIES_SHEDINJA, + SPECIES_SHELGON, + SPECIES_SHIFTRY, + SPECIES_SHROOMISH, + SPECIES_SHUPPET, + SPECIES_SILCOON, + SPECIES_SKARMORY, + SPECIES_SKITTY, + SPECIES_SLAKING, + SPECIES_SLAKOTH, + SPECIES_SLUGMA, + SPECIES_SNORUNT, + SPECIES_SOLROCK, + SPECIES_SPHEAL, + SPECIES_SPINDA, + SPECIES_SPOINK, + SPECIES_STARMIE, + SPECIES_STARYU, + SPECIES_SURSKIT, + SPECIES_SWABLU, + SPECIES_SWALOT, + SPECIES_SWAMPERT, + SPECIES_SWELLOW, + SPECIES_TAILLOW, + SPECIES_TENTACOOL, + SPECIES_TENTACRUEL, + SPECIES_TORCHIC, + SPECIES_TORKOAL, + SPECIES_TRAPINCH, + SPECIES_TREECKO, + SPECIES_TROPIUS, + SPECIES_VIBRAVA, + SPECIES_VIGOROTH, + SPECIES_VILEPLUME, + SPECIES_VOLBEAT, + SPECIES_VOLTORB, + SPECIES_VULPIX, + SPECIES_WAILMER, + SPECIES_WAILORD, + SPECIES_WALREIN, + SPECIES_WEEZING, + SPECIES_WHISCASH, + SPECIES_WHISMUR, + SPECIES_WIGGLYTUFF, + SPECIES_WINGULL, + SPECIES_WOBBUFFET, + SPECIES_WURMPLE, + SPECIES_WYNAUT, + SPECIES_XATU, + SPECIES_ZANGOOSE, + SPECIES_ZIGZAGOON, + SPECIES_ZUBAT, +}; diff --git a/src/data/easy_chat/easy_chat_group_pokemon2.h b/src/data/easy_chat/easy_chat_group_pokemon2.h new file mode 100755 index 000000000..35b0a03cb --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_pokemon2.h @@ -0,0 +1,255 @@ +#include "constants/species.h" + +const u16 gEasyChatGroup_Pokemon2[] = { + SPECIES_ABRA, + SPECIES_AERODACTYL, + SPECIES_AIPOM, + SPECIES_ALAKAZAM, + SPECIES_AMPHAROS, + SPECIES_ARBOK, + SPECIES_ARCANINE, + SPECIES_ARIADOS, + SPECIES_ARTICUNO, + SPECIES_AZUMARILL, + SPECIES_BAYLEEF, + SPECIES_BEEDRILL, + SPECIES_BELLOSSOM, + SPECIES_BELLSPROUT, + SPECIES_BLASTOISE, + SPECIES_BLISSEY, + SPECIES_BULBASAUR, + SPECIES_BUTTERFREE, + SPECIES_CATERPIE, + SPECIES_CELEBI, + SPECIES_CHANSEY, + SPECIES_CHARIZARD, + SPECIES_CHARMANDER, + SPECIES_CHARMELEON, + SPECIES_CHIKORITA, + SPECIES_CHINCHOU, + SPECIES_CLEFABLE, + SPECIES_CLEFAIRY, + SPECIES_CLEFFA, + SPECIES_CLOYSTER, + SPECIES_CORSOLA, + SPECIES_CROBAT, + SPECIES_CROCONAW, + SPECIES_CUBONE, + SPECIES_CYNDAQUIL, + SPECIES_DELIBIRD, + SPECIES_DEWGONG, + SPECIES_DIGLETT, + SPECIES_DITTO, + SPECIES_DODRIO, + SPECIES_DODUO, + SPECIES_DONPHAN, + SPECIES_DRAGONAIR, + SPECIES_DRAGONITE, + SPECIES_DRATINI, + SPECIES_DROWZEE, + SPECIES_DUGTRIO, + SPECIES_DUNSPARCE, + SPECIES_EEVEE, + SPECIES_EKANS, + SPECIES_ELECTABUZZ, + SPECIES_ELECTRODE, + SPECIES_ELEKID, + SPECIES_ENTEI, + SPECIES_ESPEON, + SPECIES_EXEGGCUTE, + SPECIES_EXEGGUTOR, + SPECIES_FARFETCHD, + SPECIES_FEAROW, + SPECIES_FERALIGATR, + SPECIES_FLAAFFY, + SPECIES_FLAREON, + SPECIES_FORRETRESS, + SPECIES_FURRET, + SPECIES_GASTLY, + SPECIES_GENGAR, + SPECIES_GEODUDE, + SPECIES_GIRAFARIG, + SPECIES_GLIGAR, + SPECIES_GLOOM, + SPECIES_GOLBAT, + SPECIES_GOLDEEN, + SPECIES_GOLDUCK, + SPECIES_GOLEM, + SPECIES_GRANBULL, + SPECIES_GRAVELER, + SPECIES_GRIMER, + SPECIES_GROWLITHE, + SPECIES_GYARADOS, + SPECIES_HAUNTER, + SPECIES_HERACROSS, + SPECIES_HITMONCHAN, + SPECIES_HITMONLEE, + SPECIES_HITMONTOP, + SPECIES_HO_OH, + SPECIES_HOOTHOOT, + SPECIES_HOPPIP, + SPECIES_HORSEA, + SPECIES_HOUNDOOM, + SPECIES_HOUNDOUR, + SPECIES_HYPNO, + SPECIES_IGGLYBUFF, + SPECIES_IVYSAUR, + SPECIES_JIGGLYPUFF, + SPECIES_JOLTEON, + SPECIES_JUMPLUFF, + SPECIES_JYNX, + SPECIES_KABUTO, + SPECIES_KABUTOPS, + SPECIES_KADABRA, + SPECIES_KAKUNA, + SPECIES_KANGASKHAN, + SPECIES_KINGDRA, + SPECIES_KINGLER, + SPECIES_KOFFING, + SPECIES_KRABBY, + SPECIES_LANTURN, + SPECIES_LAPRAS, + SPECIES_LARVITAR, + SPECIES_LEDIAN, + SPECIES_LEDYBA, + SPECIES_LICKITUNG, + SPECIES_LUGIA, + SPECIES_MACHAMP, + SPECIES_MACHOKE, + SPECIES_MACHOP, + SPECIES_MAGBY, + SPECIES_MAGCARGO, + SPECIES_MAGIKARP, + SPECIES_MAGMAR, + SPECIES_MAGNEMITE, + SPECIES_MAGNETON, + SPECIES_MANKEY, + SPECIES_MANTINE, + SPECIES_MAREEP, + SPECIES_MARILL, + SPECIES_MAROWAK, + SPECIES_MEGANIUM, + SPECIES_MEOWTH, + SPECIES_METAPOD, + SPECIES_MEW, + SPECIES_MEWTWO, + SPECIES_MILTANK, + SPECIES_MISDREAVUS, + SPECIES_MOLTRES, + SPECIES_MR_MIME, + SPECIES_MUK, + SPECIES_MURKROW, + SPECIES_NATU, + SPECIES_NIDOKING, + SPECIES_NIDOQUEEN, + SPECIES_NIDORAN_F, + SPECIES_NIDORAN_M, + SPECIES_NIDORINA, + SPECIES_NIDORINO, + SPECIES_NINETALES, + SPECIES_NOCTOWL, + SPECIES_OCTILLERY, + SPECIES_ODDISH, + SPECIES_OMANYTE, + SPECIES_OMASTAR, + SPECIES_ONIX, + SPECIES_PARAS, + SPECIES_PARASECT, + SPECIES_PERSIAN, + SPECIES_PHANPY, + SPECIES_PICHU, + SPECIES_PIDGEOT, + SPECIES_PIDGEOTTO, + SPECIES_PIDGEY, + SPECIES_PIKACHU, + SPECIES_PILOSWINE, + SPECIES_PINECO, + SPECIES_PINSIR, + SPECIES_POLITOED, + SPECIES_POLIWAG, + SPECIES_POLIWHIRL, + SPECIES_POLIWRATH, + SPECIES_PONYTA, + SPECIES_PORYGON, + SPECIES_PORYGON2, + SPECIES_PRIMEAPE, + SPECIES_PSYDUCK, + SPECIES_PUPITAR, + SPECIES_QUAGSIRE, + SPECIES_QUILAVA, + SPECIES_QWILFISH, + SPECIES_RAICHU, + SPECIES_RAIKOU, + SPECIES_RAPIDASH, + SPECIES_RATICATE, + SPECIES_RATTATA, + SPECIES_REMORAID, + SPECIES_RHYDON, + SPECIES_RHYHORN, + SPECIES_SANDSHREW, + SPECIES_SANDSLASH, + SPECIES_SCIZOR, + SPECIES_SCYTHER, + SPECIES_SEADRA, + SPECIES_SEAKING, + SPECIES_SEEL, + SPECIES_SENTRET, + SPECIES_SHELLDER, + SPECIES_SHUCKLE, + SPECIES_SKARMORY, + SPECIES_SKIPLOOM, + SPECIES_SLOWBRO, + SPECIES_SLOWKING, + SPECIES_SLOWPOKE, + SPECIES_SLUGMA, + SPECIES_SMEARGLE, + SPECIES_SMOOCHUM, + SPECIES_SNEASEL, + SPECIES_SNORLAX, + SPECIES_SNUBBULL, + SPECIES_SPEAROW, + SPECIES_SPINARAK, + SPECIES_SQUIRTLE, + SPECIES_STANTLER, + SPECIES_STARMIE, + SPECIES_STARYU, + SPECIES_STEELIX, + SPECIES_SUDOWOODO, + SPECIES_SUICUNE, + SPECIES_SUNFLORA, + SPECIES_SUNKERN, + SPECIES_SWINUB, + SPECIES_TANGELA, + SPECIES_TAUROS, + SPECIES_TEDDIURSA, + SPECIES_TENTACOOL, + SPECIES_TENTACRUEL, + SPECIES_TOGEPI, + SPECIES_TOGETIC, + SPECIES_TOTODILE, + SPECIES_TYPHLOSION, + SPECIES_TYRANITAR, + SPECIES_TYROGUE, + SPECIES_UMBREON, + SPECIES_UNOWN, + SPECIES_URSARING, + SPECIES_VAPOREON, + SPECIES_VENOMOTH, + SPECIES_VENONAT, + SPECIES_VENUSAUR, + SPECIES_VICTREEBEL, + SPECIES_VILEPLUME, + SPECIES_VOLTORB, + SPECIES_VULPIX, + SPECIES_WARTORTLE, + SPECIES_WEEDLE, + SPECIES_WEEPINBELL, + SPECIES_WEEZING, + SPECIES_WIGGLYTUFF, + SPECIES_WOBBUFFET, + SPECIES_WOOPER, + SPECIES_XATU, + SPECIES_YANMA, + SPECIES_ZAPDOS, + SPECIES_ZUBAT, +}; diff --git a/src/data/easy_chat/easy_chat_group_speech.h b/src/data/easy_chat/easy_chat_group_speech.h new file mode 100755 index 000000000..013b454c0 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_speech.h @@ -0,0 +1,363 @@ +const u8 gEasyChatWord_Listen[] = _("LISTEN"); +const u8 gEasyChatWord_NotVery[] = _("NOT VERY"); +const u8 gEasyChatWord_Mean[] = _("MEAN"); +const u8 gEasyChatWord_Lie[] = _("LIE"); +const u8 gEasyChatWord_Lay[] = _("LAY"); +const u8 gEasyChatWord_Recommend[] = _("RECOMMEND"); +const u8 gEasyChatWord_Nitwit[] = _("NITWIT"); +const u8 gEasyChatWord_Quite[] = _("QUITE"); +const u8 gEasyChatWord_From[] = _("FROM"); +const u8 gEasyChatWord_Feeling[] = _("FEELING"); +const u8 gEasyChatWord_But[] = _("BUT"); +const u8 gEasyChatWord_However[] = _("HOWEVER"); +const u8 gEasyChatWord_Case[] = _("CASE"); +const u8 gEasyChatWord_The[] = _("THE"); +const u8 gEasyChatWord_Miss[] = _("MISS"); +const u8 gEasyChatWord_How[] = _("HOW"); +const u8 gEasyChatWord_Hit[] = _("HIT"); +const u8 gEasyChatWord_Enough[] = _("ENOUGH"); +const u8 gEasyChatWord_ALot[] = _("A LOT"); +const u8 gEasyChatWord_ALittle[] = _("A LITTLE"); +const u8 gEasyChatWord_Absolutely[] = _("ABSOLUTELY"); +const u8 gEasyChatWord_And[] = _("AND"); +const u8 gEasyChatWord_Only[] = _("ONLY"); +const u8 gEasyChatWord_Around[] = _("AROUND"); +const u8 gEasyChatWord_Probably[] = _("PROBABLY"); +const u8 gEasyChatWord_If[] = _("IF"); +const u8 gEasyChatWord_Very[] = _("VERY"); +const u8 gEasyChatWord_ATinyBit[] = _("A TINY BIT"); +const u8 gEasyChatWord_Wild[] = _("WILD"); +const u8 gEasyChatWord_Thats[] = _("THAT'S"); +const u8 gEasyChatWord_Just[] = _("JUST"); +const u8 gEasyChatWord_EvenSo[] = _("EVEN SO,"); +const u8 gEasyChatWord_MustBe[] = _("MUST BE"); +const u8 gEasyChatWord_Naturally[] = _("NATURALLY"); +const u8 gEasyChatWord_ForNow[] = _("FOR NOW,"); +const u8 gEasyChatWord_Understood[] = _("UNDERSTOOD"); +const u8 gEasyChatWord_Joking[] = _("JOKING"); +const u8 gEasyChatWord_Ready[] = _("READY"); +const u8 gEasyChatWord_Something[] = _("SOMETHING"); +const u8 gEasyChatWord_Somehow[] = _("SOMEHOW"); +const u8 gEasyChatWord_Although[] = _("ALTHOUGH"); +const u8 gEasyChatWord_Also[] = _("ALSO"); +const u8 gEasyChatWord_Perfect[] = _("PERFECT"); +const u8 gEasyChatWord_AsMuchAs[] = _("AS MUCH AS"); +const u8 gEasyChatWord_Really[] = _("REALLY"); +const u8 gEasyChatWord_Truly[] = _("TRULY"); +const u8 gEasyChatWord_Seriously[] = _("SERIOUSLY"); +const u8 gEasyChatWord_Totally[] = _("TOTALLY"); +const u8 gEasyChatWord_Until[] = _("UNTIL"); +const u8 gEasyChatWord_AsIf[] = _("AS IF"); +const u8 gEasyChatWord_Mood[] = _("MOOD"); +const u8 gEasyChatWord_Rather[] = _("RATHER"); +const u8 gEasyChatWord_Awfully[] = _("AWFULLY"); +const u8 gEasyChatWord_Mode[] = _("MODE"); +const u8 gEasyChatWord_More[] = _("MORE"); +const u8 gEasyChatWord_TooLate[] = _("TOO LATE"); +const u8 gEasyChatWord_Finally[] = _("FINALLY"); +const u8 gEasyChatWord_Any[] = _("ANY"); +const u8 gEasyChatWord_Instead[] = _("INSTEAD"); +const u8 gEasyChatWord_Fantastic[] = _("FANTASTIC"); + +const struct EasyChatWordInfo gEasyChatGroup_Speech[] = { + { + .text = gEasyChatWord_Listen, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_NotVery, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mean, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lie, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lay, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Recommend, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Nitwit, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Quite, + .alphabeticalOrder = 57, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_From, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Feeling, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_But, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_However, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Case, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_The, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Miss, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_How, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hit, + .alphabeticalOrder = 59, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Enough, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ALot, + .alphabeticalOrder = 56, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ALittle, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Absolutely, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_And, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Only, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Around, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Probably, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_If, + .alphabeticalOrder = 58, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Very, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ATinyBit, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wild, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Thats, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Just, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_EvenSo, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_MustBe, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Naturally, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ForNow, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Understood, + .alphabeticalOrder = 54, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Joking, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ready, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Something, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Somehow, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Although, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Also, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Perfect, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_AsMuchAs, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Really, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Truly, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Seriously, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Totally, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Until, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_AsIf, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mood, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rather, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Awfully, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mode, + .alphabeticalOrder = 55, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_More, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_TooLate, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Finally, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Any, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Instead, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fantastic, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_status.h b/src/data/easy_chat/easy_chat_group_status.h new file mode 100755 index 000000000..d4958c3ad --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_status.h @@ -0,0 +1,657 @@ +const u8 gEasyChatWord_Dark[] = _("DARK"); +const u8 gEasyChatWord_Stench[] = _("STENCH"); +const u8 gEasyChatWord_ThickFat[] = _("THICK FAT"); +const u8 gEasyChatWord_RainDish[] = _("RAIN DISH"); +const u8 gEasyChatWord_Drizzle[] = _("DRIZZLE"); +const u8 gEasyChatWord_ArenaTrap[] = _("ARENA TRAP"); +const u8 gEasyChatWord_Intimidate[] = _("INTIMIDATE"); +const u8 gEasyChatWord_RockHead[] = _("ROCK HEAD"); +const u8 gEasyChatWord_Color[] = _("COLOR"); +const u8 gEasyChatWord_AltColor[] = _("ALT. COLOR"); +const u8 gEasyChatWord_Rock[] = _("ROCK"); +const u8 gEasyChatWord_Beautiful[] = _("BEAUTIFUL"); +const u8 gEasyChatWord_Beauty[] = _("BEAUTY"); +const u8 gEasyChatWord_AirLock[] = _("AIR LOCK"); +const u8 gEasyChatWord_Psychic[] = _("PSYCHIC"); +const u8 gEasyChatWord_HyperCutter[] = _("HYPER CUTTER"); +const u8 gEasyChatWord_Fighting[] = _("FIGHTING"); +const u8 gEasyChatWord_ShadowTag[] = _("SHADOW TAG"); +const u8 gEasyChatWord_Smart[] = _("SMART"); +const u8 gEasyChatWord_Smartness[] = _("SMARTNESS"); +const u8 gEasyChatWord_SpeedBoost[] = _("SPEED BOOST"); +const u8 gEasyChatWord_Cool[] = _("COOL"); +const u8 gEasyChatWord_Coolness[] = _("COOLNESS"); +const u8 gEasyChatWord_BattleArmor[] = _("BATTLE ARMOR"); +const u8 gEasyChatWord_Cute[] = _("CUTE"); +const u8 gEasyChatWord_Cuteness[] = _("CUTENESS"); +const u8 gEasyChatWord_Sturdy[] = _("STURDY"); +const u8 gEasyChatWord_SuctionCups[] = _("SUCTION CUPS"); +const u8 gEasyChatWord_Grass[] = _("GRASS"); +const u8 gEasyChatWord_ClearBody[] = _("CLEAR BODY"); +const u8 gEasyChatWord_Torrent[] = _("TORRENT"); +const u8 gEasyChatWord_Ghost[] = _("GHOST"); +const u8 gEasyChatWord_Ice[] = _("ICE"); +const u8 gEasyChatWord_Guts[] = _("GUTS"); +const u8 gEasyChatWord_RoughSkin[] = _("ROUGH SKIN"); +const u8 gEasyChatWord_ShellArmor[] = _("SHELL ARMOR"); +const u8 gEasyChatWord_NaturalCure[] = _("NATURAL CURE"); +const u8 gEasyChatWord_Damp[] = _("DAMP"); +const u8 gEasyChatWord_Ground[] = _("GROUND"); +const u8 gEasyChatWord_Limber[] = _("LIMBER"); +const u8 gEasyChatWord_MagnetPull[] = _("MAGNET PULL"); +const u8 gEasyChatWord_WhiteSmoke[] = _("WHITE SMOKE"); +const u8 gEasyChatWord_Synchronize[] = _("SYNCHRONIZE"); +const u8 gEasyChatWord_Overgrow[] = _("OVERGROW"); +const u8 gEasyChatWord_SwiftSwim[] = _("SWIFT SWIM"); +const u8 gEasyChatWord_SandStream[] = _("SAND STREAM"); +const u8 gEasyChatWord_SandVeil[] = _("SAND VEIL"); +const u8 gEasyChatWord_KeenEye[] = _("KEEN EYE"); +const u8 gEasyChatWord_InnerFocus[] = _("INNER FOCUS"); +const u8 gEasyChatWord_Static[] = _("STATIC"); +const u8 gEasyChatWord_Type[] = _("TYPE"); +const u8 gEasyChatWord_Tough[] = _("TOUGH"); +const u8 gEasyChatWord_Toughness[] = _("TOUGHNESS"); +const u8 gEasyChatWord_ShedSkin[] = _("SHED SKIN"); +const u8 gEasyChatWord_HugePower[] = _("HUGE POWER"); +const u8 gEasyChatWord_VoltAbsorb[] = _("VOLT ABSORB"); +const u8 gEasyChatWord_WaterAbsorb[] = _("WATER ABSORB"); +const u8 gEasyChatWord_Electric[] = _("ELECTRIC"); +const u8 gEasyChatWord_Forecast[] = _("FORECAST"); +const u8 gEasyChatWord_SereneGrace[] = _("SERENE GRACE"); +const u8 gEasyChatWord_Poison[] = _("POISON"); +const u8 gEasyChatWord_PoisonPoint[] = _("POISON POINT"); +const u8 gEasyChatWord_Dragon[] = _("DRAGON"); +const u8 gEasyChatWord_Trace[] = _("TRACE"); +const u8 gEasyChatWord_Oblivious[] = _("OBLIVIOUS"); +const u8 gEasyChatWord_Truant[] = _("TRUANT"); +const u8 gEasyChatWord_RunAway[] = _("RUN AWAY"); +const u8 gEasyChatWord_StickyHold[] = _("STICKY HOLD"); +const u8 gEasyChatWord_CloudNine[] = _("CLOUD NINE"); +const u8 gEasyChatWord_Normal[] = _("NORMAL"); +const u8 gEasyChatWord_Steel[] = _("STEEL"); +const u8 gEasyChatWord_Illuminate[] = _("ILLUMINATE"); +const u8 gEasyChatWord_EarlyBird[] = _("EARLY BIRD"); +const u8 gEasyChatWord_Hustle[] = _("HUSTLE"); +const u8 gEasyChatWord_Shine[] = _("SHINE"); +const u8 gEasyChatWord_Flying[] = _("FLYING"); +const u8 gEasyChatWord_Drought[] = _("DROUGHT"); +const u8 gEasyChatWord_Lightningrod[] = _("LIGHTNINGROD"); +const u8 gEasyChatWord_Compoundeyes[] = _("COMPOUNDEYES"); +const u8 gEasyChatWord_MarvelScale[] = _("MARVEL SCALE"); +const u8 gEasyChatWord_WonderGuard[] = _("WONDER GUARD"); +const u8 gEasyChatWord_Insomnia[] = _("INSOMNIA"); +const u8 gEasyChatWord_Levitate[] = _("LEVITATE"); +const u8 gEasyChatWord_Plus[] = _("PLUS"); +const u8 gEasyChatWord_Pressure[] = _("PRESSURE"); +const u8 gEasyChatWord_LiquidOoze[] = _("LIQUID OOZE"); +const u8 gEasyChatWord_ColorChange[] = _("COLOR CHANGE"); +const u8 gEasyChatWord_Soundproof[] = _("SOUNDPROOF"); +const u8 gEasyChatWord_EffectSpore[] = _("EFFECT SPORE"); +const u8 gEasyChatWord_Pkrs[] = _("{PK}RS"); +const u8 gEasyChatWord_Fire[] = _("FIRE"); +const u8 gEasyChatWord_FlameBody[] = _("FLAME BODY"); +const u8 gEasyChatWord_Minus[] = _("MINUS"); +const u8 gEasyChatWord_OwnTempo[] = _("OWN TEMPO"); +const u8 gEasyChatWord_MagmaArmor[] = _("MAGMA ARMOR"); +const u8 gEasyChatWord_Water[] = _("WATER"); +const u8 gEasyChatWord_WaterVeil[] = _("WATER VEIL"); +const u8 gEasyChatWord_Bug[] = _("BUG"); +const u8 gEasyChatWord_Swarm[] = _("SWARM"); +const u8 gEasyChatWord_CuteCharm[] = _("CUTE CHARM"); +const u8 gEasyChatWord_Immunity[] = _("IMMUNITY"); +const u8 gEasyChatWord_Blaze[] = _("BLAZE"); +const u8 gEasyChatWord_Pickup[] = _("PICKUP"); +const u8 gEasyChatWord_Pattern[] = _("PATTERN"); +const u8 gEasyChatWord_FlashFire[] = _("FLASH FIRE"); +const u8 gEasyChatWord_VitalSpirit[] = _("VITAL SPIRIT"); +const u8 gEasyChatWord_Chlorophyll[] = _("CHLOROPHYLL"); +const u8 gEasyChatWord_PurePower[] = _("PURE POWER"); +const u8 gEasyChatWord_ShieldDust[] = _("SHIELD DUST"); + +const struct EasyChatWordInfo gEasyChatGroup_Status[] = { + { + .text = gEasyChatWord_Dark, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Stench, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ThickFat, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_RainDish, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Drizzle, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ArenaTrap, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Intimidate, + .alphabeticalOrder = 101, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_RockHead, + .alphabeticalOrder = 97, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Color, + .alphabeticalOrder = 106, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_AltColor, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Rock, + .alphabeticalOrder = 68, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Beautiful, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Beauty, + .alphabeticalOrder = 86, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_AirLock, + .alphabeticalOrder = 78, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Psychic, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HyperCutter, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fighting, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ShadowTag, + .alphabeticalOrder = 99, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Smart, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Smartness, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SpeedBoost, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cool, + .alphabeticalOrder = 62, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Coolness, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_BattleArmor, + .alphabeticalOrder = 76, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cute, + .alphabeticalOrder = 72, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cuteness, + .alphabeticalOrder = 88, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sturdy, + .alphabeticalOrder = 57, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SuctionCups, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Grass, + .alphabeticalOrder = 90, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ClearBody, + .alphabeticalOrder = 91, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Torrent, + .alphabeticalOrder = 104, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ghost, + .alphabeticalOrder = 75, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ice, + .alphabeticalOrder = 58, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Guts, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_RoughSkin, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ShellArmor, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_NaturalCure, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Damp, + .alphabeticalOrder = 54, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ground, + .alphabeticalOrder = 73, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Limber, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_MagnetPull, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WhiteSmoke, + .alphabeticalOrder = 71, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Synchronize, + .alphabeticalOrder = 100, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Overgrow, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SwiftSwim, + .alphabeticalOrder = 81, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SandStream, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SandVeil, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_KeenEye, + .alphabeticalOrder = 82, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_InnerFocus, + .alphabeticalOrder = 77, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Static, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Type, + .alphabeticalOrder = 85, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tough, + .alphabeticalOrder = 94, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Toughness, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ShedSkin, + .alphabeticalOrder = 79, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HugePower, + .alphabeticalOrder = 92, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_VoltAbsorb, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WaterAbsorb, + .alphabeticalOrder = 69, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Electric, + .alphabeticalOrder = 64, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Forecast, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SereneGrace, + .alphabeticalOrder = 93, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Poison, + .alphabeticalOrder = 103, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_PoisonPoint, + .alphabeticalOrder = 102, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Dragon, + .alphabeticalOrder = 89, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Trace, + .alphabeticalOrder = 83, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Oblivious, + .alphabeticalOrder = 60, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Truant, + .alphabeticalOrder = 61, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_RunAway, + .alphabeticalOrder = 84, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_StickyHold, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_CloudNine, + .alphabeticalOrder = 107, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Normal, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Steel, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Illuminate, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_EarlyBird, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hustle, + .alphabeticalOrder = 66, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Shine, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Flying, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Drought, + .alphabeticalOrder = 59, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lightningrod, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Compoundeyes, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_MarvelScale, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WonderGuard, + .alphabeticalOrder = 108, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Insomnia, + .alphabeticalOrder = 74, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Levitate, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Plus, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pressure, + .alphabeticalOrder = 87, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_LiquidOoze, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ColorChange, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Soundproof, + .alphabeticalOrder = 70, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_EffectSpore, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pkrs, + .alphabeticalOrder = 67, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fire, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_FlameBody, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Minus, + .alphabeticalOrder = 98, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_OwnTempo, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_MagmaArmor, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Water, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WaterVeil, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Bug, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Swarm, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_CuteCharm, + .alphabeticalOrder = 63, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Immunity, + .alphabeticalOrder = 65, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Blaze, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pickup, + .alphabeticalOrder = 105, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pattern, + .alphabeticalOrder = 55, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_FlashFire, + .alphabeticalOrder = 95, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_VitalSpirit, + .alphabeticalOrder = 56, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Chlorophyll, + .alphabeticalOrder = 96, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_PurePower, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ShieldDust, + .alphabeticalOrder = 80, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_time.h b/src/data/easy_chat/easy_chat_group_time.h new file mode 100755 index 000000000..691dde70c --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_time.h @@ -0,0 +1,273 @@ +const u8 gEasyChatWord_Fall[] = _("FALL"); +const u8 gEasyChatWord_Morning[] = _("MORNING"); +const u8 gEasyChatWord_Tomorrow[] = _("TOMORROW"); +const u8 gEasyChatWord_Last[] = _("LAST"); +const u8 gEasyChatWord_Day[] = _("DAY"); +const u8 gEasyChatWord_Sometime[] = _("SOMETIME"); +const u8 gEasyChatWord_Always[] = _("ALWAYS"); +const u8 gEasyChatWord_Current[] = _("CURRENT"); +const u8 gEasyChatWord_Forever[] = _("FOREVER"); +const u8 gEasyChatWord_Days[] = _("DAYS"); +const u8 gEasyChatWord_End[] = _("END"); +const u8 gEasyChatWord_Tuesday[] = _("TUESDAY"); +const u8 gEasyChatWord_Yesterday[] = _("YESTERDAY"); +const u8 gEasyChatWord_Today[] = _("TODAY"); +const u8 gEasyChatWord_Friday[] = _("FRIDAY"); +const u8 gEasyChatWord_Monday[] = _("MONDAY"); +const u8 gEasyChatWord_Later[] = _("LATER"); +const u8 gEasyChatWord_Earlier[] = _("EARLIER"); +const u8 gEasyChatWord_Another[] = _("ANOTHER"); +const u8 gEasyChatWord_Time[] = _("TIME"); +const u8 gEasyChatWord_Finish[] = _("FINISH"); +const u8 gEasyChatWord_Wednesday[] = _("WEDNESDAY"); +const u8 gEasyChatWord_Soon[] = _("SOON"); +const u8 gEasyChatWord_Start[] = _("START"); +const u8 gEasyChatWord_Month[] = _("MONTH"); +const u8 gEasyChatWord_Stop[] = _("STOP"); +const u8 gEasyChatWord_Now[] = _("NOW"); +const u8 gEasyChatWord_Final[] = _("FINAL"); +const u8 gEasyChatWord_Next[] = _("NEXT"); +const u8 gEasyChatWord_Age[] = _("AGE"); +const u8 gEasyChatWord_Saturday[] = _("SATURDAY"); +const u8 gEasyChatWord_Summer[] = _("SUMMER"); +const u8 gEasyChatWord_Sunday[] = _("SUNDAY"); +const u8 gEasyChatWord_Beginning[] = _("BEGINNING"); +const u8 gEasyChatWord_Spring[] = _("SPRING"); +const u8 gEasyChatWord_Daytime[] = _("DAYTIME"); +const u8 gEasyChatWord_Winter[] = _("WINTER"); +const u8 gEasyChatWord_Daily[] = _("DAILY"); +const u8 gEasyChatWord_Olden[] = _("OLDEN"); +const u8 gEasyChatWord_Almost[] = _("ALMOST"); +const u8 gEasyChatWord_Nearly[] = _("NEARLY"); +const u8 gEasyChatWord_Thursday[] = _("THURSDAY"); +const u8 gEasyChatWord_Nighttime[] = _("NIGHTTIME"); +const u8 gEasyChatWord_Night[] = _("NIGHT"); +const u8 gEasyChatWord_Week[] = _("WEEK"); + +const struct EasyChatWordInfo gEasyChatGroup_Time[] = { + { + .text = gEasyChatWord_Fall, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Morning, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tomorrow, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Last, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Day, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sometime, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Always, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Current, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Forever, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Days, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_End, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tuesday, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Yesterday, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Today, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Friday, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Monday, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Later, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Earlier, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Another, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Time, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Finish, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wednesday, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Soon, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Start, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Month, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Stop, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Now, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Final, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Next, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Age, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Saturday, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Summer, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sunday, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Beginning, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Spring, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Daytime, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Winter, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Daily, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Olden, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Almost, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Nearly, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Thursday, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Nighttime, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Night, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Week, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_trainer.h b/src/data/easy_chat/easy_chat_group_trainer.h new file mode 100755 index 000000000..a4e1ddfd6 --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_trainer.h @@ -0,0 +1,165 @@ +const u8 gEasyChatWord_IChooseYou[] = _("I CHOOSE YOU"); +const u8 gEasyChatWord_Gotcha[] = _("GOTCHA"); +const u8 gEasyChatWord_Trade[] = _("TRADE"); +const u8 gEasyChatWord_Sapphire[] = _("SAPPHIRE"); +const u8 gEasyChatWord_Evolve[] = _("EVOLVE"); +const u8 gEasyChatWord_Encyclopedia[] = _("ENCYCLOPEDIA"); +const u8 gEasyChatWord_Nature[] = _("NATURE"); +const u8 gEasyChatWord_Center[] = _("CENTER"); +const u8 gEasyChatWord_Egg[] = _("EGG"); +const u8 gEasyChatWord_Link[] = _("LINK"); +const u8 gEasyChatWord_SpAbility[] = _("SP. ABILITY"); +const u8 gEasyChatWord_Trainer[] = _("TRAINER"); +const u8 gEasyChatWord_Version[] = _("VERSION"); +const u8 gEasyChatWord_Pokenav[] = _("POKéNAV"); +const u8 gEasyChatWord_Pokemon[] = _("POKéMON"); +const u8 gEasyChatWord_Get[] = _("GET"); +const u8 gEasyChatWord_Pokedex[] = _("POKéDEX"); +const u8 gEasyChatWord_Ruby[] = _("RUBY"); +const u8 gEasyChatWord_Level[] = _("LEVEL"); +const u8 gEasyChatWord_Red[] = _("RED"); +const u8 gEasyChatWord_Green[] = _("GREEN"); +const u8 gEasyChatWord_Bag[] = _("BAG"); +const u8 gEasyChatWord_Flame[] = _("FLAME"); +const u8 gEasyChatWord_Gold[] = _("GOLD"); +const u8 gEasyChatWord_Leaf[] = _("LEAF"); +const u8 gEasyChatWord_Silver[] = _("SILVER"); +const u8 gEasyChatWord_Emerald[] = _("EMERALD"); + +const struct EasyChatWordInfo gEasyChatGroup_Trainer[] = { + { + .text = gEasyChatWord_IChooseYou, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Gotcha, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Trade, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sapphire, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Evolve, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Encyclopedia, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Nature, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Center, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Egg, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Link, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SpAbility, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Trainer, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Version, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pokenav, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pokemon, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Get, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Pokedex, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ruby, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Level, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Red, + .alphabeticalOrder = 19, + .enabled = FALSE, + }, + { + .text = gEasyChatWord_Green, + .alphabeticalOrder = 17, + .enabled = FALSE, + }, + { + .text = gEasyChatWord_Bag, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Flame, + .alphabeticalOrder = 25, + .enabled = FALSE, + }, + { + .text = gEasyChatWord_Gold, + .alphabeticalOrder = 10, + .enabled = FALSE, + }, + { + .text = gEasyChatWord_Leaf, + .alphabeticalOrder = 2, + .enabled = FALSE, + }, + { + .text = gEasyChatWord_Silver, + .alphabeticalOrder = 11, + .enabled = FALSE, + }, + { + .text = gEasyChatWord_Emerald, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_trendy_saying.h b/src/data/easy_chat/easy_chat_group_trendy_saying.h new file mode 100755 index 000000000..46ce1201a --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_trendy_saying.h @@ -0,0 +1,201 @@ +const u8 gEasyChatWord_KthxBye[] = _("KTHX, BYE."); +const u8 gEasyChatWord_YesSirExcl[] = _("YES, SIR!"); +const u8 gEasyChatWord_AvantGarde[] = _("AVANT GARDE"); +const u8 gEasyChatWord_Couple[] = _("COUPLE"); +const u8 gEasyChatWord_MuchObliged[] = _("MUCH OBLIGED"); +const u8 gEasyChatWord_YeehawExcl[] = _("YEEHAW!"); +const u8 gEasyChatWord_Mega[] = _("MEGA"); +const u8 gEasyChatWord_1HitKOExcl[] = _("1-HIT KO!"); +const u8 gEasyChatWord_Destiny[] = _("DESTINY"); +const u8 gEasyChatWord_Cancel[] = _("CANCEL"); +const u8 gEasyChatWord_New[] = _("NEW"); +const u8 gEasyChatWord_Flatten[] = _("FLATTEN"); +const u8 gEasyChatWord_Kidding[] = _("KIDDING"); +const u8 gEasyChatWord_Loser[] = _("LOSER"); +const u8 gEasyChatWord_Losing[] = _("LOSING"); +const u8 gEasyChatWord_Happening[] = _("HAPPENING"); +const u8 gEasyChatWord_HipAnd[] = _("HIP AND"); +const u8 gEasyChatWord_Shake[] = _("SHAKE"); +const u8 gEasyChatWord_Shady[] = _("SHADY"); +const u8 gEasyChatWord_Upbeat[] = _("UPBEAT"); +const u8 gEasyChatWord_Modern[] = _("MODERN"); +const u8 gEasyChatWord_SmellYa[] = _("SMELL YA"); +const u8 gEasyChatWord_Bang[] = _("BANG"); +const u8 gEasyChatWord_Knockout[] = _("KNOCKOUT"); +const u8 gEasyChatWord_Hassle[] = _("HASSLE"); +const u8 gEasyChatWord_Winner[] = _("WINNER"); +const u8 gEasyChatWord_Fever[] = _("FEVER"); +const u8 gEasyChatWord_Wannabe[] = _("WANNABE"); +const u8 gEasyChatWord_Baby[] = _("BABY"); +const u8 gEasyChatWord_Heart[] = _("HEART"); +const u8 gEasyChatWord_Old[] = _("OLD"); +const u8 gEasyChatWord_Young[] = _("YOUNG"); +const u8 gEasyChatWord_Ugly[] = _("UGLY"); + +const struct EasyChatWordInfo gEasyChatGroup_TrendySaying[] = { + { + .text = gEasyChatWord_KthxBye, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_YesSirExcl, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_AvantGarde, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Couple, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_MuchObliged, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_YeehawExcl, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mega, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_1HitKOExcl, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Destiny, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cancel, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_New, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Flatten, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Kidding, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Loser, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Losing, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Happening, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_HipAnd, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Shake, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Shady, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Upbeat, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Modern, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_SmellYa, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Bang, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Knockout, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hassle, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Winner, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fever, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wannabe, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Baby, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Heart, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Old, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Young, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ugly, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_group_voices.h b/src/data/easy_chat/easy_chat_group_voices.h new file mode 100755 index 000000000..6dad874ec --- /dev/null +++ b/src/data/easy_chat/easy_chat_group_voices.h @@ -0,0 +1,381 @@ +const u8 gEasyChatWord_Excl[] = _("!"); +const u8 gEasyChatWord_ExclExcl[] = _("!!"); +const u8 gEasyChatWord_QuesExcl[] = _("?!"); +const u8 gEasyChatWord_Ques[] = _("?"); +const u8 gEasyChatWord_Ellipsis[] = _("…"); +const u8 gEasyChatWord_EllipsisExcl[] = _("…!"); +const u8 gEasyChatWord_EllipsisEllipsisEllipsis[] = _("………"); +const u8 gEasyChatWord_Dash[] = _("-"); +const u8 gEasyChatWord_DashDashDash[] = _("- - -"); +const u8 gEasyChatWord_UhOh[] = _("UH-OH"); +const u8 gEasyChatWord_Waaah[] = _("WAAAH"); +const u8 gEasyChatWord_Ahaha[] = _("AHAHA"); +const u8 gEasyChatWord_OhQues[] = _("OH?"); +const u8 gEasyChatWord_Nope[] = _("NOPE"); +const u8 gEasyChatWord_Urgh[] = _("URGH"); +const u8 gEasyChatWord_Hmm[] = _("HMM"); +const u8 gEasyChatWord_Whoah[] = _("WHOAH"); +const u8 gEasyChatWord_WroooaarExcl[] = _("WROOOAAR!"); +const u8 gEasyChatWord_Wow[] = _("WOW"); +const u8 gEasyChatWord_Giggle[] = _("GIGGLE"); +const u8 gEasyChatWord_Sigh[] = _("SIGH"); +const u8 gEasyChatWord_Unbelievable[] = _("UNBELIEVABLE"); +const u8 gEasyChatWord_Cries[] = _("CRIES"); +const u8 gEasyChatWord_Agree[] = _("AGREE"); +const u8 gEasyChatWord_EhQues[] = _("EH?"); +const u8 gEasyChatWord_Cry[] = _("CRY"); +const u8 gEasyChatWord_Ehehe[] = _("EHEHE"); +const u8 gEasyChatWord_OiOiOi[] = _("OI, OI, OI"); +const u8 gEasyChatWord_OhYeah[] = _("OH, YEAH"); +const u8 gEasyChatWord_Oh[] = _("OH"); +const u8 gEasyChatWord_Oops[] = _("OOPS"); +const u8 gEasyChatWord_Shocked[] = _("SHOCKED"); +const u8 gEasyChatWord_Eek[] = _("EEK"); +const u8 gEasyChatWord_Graaah[] = _("GRAAAH"); +const u8 gEasyChatWord_Gwahahaha[] = _("GWAHAHAHA"); +const u8 gEasyChatWord_Way[] = _("WAY"); +const u8 gEasyChatWord_Tch[] = _("TCH"); +const u8 gEasyChatWord_Hehe[] = _("HEHE"); +const u8 gEasyChatWord_Hah[] = _("HAH"); +const u8 gEasyChatWord_Yup[] = _("YUP"); +const u8 gEasyChatWord_Hahaha[] = _("HAHAHA"); +const u8 gEasyChatWord_Aiyeeh[] = _("AIYEEH"); +const u8 gEasyChatWord_Hiyah[] = _("HIYAH"); +const u8 gEasyChatWord_Fufufu[] = _("FUFUFU"); +const u8 gEasyChatWord_Lol[] = _("LOL"); +const u8 gEasyChatWord_Snort[] = _("SNORT"); +const u8 gEasyChatWord_Humph[] = _("HUMPH"); +const u8 gEasyChatWord_Hehehe[] = _("HEHEHE"); +const u8 gEasyChatWord_Heh[] = _("HEH"); +const u8 gEasyChatWord_Hohoho[] = _("HOHOHO"); +const u8 gEasyChatWord_UhHuh[] = _("UH-HUH"); +const u8 gEasyChatWord_OhDear[] = _("OH, DEAR"); +const u8 gEasyChatWord_Arrgh[] = _("ARRGH"); +const u8 gEasyChatWord_Mufufu[] = _("MUFUFU"); +const u8 gEasyChatWord_Mmm[] = _("MMM"); +const u8 gEasyChatWord_OhKay[] = _("OH-KAY"); +const u8 gEasyChatWord_Okay[] = _("OKAY"); +const u8 gEasyChatWord_Lalala[] = _("LALALA"); +const u8 gEasyChatWord_Yay[] = _("YAY"); +const u8 gEasyChatWord_Aww[] = _("AWW"); +const u8 gEasyChatWord_Wowee[] = _("WOWEE"); +const u8 gEasyChatWord_Gwah[] = _("GWAH"); +const u8 gEasyChatWord_Wahahaha[] = _("WAHAHAHA"); + +const struct EasyChatWordInfo gEasyChatGroup_Voices[] = { + { + .text = gEasyChatWord_Excl, + .alphabeticalOrder = 0, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_ExclExcl, + .alphabeticalOrder = 1, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_QuesExcl, + .alphabeticalOrder = 7, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ques, + .alphabeticalOrder = 8, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ellipsis, + .alphabeticalOrder = 4, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_EllipsisExcl, + .alphabeticalOrder = 5, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_EllipsisEllipsisEllipsis, + .alphabeticalOrder = 6, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Dash, + .alphabeticalOrder = 3, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_DashDashDash, + .alphabeticalOrder = 2, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_UhOh, + .alphabeticalOrder = 23, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Waaah, + .alphabeticalOrder = 11, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ahaha, + .alphabeticalOrder = 41, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_OhQues, + .alphabeticalOrder = 52, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Nope, + .alphabeticalOrder = 59, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Urgh, + .alphabeticalOrder = 22, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hmm, + .alphabeticalOrder = 25, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Whoah, + .alphabeticalOrder = 32, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_WroooaarExcl, + .alphabeticalOrder = 24, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wow, + .alphabeticalOrder = 26, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Giggle, + .alphabeticalOrder = 43, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Sigh, + .alphabeticalOrder = 19, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Unbelievable, + .alphabeticalOrder = 33, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cries, + .alphabeticalOrder = 61, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Agree, + .alphabeticalOrder = 34, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_EhQues, + .alphabeticalOrder = 38, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Cry, + .alphabeticalOrder = 40, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Ehehe, + .alphabeticalOrder = 48, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_OiOiOi, + .alphabeticalOrder = 37, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_OhYeah, + .alphabeticalOrder = 47, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Oh, + .alphabeticalOrder = 42, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Oops, + .alphabeticalOrder = 15, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Shocked, + .alphabeticalOrder = 49, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Eek, + .alphabeticalOrder = 46, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Graaah, + .alphabeticalOrder = 57, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Gwahahaha, + .alphabeticalOrder = 44, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Way, + .alphabeticalOrder = 54, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Tch, + .alphabeticalOrder = 53, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hehe, + .alphabeticalOrder = 13, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hah, + .alphabeticalOrder = 29, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Yup, + .alphabeticalOrder = 51, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hahaha, + .alphabeticalOrder = 28, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Aiyeeh, + .alphabeticalOrder = 55, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hiyah, + .alphabeticalOrder = 12, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Fufufu, + .alphabeticalOrder = 27, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lol, + .alphabeticalOrder = 56, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Snort, + .alphabeticalOrder = 30, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Humph, + .alphabeticalOrder = 31, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hehehe, + .alphabeticalOrder = 20, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Heh, + .alphabeticalOrder = 45, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Hohoho, + .alphabeticalOrder = 36, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_UhHuh, + .alphabeticalOrder = 50, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_OhDear, + .alphabeticalOrder = 9, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Arrgh, + .alphabeticalOrder = 21, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mufufu, + .alphabeticalOrder = 14, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Mmm, + .alphabeticalOrder = 10, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_OhKay, + .alphabeticalOrder = 62, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Okay, + .alphabeticalOrder = 35, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Lalala, + .alphabeticalOrder = 16, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Yay, + .alphabeticalOrder = 18, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Aww, + .alphabeticalOrder = 60, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wowee, + .alphabeticalOrder = 17, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Gwah, + .alphabeticalOrder = 58, + .enabled = TRUE, + }, + { + .text = gEasyChatWord_Wahahaha, + .alphabeticalOrder = 39, + .enabled = TRUE, + }, +}; diff --git a/src/data/easy_chat/easy_chat_groups.h b/src/data/easy_chat/easy_chat_groups.h new file mode 100755 index 000000000..df114d980 --- /dev/null +++ b/src/data/easy_chat/easy_chat_groups.h @@ -0,0 +1,137 @@ +#include "easy_chat.h" + +#include "easy_chat_group_pokemon.h" +#include "easy_chat_group_trainer.h" +#include "easy_chat_group_status.h" +#include "easy_chat_group_battle.h" +#include "easy_chat_group_greetings.h" +#include "easy_chat_group_people.h" +#include "easy_chat_group_voices.h" +#include "easy_chat_group_speech.h" +#include "easy_chat_group_endings.h" +#include "easy_chat_group_feelings.h" +#include "easy_chat_group_conditions.h" +#include "easy_chat_group_actions.h" +#include "easy_chat_group_lifestyle.h" +#include "easy_chat_group_hobbies.h" +#include "easy_chat_group_time.h" +#include "easy_chat_group_misc.h" +#include "easy_chat_group_adjectives.h" +#include "easy_chat_group_events.h" +#include "easy_chat_group_move_1.h" +#include "easy_chat_group_move_2.h" +#include "easy_chat_group_trendy_saying.h" +#include "easy_chat_group_pokemon2.h" + +const struct EasyChatGroup gEasyChatGroups[] = { + { + .wordData = {.valueList = gEasyChatGroup_Pokemon}, + .numWords = 202, + .numEnabledWords = 202, + }, + { + .wordData = {.words = gEasyChatGroup_Trainer}, + .numWords = 27, + .numEnabledWords = 21, + }, + { + .wordData = {.words = gEasyChatGroup_Status}, + .numWords = 109, + .numEnabledWords = 109, + }, + { + .wordData = {.words = gEasyChatGroup_Battle}, + .numWords = 63, + .numEnabledWords = 63, + }, + { + .wordData = {.words = gEasyChatGroup_Greetings}, + .numWords = 42, + .numEnabledWords = 42, + }, + { + .wordData = {.words = gEasyChatGroup_People}, + .numWords = 75, + .numEnabledWords = 75, + }, + { + .wordData = {.words = gEasyChatGroup_Voices}, + .numWords = 63, + .numEnabledWords = 63, + }, + { + .wordData = {.words = gEasyChatGroup_Speech}, + .numWords = 60, + .numEnabledWords = 60, + }, + { + .wordData = {.words = gEasyChatGroup_Endings}, + .numWords = 69, + .numEnabledWords = 69, + }, + { + .wordData = {.words = gEasyChatGroup_Feelings}, + .numWords = 69, + .numEnabledWords = 69, + }, + { + .wordData = {.words = gEasyChatGroup_Conditions}, + .numWords = 69, + .numEnabledWords = 69, + }, + { + .wordData = {.words = gEasyChatGroup_Actions}, + .numWords = 78, + .numEnabledWords = 78, + }, + { + .wordData = {.words = gEasyChatGroup_Lifestyle}, + .numWords = 45, + .numEnabledWords = 45, + }, + { + .wordData = {.words = gEasyChatGroup_Hobbies}, + .numWords = 54, + .numEnabledWords = 54, + }, + { + .wordData = {.words = gEasyChatGroup_Time}, + .numWords = 45, + .numEnabledWords = 45, + }, + { + .wordData = {.words = gEasyChatGroup_Misc}, + .numWords = 42, + .numEnabledWords = 42, + }, + { + .wordData = {.words = gEasyChatGroup_Adjectives}, + .numWords = 36, + .numEnabledWords = 36, + }, + { + .wordData = {.words = gEasyChatGroup_Events}, + .numWords = 29, + .numEnabledWords = 29, + }, + { + .wordData = {.valueList = gEasyChatGroup_Move1}, + .numWords = 154, + .numEnabledWords = 154, + }, + { + .wordData = {.valueList = gEasyChatGroup_Move2}, + .numWords = 200, + .numEnabledWords = 200, + }, + { + .wordData = {.words = gEasyChatGroup_TrendySaying}, + .numWords = 33, + .numEnabledWords = 33, + }, + { + .wordData = {.valueList = gEasyChatGroup_Pokemon2}, + .numWords = 251, + .numEnabledWords = 251, + }, +}; diff --git a/src/data/easy_chat/easy_chat_words_by_letter.h b/src/data/easy_chat/easy_chat_words_by_letter.h new file mode 100755 index 000000000..927b9db2f --- /dev/null +++ b/src/data/easy_chat/easy_chat_words_by_letter.h @@ -0,0 +1,2750 @@ +#include "easy_chat.h" +#include "constants/easy_chat.h" + +const u16 gEasyChatWordsByLetter_Others[] = { + EC_WORD_EXCL, + EC_WORD_EXCL_EXCL, + EC_WORD_DASH, + EC_WORD_DASH_DASH_DASH, + EC_WORD_ELLIPSIS, + EC_WORD_ELLIPSIS_EXCL, + EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, + EC_WORD_1_HIT_KO_EXCL, + EC_WORD_QUES, + EC_WORD_QUES_EXCL, +}; + +const u16 gEasyChatWordsByLetter_A[] = { + EC_WORD_A, + EC_WORD_A_LITTLE, + EC_WORD_A_LOT, + EC_WORD_A_TINY_BIT, + EC_WORD_ABOUT, + EC_WORD_ABOVE, + -1, 2, // Doubled pokemon species name + EC_POKEMON(ABRA), + EC_POKEMON2(ABRA), + EC_WORD_ABSENT, + EC_POKEMON(ABSOL), + EC_WORD_ABSOLUTELY, + EC_MOVE(ABSORB), + EC_WORD_ACCEPT, + EC_MOVE2(ACID), + EC_MOVE2(ACID_ARMOR), + EC_WORD_ADORE, + EC_WORD_ADULT, + EC_WORD_ADVENTURE, + EC_MOVE2(AERIAL_ACE), + EC_MOVE(AEROBLAST), + EC_POKEMON2(AERODACTYL), + EC_WORD_AFTER, + EC_WORD_AGE, + EC_POKEMON(AGGRON), + EC_MOVE(AGILITY), + EC_WORD_AGREE, + EC_WORD_AHAHA, + EC_WORD_AIM, + EC_POKEMON2(AIPOM), + EC_MOVE(AIR_CUTTER), + EC_WORD_AIR_LOCK, + EC_WORD_AIYEEH, + -1, 2, // Doubled pokemon species name + EC_POKEMON(ALAKAZAM), + EC_POKEMON2(ALAKAZAM), + EC_WORD_ALL, + EC_WORD_ALL_RIGHT, + EC_WORD_ALLOW, + EC_WORD_ALLOWANCE, + EC_WORD_ALLY, + EC_WORD_ALMOST, + EC_WORD_ALONE, + EC_WORD_ALSO, + EC_WORD_ALT_COLOR, + EC_POKEMON(ALTARIA), + EC_WORD_ALTHOUGH, + EC_WORD_ALWAYS, + EC_WORD_AM, + EC_MOVE2(AMNESIA), + EC_POKEMON2(AMPHAROS), + EC_WORD_AMUSING, + EC_WORD_AN, + EC_MOVE(ANCIENT_POWER), + EC_WORD_AND, + EC_WORD_ANGER, + EC_WORD_ANGERS, + EC_WORD_ANGRY, + EC_WORD_ANIME, + EC_POKEMON(ANORITH), + EC_WORD_ANOTHER, + EC_WORD_ANTICIPATION, + EC_WORD_ANY, + EC_WORD_ANYWHERE, + EC_WORD_APOLOGIZE, + EC_WORD_APPEAL, + EC_WORD_APPEAR, + EC_WORD_APPEARS, + EC_WORD_APPRECIATE, + EC_WORD_APPROVED, + EC_POKEMON2(ARBOK), + EC_POKEMON2(ARCANINE), + EC_WORD_ARE, + EC_WORD_AREN_T, + EC_WORD_ARENA_TRAP, + EC_POKEMON2(ARIADOS), + EC_MOVE2(ARM_THRUST), + EC_POKEMON(ARMALDO), + EC_MOVE(AROMATHERAPY), + EC_POKEMON(ARON), + EC_WORD_AROUND, + EC_WORD_ARRGH, + EC_POKEMON2(ARTICUNO), + EC_WORD_AS, + EC_WORD_AS_IF, + EC_WORD_AS_MUCH_AS, + EC_MOVE2(ASSIST), + EC_MOVE(ASTONISH), + EC_WORD_AT, + EC_WORD_ATTACK, + EC_MOVE2(ATTRACT), + EC_WORD_AUNT, + EC_MOVE(AURORA_BEAM), + EC_WORD_AVANT_GARDE, + EC_WORD_AWAY, + EC_WORD_AWESOME, + EC_WORD_AWFUL, + EC_WORD_AWFULLY, + EC_WORD_AWW, + -1, 2, // Doubled pokemon species name + EC_POKEMON(AZUMARILL), + EC_POKEMON2(AZUMARILL), + EC_POKEMON(AZURILL), +}; + +const u16 gEasyChatWordsByLetter_B[] = { + EC_WORD_BABE, + EC_WORD_BABY, + EC_WORD_BACK, + EC_WORD_BAD, + EC_WORD_BADLY, + EC_WORD_BAG, + EC_POKEMON(BAGON), + EC_WORD_BALL, + EC_POKEMON(BALTOY), + EC_POKEMON(BANETTE), + EC_WORD_BANG, + EC_POKEMON(BARBOACH), + EC_MOVE2(BARRAGE), + EC_MOVE2(BARRIER), + EC_WORD_BATH, + EC_MOVE2(BATON_PASS), + EC_WORD_BATTLE, + EC_WORD_BATTLE_ARMOR, + EC_WORD_BATTLE_ROOM, + EC_WORD_BATTLE_TOWER, + EC_POKEMON2(BAYLEEF), + EC_WORD_BE, + EC_WORD_BEAT, + EC_MOVE2(BEAT_UP), + EC_POKEMON(BEAUTIFLY), + EC_WORD_BEAUTIFUL, + EC_WORD_BEAUTY, + EC_WORD_BECOMES, + EC_POKEMON2(BEEDRILL), + EC_WORD_BEEN, + EC_WORD_BEFORE, + EC_WORD_BEGINNING, + EC_WORD_BEING, + EC_POKEMON(BELDUM), + EC_WORD_BELIEVE, + -1, 2, // Doubled pokemon species name + EC_POKEMON(BELLOSSOM), + EC_POKEMON2(BELLOSSOM), + EC_POKEMON2(BELLSPROUT), + EC_MOVE2(BELLY_DRUM), + EC_WORD_BELONGS_TO, + EC_WORD_BELOW, + EC_WORD_BERRY, + EC_WORD_BESIDE, + EC_WORD_BEST, + EC_WORD_BETTER, + EC_MOVE(BIDE), + EC_WORD_BIG, + EC_WORD_BIKE, + EC_MOVE(BIND), + EC_MOVE(BITE), + EC_MOVE2(BLAST_BURN), + EC_POKEMON2(BLASTOISE), + EC_WORD_BLAZE, + EC_MOVE2(BLAZE_KICK), + EC_POKEMON(BLAZIKEN), + EC_WORD_BLEND, + EC_POKEMON2(BLISSEY), + EC_MOVE2(BLIZZARD), + EC_MOVE2(BLOCK), + EC_WORD_BOARD, + EC_MOVE2(BODY_SLAM), + EC_MOVE2(BONE_CLUB), + EC_MOVE2(BONE_RUSH), + EC_MOVE2(BONEMERANG), + EC_WORD_BOOK, + EC_WORD_BORED, + EC_WORD_BORING, + EC_MOVE2(BOUNCE), + EC_WORD_BOY, + EC_WORD_BRAG, + EC_WORD_BREAK, + EC_POKEMON(BRELOOM), + EC_MOVE(BRICK_BREAK), + EC_WORD_BROTHER, + EC_MOVE(BUBBLE), + EC_MOVE2(BUBBLE_BEAM), + EC_WORD_BUG, + EC_POKEMON2(BULBASAUR), + EC_MOVE2(BULK_UP), + EC_MOVE2(BULLET_SEED), + EC_WORD_BUSY, + EC_WORD_BUT, + EC_POKEMON2(BUTTERFREE), + EC_WORD_BYE_BYE, +}; + +const u16 gEasyChatWordsByLetter_C[] = { + EC_POKEMON(CACNEA), + EC_POKEMON(CACTURNE), + EC_MOVE2(CALM_MIND), + EC_WORD_CAME, + EC_WORD_CAMERA, + EC_POKEMON(CAMERUPT), + EC_MOVE2(CAMOUFLAGE), + EC_WORD_CAN, + EC_WORD_CAN_WIN, + EC_WORD_CAN_T, + EC_WORD_CAN_T_WIN, + EC_WORD_CANCEL, + EC_WORD_CAPABLE, + EC_WORD_CARDS, + EC_WORD_CARE, + EC_WORD_CARES, + EC_POKEMON(CARVANHA), + EC_POKEMON(CASCOON), + EC_WORD_CASE, + EC_POKEMON(CASTFORM), + EC_POKEMON2(CATERPIE), + EC_WORD_CAUSE, + EC_POKEMON2(CELEBI), + EC_WORD_CENTER, + EC_WORD_CHALLENGE, + EC_WORD_CHANGE, + EC_WORD_CHANNEL, + EC_POKEMON2(CHANSEY), + EC_MOVE(CHARGE), + EC_POKEMON2(CHARIZARD), + EC_MOVE(CHARM), + EC_POKEMON2(CHARMANDER), + EC_POKEMON2(CHARMELEON), + EC_WORD_CHAT, + EC_POKEMON2(CHIKORITA), + EC_WORD_CHILD_S_PLAY, + EC_WORD_CHILDREN, + EC_POKEMON(CHIMECHO), + -1, 2, // Doubled pokemon species name + EC_POKEMON(CHINCHOU), + EC_POKEMON2(CHINCHOU), + EC_WORD_CHLOROPHYLL, + EC_WORD_CHOICE, + EC_WORD_CHOOSE, + EC_WORD_CHORES, + EC_MOVE(CLAMP), + EC_POKEMON(CLAMPERL), + EC_WORD_CLASS, + EC_POKEMON(CLAYDOL), + EC_WORD_CLEAR_BODY, + EC_POKEMON2(CLEFABLE), + EC_POKEMON2(CLEFAIRY), + EC_POKEMON2(CLEFFA), + EC_WORD_CLOSE, + EC_WORD_CLOUD_NINE, + EC_POKEMON2(CLOYSTER), + EC_WORD_COLD, + EC_WORD_COLLECT, + EC_WORD_COLLECTION, + EC_WORD_COLOR, + EC_WORD_COLOR_CHANGE, + EC_POKEMON(COMBUSKEN), + EC_WORD_COME, + EC_WORD_COME_ON, + EC_WORD_COME_OVER, + EC_MOVE2(COMET_PUNCH), + EC_WORD_COMICS, + EC_WORD_COMMEMORATE, + EC_WORD_COMPLETE, + EC_WORD_COMPOUNDEYES, + EC_WORD_CONCEDE, + EC_MOVE(CONFUSE_RAY), + EC_WORD_CONFUSED, + EC_MOVE2(CONFUSION), + EC_WORD_CONGRATS, + EC_MOVE(CONSTRICT), + EC_WORD_CONTEST, + EC_WORD_CONVERSATION, + EC_MOVE2(CONVERSION), + EC_MOVE2(CONVERSION_2), + EC_WORD_COOL, + EC_WORD_COOLNESS, + EC_POKEMON(CORPHISH), + EC_WORD_CORRECT, + -1, 2, // Doubled pokemon species name + EC_POKEMON(CORSOLA), + EC_POKEMON2(CORSOLA), + EC_MOVE(COSMIC_POWER), + EC_MOVE2(COTTON_SPORE), + EC_WORD_COULD, + EC_WORD_COULDN_T, + EC_WORD_COUNT_ON, + EC_MOVE(COUNTER), + EC_WORD_COUPLE, + EC_MOVE2(COVET), + EC_MOVE(CRABHAMMER), + EC_POKEMON(CRADILY), + EC_POKEMON(CRAWDAUNT), + EC_WORD_CRIES, + -1, 2, // Doubled pokemon species name + EC_POKEMON(CROBAT), + EC_POKEMON2(CROBAT), + EC_POKEMON2(CROCONAW), + EC_MOVE(CROSS_CHOP), + EC_MOVE(CRUNCH), + EC_WORD_CRUSH, + EC_MOVE2(CRUSH_CLAW), + EC_WORD_CRY, + EC_POKEMON2(CUBONE), + EC_WORD_CURRENT, + EC_MOVE2(CURSE), + EC_MOVE(CUT), + EC_WORD_CUTE, + EC_WORD_CUTE_CHARM, + EC_WORD_CUTENESS, + EC_POKEMON2(CYNDAQUIL), +}; + +const u16 gEasyChatWordsByLetter_D[] = { + EC_WORD_DAILY, + EC_WORD_DAMP, + EC_WORD_DANCE, + EC_WORD_DANGER, + EC_WORD_DARK, + EC_WORD_DARN, + EC_WORD_DATE, + EC_WORD_DAUGHTER, + EC_WORD_DAY, + EC_WORD_DAYS, + EC_WORD_DAYTIME, + EC_WORD_DECIDE, + EC_WORD_DECIDED, + EC_WORD_DEEP, + EC_WORD_DEFEATED, + EC_MOVE2(DEFENSE_CURL), + EC_POKEMON(DELCATTY), + EC_POKEMON2(DELIBIRD), + EC_POKEMON(DEOXYS), + EC_WORD_DEPT_STORE, + EC_WORD_DESIGN, + EC_WORD_DESTINY, + EC_MOVE2(DESTINY_BOND), + EC_WORD_DESTROYED, + EC_MOVE2(DETECT), + EC_POKEMON2(DEWGONG), + EC_WORD_DID, + EC_WORD_DIDN_T, + EC_WORD_DIET, + EC_WORD_DIFFERENT, + EC_MOVE(DIG), + EC_WORD_DIGITAL, + EC_POKEMON2(DIGLETT), + EC_WORD_DIRECT, + EC_MOVE(DISABLE), + EC_WORD_DISAPPEAR, + EC_WORD_DISAPPOINT, + EC_WORD_DISAPPOINTED, + EC_WORD_DISAPPOINTS, + EC_WORD_DISASTER, + EC_WORD_DISLIKE, + EC_WORD_DISLIKES, + EC_POKEMON2(DITTO), + EC_MOVE2(DIVE), + EC_MOVE2(DIZZY_PUNCH), + EC_WORD_DO, + EC_WORD_DOCILE, + -1, 2, // Doubled pokemon species name + EC_POKEMON(DODRIO), + EC_POKEMON2(DODRIO), + -1, 2, // Doubled pokemon species name + EC_POKEMON(DODUO), + EC_POKEMON2(DODUO), + EC_WORD_DOES, + EC_WORD_DOESN_T, + EC_WORD_DON_T, + EC_WORD_DONE, + -1, 2, // Doubled pokemon species name + EC_POKEMON(DONPHAN), + EC_POKEMON2(DONPHAN), + EC_MOVE2(DOOM_DESIRE), + EC_MOVE2(DOUBLE_KICK), + EC_MOVE(DOUBLE_TEAM), + EC_MOVE(DOUBLE_EDGE), + EC_MOVE(DOUBLE_SLAP), + EC_WORD_DOWN, + EC_WORD_DOWNCAST, + EC_WORD_DRAGON, + EC_MOVE2(DRAGON_CLAW), + EC_MOVE2(DRAGON_DANCE), + EC_MOVE2(DRAGON_RAGE), + EC_POKEMON2(DRAGONAIR), + EC_MOVE2(DRAGON_BREATH), + EC_POKEMON2(DRAGONITE), + EC_POKEMON2(DRATINI), + EC_WORD_DREAM, + EC_MOVE2(DREAM_EATER), + EC_MOVE2(DRILL_PECK), + EC_WORD_DRINK, + EC_WORD_DRINKS, + EC_WORD_DRIZZLE, + EC_WORD_DROOLING, + EC_WORD_DROUGHT, + EC_POKEMON2(DROWZEE), + EC_WORD_DUDE, + EC_POKEMON2(DUGTRIO), + EC_POKEMON2(DUNSPARCE), + EC_POKEMON(DUSCLOPS), + EC_POKEMON(DUSKULL), + EC_POKEMON(DUSTOX), + EC_MOVE2(DYNAMIC_PUNCH), +}; + +const u16 gEasyChatWordsByLetter_E[] = { + EC_WORD_EARLIER, + EC_WORD_EARLY_BIRD, + EC_MOVE(EARTHQUAKE), + EC_WORD_EASY, + EC_WORD_EAT, + EC_WORD_EATS, + EC_WORD_EEK, + EC_POKEMON2(EEVEE), + EC_WORD_EFFECT_SPORE, + EC_WORD_EGG, + EC_MOVE2(EGG_BOMB), + EC_WORD_EH_QUES, + EC_WORD_EHEHE, + EC_POKEMON2(EKANS), + EC_POKEMON2(ELECTABUZZ), + EC_WORD_ELECTRIC, + EC_POKEMON(ELECTRIKE), + -1, 2, // Doubled pokemon species name + EC_POKEMON(ELECTRODE), + EC_POKEMON2(ELECTRODE), + EC_POKEMON2(ELEKID), + EC_WORD_ELSE, + EC_MOVE2(EMBER), + EC_WORD_EMERALD, + EC_MOVE(ENCORE), + EC_WORD_ENCYCLOPEDIA, + EC_WORD_END, + EC_MOVE(ENDEAVOR), + EC_MOVE(ENDURE), + EC_WORD_ENJOY, + EC_WORD_ENJOYS, + EC_WORD_ENOUGH, + EC_POKEMON2(ENTEI), + EC_WORD_ENTERTAINING, + EC_MOVE2(ERUPTION), + EC_WORD_ESCAPE, + EC_POKEMON2(ESPEON), + EC_WORD_EVEN_SO, + EC_WORD_EVENT, + EC_WORD_EVENTS, + EC_WORD_EVER, + EC_WORD_EVERY, + EC_WORD_EVOLUTION, + EC_WORD_EVOLVE, + EC_WORD_EXCELLENT, + EC_WORD_EXCESS, + EC_WORD_EXCITE, + EC_WORD_EXCITING, + EC_WORD_EXCUSE, + EC_WORD_EXCUSE_ME, + EC_POKEMON2(EXEGGCUTE), + EC_POKEMON2(EXEGGUTOR), + EC_WORD_EXISTS, + EC_WORD_EXPENSIVE, + EC_MOVE2(EXPLOSION), + EC_POKEMON(EXPLOUD), + EC_MOVE(EXTRASENSORY), + EC_MOVE(EXTREME_SPEED), +}; + +const u16 gEasyChatWordsByLetter_F[] = { + EC_WORD_FABULOUS, + EC_MOVE(FACADE), + EC_WORD_FAINT, + EC_MOVE2(FAINT_ATTACK), + EC_WORD_FAINTED, + EC_MOVE2(FAKE_OUT), + EC_MOVE(FAKE_TEARS), + EC_WORD_FALL, + EC_MOVE2(FALSE_SWIPE), + EC_WORD_FAMILY, + EC_WORD_FANTASTIC, + EC_WORD_FAR, + EC_POKEMON2(FARFETCHD), + EC_WORD_FASHION, + EC_WORD_FAST, + EC_WORD_FATHER, + EC_WORD_FEAR, + EC_POKEMON2(FEAROW), + EC_MOVE2(FEATHER_DANCE), + EC_POKEMON(FEEBAS), + EC_WORD_FEELING, + EC_POKEMON2(FERALIGATR), + EC_WORD_FESTIVAL, + EC_WORD_FEVER, + EC_WORD_FIERY, + EC_WORD_FIGHT, + EC_WORD_FIGHTING, + EC_WORD_FIGHTS, + EC_WORD_FINAL, + EC_WORD_FINALLY, + EC_WORD_FINISH, + EC_WORD_FIRE, + EC_MOVE2(FIRE_BLAST), + EC_MOVE2(FIRE_PUNCH), + EC_MOVE2(FIRE_SPIN), + EC_WORD_FISHING, + EC_MOVE(FISSURE), + EC_POKEMON2(FLAAFFY), + EC_MOVE(FLAIL), + EC_WORD_FLAME, + EC_WORD_FLAME_BODY, + EC_MOVE(FLAME_WHEEL), + EC_MOVE(FLAMETHROWER), + EC_POKEMON2(FLAREON), + EC_MOVE2(FLASH), + EC_WORD_FLASH_FIRE, + EC_WORD_FLATTEN, + EC_MOVE(FLATTER), + EC_WORD_FLOWERS, + EC_MOVE(FLY), + EC_POKEMON(FLYGON), + EC_WORD_FLYING, + EC_MOVE(FOCUS_ENERGY), + EC_MOVE(FOCUS_PUNCH), + EC_WORD_FOE, + EC_MOVE(FOLLOW_ME), + EC_WORD_FOR, + EC_WORD_FOR_NOW, + EC_WORD_FORECAST, + EC_MOVE2(FORESIGHT), + EC_WORD_FOREVER, + EC_WORD_FORGET, + EC_WORD_FORGETS, + EC_WORD_FORGIVE, + EC_POKEMON2(FORRETRESS), + EC_MOVE2(FRENZY_PLANT), + EC_WORD_FRIDAY, + EC_WORD_FRIEND, + EC_WORD_FROM, + EC_WORD_FRONT, + EC_WORD_FRONTIER, + EC_MOVE2(FRUSTRATION), + EC_WORD_FUFUFU, + EC_WORD_FULL, + EC_WORD_FUNNY, + EC_POKEMON2(FURRET), + EC_MOVE2(FURY_ATTACK), + EC_MOVE2(FURY_CUTTER), + EC_MOVE2(FURY_SWIPES), + EC_MOVE2(FUTURE_SIGHT), +}; + +const u16 gEasyChatWordsByLetter_G[] = { + EC_WORD_GAME, + EC_POKEMON(GARDEVOIR), + EC_POKEMON2(GASTLY), + EC_POKEMON2(GENGAR), + EC_WORD_GENIUS, + -1, 2, // Doubled pokemon species name + EC_POKEMON(GEODUDE), + EC_POKEMON2(GEODUDE), + EC_WORD_GET, + EC_WORD_GETS, + EC_WORD_GHOST, + EC_WORD_GIDDY, + EC_MOVE(GIGA_DRAIN), + EC_WORD_GIGGLE, + EC_WORD_GIMME, + -1, 2, // Doubled pokemon species name + EC_POKEMON(GIRAFARIG), + EC_POKEMON2(GIRAFARIG), + EC_WORD_GIRL, + EC_WORD_GIVE, + EC_WORD_GIVE_ME, + EC_WORD_GIVE_UP, + EC_WORD_GIVES, + EC_POKEMON(GLALIE), + EC_MOVE2(GLARE), + EC_POKEMON2(GLIGAR), + -1, 2, // Doubled pokemon species name + EC_POKEMON(GLOOM), + EC_POKEMON2(GLOOM), + EC_WORD_GO, + EC_WORD_GO_AHEAD, + EC_WORD_GO_EASY, + EC_WORD_GO_HOME, + EC_WORD_GOES, + EC_WORD_GOING, + -1, 2, // Doubled pokemon species name + EC_POKEMON(GOLBAT), + EC_POKEMON2(GOLBAT), + EC_WORD_GOLD, + -1, 2, // Doubled pokemon species name + EC_POKEMON(GOLDEEN), + EC_POKEMON2(GOLDEEN), + -1, 2, // Doubled pokemon species name + EC_POKEMON(GOLDUCK), + EC_POKEMON2(GOLDUCK), + -1, 2, // Doubled pokemon species name + EC_POKEMON(GOLEM), + EC_POKEMON2(GOLEM), + EC_WORD_GOOD, + EC_WORD_GOOD_BYE, + EC_POKEMON(GOREBYSS), + EC_WORD_GOT, + EC_WORD_GOTCHA, + EC_WORD_GOURMET, + EC_WORD_GRAAAH, + EC_POKEMON2(GRANBULL), + EC_WORD_GRANDFATHER, + EC_WORD_GRANDMOTHER, + EC_WORD_GRASS, + EC_MOVE(GRASS_WHISTLE), + -1, 2, // Doubled pokemon species name + EC_POKEMON(GRAVELER), + EC_POKEMON2(GRAVELER), + EC_WORD_GREAT, + EC_WORD_GREEN, + -1, 2, // Doubled pokemon species name + EC_POKEMON(GRIMER), + EC_POKEMON2(GRIMER), + EC_POKEMON(GROUDON), + EC_WORD_GROUND, + EC_WORD_GROUP, + EC_POKEMON(GROVYLE), + EC_MOVE2(GROWL), + EC_POKEMON2(GROWLITHE), + EC_MOVE(GROWTH), + EC_MOVE(GRUDGE), + EC_POKEMON(GRUMPIG), + EC_WORD_GUARD, + EC_MOVE2(GUILLOTINE), + EC_POKEMON(GULPIN), + EC_MOVE(GUST), + EC_WORD_GUTS, + EC_WORD_GUTSY, + EC_WORD_GWAH, + EC_WORD_GWAHAHAHA, + -1, 2, // Doubled pokemon species name + EC_POKEMON(GYARADOS), + EC_POKEMON2(GYARADOS), +}; + +const u16 gEasyChatWordsByLetter_H[] = { + EC_WORD_HABIT, + EC_WORD_HAH, + EC_WORD_HAHAHA, + EC_MOVE(HAIL), + EC_WORD_HALL_OF_FAME, + EC_WORD_HAPPENING, + EC_WORD_HAPPILY, + EC_WORD_HAPPINESS, + EC_WORD_HAPPY, + EC_WORD_HARD, + EC_MOVE(HARDEN), + EC_POKEMON(HARIYAMA), + EC_WORD_HAS, + EC_WORD_HASSLE, + EC_POKEMON2(HAUNTER), + EC_WORD_HAVE, + EC_WORD_HAVEN_T, + EC_MOVE(HAZE), + EC_WORD_HE, + EC_WORD_HE_S, + EC_MOVE(HEADBUTT), + EC_MOVE(HEAL_BELL), + EC_WORD_HEALTHY, + EC_WORD_HEAR, + EC_WORD_HEARING, + EC_WORD_HEARS, + EC_WORD_HEART, + EC_MOVE2(HEAT_WAVE), + EC_WORD_HEH, + EC_WORD_HEHE, + EC_WORD_HEHEHE, + EC_WORD_HELLO, + EC_MOVE2(HELPING_HAND), + EC_WORD_HER, + -1, 2, // Doubled pokemon species name + EC_POKEMON(HERACROSS), + EC_POKEMON2(HERACROSS), + EC_WORD_HERE, + EC_WORD_HERE_GOES, + EC_WORD_HERE_I_COME, + EC_WORD_HERE_IT_IS, + EC_WORD_HERO, + EC_WORD_HEROINE, + EC_WORD_HERS, + EC_WORD_HEY, + EC_WORD_HEY_THERE, + EC_WORD_HEY_QUES, + EC_WORD_HI, + EC_MOVE2(HI_JUMP_KICK), + EC_WORD_HIDDEN, + EC_MOVE2(HIDDEN_POWER), + EC_WORD_HIGH, + EC_WORD_HIGHS, + EC_WORD_HIM, + EC_WORD_HIP_AND, + EC_WORD_HIS, + EC_WORD_HIT, + EC_POKEMON2(HITMONCHAN), + EC_POKEMON2(HITMONLEE), + EC_POKEMON2(HITMONTOP), + EC_WORD_HIYAH, + EC_WORD_HMM, + EC_POKEMON2(HO_OH), + EC_WORD_HOBBY, + EC_WORD_HOHOHO, + EC_WORD_HOLIDAY, + EC_WORD_HOME, + EC_WORD_HOO_HAH, + EC_POKEMON2(HOOTHOOT), + EC_WORD_HOPELESS, + EC_POKEMON2(HOPPIP), + EC_MOVE2(HORN_ATTACK), + EC_MOVE2(HORN_DRILL), + -1, 2, // Doubled pokemon species name + EC_POKEMON(HORSEA), + EC_POKEMON2(HORSEA), + EC_WORD_HOT, + EC_POKEMON2(HOUNDOOM), + EC_POKEMON2(HOUNDOUR), + EC_WORD_HOW, + EC_WORD_HOW_DO, + EC_WORD_HOWEVER, + EC_MOVE2(HOWL), + EC_WORD_HUGE_POWER, + EC_WORD_HUH_QUES, + EC_WORD_HUMPH, + EC_WORD_HUNGRY, + EC_POKEMON(HUNTAIL), + EC_WORD_HURRIED, + EC_WORD_HUSTLE, + EC_MOVE2(HYDRO_CANNON), + EC_MOVE2(HYDRO_PUMP), + EC_WORD_HYPER, + EC_MOVE2(HYPER_BEAM), + EC_WORD_HYPER_CUTTER, + EC_MOVE2(HYPER_FANG), + EC_MOVE2(HYPER_VOICE), + EC_POKEMON2(HYPNO), + EC_MOVE(HYPNOSIS), +}; + +const u16 gEasyChatWordsByLetter_I[] = { + EC_WORD_I, + EC_WORD_I_AM, + EC_WORD_I_CHOOSE_YOU, + EC_WORD_I_WAS, + EC_WORD_I_VE, + EC_WORD_I_VE_ARRIVED, + EC_WORD_ICE, + EC_MOVE(ICE_BALL), + EC_MOVE2(ICE_BEAM), + EC_MOVE2(ICE_PUNCH), + EC_MOVE2(ICICLE_SPEAR), + EC_MOVE(ICY_WIND), + EC_WORD_IDOL, + EC_WORD_IF, + EC_WORD_IF_I_LOSE, + EC_WORD_IF_I_WIN, + -1, 2, // Doubled pokemon species name + EC_POKEMON(IGGLYBUFF), + EC_POKEMON2(IGGLYBUFF), + EC_WORD_IGNORANT, + EC_WORD_ILLUMINATE, + EC_POKEMON(ILLUMISE), + EC_WORD_IMMUNITY, + EC_WORD_IMPORTANT, + EC_WORD_IMPOSSIBLE, + EC_MOVE2(IMPRISON), + EC_WORD_IN, + EC_WORD_INCREASING, + EC_WORD_INCREDIBLE, + EC_WORD_INFORMATION, + EC_MOVE2(INGRAIN), + EC_WORD_INNER_FOCUS, + EC_WORD_INSIDE, + EC_WORD_INSOMNIA, + EC_WORD_INSTEAD, + EC_WORD_INTIMIDATE, + EC_WORD_INVINCIBLE, + EC_MOVE2(IRON_DEFENSE), + EC_MOVE(IRON_TAIL), + EC_WORD_IS, + EC_WORD_IS_IT_QUES, + EC_WORD_ISN_T, + EC_WORD_ISN_T_IT_QUES, + EC_WORD_IT, + EC_WORD_IT_S, + EC_WORD_ITEM, + EC_POKEMON2(IVYSAUR), +}; + +const u16 gEasyChatWordsByLetter_J[] = { + -1, 2, // Doubled pokemon species name + EC_POKEMON(JIGGLYPUFF), + EC_POKEMON2(JIGGLYPUFF), + EC_POKEMON(JIRACHI), + EC_WORD_JOKING, + EC_POKEMON2(JOLTEON), + EC_WORD_JOY, + EC_WORD_JUDGE, + EC_MOVE2(JUMP_KICK), + EC_POKEMON2(JUMPLUFF), + EC_WORD_JUST, + EC_POKEMON2(JYNX), +}; + +const u16 gEasyChatWordsByLetter_K[] = { + EC_POKEMON2(KABUTO), + EC_POKEMON2(KABUTOPS), + -1, 2, // Doubled pokemon species name + EC_POKEMON(KADABRA), + EC_POKEMON2(KADABRA), + EC_POKEMON2(KAKUNA), + EC_POKEMON2(KANGASKHAN), + EC_MOVE(KARATE_CHOP), + EC_POKEMON(KECLEON), + EC_WORD_KEEN_EYE, + EC_WORD_KID, + EC_WORD_KIDDING, + EC_WORD_KIND, + EC_WORD_KINDERGARTEN, + EC_MOVE(KINESIS), + -1, 2, // Doubled pokemon species name + EC_POKEMON(KINGDRA), + EC_POKEMON2(KINGDRA), + EC_POKEMON2(KINGLER), + EC_POKEMON(KIRLIA), + EC_MOVE2(KNOCK_OFF), + EC_WORD_KNOCKOUT, + EC_WORD_KNOW, + EC_WORD_KNOWS, + -1, 2, // Doubled pokemon species name + EC_POKEMON(KOFFING), + EC_POKEMON2(KOFFING), + EC_POKEMON2(KRABBY), + EC_WORD_KTHX_BYE, + EC_POKEMON(KYOGRE), +}; + +const u16 gEasyChatWordsByLetter_L[] = { + EC_WORD_LACKING, + EC_WORD_LACKS, + EC_WORD_LADY, + EC_POKEMON(LAIRON), + EC_WORD_LALALA, + -1, 2, // Doubled pokemon species name + EC_POKEMON(LANTURN), + EC_POKEMON2(LANTURN), + EC_POKEMON2(LAPRAS), + EC_POKEMON2(LARVITAR), + EC_WORD_LAST, + EC_WORD_LATE, + EC_WORD_LATER, + EC_POKEMON(LATIAS), + EC_POKEMON(LATIOS), + EC_WORD_LAVISH, + EC_WORD_LAY, + EC_WORD_LEADER, + EC_WORD_LEADERS, + EC_WORD_LEAF, + EC_MOVE2(LEAF_BLADE), + EC_WORD_LEARN, + EC_POKEMON2(LEDIAN), + EC_POKEMON2(LEDYBA), + EC_MOVE(LEECH_LIFE), + EC_MOVE2(LEECH_SEED), + EC_MOVE2(LEER), + EC_WORD_LEFT, + EC_WORD_LEGEND, + EC_WORD_LESS, + EC_WORD_LESSONS, + EC_WORD_LET_ME_WIN, + EC_WORD_LET_S, + EC_WORD_LETTER, + EC_WORD_LEVEL, + EC_WORD_LEVITATE, + EC_MOVE(LICK), + EC_POKEMON2(LICKITUNG), + EC_WORD_LIE, + EC_WORD_LIFE, + EC_MOVE2(LIGHT_SCREEN), + EC_WORD_LIGHTNINGROD, + EC_WORD_LIKE, + EC_WORD_LIKELY_TO, + EC_WORD_LIKES, + EC_POKEMON(LILEEP), + EC_WORD_LIMBER, + EC_WORD_LINK, + EC_POKEMON(LINOONE), + EC_WORD_LIQUID_OOZE, + EC_WORD_LISTEN, + EC_WORD_LISTENING, + EC_WORD_LISTENS, + EC_WORD_LIVING, + EC_MOVE2(LOCK_ON), + EC_WORD_LOCOMOTIVE, + EC_WORD_LOL, + EC_WORD_LOLLING, + EC_POKEMON(LOMBRE), + EC_WORD_LONESOME, + EC_WORD_LOOK, + EC_WORD_LOOKS, + EC_WORD_LOSE, + EC_WORD_LOSER, + EC_WORD_LOSING, + EC_WORD_LOSS, + EC_WORD_LOST, + EC_POKEMON(LOTAD), + EC_POKEMON(LOUDRED), + EC_WORD_LOUSY, + EC_MOVE(LOVELY_KISS), + EC_WORD_LOVEY_DOVEY, + EC_WORD_LOW, + EC_MOVE(LOW_KICK), + EC_WORD_LOWS, + EC_POKEMON(LUDICOLO), + EC_POKEMON2(LUGIA), + EC_WORD_LUKEWARM, + EC_POKEMON(LUNATONE), + EC_MOVE2(LUSTER_PURGE), + EC_POKEMON(LUVDISC), +}; + +const u16 gEasyChatWordsByLetter_M[] = { + EC_MOVE2(MACH_PUNCH), + -1, 2, // Doubled pokemon species name + EC_POKEMON(MACHAMP), + EC_POKEMON2(MACHAMP), + EC_WORD_MACHINE, + -1, 2, // Doubled pokemon species name + EC_POKEMON(MACHOKE), + EC_POKEMON2(MACHOKE), + -1, 2, // Doubled pokemon species name + EC_POKEMON(MACHOP), + EC_POKEMON2(MACHOP), + EC_WORD_MAGAZINE, + EC_POKEMON2(MAGBY), + -1, 2, // Doubled pokemon species name + EC_POKEMON(MAGCARGO), + EC_POKEMON2(MAGCARGO), + EC_MOVE2(MAGIC_COAT), + EC_MOVE2(MAGICAL_LEAF), + -1, 2, // Doubled pokemon species name + EC_POKEMON(MAGIKARP), + EC_POKEMON2(MAGIKARP), + EC_WORD_MAGMA_ARMOR, + EC_POKEMON2(MAGMAR), + -1, 2, // Doubled pokemon species name + EC_POKEMON(MAGNEMITE), + EC_POKEMON2(MAGNEMITE), + EC_WORD_MAGNET_PULL, + -1, 2, // Doubled pokemon species name + EC_POKEMON(MAGNETON), + EC_POKEMON2(MAGNETON), + EC_MOVE2(MAGNITUDE), + EC_WORD_MAIL, + EC_WORD_MAKE, + EC_WORD_MAKING, + EC_POKEMON(MAKUHITA), + EC_WORD_MAN, + EC_POKEMON(MANECTRIC), + EC_POKEMON2(MANKEY), + EC_POKEMON2(MANTINE), + EC_POKEMON2(MAREEP), + -1, 2, // Doubled pokemon species name + EC_POKEMON(MARILL), + EC_POKEMON2(MARILL), + EC_POKEMON2(MAROWAK), + EC_POKEMON(MARSHTOMP), + EC_WORD_MARVEL_SCALE, + EC_POKEMON(MASQUERAIN), + EC_WORD_MASTER, + EC_WORD_MATCH, + EC_WORD_MATCH_UP, + EC_POKEMON(MAWILE), + EC_WORD_MAYBE, + EC_WORD_MC, + EC_WORD_ME, + EC_WORD_MEAN, + EC_MOVE(MEAN_LOOK), + EC_POKEMON(MEDICHAM), + EC_MOVE2(MEDITATE), + EC_POKEMON(MEDITITE), + EC_WORD_MEET, + EC_WORD_MEET_YOU, + EC_WORD_MEETS, + EC_WORD_MEGA, + EC_MOVE2(MEGA_DRAIN), + EC_MOVE2(MEGA_KICK), + EC_MOVE2(MEGA_PUNCH), + EC_MOVE2(MEGAHORN), + EC_POKEMON2(MEGANIUM), + EC_MOVE(MEMENTO), + EC_POKEMON2(MEOWTH), + EC_WORD_MESSAGE, + EC_POKEMON(METAGROSS), + EC_MOVE2(METAL_CLAW), + EC_MOVE(METAL_SOUND), + EC_POKEMON(METANG), + EC_POKEMON2(METAPOD), + EC_MOVE(METEOR_MASH), + EC_MOVE2(METRONOME), + EC_POKEMON2(MEW), + EC_POKEMON2(MEWTWO), + EC_POKEMON(MIGHTYENA), + EC_MOVE2(MILK_DRINK), + EC_POKEMON(MILOTIC), + EC_POKEMON2(MILTANK), + EC_MOVE2(MIMIC), + EC_MOVE(MIND_READER), + EC_MOVE2(MINIMIZE), + EC_POKEMON(MINUN), + EC_WORD_MINUS, + EC_MOVE2(MIRROR_COAT), + EC_MOVE(MIRROR_MOVE), + EC_POKEMON2(MISDREAVUS), + EC_WORD_MISHEARD, + EC_WORD_MISS, + EC_MOVE(MIST), + EC_MOVE2(MIST_BALL), + EC_WORD_MISTAKE, + EC_WORD_MMM, + EC_WORD_MODE, + EC_WORD_MODERN, + EC_POKEMON2(MOLTRES), + EC_WORD_MOMENTUM, + EC_WORD_MONDAY, + EC_WORD_MONEY, + EC_WORD_MONTH, + EC_WORD_MOOD, + EC_MOVE2(MOONLIGHT), + EC_WORD_MORE, + EC_WORD_MORNING, + EC_MOVE(MORNING_SUN), + EC_WORD_MOTHER, + EC_WORD_MOVE, + EC_WORD_MOVIE, + EC_WORD_MR, + EC_POKEMON2(MR_MIME), + EC_WORD_MRS, + EC_WORD_MUCH, + EC_WORD_MUCH_OBLIGED, + EC_MOVE2(MUD_SHOT), + EC_MOVE2(MUD_SPORT), + EC_MOVE2(MUD_SLAP), + EC_MOVE2(MUDDY_WATER), + EC_POKEMON(MUDKIP), + EC_WORD_MUFUFU, + -1, 2, // Doubled pokemon species name + EC_POKEMON(MUK), + EC_POKEMON2(MUK), + EC_POKEMON2(MURKROW), + EC_WORD_MUSIC, + EC_WORD_MUST_BE, + EC_WORD_MY, + EC_WORD_MYSELF, + EC_WORD_MYSTERY, +}; + +const u16 gEasyChatWordsByLetter_N[] = { + EC_WORD_NAME, + EC_WORD_NAP, + -1, 2, // Doubled pokemon species name + EC_POKEMON(NATU), + EC_POKEMON2(NATU), + EC_WORD_NATURAL, + EC_WORD_NATURAL_CURE, + EC_WORD_NATURALLY, + EC_WORD_NATURE, + EC_MOVE(NATURE_POWER), + EC_WORD_NEAR, + EC_WORD_NEARLY, + EC_WORD_NEED, + EC_MOVE2(NEEDLE_ARM), + EC_WORD_NEGATIVE, + EC_WORD_NEVER, + EC_WORD_NEW, + EC_WORD_NEWS, + EC_WORD_NEXT, + EC_WORD_NICE, + EC_POKEMON2(NIDOKING), + EC_POKEMON2(NIDOQUEEN), + EC_POKEMON2(NIDORAN_F), + EC_POKEMON2(NIDORAN_M), + EC_POKEMON2(NIDORINA), + EC_POKEMON2(NIDORINO), + EC_WORD_NIGHT, + EC_MOVE2(NIGHT_SHADE), + EC_MOVE(NIGHTMARE), + EC_WORD_NIGHTTIME, + EC_POKEMON(NINCADA), + -1, 2, // Doubled pokemon species name + EC_POKEMON(NINETALES), + EC_POKEMON2(NINETALES), + EC_POKEMON(NINJASK), + EC_WORD_NITWIT, + EC_WORD_NO, + EC_WORD_NO_MATCH, + EC_WORD_NO_1, + EC_POKEMON2(NOCTOWL), + EC_WORD_NOISY, + EC_WORD_NON_STOP, + EC_WORD_NONE, + EC_WORD_NOPE, + EC_WORD_NORMAL, + EC_POKEMON(NOSEPASS), + EC_WORD_NOT, + EC_WORD_NOT_VERY, + EC_WORD_NOTHING, + EC_WORD_NOW, + EC_POKEMON(NUMEL), + EC_POKEMON(NUZLEAF), +}; + +const u16 gEasyChatWordsByLetter_O[] = { + EC_WORD_OBLIVIOUS, + EC_MOVE(OCTAZOOKA), + EC_POKEMON2(OCTILLERY), + -1, 2, // Doubled pokemon species name + EC_POKEMON(ODDISH), + EC_POKEMON2(ODDISH), + EC_MOVE(ODOR_SLEUTH), + EC_WORD_OF, + EC_WORD_OFF, + EC_WORD_OFFENSIVE, + EC_WORD_OH, + EC_WORD_OH_DEAR, + EC_WORD_OH_YEAH, + EC_WORD_OH_KAY, + EC_WORD_OH_QUES, + EC_WORD_OI, + EC_WORD_OI_OI_OI, + EC_WORD_OK_QUES, + EC_WORD_OKAY, + EC_WORD_OLD, + EC_WORD_OLDEN, + EC_POKEMON2(OMANYTE), + EC_POKEMON2(OMASTAR), + EC_WORD_ON, + EC_WORD_ONCE, + EC_POKEMON2(ONIX), + EC_WORD_ONLY, + EC_WORD_OOPS, + EC_WORD_OPPONENT, + EC_WORD_OPPOSITE, + EC_WORD_OR, + EC_WORD_OTHER, + EC_WORD_OUR, + EC_WORD_OUT, + EC_MOVE(OUTRAGE), + EC_WORD_OUTSIDE, + EC_WORD_OVER, + EC_WORD_OVERDO, + EC_WORD_OVERGROW, + EC_MOVE(OVERHEAT), + EC_WORD_OVERWHELMING, + EC_WORD_OWN, + EC_WORD_OWN_TEMPO, +}; + +const u16 gEasyChatWordsByLetter_P[] = { + EC_MOVE(PAIN_SPLIT), + EC_POKEMON2(PARAS), + EC_POKEMON2(PARASECT), + EC_WORD_PARDON, + EC_WORD_PARENT, + EC_WORD_PARTNER, + EC_WORD_PARTY, + EC_WORD_PATTERN, + EC_MOVE2(PAY_DAY), + EC_WORD_PC, + EC_MOVE2(PECK), + EC_POKEMON(PELIPPER), + EC_WORD_PERFECT, + EC_WORD_PERFECTION, + EC_MOVE2(PERISH_SONG), + EC_POKEMON2(PERSIAN), + EC_WORD_PERSON, + EC_MOVE2(PETAL_DANCE), + -1, 2, // Doubled pokemon species name + EC_POKEMON(PHANPY), + EC_POKEMON2(PHANPY), + EC_WORD_PHONE, + -1, 2, // Doubled pokemon species name + EC_POKEMON(PICHU), + EC_POKEMON2(PICHU), + EC_WORD_PICKUP, + EC_POKEMON2(PIDGEOT), + EC_POKEMON2(PIDGEOTTO), + EC_POKEMON2(PIDGEY), + -1, 2, // Doubled pokemon species name + EC_POKEMON(PIKACHU), + EC_POKEMON2(PIKACHU), + EC_POKEMON2(PILOSWINE), + EC_MOVE2(PIN_MISSILE), + EC_POKEMON2(PINECO), + -1, 2, // Doubled pokemon species name + EC_POKEMON(PINSIR), + EC_POKEMON2(PINSIR), + EC_WORD_PKRS, + EC_WORD_PLACE, + EC_WORD_PLANS, + EC_WORD_PLAY, + EC_WORD_PLAYED, + EC_WORD_PLAYS, + EC_WORD_PLEASE, + EC_WORD_PLUS, + EC_WORD_PLUSH_DOLL, + EC_POKEMON(PLUSLE), + EC_WORD_POINTS, + EC_WORD_POISON, + EC_MOVE2(POISON_FANG), + EC_MOVE2(POISON_GAS), + EC_WORD_POISON_POINT, + EC_MOVE2(POISON_STING), + EC_MOVE2(POISON_TAIL), + EC_MOVE2(POISON_POWDER), + EC_WORD_POKEBLOCK, + EC_WORD_POKEDEX, + EC_WORD_POKEMON, + EC_WORD_POKENAV, + EC_POKEMON2(POLITOED), + EC_POKEMON2(POLIWAG), + EC_POKEMON2(POLIWHIRL), + EC_POKEMON2(POLIWRATH), + EC_POKEMON2(PONYTA), + EC_POKEMON(POOCHYENA), + EC_WORD_POPULAR, + EC_POKEMON2(PORYGON), + EC_POKEMON2(PORYGON2), + EC_MOVE2(POUND), + EC_MOVE(POWDER_SNOW), + EC_WORD_POWER, + EC_WORD_PRAISE, + EC_WORD_PREPOSTEROUS, + EC_MOVE2(PRESENT), + EC_WORD_PRESSURE, + EC_WORD_PRETEND, + EC_WORD_PRETTY, + EC_POKEMON2(PRIMEAPE), + EC_WORD_PROBABLY, + EC_WORD_PROMISE, + EC_MOVE2(PROTECT), + EC_MOVE(PSYBEAM), + EC_MOVE(PSYCH_UP), + -1, 2, // Doubled pokemon species name + EC_WORD_PSYCHIC, + EC_MOVE(PSYCHIC), + EC_MOVE(PSYCHO_BOOST), + -1, 2, // Doubled pokemon species name + EC_POKEMON(PSYDUCK), + EC_POKEMON2(PSYDUCK), + EC_MOVE(PSYWAVE), + EC_POKEMON2(PUPITAR), + EC_WORD_PURE_POWER, + EC_MOVE(PURSUIT), + EC_WORD_PUSHOVER, +}; + +const u16 gEasyChatWordsByLetter_Q[] = { + EC_POKEMON2(QUAGSIRE), + EC_WORD_QUESTION, + EC_MOVE2(QUICK_ATTACK), + EC_POKEMON2(QUILAVA), + EC_WORD_QUITE, + EC_POKEMON2(QWILFISH), +}; + +const u16 gEasyChatWordsByLetter_R[] = { + EC_WORD_RADIO, + EC_MOVE(RAGE), + -1, 2, // Doubled pokemon species name + EC_POKEMON(RAICHU), + EC_POKEMON2(RAICHU), + EC_POKEMON2(RAIKOU), + EC_MOVE(RAIN_DANCE), + EC_WORD_RAIN_DISH, + EC_POKEMON(RALTS), + EC_WORD_RANK, + EC_MOVE(RAPID_SPIN), + EC_POKEMON2(RAPIDASH), + EC_WORD_RARE, + EC_WORD_RATHER, + EC_POKEMON2(RATICATE), + EC_POKEMON2(RATTATA), + EC_POKEMON(RAYQUAZA), + EC_MOVE2(RAZOR_LEAF), + EC_MOVE(RAZOR_WIND), + EC_WORD_READY, + EC_WORD_REALLY, + EC_WORD_REAR, + EC_WORD_RECEIVED, + EC_WORD_RECOMMEND, + EC_MOVE(RECOVER), + EC_MOVE2(RECYCLE), + EC_WORD_RED, + EC_MOVE2(REFLECT), + EC_MOVE2(REFRESH), + EC_WORD_REFRESHING, + EC_WORD_REFUSE, + EC_POKEMON(REGICE), + EC_POKEMON(REGIROCK), + EC_POKEMON(REGISTEEL), + EC_WORD_REJECT, + EC_WORD_RELEASE, + EC_POKEMON(RELICANTH), + EC_POKEMON2(REMORAID), + EC_WORD_RENTAL, + EC_MOVE2(REST), + EC_WORD_RESUSCITATE, + EC_MOVE(RETURN), + EC_MOVE2(REVENGE), + EC_MOVE(REVERSAL), + -1, 2, // Doubled pokemon species name + EC_POKEMON(RHYDON), + EC_POKEMON2(RHYDON), + -1, 2, // Doubled pokemon species name + EC_POKEMON(RHYHORN), + EC_POKEMON2(RHYHORN), + EC_WORD_RIBBON, + EC_WORD_RICKETY, + EC_WORD_RIGHT, + EC_WORD_RIPPED, + EC_WORD_RIVAL, + EC_MOVE2(ROAR), + EC_WORD_ROCK, + EC_MOVE2(ROCK_BLAST), + EC_WORD_ROCK_HEAD, + EC_MOVE(ROCK_SLIDE), + EC_MOVE(ROCK_SMASH), + EC_MOVE(ROCK_THROW), + EC_MOVE(ROCK_TOMB), + EC_WORD_ROCK_SOLID, + EC_MOVE2(ROLE_PLAY), + EC_MOVE2(ROLLING_KICK), + EC_MOVE(ROLLOUT), + EC_WORD_ROMANTIC, + EC_WORD_ROOM, + EC_POKEMON(ROSELIA), + EC_WORD_ROUGH_SKIN, + EC_WORD_RPG, + EC_WORD_RUBY, + EC_WORD_RULE, + EC_WORD_RUN, + EC_WORD_RUN_AWAY, + EC_WORD_RUNS, +}; + +const u16 gEasyChatWordsByLetter_S[] = { + EC_POKEMON(SABLEYE), + EC_MOVE(SACRED_FIRE), + EC_WORD_SAD, + EC_WORD_SADLY, + EC_MOVE(SAFEGUARD), + EC_WORD_SAID, + EC_POKEMON(SALAMENCE), + EC_WORD_SAND_STREAM, + EC_MOVE(SAND_TOMB), + EC_WORD_SAND_VEIL, + EC_MOVE(SAND_ATTACK), + -1, 2, // Doubled pokemon species name + EC_POKEMON(SANDSHREW), + EC_POKEMON2(SANDSHREW), + -1, 2, // Doubled pokemon species name + EC_POKEMON(SANDSLASH), + EC_POKEMON2(SANDSLASH), + EC_MOVE(SANDSTORM), + EC_WORD_SAPPHIRE, + EC_WORD_SATISFIED, + EC_WORD_SATURDAY, + EC_WORD_SAYS, + EC_WORD_SCARY, + EC_MOVE(SCARY_FACE), + EC_WORD_SCATTER, + EC_POKEMON(SCEPTILE), + EC_WORD_SCHOOL, + EC_POKEMON2(SCIZOR), + EC_MOVE2(SCRATCH), + EC_MOVE(SCREECH), + EC_POKEMON2(SCYTHER), + -1, 2, // Doubled pokemon species name + EC_POKEMON(SEADRA), + EC_POKEMON2(SEADRA), + -1, 2, // Doubled pokemon species name + EC_POKEMON(SEAKING), + EC_POKEMON2(SEAKING), + EC_POKEMON(SEALEO), + EC_WORD_SEARCH, + EC_WORD_SECRET, + EC_WORD_SECRET_BASE, + EC_MOVE2(SECRET_POWER), + EC_WORD_SEE, + EC_WORD_SEE_YA, + EC_POKEMON(SEEDOT), + EC_WORD_SEEK, + EC_POKEMON2(SEEL), + EC_WORD_SEEMS, + EC_WORD_SEES, + EC_MOVE2(SEISMIC_TOSS), + EC_MOVE(SELF_DESTRUCT), + EC_WORD_SENSE, + EC_POKEMON2(SENTRET), + EC_WORD_SERENE_GRACE, + EC_WORD_SERIOUS, + EC_WORD_SERIOUSLY, + EC_WORD_SERVICE, + EC_POKEMON(SEVIPER), + EC_MOVE(SHADOW_BALL), + EC_MOVE(SHADOW_PUNCH), + EC_WORD_SHADOW_TAG, + EC_WORD_SHADY, + EC_WORD_SHAKE, + EC_WORD_SHAKY, + EC_WORD_SHALLOW, + EC_POKEMON(SHARPEDO), + EC_MOVE(SHARPEN), + EC_WORD_SHE, + EC_WORD_SHE_IS, + EC_WORD_SHE_WAS, + EC_WORD_SHED_SKIN, + EC_POKEMON(SHEDINJA), + EC_MOVE(SHEER_COLD), + EC_POKEMON(SHELGON), + EC_WORD_SHELL_ARMOR, + EC_POKEMON2(SHELLDER), + EC_WORD_SHIELD_DUST, + EC_POKEMON(SHIFTRY), + EC_WORD_SHINE, + EC_MOVE2(SHOCK_WAVE), + EC_WORD_SHOCKED, + EC_WORD_SHOPPING, + EC_WORD_SHOULD, + EC_WORD_SHOW, + EC_WORD_SHREDDED, + EC_POKEMON(SHROOMISH), + EC_POKEMON2(SHUCKLE), + EC_POKEMON(SHUPPET), + EC_WORD_SIBLINGS, + EC_WORD_SIGH, + EC_MOVE(SIGNAL_BEAM), + EC_POKEMON(SILCOON), + EC_WORD_SILKY, + EC_WORD_SILVER, + EC_MOVE(SILVER_WIND), + EC_WORD_SIMPLE, + EC_WORD_SINCE, + EC_MOVE(SING), + EC_WORD_SINK, + EC_WORD_SISTER, + -1, 2, // Doubled pokemon species name + EC_POKEMON(SKARMORY), + EC_POKEMON2(SKARMORY), + EC_MOVE(SKETCH), + EC_WORD_SKILL, + EC_MOVE(SKILL_SWAP), + EC_WORD_SKILLED, + EC_POKEMON2(SKIPLOOM), + EC_POKEMON(SKITTY), + EC_MOVE2(SKULL_BASH), + EC_MOVE(SKY_ATTACK), + EC_MOVE(SKY_UPPERCUT), + EC_MOVE2(SLACK_OFF), + EC_POKEMON(SLAKING), + EC_POKEMON(SLAKOTH), + EC_MOVE2(SLAM), + EC_MOVE(SLASH), + EC_WORD_SLEEP, + EC_MOVE2(SLEEP_POWDER), + EC_MOVE2(SLEEP_TALK), + EC_WORD_SLEPT, + EC_WORD_SLIDE, + EC_WORD_SLIMY, + EC_POKEMON2(SLOWBRO), + EC_POKEMON2(SLOWKING), + EC_POKEMON2(SLOWPOKE), + EC_MOVE2(SLUDGE), + EC_MOVE2(SLUDGE_BOMB), + -1, 2, // Doubled pokemon species name + EC_POKEMON(SLUGMA), + EC_POKEMON2(SLUGMA), + EC_WORD_SMACK, + EC_WORD_SMALL, + EC_WORD_SMART, + EC_WORD_SMARTNESS, + EC_POKEMON2(SMEARGLE), + EC_WORD_SMELL, + EC_WORD_SMELL_YA, + EC_MOVE(SMELLING_SALT), + EC_WORD_SMITE, + EC_MOVE(SMOG), + EC_MOVE(SMOKESCREEN), + EC_POKEMON2(SMOOCHUM), + EC_WORD_SMOOTH, + EC_MOVE2(SNATCH), + EC_POKEMON2(SNEASEL), + EC_MOVE(SNORE), + EC_POKEMON2(SNORLAX), + EC_WORD_SNORT, + EC_POKEMON(SNORUNT), + EC_POKEMON2(SNUBBULL), + EC_WORD_SO, + EC_MOVE2(SOFT_BOILED), + EC_WORD_SOFTWARE, + EC_MOVE(SOLAR_BEAM), + EC_POKEMON(SOLROCK), + EC_WORD_SOME, + EC_WORD_SOMEHOW, + EC_WORD_SOMEONE, + EC_WORD_SOMETHING, + EC_WORD_SOMETIME, + EC_WORD_SON, + EC_WORD_SONG, + EC_WORD_SONGS, + EC_MOVE(SONIC_BOOM), + EC_WORD_SOON, + EC_WORD_SORRY, + EC_WORD_SOUNDPROOF, + EC_WORD_SP_ABILITY, + EC_MOVE(SPARK), + EC_POKEMON2(SPEAROW), + EC_WORD_SPECTATOR, + EC_WORD_SPEED_BOOST, + EC_POKEMON(SPHEAL), + EC_MOVE(SPIDER_WEB), + EC_MOVE2(SPIKE_CANNON), + EC_MOVE2(SPIKES), + EC_POKEMON2(SPINARAK), + EC_POKEMON(SPINDA), + EC_WORD_SPIRALING, + EC_WORD_SPIRIT, + EC_MOVE2(SPIT_UP), + EC_MOVE(SPITE), + EC_MOVE2(SPLASH), + EC_POKEMON(SPOINK), + EC_MOVE(SPORE), + EC_WORD_SPORTS, + EC_WORD_SPRING, + EC_POKEMON2(SQUIRTLE), + EC_WORD_STAGE, + EC_POKEMON2(STANTLER), + -1, 2, // Doubled pokemon species name + EC_POKEMON(STARMIE), + EC_POKEMON2(STARMIE), + EC_WORD_START, + -1, 2, // Doubled pokemon species name + EC_POKEMON(STARYU), + EC_POKEMON2(STARYU), + EC_WORD_STATIC, + EC_WORD_STAY_AT_HOME, + EC_WORD_STEEL, + EC_MOVE2(STEEL_WING), + EC_POKEMON2(STEELIX), + EC_WORD_STENCH, + EC_WORD_STICKY_HOLD, + EC_MOVE2(STOCKPILE), + EC_MOVE2(STOMP), + EC_WORD_STOP, + EC_WORD_STORE, + EC_WORD_STORES, + EC_WORD_STORY, + EC_WORD_STRATEGY, + EC_MOVE(STRENGTH), + EC_MOVE(STRING_SHOT), + EC_WORD_STRONG, + EC_MOVE2(STRUGGLE), + EC_WORD_STUDY, + EC_MOVE(STUN_SPORE), + EC_WORD_STURDY, + EC_MOVE(SUBMISSION), + EC_MOVE2(SUBSTITUTE), + EC_WORD_SUCTION_CUPS, + EC_POKEMON2(SUDOWOODO), + EC_POKEMON2(SUICUNE), + EC_WORD_SUMMER, + EC_WORD_SUNDAY, + EC_POKEMON2(SUNFLORA), + EC_POKEMON2(SUNKERN), + EC_MOVE2(SUNNY_DAY), + EC_WORD_SUPER, + EC_MOVE(SUPER_FANG), + EC_MOVE2(SUPERPOWER), + EC_MOVE2(SUPERSONIC), + EC_MOVE2(SURF), + EC_WORD_SURPRISE, + EC_WORD_SURRENDER, + EC_POKEMON(SURSKIT), + EC_POKEMON(SWABLU), + EC_MOVE(SWAGGER), + EC_MOVE2(SWALLOW), + EC_POKEMON(SWALOT), + EC_POKEMON(SWAMPERT), + EC_WORD_SWARM, + EC_MOVE2(SWEET_KISS), + EC_MOVE(SWEET_SCENT), + EC_WORD_SWEETS, + EC_POKEMON(SWELLOW), + EC_MOVE(SWIFT), + EC_WORD_SWIFT_SWIM, + EC_POKEMON2(SWINUB), + EC_MOVE2(SWORDS_DANCE), + EC_WORD_SYNCHRONIZE, + EC_MOVE(SYNTHESIS), + EC_WORD_SYSTEM, +}; + +const u16 gEasyChatWordsByLetter_T[] = { + EC_MOVE2(TACKLE), + EC_MOVE2(TAIL_GLOW), + EC_MOVE(TAIL_WHIP), + EC_POKEMON(TAILLOW), + EC_WORD_TAKE, + EC_MOVE2(TAKE_DOWN), + EC_WORD_TAKE_THAT, + EC_WORD_TALENT, + EC_WORD_TALK, + EC_WORD_TALKING, + EC_POKEMON2(TANGELA), + EC_WORD_TASTY, + EC_MOVE2(TAUNT), + EC_POKEMON2(TAUROS), + EC_WORD_TCH, + EC_WORD_TEACH, + EC_WORD_TEACHER, + EC_WORD_TEACHES, + EC_POKEMON2(TEDDIURSA), + EC_MOVE2(TEETER_DANCE), + EC_MOVE2(TELEPORT), + EC_WORD_TELEVISION, + -1, 2, // Doubled pokemon species name + EC_POKEMON(TENTACOOL), + EC_POKEMON2(TENTACOOL), + -1, 2, // Doubled pokemon species name + EC_POKEMON(TENTACRUEL), + EC_POKEMON2(TENTACRUEL), + EC_WORD_TERRIBLE, + EC_WORD_TEST, + EC_WORD_THAN, + EC_WORD_THANK_YOU, + EC_WORD_THANKS, + EC_WORD_THAT, + EC_WORD_THAT_WAS, + EC_WORD_THAT_S, + EC_WORD_THAT_S_IT_EXCL, + EC_WORD_THE, + EC_WORD_THEIR, + EC_WORD_THERE, + EC_WORD_THESE, + EC_WORD_THESE_WERE, + EC_WORD_THEY, + EC_WORD_THEY_WERE, + EC_WORD_THEY_RE, + EC_WORD_THEY_VE, + EC_WORD_THICK, + EC_WORD_THICK_FAT, + EC_MOVE2(THIEF), + EC_WORD_THIN, + EC_WORD_THING, + EC_WORD_THINGS, + EC_WORD_THINK, + EC_WORD_THINKS, + EC_WORD_THIRSTY, + EC_WORD_THIS, + EC_WORD_THIS_IS_IT_EXCL, + EC_WORD_THOSE, + EC_WORD_THOSE_ARE, + EC_WORD_THOSE_WERE, + EC_MOVE(THRASH), + EC_WORD_THROW, + EC_MOVE(THUNDER), + EC_MOVE2(THUNDER_WAVE), + EC_MOVE(THUNDERBOLT), + EC_MOVE(THUNDER_PUNCH), + EC_MOVE2(THUNDER_SHOCK), + EC_WORD_THURSDAY, + EC_MOVE(TICKLE), + EC_WORD_TICKLISH, + EC_WORD_TIGHT, + EC_WORD_TIME, + EC_WORD_TIMES, + EC_WORD_TIRED, + EC_WORD_TO, + EC_WORD_TO_HER, + EC_WORD_TO_ME, + EC_WORD_TO_THEM, + EC_WORD_TO_US, + EC_WORD_TO_WHOM, + EC_WORD_TODAY, + EC_POKEMON2(TOGEPI), + EC_WORD_TOGETHER, + EC_POKEMON2(TOGETIC), + EC_WORD_TOMORROW, + EC_WORD_TOO, + EC_WORD_TOO_LATE, + EC_WORD_TOO_STRONG, + EC_WORD_TOO_WEAK, + EC_WORD_TOP, + EC_POKEMON(TORCHIC), + EC_POKEMON(TORKOAL), + EC_MOVE(TORMENT), + EC_WORD_TORRENT, + EC_WORD_TOTALLY, + EC_POKEMON2(TOTODILE), + EC_WORD_TOUGH, + EC_WORD_TOUGHNESS, + EC_WORD_TOURNAMENT, + EC_WORD_TOWER, + EC_MOVE2(TOXIC), + EC_WORD_TOYS, + EC_WORD_TRACE, + EC_WORD_TRADE, + EC_WORD_TRAIN, + EC_WORD_TRAINER, + EC_WORD_TRAINS, + EC_MOVE2(TRANSFORM), + EC_POKEMON(TRAPINCH), + EC_WORD_TRAVEL, + EC_WORD_TREASURE, + EC_POKEMON(TREECKO), + EC_WORD_TRENDY, + EC_MOVE2(TRI_ATTACK), + EC_MOVE2(TRICK), + EC_WORD_TRIES, + EC_MOVE2(TRIPLE_KICK), + EC_POKEMON(TROPIUS), + EC_WORD_TRUANT, + EC_WORD_TRULY, + EC_WORD_TRUMP_CARD, + EC_WORD_TRUST, + EC_WORD_TRY, + EC_WORD_TUESDAY, + EC_MOVE2(TWINEEDLE), + EC_WORD_TWIRLING, + EC_MOVE2(TWISTER), + EC_WORD_TYPE, + EC_POKEMON2(TYPHLOSION), + EC_POKEMON2(TYRANITAR), + EC_POKEMON2(TYROGUE), +}; + +const u16 gEasyChatWordsByLetter_U[] = { + EC_WORD_UGLY, + EC_WORD_UH_HUH, + EC_WORD_UH_OH, + EC_WORD_UM, + EC_POKEMON2(UMBREON), + EC_WORD_UNAVOIDABLE, + EC_WORD_UNBELIEVABLE, + EC_WORD_UNCLE, + EC_WORD_UNDERSTAND, + EC_WORD_UNDERSTANDS, + EC_WORD_UNDERSTOOD, + EC_WORD_UNION, + EC_POKEMON2(UNOWN), + EC_WORD_UNTIL, + EC_WORD_UP, + EC_WORD_UPBEAT, + EC_MOVE(UPROAR), + EC_WORD_UPSIDE_DOWN, + EC_WORD_URGH, + EC_POKEMON2(URSARING), + EC_WORD_USE, + EC_WORD_USELESS, + EC_WORD_USES, + EC_WORD_USING, +}; + +const u16 gEasyChatWordsByLetter_V[] = { + EC_WORD_VACATION, + EC_POKEMON2(VAPOREON), + EC_POKEMON2(VENOMOTH), + EC_POKEMON2(VENONAT), + EC_POKEMON2(VENUSAUR), + EC_WORD_VERSION, + EC_WORD_VERSUS, + EC_WORD_VERY, + EC_POKEMON(VIBRAVA), + EC_MOVE2(VICE_GRIP), + EC_WORD_VICTORY, + EC_POKEMON2(VICTREEBEL), + EC_WORD_VIEWING, + EC_POKEMON(VIGOROTH), + -1, 2, // Doubled pokemon species name + EC_POKEMON(VILEPLUME), + EC_POKEMON2(VILEPLUME), + EC_MOVE2(VINE_WHIP), + EC_WORD_VITAL_SPIRIT, + EC_MOVE(VITAL_THROW), + EC_POKEMON(VOLBEAT), + EC_WORD_VOLT_ABSORB, + EC_MOVE2(VOLT_TACKLE), + -1, 2, // Doubled pokemon species name + EC_POKEMON(VOLTORB), + EC_POKEMON2(VOLTORB), + EC_WORD_VORACIOUS, + -1, 2, // Doubled pokemon species name + EC_POKEMON(VULPIX), + EC_POKEMON2(VULPIX), +}; + +const u16 gEasyChatWordsByLetter_W[] = { + EC_WORD_WAAAH, + EC_WORD_WAHAHAHA, + EC_POKEMON(WAILMER), + EC_POKEMON(WAILORD), + EC_WORD_WAIT, + EC_WORD_WAKE_UP, + EC_WORD_WAKES_UP, + EC_WORD_WALK, + EC_WORD_WALKING, + EC_WORD_WALKS, + EC_POKEMON(WALREIN), + EC_WORD_WANDERING, + EC_WORD_WANNABE, + EC_WORD_WANT, + EC_WORD_WANTS, + EC_POKEMON2(WARTORTLE), + EC_WORD_WAS, + EC_WORD_WASN_T, + EC_WORD_WATER, + EC_WORD_WATER_ABSORB, + EC_MOVE2(WATER_GUN), + EC_MOVE2(WATER_PULSE), + EC_MOVE2(WATER_SPORT), + EC_MOVE(WATER_SPOUT), + EC_WORD_WATER_VEIL, + EC_MOVE2(WATERFALL), + EC_WORD_WAY, + EC_WORD_WE, + EC_WORD_WE_RE, + EC_WORD_WE_VE, + EC_WORD_WEAK, + EC_WORD_WEAKENED, + EC_MOVE(WEATHER_BALL), + EC_WORD_WEDNESDAY, + EC_POKEMON2(WEEDLE), + EC_WORD_WEEK, + EC_POKEMON2(WEEPINBELL), + -1, 2, // Doubled pokemon species name + EC_POKEMON(WEEZING), + EC_POKEMON2(WEEZING), + EC_WORD_WEIRD, + EC_WORD_WELCOME, + EC_WORD_WELL, + EC_WORD_WELL_THEN, + EC_WORD_WENT, + EC_WORD_WERE, + EC_WORD_WEREN_T, + EC_WORD_WHAT, + EC_WORD_WHAT_S_UP_QUES, + EC_WORD_WHEN, + EC_WORD_WHEN_I_WIN, + EC_WORD_WHERE, + EC_WORD_WHICH, + EC_WORD_WHILE, + EC_MOVE(WHIRLPOOL), + EC_MOVE2(WHIRLWIND), + EC_POKEMON(WHISCASH), + EC_POKEMON(WHISMUR), + EC_WORD_WHITE_SMOKE, + EC_WORD_WHO, + EC_WORD_WHO_IS, + EC_WORD_WHO_WAS, + EC_WORD_WHOAH, + EC_WORD_WHOM, + EC_WORD_WHOSE, + EC_WORD_WHY, + -1, 2, // Doubled pokemon species name + EC_POKEMON(WIGGLYTUFF), + EC_POKEMON2(WIGGLYTUFF), + EC_WORD_WILD, + EC_WORD_WILL, + EC_WORD_WILL_BE_HERE, + EC_MOVE(WILL_O_WISP), + EC_WORD_WIMPY, + EC_WORD_WIN, + EC_MOVE2(WING_ATTACK), + EC_POKEMON(WINGULL), + EC_WORD_WINNER, + EC_WORD_WINS, + EC_WORD_WINTER, + EC_WORD_WIRELESS, + EC_MOVE2(WISH), + EC_WORD_WITH, + EC_MOVE(WITHDRAW), + EC_WORD_WITHOUT, + EC_WORD_WOBBLY, + -1, 2, // Doubled pokemon species name + EC_POKEMON(WOBBUFFET), + EC_POKEMON2(WOBBUFFET), + EC_WORD_WOMAN, + EC_WORD_WON, + EC_WORD_WON_T, + EC_WORD_WONDER, + EC_WORD_WONDER_GUARD, + EC_POKEMON2(WOOPER), + EC_WORD_WORD, + EC_WORD_WORK, + EC_WORD_WORKING, + EC_WORD_WORKS, + EC_WORD_WORLD, + EC_WORD_WORRY, + EC_WORD_WOULD, + EC_WORD_WOW, + EC_WORD_WOWEE, + EC_MOVE2(WRAP), + EC_WORD_WROOOAAR_EXCL, + EC_POKEMON(WURMPLE), + EC_POKEMON(WYNAUT), +}; + +const u16 gEasyChatWordsByLetter_X[] = { + -1, 2, // Doubled pokemon species name + EC_POKEMON(XATU), + EC_POKEMON2(XATU), +}; + +const u16 gEasyChatWordsByLetter_Y[] = { + EC_WORD_YAHOO, + EC_POKEMON2(YANMA), + EC_MOVE(YAWN), + EC_WORD_YAY, + EC_WORD_YEAH, + EC_WORD_YEAH_YEAH, + EC_WORD_YEEHAW_EXCL, + EC_WORD_YES, + EC_WORD_YES_SIR_EXCL, + EC_WORD_YESTERDAY, + EC_WORD_YET, + EC_WORD_YO, + EC_WORD_YOU, + EC_WORD_YOU_RE, + EC_WORD_YOU_VE, + EC_WORD_YOUNG, + EC_WORD_YOUR, + EC_WORD_YOURS, + EC_WORD_YUP, +}; + +const u16 gEasyChatWordsByLetter_Z[] = { + EC_POKEMON(ZANGOOSE), + EC_MOVE2(ZAP_CANNON), + EC_POKEMON2(ZAPDOS), + EC_POKEMON(ZIGZAGOON), + -1, 2, // Doubled pokemon species name + EC_POKEMON(ZUBAT), + EC_POKEMON2(ZUBAT), +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseHi[] = { + EC_POKEMON2(CLEFFA), + EC_WORD_AIYEEH, + EC_POKEMON2(WEEDLE), + EC_WORD_HERO, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(PIKACHU), + EC_POKEMON(PIKACHU), + EC_MOVE2(LIGHT_SCREEN), + EC_WORD_SHINE, + EC_WORD_LOW, + EC_POKEMON2(CLEFABLE), + EC_WORD_FLYING, + EC_POKEMON2(PIDGEOT), + EC_POKEMON2(PIDGEOTTO), + EC_WORD_LEFT, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(PICHU), + EC_POKEMON(PICHU), + EC_MOVE2(SCRATCH), + EC_WORD_SURPRISE, + EC_MOVE2(HYPER_FANG), + EC_POKEMON2(CLEFAIRY), + EC_WORD_DROUGHT, + EC_WORD_HIDDEN, + EC_WORD_PERSON, + EC_WORD_AWFUL, + EC_POKEMON2(CHARMANDER), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(STARYU), + EC_POKEMON(STARYU), + EC_WORD_ALONE, + EC_POKEMON2(CYNDAQUIL), + EC_MOVE2(EMBER), + EC_POKEMON(VIBRAVA), + EC_WORD_BORED, + EC_POKEMON2(SUNKERN), + EC_WORD_SECRET, + EC_WORD_SECRET_BASE, + EC_MOVE2(SECRET_POWER), + EC_POKEMON2(TEDDIURSA), + EC_WORD_HIYAH, + EC_MOVE2(DIZZY_PUNCH), + EC_WORD_LIGHTNINGROD, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(VOLTORB), + EC_POKEMON(VOLTORB), + EC_WORD_DAYTIME, + EC_MOVE2(BULK_UP), + EC_WORD_NAP, + EC_WORD_HEROINE, + EC_POKEMON(FEEBAS), +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseFu[] = { + EC_WORD_FIGHT, + EC_POKEMON2(MOLTRES), + EC_WORD_FASHION, + EC_WORD_FEAR, + EC_WORD_FEVER, + EC_MOVE2(IMPRISON), + EC_POKEMON2(FLAREON), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(ALAKAZAM), + EC_POKEMON(ALAKAZAM), + EC_POKEMON2(MAGMAR), + EC_POKEMON(GRUMPIG), + EC_MOVE2(FEATHER_DANCE), + EC_POKEMON2(FORRETRESS), + EC_MOVE2(WHIRLWIND), + EC_WORD_COMPOUNDEYES, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(WIGGLYTUFF), + EC_POKEMON(WIGGLYTUFF), + EC_MOVE2(BEAT_UP), + EC_WORD_MYSTERY, + EC_POKEMON2(IVYSAUR), + EC_POKEMON2(BULBASAUR), + EC_WORD_MARVEL_SCALE, + EC_WORD_WONDER_GUARD, + EC_POKEMON2(VENUSAUR), + EC_WORD_LACKS, + EC_WORD_RESUSCITATE, + EC_WORD_SMACK, + EC_WORD_FUFUFU, + EC_POKEMON2(AERODACTYL), + EC_WORD_WIMPY, + EC_POKEMON2(MAGBY), + EC_WORD_LOL, + EC_MOVE2(BLIZZARD), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(IGGLYBUFF), + EC_POKEMON(IGGLYBUFF), + EC_WORD_SNORT, + EC_MOVE2(STOMP), + EC_WORD_INSOMNIA, + EC_WORD_WINTER, + EC_WORD_LEVITATE, + EC_POKEMON(FLYGON), + EC_WORD_PLUS, + EC_MOVE2(BLAST_BURN), + EC_POKEMON(PLUSLE), + EC_POKEMON2(UMBREON), + EC_MOVE2(FLASH), + EC_WORD_WOBBLY, + EC_MOVE2(TEETER_DANCE), + EC_WORD_PRETEND, + EC_POKEMON2(ARTICUNO), + EC_WORD_WANNABE, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(JIGGLYPUFF), + EC_POKEMON(JIGGLYPUFF), + EC_POKEMON2(SNUBBULL), + EC_WORD_SHAKY, + EC_MOVE2(CRUSH_CLAW), + EC_MOVE2(BLAZE_KICK), + EC_MOVE2(PRESENT), + EC_WORD_PRESSURE, + EC_WORD_BLEND, + EC_WORD_FRONTIER, + EC_WORD_HUMPH, + EC_MOVE2(ERUPTION), +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseHe[] = { + EC_WORD_HEY, + EC_POKEMON(CORPHISH), + EC_WORD_BABY, + EC_POKEMON2(BAYLEEF), + EC_WORD_BEST, + EC_WORD_LOUSY, + EC_WORD_HEHEHE, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(GRIMER), + EC_POKEMON(GRIMER), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(MUK), + EC_POKEMON(MUK), + EC_WORD_LIQUID_OOZE, + EC_MOVE2(SLUDGE), + EC_MOVE2(SLUDGE_BOMB), + EC_MOVE2(GLARE), + EC_WORD_HEH, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(HERACROSS), + EC_POKEMON(HERACROSS), + EC_POKEMON(PELIPPER), + EC_POKEMON2(HOUNDOOM), + EC_POKEMON2(PERSIAN), + EC_WORD_RIPPED, + EC_POKEMON2(LICKITUNG), + EC_WORD_STUDY, + EC_WORD_COLOR_CHANGE, + EC_MOVE2(TRANSFORM), +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseHo[] = { + EC_MOVE2(POISON_TAIL), + EC_WORD_POINTS, + EC_POKEMON2(HO_OH), + EC_WORD_SOUNDPROOF, + EC_WORD_ADVENTURE, + EC_WORD_EFFECT_SPORE, + EC_MOVE2(ROAR), + EC_POKEMON(WAILORD), + EC_POKEMON(WAILMER), + EC_WORD_DUDE, + EC_WORD_BOARD, + EC_POKEMON2(HOOTHOOT), + EC_POKEMON(SALAMENCE), + EC_WORD_BALL, + EC_MOVE2(BONE_RUSH), + EC_WORD_THEY, + EC_WORD_THEY_WERE, + EC_WORD_TO_THEM, + EC_WORD_THEIR, + EC_WORD_THEY_RE, + EC_WORD_THEY_VE, + EC_WORD_POKENAV, + EC_WORD_POKEMON, + EC_WORD_GET, + EC_WORD_POKEDEX, + EC_WORD_PKRS, + EC_MOVE2(CAMOUFLAGE), + EC_WORD_WANT, + EC_MOVE2(COVET), + EC_POKEMON(AGGRON), + EC_MOVE2(TAIL_GLOW), + EC_POKEMON(POOCHYENA), + EC_POKEMON2(PIDGEY), + EC_WORD_AS_MUCH_AS, + EC_POKEMON2(PONYTA), + EC_MOVE2(BONE_CLUB), + EC_MOVE2(BONEMERANG), + EC_WORD_FIRE, + EC_MOVE2(FIRE_SPIN), + EC_WORD_FLAME_BODY, + EC_MOVE2(FIRE_PUNCH), + EC_POKEMON2(SKIPLOOM), + EC_WORD_HOHOHO, + EC_WORD_PRAISE, + EC_WORD_UH_HUH, + EC_POKEMON2(PORYGON), + EC_POKEMON2(PORYGON2), + EC_MOVE2(VOLT_TACKLE), + EC_WORD_POKEBLOCK, + EC_MOVE2(PERISH_SONG), + EC_WORD_SHREDDED, + EC_POKEMON(CASTFORM), + EC_WORD_BOOK, + EC_WORD_SERIOUS, + EC_WORD_REALLY, +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseMa[] = { + EC_WORD_OH_DEAR, + EC_WORD_IN, + EC_WORD_GIVE_UP, + EC_WORD_MINUS, + EC_POKEMON(MINUN), + EC_WORD_DAILY, + EC_WORD_OWN_TEMPO, + EC_MOVE2(WRAP), + EC_MOVE2(SPIKES), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(MAGCARGO), + EC_POKEMON(MAGCARGO), + EC_MOVE2(MAGNITUDE), + EC_POKEMON(MAKUHITA), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(SLUGMA), + EC_POKEMON(SLUGMA), + EC_WORD_MAGMA_ARMOR, + EC_POKEMON2(QUILAVA), + EC_WORD_OVERDO, + EC_WORD_LOSS, + EC_WORD_IF_I_LOSE, + EC_WORD_LOST, + EC_WORD_LOSE, + EC_WORD_TRULY, + EC_WORD_SERIOUSLY, + EC_MOVE2(MAGICAL_LEAF), + EC_MOVE2(MAGIC_COAT), + EC_WORD_MACHINE, + EC_WORD_OUT, + EC_WORD_MASTER, + EC_WORD_INCREASING, + EC_WORD_TOO, + EC_WORD_LIKE, + EC_POKEMON2(BELLSPROUT), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(WEEZING), + EC_POKEMON(WEEZING), + EC_WORD_SMELL, + EC_WORD_YET, + EC_WORD_MISTAKE, + EC_POKEMON(LINOONE), + EC_WORD_TOTALLY, + EC_MOVE2(MUD_SHOT), + EC_MOVE2(MACH_PUNCH), + EC_WORD_FESTIVAL, + EC_WORD_UNTIL, + EC_WORD_WAIT, + EC_WORD_GUARD, + EC_MOVE2(PROTECT), + EC_POKEMON(CASCOON), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(MARILL), + EC_POKEMON(MARILL), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(AZUMARILL), + EC_POKEMON(AZUMARILL), + EC_MOVE2(DEFENSE_CURL), + EC_WORD_AS_IF, + EC_POKEMON(SWALOT), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(ELECTRODE), + EC_POKEMON(ELECTRODE), + EC_MOVE2(ROLLING_KICK), + EC_WORD_COMICS, + EC_POKEMON2(MANKEY), + EC_WORD_SATISFIED, + EC_POKEMON2(MANTINE), +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseMi[] = { + EC_WORD_PARTNER, + EC_MOVE2(SUBSTITUTE), + EC_WORD_RIGHT, + EC_MOVE2(DETECT), + EC_MOVE2(PIN_MISSILE), + EC_WORD_WATER, + EC_MOVE2(WATER_SPORT), + EC_POKEMON(MUDKIP), + EC_MOVE2(WATER_GUN), + EC_MOVE2(MIST_BALL), + EC_MOVE2(WATER_PULSE), + EC_WORD_WATER_VEIL, + EC_WORD_SHOW, + EC_WORD_SEE, + EC_WORD_DID, + EC_MOVE2(FURY_ATTACK), + EC_MOVE2(FURY_SWIPES), + EC_MOVE2(DESTINY_BOND), + EC_WORD_LOOKS, + EC_WORD_REJECT, + EC_WORD_ACCEPT, + EC_POKEMON2(DRATINI), + EC_MOVE2(FALSE_SWIPE), + EC_MOVE2(FORESIGHT), + EC_POKEMON2(MEW), + EC_POKEMON2(MEWTWO), + EC_MOVE2(MIRROR_COAT), + EC_MOVE2(FUTURE_SIGHT), + EC_WORD_SEES, + EC_MOVE2(MILK_DRINK), + EC_POKEMON2(MILTANK), + EC_POKEMON(MILOTIC), + EC_WORD_WE, + EC_WORD_BEEN, + EC_WORD_TO_US, + EC_WORD_OUR, + EC_WORD_WE_RE, +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseMu[] = { + EC_WORD_MOOD, + EC_POKEMON2(MISDREAVUS), + EC_WORD_OLDEN, + EC_WORD_ARRGH, + EC_WORD_BUG, + EC_WORD_SWARM, + EC_WORD_RATHER, + EC_POKEMON2(SMOOCHUM), + EC_WORD_INVINCIBLE, + EC_WORD_HEART, + EC_WORD_MUFUFU, + EC_WORD_MMM, +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseMe[] = { + EC_MOVE2(CALM_MIND), + EC_WORD_MAIL, + EC_MOVE2(MEGA_DRAIN), + EC_MOVE2(MEGA_KICK), + EC_MOVE2(MEGA_PUNCH), + EC_POKEMON2(MEGANIUM), + EC_MOVE2(MEGAHORN), + EC_WORD_SEEK, + EC_MOVE2(HIDDEN_POWER), + EC_WORD_RARE, + EC_POKEMON(METAGROSS), + EC_POKEMON2(DITTO), + EC_MOVE2(METAL_CLAW), + EC_POKEMON(METANG), + EC_WORD_DESTROYED, + EC_WORD_MESSAGE, + EC_WORD_AWFULLY, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(TENTACOOL), + EC_POKEMON(TENTACOOL), + EC_WORD_FIERY, + EC_POKEMON2(MAREEP), + EC_MOVE2(ATTRACT), + EC_WORD_CUTE_CHARM, + EC_WORD_IMMUNITY, +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseMo[] = { + EC_WORD_ALMOST, + EC_WORD_BLAZE, + EC_WORD_NEARLY, + EC_WORD_MODE, + EC_WORD_OLD, + EC_WORD_THURSDAY, + EC_POKEMON2(FLAAFFY), + EC_WORD_LISTENING, + EC_WORD_OWN, + EC_WORD_MORE, + EC_WORD_DIDN_T, + EC_WORD_PICKUP, + EC_MOVE2(MIMIC), + EC_WORD_TOO_LATE, + EC_WORD_PATTERN, + EC_WORD_FLASH_FIRE, + EC_WORD_RECEIVED, + EC_POKEMON2(VENOMOTH), + EC_WORD_DOESN_T, + EC_POKEMON2(TANGELA), +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseYa[] = { + EC_WORD_HOO_HAH, + EC_WORD_PROMISE, + EC_WORD_KIND, + EC_POKEMON(BALTOY), + EC_WORD_HOLIDAY, + EC_WORD_NEGATIVE, + EC_MOVE2(FRUSTRATION), + EC_WORD_DONE, + EC_WORD_FINALLY, + EC_WORD_ANY, + EC_WORD_YAHOO, + EC_POKEMON2(SLOWKING), + EC_POKEMON2(SLOWBRO), + EC_MOVE2(LEECH_SEED), + EC_POKEMON2(SLOWPOKE), + EC_WORD_DANGER, + EC_POKEMON2(MURKROW), + EC_POKEMON(SABLEYE), + EC_WORD_DEFEATED, + EC_WORD_BEAT, + EC_WORD_VITAL_SPIRIT, + EC_POKEMON(VIGOROTH), + EC_WORD_YOUNG, + EC_POKEMON2(YANMA), +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseYu[] = { + EC_POKEMON(SNORUNT), + EC_WORD_TAKE, + EC_WORD_UNION, + EC_MOVE2(METRONOME), + EC_WORD_DREAM, + EC_MOVE2(DREAM_EATER), + EC_WORD_ALLOW, + EC_WORD_FORGET, + EC_POKEMON(CRADILY), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(KADABRA), + EC_POKEMON(KADABRA), +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseYo[] = { + EC_WORD_WITHOUT, + EC_WORD_YO, + EC_MOVE2(ACID), + EC_WORD_COME_OVER, + EC_WORD_KINDERGARTEN, + EC_WORD_CHLOROPHYLL, + EC_WORD_AFTER, + EC_POKEMON2(LARVITAR), + EC_WORD_OH_KAY, + EC_WORD_BEFORE, + EC_WORD_GREAT, + EC_MOVE2(MEDITATE), + EC_WORD_PURE_POWER, + EC_WORD_WELL, + EC_MOVE2(SNATCH), + EC_WORD_OKAY, + EC_WORD_PLANS, + EC_WORD_NIGHTTIME, + EC_WORD_WHILE, + EC_POKEMON(DUSKULL), + EC_WORD_EASY, + EC_WORD_INSTEAD, + EC_WORD_NIGHT, + EC_POKEMON2(NOCTOWL), + EC_WORD_COUNT_ON, + EC_WORD_WEAK, + EC_WORD_TOO_WEAK, + EC_WORD_WEAKENED, +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseRa[] = { + EC_POKEMON2(RAIKOU), + EC_WORD_WEEK, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(RAICHU), + EC_POKEMON(RAICHU), + EC_WORD_RIVAL, + EC_WORD_LIFE, + EC_POKEMON(MANECTRIC), + EC_WORD_SIMPLE, + EC_WORD_PUSHOVER, + EC_POKEMON(SWAMPERT), + EC_POKEMON(ELECTRIKE), + EC_WORD_SEEMS, + EC_WORD_RADIO, + EC_MOVE2(LUSTER_PURGE), + EC_POKEMON2(CHANSEY), + EC_POKEMON2(RATICATE), + EC_POKEMON(LATIAS), + EC_POKEMON(LATIOS), + EC_POKEMON(LUVDISC), + EC_POKEMON2(LAPRAS), + EC_WORD_LOVEY_DOVEY, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(VILEPLUME), + EC_POKEMON(VILEPLUME), + EC_WORD_LALALA, + EC_POKEMON(RALTS), + EC_WORD_FORGETS, + EC_WORD_APPEARS, + EC_WORD_RANK, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(LANTURN), + EC_POKEMON(LANTURN), +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseRi[] = { + EC_WORD_LEADER, + EC_MOVE2(LEAF_BLADE), + EC_POKEMON2(CHARMELEON), + EC_POKEMON2(CHARIZARD), + EC_MOVE2(RECYCLE), + EC_MOVE2(REFLECT), + EC_MOVE2(REFRESH), + EC_MOVE2(REVENGE), + EC_WORD_RIBBON, + EC_WORD_TRENDY, + EC_MOVE2(DRAGON_RAGE), + EC_MOVE2(DRAGON_BREATH), + EC_MOVE2(DRAGON_DANCE), + EC_WORD_VACATION, + EC_POKEMON(LILEEP), + EC_POKEMON2(URSARING), + EC_WORD_SHIELD_DUST, +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseRu[] = { + EC_POKEMON2(JYNX), + EC_WORD_ROOM, + EC_WORD_RULE, + EC_POKEMON2(LUGIA), + EC_WORD_LOOK, + EC_POKEMON(LUNATONE), + EC_WORD_RUBY, + EC_WORD_THAN, + EC_POKEMON(AZURILL), + EC_POKEMON(LUDICOLO), + EC_WORD_HAPPILY, +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseRe[] = { + -1, 2, // Doubled pokemon species name + EC_POKEMON2(MAGNETON), + EC_POKEMON(MAGNETON), + EC_MOVE2(ICE_PUNCH), + EC_MOVE2(ICE_BEAM), + EC_POKEMON(REGICE), + EC_POKEMON(REGISTEEL), + EC_POKEMON(REGIROCK), + EC_POKEMON(RAYQUAZA), + EC_WORD_UGLY, + EC_POKEMON2(LEDIAN), + EC_POKEMON2(LEDYBA), + EC_WORD_FANTASTIC, + EC_WORD_LEVEL, + EC_MOVE2(FURY_CUTTER), + EC_MOVE2(COMET_PUNCH), + EC_WORD_RENTAL, +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseRo[] = { + EC_MOVE2(SKULL_BASH), + -1, 2, // Doubled pokemon species name + EC_POKEMON2(VULPIX), + EC_POKEMON(VULPIX), + EC_POKEMON(ROSELIA), + EC_MOVE2(LOCK_ON), + EC_MOVE2(ROCK_BLAST), + EC_WORD_ROMANTIC, + EC_WORD_QUESTION, +}; + +const u16 gEasyChatWordsByLetter_UnusedJapaneseWa[] = { + EC_WORD_YAY, + EC_WORD_WORLD, + EC_WORD_AWW, + EC_WORD_WIRELESS, + EC_WORD_WOWEE, + EC_POKEMON(COMBUSKEN), + EC_WORD_UNDERSTAND, + EC_WORD_UNDERSTANDS, + EC_WORD_FAINT, + EC_WORD_ANTICIPATION, + EC_WORD_ONCE, + EC_WORD_MOVE, + EC_WORD_WE_VE, + EC_WORD_FAINTED, + EC_WORD_WOMAN, + EC_WORD_SHE, + EC_WORD_SHE_WAS, + EC_WORD_TO_HER, + EC_WORD_HERS, + EC_WORD_SHE_IS, + EC_WORD_SOME, + EC_POKEMON2(JUMPLUFF), + EC_MOVE2(COTTON_SPORE), + EC_WORD_GWAH, + EC_POKEMON2(TOTODILE), + EC_WORD_WAHAHAHA, + EC_WORD_ANYWHERE, + EC_MOVE2(STRUGGLE), + EC_WORD_BADLY, + -1, 2, // Doubled pokemon species name + EC_POKEMON2(MACHOP), + EC_POKEMON(MACHOP), +}; + +const struct EasyChatWordsByLetter gEasyChatWordsByLetterPointers[] = { + { + .words = gEasyChatWordsByLetter_Others, + .numWords = 10, + }, + { + .words = gEasyChatWordsByLetter_A, + .numWords = 106, + }, + { + .words = gEasyChatWordsByLetter_B, + .numWords = 86, + }, + { + .words = gEasyChatWordsByLetter_C, + .numWords = 119, + }, + { + .words = gEasyChatWordsByLetter_D, + .numWords = 94, + }, + { + .words = gEasyChatWordsByLetter_E, + .numWords = 59, + }, + { + .words = gEasyChatWordsByLetter_F, + .numWords = 80, + }, + { + .words = gEasyChatWordsByLetter_G, + .numWords = 98, + }, + { + .words = gEasyChatWordsByLetter_H, + .numWords = 101, + }, + { + .words = gEasyChatWordsByLetter_I, + .numWords = 48, + }, + { + .words = gEasyChatWordsByLetter_J, + .numWords = 13, + }, + { + .words = gEasyChatWordsByLetter_K, + .numWords = 33, + }, + { + .words = gEasyChatWordsByLetter_L, + .numWords = 82, + }, + { + .words = gEasyChatWordsByLetter_M, + .numWords = 142, + }, + { + .words = gEasyChatWordsByLetter_N, + .numWords = 54, + }, + { + .words = gEasyChatWordsByLetter_O, + .numWords = 44, + }, + { + .words = gEasyChatWordsByLetter_P, + .numWords = 102, + }, + { + .words = gEasyChatWordsByLetter_Q, + .numWords = 6, + }, + { + .words = gEasyChatWordsByLetter_R, + .numWords = 80, + }, + { + .words = gEasyChatWordsByLetter_S, + .numWords = 262, + }, + { + .words = gEasyChatWordsByLetter_T, + .numWords = 133, + }, + { + .words = gEasyChatWordsByLetter_U, + .numWords = 24, + }, + { + .words = gEasyChatWordsByLetter_V, + .numWords = 33, + }, + { + .words = gEasyChatWordsByLetter_W, + .numWords = 111, + }, + { + .words = gEasyChatWordsByLetter_X, + .numWords = 4, + }, + { + .words = gEasyChatWordsByLetter_Y, + .numWords = 19, + }, + { + .words = gEasyChatWordsByLetter_Z, + .numWords = 8, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseHi, + .numWords = 55, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseFu, + .numWords = 71, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseHe, + .numWords = 32, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseHo, + .numWords = 55, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseMa, + .numWords = 74, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseMi, + .numWords = 37, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseMu, + .numWords = 12, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseMe, + .numWords = 26, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseMo, + .numWords = 20, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseYa, + .numWords = 24, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseYu, + .numWords = 13, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseYo, + .numWords = 28, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseRa, + .numWords = 36, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseRi, + .numWords = 17, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseRu, + .numWords = 11, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseRe, + .numWords = 18, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseRo, + .numWords = 10, + }, + { + .words = gEasyChatWordsByLetter_UnusedJapaneseWa, + .numWords = 33, + }, +}; diff --git a/src/daycare.c b/src/daycare.c index b75fab292..885ac31a1 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1259,7 +1259,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId) break; } DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL); - sub_819746C(gTasks[taskId].tWindowId, TRUE); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); RemoveWindow(gTasks[taskId].tWindowId); DestroyTask(taskId); EnableBothScriptContexts(); @@ -1268,7 +1268,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId) { gSpecialVar_Result = 2; DestroyListMenuTask(gTasks[taskId].tMenuListTaskId, NULL, NULL); - sub_819746C(gTasks[taskId].tWindowId, TRUE); + ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); RemoveWindow(gTasks[taskId].tWindowId); DestroyTask(taskId); EnableBothScriptContexts(); @@ -1283,7 +1283,7 @@ void ShowDaycareLevelMenu(void) u8 daycareMenuTaskId; windowId = AddWindow(&sDaycareLevelMenuWindowTemplate); - NewMenuHelpers_DrawStdWindowFrame(windowId, FALSE); + DrawStdWindowFrame(windowId, FALSE); menuTemplate = sDaycareListMenuLevelTemplate; menuTemplate.windowId = windowId; diff --git a/src/decoration.c b/src/decoration.c index 2ac49b98c..0712b5d32 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -463,14 +463,14 @@ u8 sub_81269D4(u8 idx) { *winidx = AddWindow(&gUnknown_085A6B90[idx]); } - SetWindowBorderStyle(*winidx, 0, 0x214, 0xe); + DrawStdFrameWithCustomTileAndPalette(*winidx, 0, 0x214, 0xe); schedule_bg_copy_tilemap_to_vram(0); return *winidx; } void sub_8126A58(u8 idx) { - sub_8198070(sDecorMenuWindowIndices[idx], FALSE); + ClearStdWindowAndFrameToTransparent(sDecorMenuWindowIndices[idx], FALSE); ClearWindowTilemap(sDecorMenuWindowIndices[idx]); RemoveWindow(sDecorMenuWindowIndices[idx]); schedule_bg_copy_tilemap_to_vram(0); @@ -543,7 +543,7 @@ void sub_8126B80(u8 taskId) void sub_8126C08(void) { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, sSecretBasePCMenuItemDescriptions[sSecretBasePCMenuCursorPos], 0, 0, 2, 1, 3); } @@ -572,7 +572,7 @@ void SecretBasePC_PutAway(u8 taskId) else { sub_8126A58(0); - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); FadeScreen(1, 0); gTasks[taskId].data[2] = 0; gTasks[taskId].func = sub_8129ABC; @@ -617,7 +617,7 @@ void sub_8126DA4(u8 taskId) void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId) { LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20); - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); sub_8126A58(0); sub_8126DFC(taskId); } @@ -634,7 +634,7 @@ void sub_8126DFC(u8 taskId) void sub_8126E44(u8 taskId) { - FillWindowPixelBuffer(sDecorMenuWindowIndices[1], 0x11); + FillWindowPixelBuffer(sDecorMenuWindowIndices[1], PIXEL_FILL(1)); sub_8126E8C(taskId); InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sDecorMenuWindowIndices[1], 9, sCurDecorationCategory); gTasks[taskId].func = sub_8127088; @@ -751,7 +751,7 @@ void sub_81270E8(u8 taskId) void sub_8127180(u8 taskId) { - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); sub_8126DFC(taskId); } @@ -771,7 +771,7 @@ void sub_81271CC(u8 taskId) { sub_8126A58(1); sub_8126A88(); - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); sub_8126C08(); gTasks[taskId].func = sub_8126B80; } @@ -779,7 +779,7 @@ void sub_81271CC(u8 taskId) void sub_8127208(u8 taskId) { LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20); - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); gTasks[taskId].data[11] = 2; sCurDecorationCategory = DECORCAT_DESK; sub_8126DFC(taskId); @@ -968,7 +968,7 @@ void sub_8127744(u32 a0) const u8 *txt; winidx = sDecorMenuWindowIndices[3]; - FillWindowPixelBuffer(winidx, 0x11); + FillWindowPixelBuffer(winidx, PIXEL_FILL(1)); if (a0 >= sCurDecorCatCount) { txt = gText_GoBackPrevMenu; @@ -1095,7 +1095,7 @@ void sub_8127A14(u8 taskId) void sub_8127A30(u8 taskId) { - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); gTasks[taskId].func = sub_8127A14; } @@ -1103,7 +1103,7 @@ void sub_8127A5C(u8 taskId) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); sub_81269D4(1); sub_8127620(taskId); } @@ -1158,7 +1158,7 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor) u16 i; u16 j; u16 behavior; - u16 flags; + u16 impassableFlag; u16 v0; u16 v1; s16 decLeft; @@ -1173,11 +1173,11 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor) behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decor].tiles[i * decWidth + j]); if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decor].permission != DECORPERM_PASS_FLOOR && (behavior >> 12))) { - flags = 0xc00; + impassableFlag = METATILE_COLLISION_MASK; } else { - flags = 0x000; + impassableFlag = 0x000; } if (gDecorations[decor].permission != DECORPERM_NA_WALL && MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(decLeft, decBottom)) == TRUE) { @@ -1190,11 +1190,11 @@ void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor) v1 = sub_8127B54(gDecorations[decor].id, i * decWidth + j); if (v1 != 0xFFFF) { - MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags | v1); + MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag | v1); } else { - MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags); + MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | impassableFlag); } } } @@ -1254,7 +1254,7 @@ void sub_8127E18(void) break; } } - VarSet(VAR_0x3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]); + VarSet(UNKNOWN_VAR_OFFSET_3F20 + gMapHeader.events->eventObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]); gSpecialVar_0x8005 = gMapHeader.events->eventObjects[j].localId; gSpecialVar_0x8006 = sCurDecorMapX; gSpecialVar_0x8007 = sCurDecorMapY; @@ -1502,7 +1502,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration) { curX = gTasks[taskId].data[0] + j; behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000; + behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK; if (!sub_81284F4(behaviorAt, decoration)) { return FALSE; @@ -1527,7 +1527,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration) { curX = gTasks[taskId].data[0] + j; behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000; + behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK; if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_8128484(behaviorAt, behaviorBy)) { return FALSE; @@ -1547,7 +1547,7 @@ bool8 sub_812853C(u8 taskId, const struct Decoration *decoration) { curX = gTasks[taskId].data[0] + j; behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); - behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000; + behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & METATILE_ELEVATION_MASK; if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt)) { return FALSE; @@ -1628,13 +1628,13 @@ void sub_8128950(u8 taskId) void sub_81289D0(u8 taskId) { - DisplayYesNoMenu(); + DisplayYesNoMenuDefaultYes(); DoYesNoFuncWithChoice(taskId, &gUnknown_085A72C4); } void sub_81289F0(u8 taskId) { - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); sub_8128AAC(taskId); if (gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].permission != DECORPERM_SOLID_MAT) { @@ -1693,13 +1693,13 @@ void sub_8128AAC(u8 taskId) void sub_8128B80(u8 taskId) { - DisplayYesNoMenu(); + DisplayYesNoMenuDefaultYes(); DoYesNoFuncWithChoice(taskId, &gUnknown_085A72CC); } void sub_8128BA0(u8 taskId) { - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); sub_8128BBC(taskId); } @@ -1887,7 +1887,7 @@ void sub_8128E18(u8 taskId) void sub_8128FD8(u8 taskId) { - sub_8197434(0, 1); + ClearDialogWindowAndFrame(0, 1); gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0; gTasks[taskId].data[10] = 0; gTasks[taskId].func = sub_8128E18; @@ -2251,7 +2251,7 @@ void sub_81298EC(u8 taskId) if (!gPaletteFade.active) { DrawWholeMapView(); ScriptContext1_SetupScript(EventScript_275D2E); - sub_8197434(0, 1); + ClearDialogWindowAndFrame(0, 1); gTasks[taskId].data[2] = 2; } break; @@ -2343,7 +2343,7 @@ void sub_8129ABC(u8 taskId) void sub_8129B34(u8 taskId) { - sub_8197434(0, 1); + ClearDialogWindowAndFrame(0, 1); gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0; gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE; gSprites[sDecor_CameraSpriteObjectIdx1].callback = sub_812A36C; @@ -2588,7 +2588,7 @@ void sub_812A0E8(u8 taskId) void sub_812A1A0(u8 taskId) { - DisplayYesNoMenu(); + DisplayYesNoMenuDefaultYes(); DoYesNoFuncWithChoice(taskId, &gUnknown_085A7348); } @@ -2601,13 +2601,13 @@ void sub_812A1C0(u8 taskId) void sub_812A1F0(u8 taskId) { - DisplayYesNoMenu(); + DisplayYesNoMenuDefaultYes(); DoYesNoFuncWithChoice(taskId, &gUnknown_085A7350); } void sub_812A210(u8 taskId) { - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); sub_812A22C(taskId); } @@ -2671,7 +2671,7 @@ void sub_812A334(void) u8 taskId; pal_fill_black(); - NewMenuHelpers_DrawDialogueFrame(0, 1); + DrawDialogueFrame(0, 1); sub_8126ABC(); taskId = CreateTask(sub_812A2C4, 8); gTasks[taskId].data[2] = 0; @@ -2725,7 +2725,7 @@ void sub_812A3D4(u8 taskId) void sub_812A458(u8 taskId) { - DisplayYesNoMenu(); + DisplayYesNoMenuDefaultYes(); DoYesNoFuncWithChoice(taskId, &gUnknown_085A741C); } diff --git a/src/dewford_trend.c b/src/dewford_trend.c index cad5ef9c2..ee310af04 100644 --- a/src/dewford_trend.c +++ b/src/dewford_trend.c @@ -159,7 +159,7 @@ static void sub_8122804(struct EasyChatPair *s, u16 b, u8 c) } } -void ReceiveEasyChatPairsData(void *a, u32 b, u8 unused) +void ReceiveEasyChatPairsData(struct EasyChatPair *a, size_t size, u8 unused) { u16 i, j, r3, players; struct EasyChatPair *buffer1, *buffer2, *src, *dst, *foo_of_buffer2; @@ -176,7 +176,7 @@ void ReceiveEasyChatPairsData(void *a, u32 b, u8 unused) { players = GetLinkPlayerCount(); for (i = 0; i < players; i++) - memcpy(&(buffer1[i * 5]), (u8 *)a + i * b, 40); + memcpy(&(buffer1[i * 5]), (u8 *)a + i * size, 40); src = buffer1; dst = buffer2; r3 = 0; diff --git a/src/diploma.c b/src/diploma.c index b3d5a48fa..2113b09ed 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -13,8 +13,7 @@ #include "text.h" #include "overworld.h" #include "menu.h" - -extern bool16 sub_80C0944(void); +#include "pokedex.h" extern const u8 gText_DexNational[]; extern const u8 gText_DexHoenn[]; @@ -197,7 +196,7 @@ static void InitDiplomaWindow(void) InitWindows(sDiplomaWinTemplates); DeactivateAllTextPrinters(); LoadPalette(gUnknown_0860F074, 0xF0, 0x20); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); } diff --git a/src/easy_chat.c b/src/easy_chat.c index 5c55cd2ca..b03058eb9 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -1,12 +1,15 @@ - -// Includes #include "global.h" #include "alloc.h" +#include "bard_music.h" #include "bg.h" +#include "data2.h" +#include "decompress.h" #include "dewford_trend.h" #include "dynamic_placeholder_text_util.h" #include "easy_chat.h" #include "event_data.h" +#include "event_object_movement.h" +#include "field_message_box.h" #include "field_weather.h" #include "gpu_regs.h" #include "graphics.h" @@ -16,111 +19,38 @@ #include "menu.h" #include "overworld.h" #include "palette.h" +#include "pokedex.h" +#include "random.h" #include "sound.h" #include "string_util.h" #include "strings.h" #include "task.h" #include "text_window.h" #include "window.h" +#include "constants/easy_chat.h" +#include "constants/event_objects.h" #include "constants/flags.h" #include "constants/songs.h" +#include "constants/species.h" #define EZCHAT_TASK_STATE 0 -#define EZCHAT_TASK_KIND 1 +#define EZCHAT_TASK_TYPE 1 #define EZCHAT_TASK_WORDS 2 #define EZCHAT_TASK_MAINCALLBACK 4 #define EZCHAT_TASK_UNK06 6 #define EZCHAT_TASK_SIZE 7 -struct EasyChatScreenTemplate -{ - u8 unk_00; - u8 numColumns; - u8 numRows; - u8 unk_03_0:7; - u8 unk_03_7:1; - const u8 *titleText; - const u8 *instructionsText1; - const u8 *instructionsText2; - const u8 *confirmText1; - const u8 *confirmText2; -}; - -struct EasyChatScreen -{ - /*0x00*/ u8 kind; - /*0x01*/ u8 templateId; - /*0x02*/ u8 numColumns; - /*0x03*/ u8 numRows; - /*0x04*/ u8 state; - /*0x05*/ s8 mainCursorColumn; - /*0x06*/ s8 mainCursorRow; - /*0x07*/ u8 unk_07; - /*0x08*/ u8 unk_08; - /*0x09*/ u8 unk_09; - /*0x0A*/ s8 unk_0a; - /*0x0B*/ s8 unk_0b; - /*0x0C*/ u8 unk_0c; - /*0x0D*/ u8 unk_0d; - /*0x0E*/ u8 unk_0e; - /*0x0F*/ u8 unk_0f; - /*0x10*/ s8 unk_10; - /*0x11*/ s8 unk_11; - /*0x12*/ u8 sizeParam; - /*0x13*/ u8 unk_13; - /*0x14*/ u8 unk_14[0x20]; - /*0x34*/ const u8 *titleText; - /*0x38*/ u16 *words; - /*0x3C*/ u16 ecWordBuffer[9]; -}; - -struct Unk203A11C -{ - u16 unk0; - u16 windowId; - u16 unk4; - u8 unk6; - u8 unk7; - s8 unk8; - u8 filler9[0x1]; - u8 unkA; - u8 unkB[0xC1]; - u8 unkCC[0x20C]; - int unk2D8; - int unk2DC; - int unk2E0; - int unk2E4; - int unk2E8; - int unk2EC; - int unk2F0; - int unk2F4; - int unk2F8; - int unk2FC; - u16 unk300[BG_SCREEN_SIZE / 2]; - u16 unkB00[BG_SCREEN_SIZE / 2]; -}; - -struct Unk08597C30 -{ - u8 unk0_0:5; - u8 unk0_5:3; - u8 unk1; - u8 unk2; - u8 unk3; -}; - -EWRAM_DATA struct EasyChatScreen *gEasyChatScreen = NULL; -EWRAM_DATA struct Unk203A11C *gUnknown_0203A11C = 0; -EWRAM_DATA void *gUnknown_0203A120 = 0; +static EWRAM_DATA struct EasyChatScreen *sEasyChatScreen = NULL; +static EWRAM_DATA struct Unk203A11C *sUnknown_0203A11C = NULL; +static EWRAM_DATA struct Unk203A120 *sUnknown_0203A120 = NULL; static void sub_811A2C0(u8); -static void sub_811A278(void); +static void MainCallback_EasyChatScreen(void); static bool8 sub_811A428(u8); static void sub_811A2FC(u8); static void sub_811A4D0(MainCallback); static bool32 sub_811A88C(u16); static void sub_811A8A4(u16); -void sub_811A8F0(void); static bool8 EasyChat_AllocateResources(u8, u16 *, u8); static void EasyChat_FreeResources(void); static u16 sub_811AAAC(void); @@ -136,22 +66,22 @@ static u16 sub_811B0BC(void); static u16 sub_811B0E8(void); static u16 sub_811B0F8(void); static u16 sub_811B150(void); -u16 sub_811B1B4(void); -u8 sub_811BA68(void); -static u8 sub_811BCC8(u8); +static u16 sub_811B1B4(void); +static u8 GetEasyChatScreenFrameId(void); +static u8 GetEachChatScreenTemplateId(u8); static void sub_811BDF0(u8 *); -void sub_811BF78(void); +static void sub_811BF78(void); static bool8 sub_811BF8C(void); static bool8 sub_811BFA4(void); static void sub_811C13C(void); static void sub_811C158(u16); static bool8 sub_811C170(void); -bool8 sub_811F28C(void); -void sub_811F2B8(void); -u8 sub_811F3AC(void); -int sub_811BA3C(void); -int sub_811B184(void); -int sub_811B264(void); +static bool8 sub_811F28C(void); +static void sub_811F2B8(void); +static u8 sub_811F3AC(void); +static int FooterHasFourOptions(void); +static int sub_811B184(void); +static int sub_811B264(void); static int sub_811B32C(void); static int sub_811B2B0(void); static int sub_811B33C(void); @@ -168,16 +98,16 @@ static void sub_811B454(void); static int sub_811BD64(void); static int sub_811BDB0(void); static int sub_811BD2C(void); -int sub_811BCF4(void); +static int sub_811BCF4(void); static u16 sub_811B8E8(void); -int sub_811F3B8(u8); -void sub_811F548(int, u16); +static u8 sub_811F3B8(u8); +static void sub_811F548(int, u16); static int sub_811B908(void); -u16 sub_811F5B0(void); +static u16 sub_811F5B0(void); static void sub_811B488(u16); -u16 sub_811B940(void); -u16 sub_811F578(u16); -int sub_811BF88(int); +static u16 sub_811B940(void); +static u16 sub_811F578(u16); +static int sub_811BF88(int); static u16 sub_811B8C8(void); static int sub_811B568(u32); static int sub_811B634(u32); @@ -197,17 +127,18 @@ static void sub_811CF04(void); static void sub_811D60C(void); static void sub_811D424(u16 *); static void sub_811D230(void); -void sub_811E948(void); +static void sub_811E948(void); static void sub_811CFCC(void); static void sub_811D0BC(void); static void sub_811D2C8(void); static void sub_811D684(void); -void sub_811DE90(void); -void sub_811DEC4(void); -void sub_811DE5C(u8, u8, u8, u8); -void sub_811E5D4(void); -void sub_811E720(void); -void sub_811E828(void); +static void sub_811DE90(void); +static void sub_811DEC4(void); +static void sub_811DF28(struct Sprite *); +static void sub_811DE5C(u8, u8, u8, u8); +static void sub_811E5D4(void); +static void sub_811E720(void); +static void sub_811E828(void); static bool8 sub_811C2D4(void); static bool8 sub_811C30C(void); static bool8 sub_811C3E4(void); @@ -237,88 +168,930 @@ static bool8 sub_811CD94(void); static bool8 sub_811CDD4(void); static bool8 sub_811CE14(void); static bool8 sub_811CE54(void); -void sub_811DF60(u8, u8); -int sub_811E920(int); -void sub_811DF90(void); +static void sub_811DF60(u8, u8); +static int GetFooterOptionXOffset(int); +static void sub_811DF90(void); static void sub_811D104(u8); static void sub_811D214(u8); -void sub_811DFB0(void); +static void sub_811DFB0(void); static void sub_811D6D4(void); static void sub_811D9CC(int); -void sub_811E3AC(void); -bool8 sub_811E418(void); -void sub_811DFC8(void); -void sub_811E6E0(int); +static void sub_811E3AC(void); +static bool8 sub_811E418(void); +static void sub_811DFC8(void); +static void sub_811E6E0(int); static bool8 sub_811DAA4(void); -void sub_811E64C(void); -void sub_811E050(void); -void sub_811E4AC(void); -void sub_811E6B0(void); -void sub_811E55C(void); -bool8 sub_811E4D0(void); -bool8 sub_811E5B8(void); -void sub_811E578(void); -void sub_811E088(void); -void sub_811DDAC(s16, u8); -bool8 sub_811DE10(void); +static void sub_811E64C(void); +static void sub_811E050(void); +static void sub_811E4AC(void); +static void sub_811E6B0(void); +static void sub_811E55C(void); +static bool8 sub_811E4D0(void); +static bool8 sub_811E5B8(void); +static void sub_811E578(void); +static void sub_811E088(void); +static void sub_811DDAC(s16, u8); +static bool8 sub_811DE10(void); static void sub_811D9B4(void); static void sub_811D698(u32); -void sub_811E288(void); -void sub_811E794(void); -void sub_811E380(void); -void sub_811E7F8(void); -void sub_811E30C(void); +static void sub_811E288(void); +static void sub_811E794(void); +static void sub_811E380(void); +static void sub_811E7F8(void); +static void sub_811E30C(void); static void sub_811D7A4(void); static void sub_811D7C8(void); -int sub_811DE48(void); +static int sub_811DE48(void); static void sub_811D7EC(void); static void sub_811D830(void); -void sub_811D058(u8, u8, const u8 *, u8, u8, u8, u8, u8, u8); -void sub_811DD84(void); +static void sub_811D058(u8, u8, const u8 *, u8, u8, u8, u8, u8, u8); +static void sub_811DD84(void); static void sub_811D6F4(void); static void sub_811D758(void); static void sub_811D794(void); -const u8 *sub_811F424(u8); +static const u8 *GetEasyChatWordGroupName(u8); static void sub_811D864(u8, u8); static void sub_811D950(u8, u8); -void sub_811DADC(u8); -u8 *CopyEasyChatWordPadded(u8 *, u16, u16); - -extern const struct { +static void sub_811DADC(u8); +static void sub_811DC28(int, int, int, int); +static void sub_811E0EC(s8, s8); +static void sub_811E1A4(s8, s8); +static void sub_811E2DC(struct Sprite *); +static void sub_811E34C(u8, u8); +static bool8 sub_811F0F8(void); +static u16 sub_811F108(void); +static void sub_811F2D4(void); +static void sub_811F46C(void); +static u8 *CopyEasyChatWordPadded(u8 *, u16, u16); +static u8 sub_811F860(u16); +static u16 sub_811F5C4(u16); +static u16 sub_811F6B8(u16); +static bool8 sub_811F764(u16, u8); +static int sub_811F838(u16); +static void DoQuizAnswerEasyChatScreen(void); +static void DoQuizQuestionEasyChatScreen(void); +static void DoQuizSetAnswerEasyChatScreen(void); +static void DoQuizSetQuestionEasyChatScreen(void); + +struct Unk8597530 +{ u16 word; MainCallback callback; -} gUnknown_08597530[4]; - -extern const struct EasyChatScreenTemplate gEasyChatScreenTemplates[21]; -extern const u8 gUnknown_08597748[][7]; -extern const u16 gUnknown_08597764[]; -extern const u16 gUnknown_0859776C[][2]; -extern const struct BgTemplate gUnknown_08597C54[4]; -extern const struct WindowTemplate gUnknown_08597C64[]; -extern const u32 gUnknown_08597B54[]; -extern const struct Unk08597C30 gUnknown_08597C30[]; -extern const u16 gUnknown_08597B14[]; -extern const u16 gUnknown_08597B34[]; -extern const u16 gUnknown_08597C1C[]; -extern const u16 gUnknown_08597C24[]; -extern const struct WindowTemplate gUnknown_08597C84; -extern const u8 gUnknown_08597C8C[4]; -extern const u8 *const gUnknown_08597C90[4]; - -void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam) +}; + +static const struct Unk8597530 sUnknown_08597530[] = { + { + .word = 26, + .callback = DoQuizAnswerEasyChatScreen, + }, + { + .word = 25, + .callback = DoQuizQuestionEasyChatScreen, + }, + { + .word = 28, + .callback = DoQuizSetAnswerEasyChatScreen, + }, + { + .word = 27, + .callback = DoQuizSetQuestionEasyChatScreen, + }, +}; + +static const struct EasyChatScreenTemplate sEasyChatScreenTemplates[] = { + { + .type = EASY_CHAT_TYPE_PROFILE, + .numColumns = 2, + .numRows = 2, + .frameId = 0, + .fourFooterOptions = FALSE, + .titleText = gText_Profile, + .instructionsText1 = gText_CombineFourWordsOrPhrases, + .instructionsText2 = gText_AndMakeYourProfile, + .confirmText1 = gText_YourProfile, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_BATTLE_START, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .fourFooterOptions = FALSE, + .titleText = gText_AtTheBattlesStart, + .instructionsText1 = gText_CombineSixWordsOrPhrases, + .instructionsText2 = gText_AndMakeAMessage, + .confirmText1 = gText_YourFeelingAtTheBattlesStart, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_BATTLE_WON, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .fourFooterOptions = FALSE, + .titleText = gText_UponWinningABattle, + .instructionsText1 = gText_CombineSixWordsOrPhrases, + .instructionsText2 = gText_AndMakeAMessage, + .confirmText1 = gText_WhatYouSayIfYouWin, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_BATTLE_LOST, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .fourFooterOptions = FALSE, + .titleText = gText_UponLosingABattle, + .instructionsText1 = gText_CombineSixWordsOrPhrases, + .instructionsText2 = gText_AndMakeAMessage, + .confirmText1 = gText_WhatYouSayIfYouLose, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_MAIL, + .numColumns = 2, + .numRows = 5, + .frameId = 2, + .fourFooterOptions = FALSE, + .titleText = NULL, + .instructionsText1 = gText_CombineNineWordsOrPhrases, + .instructionsText2 = gText_AndMakeAMessage2, + .confirmText1 = gText_TheMailMessage, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_INTERVIEW, + .numColumns = 2, + .numRows = 2, + .frameId = 5, + .fourFooterOptions = FALSE, + .titleText = gText_Interview, + .instructionsText1 = gText_CombineFourWordsOrPhrases, + .instructionsText2 = gText_LetsReplyToTheInterview, + .confirmText1 = gText_TheAnswer, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_BARD_SONG, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .fourFooterOptions = FALSE, + .titleText = gText_TheBardsSong, + .instructionsText1 = gText_ChangeJustOneWordOrPhrase, + .instructionsText2 = gText_AndImproveTheBardsSong, + .confirmText1 = gText_TheBardsSong2, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_FAN_CLUB, + .numColumns = 1, + .numRows = 1, + .frameId = 4, + .fourFooterOptions = FALSE, + .titleText = gText_Interview, + .instructionsText1 = gText_FindWordsThatDescribeYour, + .instructionsText2 = gText_FeelingsRightNow, + .confirmText1 = gText_TheAnswer, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_TRENDY_PHRASE, + .numColumns = 2, + .numRows = 1, + .frameId = 3, + .fourFooterOptions = FALSE, + .titleText = gText_WhatsHipAndHappening, + .instructionsText1 = gText_CombineTwoWordsOrPhrases, + .instructionsText2 = gText_AndMakeATrendySaying, + .confirmText1 = gText_TheTrendySaying, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_QUIZ_QUESTION, + .numColumns = 2, + .numRows = 5, + .frameId = 7, + .fourFooterOptions = TRUE, + .titleText = NULL, + .instructionsText1 = gText_AfterYouHaveReadTheQuiz, + .instructionsText2 = gText_QuestionPressTheAButton, + .confirmText1 = NULL, + .confirmText2 = NULL, + }, + { + .type = EASY_CHAT_TYPE_QUIZ_ANSWER, + .numColumns = 1, + .numRows = 1, + .frameId = 6, + .fourFooterOptions = TRUE, + .titleText = gText_TheQuizAnswerIs, + .instructionsText1 = gText_OutOfTheListedChoices, + .instructionsText2 = gText_SelectTheAnswerToTheQuiz, + .confirmText1 = gText_TheAnswerColon, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_QUIZ_SET_QUESTION, + .numColumns = 2, + .numRows = 5, + .frameId = 8, + .fourFooterOptions = TRUE, + .titleText = NULL, + .instructionsText1 = gText_CombineNineWordsOrPhrases, + .instructionsText2 = gText_AndCreateAQuiz, + .confirmText1 = gText_IsThisQuizOK, + .confirmText2 = NULL, + }, + { + .type = EASY_CHAT_TYPE_QUIZ_SET_ANSWER, + .numColumns = 1, + .numRows = 1, + .frameId = 6, + .fourFooterOptions = TRUE, + .titleText = gText_TheQuizAnswerIs, + .instructionsText1 = gText_PickAWordOrPhraseAnd, + .instructionsText2 = gText_SetTheQuizAnswer, + .confirmText1 = gText_IsThisQuizOK, + .confirmText2 = NULL, + }, + { + .type = EASY_CHAT_TYPE_BARD_SONG, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .fourFooterOptions = FALSE, + .titleText = gText_TheBardsSong, + .instructionsText1 = gText_ChangeJustOneWordOrPhrase, + .instructionsText2 = gText_AndImproveTheBardsSong, + .confirmText1 = gText_TheBardsSong2, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_APPRENTICE, + .numColumns = 2, + .numRows = 3, + .frameId = 1, + .fourFooterOptions = FALSE, + .titleText = gText_ApprenticesPhrase, + .instructionsText1 = gText_FindWordsWhichFit, + .instructionsText2 = gText_TheTrainersImage, + .confirmText1 = gText_ApprenticePhrase, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_GOOD_SAYING, + .numColumns = 2, + .numRows = 1, + .frameId = 3, + .fourFooterOptions = FALSE, + .titleText = gText_GoodSaying, + .instructionsText1 = gText_CombineTwoWordsOrPhrases2, + .instructionsText2 = gText_ToTeachHerAGoodSaying, + .confirmText1 = gText_TheAnswer, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_GABBY_AND_TY, + .numColumns = 1, + .numRows = 1, + .frameId = 4, + .fourFooterOptions = FALSE, + .titleText = gText_Interview, + .instructionsText1 = gText_FindWordsThatDescribeYour, + .instructionsText2 = gText_FeelingsRightNow, + .confirmText1 = gText_TheAnswer, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW, + .numColumns = 1, + .numRows = 1, + .frameId = 4, + .fourFooterOptions = FALSE, + .titleText = gText_Interview, + .instructionsText1 = gText_FindWordsThatDescribeYour, + .instructionsText2 = gText_FeelingsRightNow, + .confirmText1 = gText_TheAnswer, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_CONTEST_INTERVIEW, + .numColumns = 1, + .numRows = 1, + .frameId = 4, + .fourFooterOptions = FALSE, + .titleText = gText_Interview, + .instructionsText1 = gText_FindWordsThatDescribeYour, + .instructionsText2 = gText_FeelingsRightNow, + .confirmText1 = gText_TheAnswer, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_FAN_QUESTION, + .numColumns = 1, + .numRows = 1, + .frameId = 4, + .fourFooterOptions = FALSE, + .titleText = gText_FansQuestion, + .instructionsText1 = gText_FindWordsWhichFit, + .instructionsText2 = gText_TheTrainersImage, + .confirmText1 = gText_TheImage, + .confirmText2 = gText_IsAsShownOkay, + }, + { + .type = EASY_CHAT_TYPE_QUESTIONNAIRE, + .numColumns = 2, + .numRows = 2, + .frameId = 0, + .fourFooterOptions = FALSE, + .titleText = gText_Questionnaire, + .instructionsText1 = gText_CombineFourWordsOrPhrases, + .instructionsText2 = gText_AndFillOutTheQuestionnaire, + .confirmText1 = gText_TheAnswer, + .confirmText2 = gText_IsAsShownOkay, + }, +}; + +static const u8 sUnknown_08597748[][7] = { + { 1, 2, 3, 4, 5, 6, 0}, + { 7, 8, 9, 10, 11, 12, 0}, + {13, 14, 15, 16, 17, 18, 19}, + {20, 21, 22, 23, 24, 25, 26}, +}; + +static const u16 sMysteryGiftPhrase[] = { + EC_WORD_LINK, + EC_WORD_TOGETHER, + EC_WORD_WITH, + EC_WORD_ALL, +}; + +static const u16 sBerryMasterWifePhrases[][2] = { + {EC_WORD_GREAT, EC_WORD_BATTLE}, + {EC_WORD_CHALLENGE, EC_WORD_CONTEST}, + {EC_WORD_OVERWHELMING, EC_POKEMON(LATIAS)}, + {EC_WORD_COOL, EC_POKEMON(LATIOS)}, + {EC_WORD_SUPER, EC_WORD_HUSTLE}, +}; + +static const u16 sEasyChatTriangleCursorPalette[] = INCBIN_U16("graphics/easy_chat/triangle_cursor.gbapal"); +static const u32 sEasyChatTriangleCursorGfx[] = INCBIN_U32("graphics/easy_chat/triangle_cursor.4bpp"); +static const u32 sEasyChatScrollIndicatorGfx[] = INCBIN_U32("graphics/easy_chat/scroll_indicator.4bpp"); +static const u32 sEasyChatStartSelectButtonsGfx[] = INCBIN_U32("graphics/easy_chat/start_select_buttons.4bpp"); +static const u16 sUnknown_085979C0[] = INCBIN_U16("graphics/misc/interview_frame.gbapal"); +static const u32 sUnknown_085979E0[] = INCBIN_U32("graphics/misc/interview_frame.4bpp.lz"); +static const u16 sUnknown_08597B14[] = INCBIN_U16("graphics/misc/interview_frame_orange.gbapal"); +static const u16 sUnknown_08597B34[] = INCBIN_U16("graphics/misc/interview_frame_green.gbapal"); +static const u32 sUnknown_08597B54[] = INCBIN_U32("graphics/misc/interview_frame_2.4bpp.lz"); +static const u16 sUnknown_08597C1C[] = INCBIN_U16("graphics/misc/8597C1C.gbapal"); +static const u16 sUnknown_08597C24[] = INCBIN_U16("graphics/misc/8597C24.gbapal"); + +static const struct EasyChatPhraseFrameDimensions sPhraseFrameDimensions[] = { + { + .left = 3, + .top = 4, + .width = 24, + .height = 4, + .footerId = 0, + }, + { + .left = 3, + .top = 3, + .width = 24, + .height = 6, + .footerId = 0, + }, + { + .left = 3, + .top = 0, + .width = 24, + .height = 10, + .footerId = 0, + }, + { + .left = 3, + .top = 5, + .width = 24, + .height = 2, + .footerId = 0, + }, + { + .left = 16, + .top = 5, + .width = 12, + .height = 2, + .footerId = 0, + }, + { + .left = 3, + .top = 4, + .width = 24, + .height = 4, + .footerId = 0, + }, + { + .left = 9, + .top = 4, + .width = 12, + .height = 2, + .footerId = 1, + }, + { + .left = 5, + .top = 3, + .width = 0x14, + .height = 10, + .footerId = 3, + }, + { + .left = 3, + .top = 0, + .width = 24, + .height = 10, + .footerId = 2, + }, +}; + +static const struct BgTemplate sEasyChatBgTemplates[] = { + { + .bg = 0, + .charBaseIndex = 0, + .mapBaseIndex = 28, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0, + }, + { + .bg = 1, + .charBaseIndex = 3, + .mapBaseIndex = 29, + .screenSize = 0, + .paletteMode = 0, + .priority = 1, + .baseTile = 0, + }, + { + .bg = 2, + .charBaseIndex = 0, + .mapBaseIndex = 30, + .screenSize = 0, + .paletteMode = 0, + .priority = 2, + .baseTile = 0x80, + }, + { + .bg = 3, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 3, + .baseTile = 0, + }, +}; + +static const struct WindowTemplate sEasyChatWindowTemplates[] = { + { + .bg = 1, + .tilemapLeft = 6, + .tilemapTop = 0, + .width = 18, + .height = 2, + .paletteNum = 10, + .baseBlock = 0x10, + }, + { + .bg = 0, + .tilemapLeft = 3, + .tilemapTop = 15, + .width = 24, + .height = 4, + .paletteNum = 15, + .baseBlock = 0xA, + }, + { + .bg = 2, + .tilemapLeft = 1, + .tilemapTop = 0, + .width = 28, + .height = 32, + .paletteNum = 3, + .baseBlock = 0, + }, + DUMMY_WIN_TEMPLATE, +}; + +static const struct WindowTemplate sEasyChatYesNoWindowTemplate = { + .bg = 0, + .tilemapLeft = 22, + .tilemapTop = 9, + .width = 5, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x6A, +}; + +static const u8 sText_Clear17[] = _("{CLEAR 17}"); + +static const u8 *const sUnknown_08597C90[] = { + gUnknown_862B810, + gUnknown_862B832, + gUnknown_862B84B, + gUnknown_862B86C, +}; + +static const struct SpriteSheet sEasyChatSpriteSheets[] = { + { + .data = sEasyChatTriangleCursorGfx, + .size = 0x0020, + .tag = 0 + }, + { + .data = sEasyChatScrollIndicatorGfx, + .size = 0x0100, + .tag = 2 + }, + { + .data = sEasyChatStartSelectButtonsGfx, + .size = 0x0100, + .tag = 3 + }, + {0} +}; + +static const struct SpritePalette sEasyChatSpritePalettes[] = { + { + .data = sEasyChatTriangleCursorPalette, + .tag = 0, + }, + { + .data = gEasyChatCursor_Pal, + .tag = 1, + }, + { + .data = gEasyChatRightWindow_Pal, + .tag = 2, + }, + { + .data = sUnknown_085979C0, + .tag = 3, + }, + {0} +}; + +static const struct CompressedSpriteSheet sUnknown_08597CE8[] = { + { + .data = sUnknown_085979E0, + .size = 0x0800, + .tag = 5, + }, + { + .data = gEasyChatCursor_Gfx, + .size = 0x1000, + .tag = 1, + }, + { + .data = gEasyChatRightWindow_Gfx, + .size = 0x0800, + .tag = 6, + }, + { + .data = gEasyChatMode_Gfx, + .size = 0x1000, + .tag = 4, + }, +}; + +static const u8 sUnknown_08597D08[] = {0, 12, 24, 56, 68, 80, 92}; + +static const struct OamData sOamData_8597D10 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteTemplate sUnknown_08597D18 = { + .tileTag = 0, + .paletteTag = 0, + .oam = &sOamData_8597D10, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811DF28, +}; + +static const struct OamData sUnknown_08597D30 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sUnknown_08597D38[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_08597D40[] = { + ANIMCMD_FRAME(32, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_08597D48[] = { + ANIMCMD_FRAME(64, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_08597D50[] = { + ANIMCMD_FRAME(96, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const sUnknown_08597D58[] = { + sUnknown_08597D38, + sUnknown_08597D40, + sUnknown_08597D48, + sUnknown_08597D50, +}; + +static const struct SpriteTemplate sUnknown_08597D68 = { + .tileTag = 1, + .paletteTag = 1, + .oam = &sUnknown_08597D30, + .anims = sUnknown_08597D58, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811DF28, +}; + +static const struct OamData sUnknown_08597D80 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sUnknown_08597D88[] = { + ANIMCMD_FRAME(96, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_08597D90[] = { + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(32, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_08597D9C[] = { + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_08597DA8[] = { + ANIMCMD_FRAME(64, 4), + ANIMCMD_FRAME(96, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_08597DB4[] = { + ANIMCMD_FRAME(64, 4), + ANIMCMD_END, +}; + +static const union AnimCmd *const sUnknown_08597DBC[] = { + sUnknown_08597D88, + sUnknown_08597D90, + sUnknown_08597D9C, + sUnknown_08597DA8, + sUnknown_08597DB4, +}; + +static const struct SpriteTemplate sUnknown_08597DD0 = { + .tileTag = 4, + .paletteTag = 2, + .oam = &sUnknown_08597D80, + .anims = sUnknown_08597DBC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const struct OamData sUnknown_08597DE8 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteTemplate sUnknown_08597DF0 = { + .tileTag = 6, + .paletteTag = 2, + .oam = &sUnknown_08597DE8, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const struct OamData sUnknown_08597E08 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_H_RECTANGLE, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct OamData gUnknown_08597E10 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 1, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; + +static const union AnimCmd sUnknown_08597E18[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END, +}; + +static const union AnimCmd sUnknown_08597E20[] = { + ANIMCMD_FRAME(4, 0), + ANIMCMD_END, +}; + +static const union AnimCmd *const sUnknown_08597E28[] = { + sUnknown_08597E18, + sUnknown_08597E20, +}; + +static const struct SpriteTemplate sUnknown_08597E30 = { + .tileTag = 3, + .paletteTag = 2, + .oam = &sUnknown_08597E08, + .anims = sUnknown_08597E28, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const struct SpriteTemplate sUnknown_08597E48 = { + .tileTag = 2, + .paletteTag = 2, + .oam = &gUnknown_08597E10, + .anims = sUnknown_08597E28, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +static const u8 sFooterOptionXOffsets[][4] = { + {16, 111, 196, 0}, + {16, 78, 130, 160}, + {16, 80, 134, 170}, +}; + +static const u8 *const sFooterTextOptions[][4] = { + {gText_DelAll, gText_Cancel5, gText_Ok2, NULL}, + {gText_DelAll, gText_Cancel5, gText_Ok2, gText_Quiz}, + {gText_DelAll, gText_Cancel5, gText_Ok2, gText_Answer}, +}; + +#include "data/easy_chat/easy_chat_groups.h" +#include "data/easy_chat/easy_chat_words_by_letter.h" + +const u8 *const gEasyChatGroupNamePointers[] = { + [EC_GROUP_POKEMON] = gEasyChatGroupName_Pokemon, + [EC_GROUP_TRAINER] = gEasyChatGroupName_Trainer, + [EC_GROUP_STATUS] = gEasyChatGroupName_Status, + [EC_GROUP_BATTLE] = gEasyChatGroupName_Battle, + [EC_GROUP_GREETINGS] = gEasyChatGroupName_Greetings, + [EC_GROUP_PEOPLE] = gEasyChatGroupName_People, + [EC_GROUP_VOICES] = gEasyChatGroupName_Voices, + [EC_GROUP_SPEECH] = gEasyChatGroupName_Speech, + [EC_GROUP_ENDINGS] = gEasyChatGroupName_Endings, + [EC_GROUP_FEELINGS] = gEasyChatGroupName_Feelings, + [EC_GROUP_CONDITIONS] = gEasyChatGroupName_Conditions, + [EC_GROUP_ACTIONS] = gEasyChatGroupName_Actions, + [EC_GROUP_LIFESTYLE] = gEasyChatGroupName_Lifestyle, + [EC_GROUP_HOBBIES] = gEasyChatGroupName_Hobbies, + [EC_GROUP_TIME] = gEasyChatGroupName_Time, + [EC_GROUP_MISC] = gEasyChatGroupName_Misc, + [EC_GROUP_ADJECTIVES] = gEasyChatGroupName_Adjectives, + [EC_GROUP_EVENTS] = gEasyChatGroupName_Events, + [EC_GROUP_MOVE_1] = gEasyChatGroupName_Move1, + [EC_GROUP_MOVE_2] = gEasyChatGroupName_Move2, + [EC_GROUP_TRENDY_SAYING] = gEasyChatGroupName_TrendySaying, + [EC_GROUP_POKEMON_2] = gEasyChatGroupName_Pokemon2, +}; + +static const u16 sDefaultProfileWords[] = { + EC_WORD_I_AM, + EC_WORD_A, + EC_WORD_POKEMON, + EC_WORD_FRIEND, +}; + +static const u16 sDefaultBattleStartWords[] = { + EC_WORD_ARE, + EC_WORD_YOU, + EC_WORD_READY, + EC_WORD_QUES, + EC_WORD_HERE_I_COME, + EC_WORD_EXCL, +}; + +static const u16 sUnknown_0859E640[] = { + EC_WORD_YAY, + EC_WORD_YAY, + EC_WORD_EXCL_EXCL, + EC_WORD_I_VE, + EC_WORD_WON, + EC_WORD_EXCL_EXCL, +}; + +static const u16 sUnknown_0859E64C[] = { + EC_WORD_TOO, + EC_WORD_BAD, + EC_WORD_ELLIPSIS, + EC_WORD_WE, + EC_WORD_LOST, + EC_WORD_ELLIPSIS, +}; + +static const u16 sUnknown_0859E658[] = { + SPECIES_DEOXYS, +}; + +void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType) { u8 taskId; ResetTasks(); taskId = CreateTask(sub_811A2C0, 0); - gTasks[taskId].data[EZCHAT_TASK_KIND] = kind; - gTasks[taskId].data[EZCHAT_TASK_SIZE] = sizeParam; + gTasks[taskId].data[EZCHAT_TASK_TYPE] = type; + gTasks[taskId].data[EZCHAT_TASK_SIZE] = displayedPersonType; SetWordTaskArg(taskId, EZCHAT_TASK_WORDS, (u32)words); SetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK, (u32)callback); - SetMainCallback2(sub_811A278); + SetMainCallback2(MainCallback_EasyChatScreen); } -static void sub_811A278(void) +static void MainCallback_EasyChatScreen(void) { RunTasks(); AnimateSprites(); @@ -326,7 +1099,7 @@ static void sub_811A278(void) UpdatePaletteFade(); } -static void sub_811A290(void) +static void VBlankCallback_EasyChatScreen(void) { TransferPlttBuffer(); LoadOam(); @@ -341,7 +1114,7 @@ static void sub_811A2A4(u8 taskId, TaskFunc taskFunc) static void sub_811A2C0(u8 taskId) { - if (!is_c1_link_related_active()) + if (!IsUpdateLinkStateCBActive()) { while (sub_811A428(taskId)); } @@ -364,22 +1137,22 @@ static void sub_811A2FC(u8 taskId) switch (data[EZCHAT_TASK_STATE]) { case 0: - SetVBlankCallback(sub_811A290); + SetVBlankCallback(VBlankCallback_EasyChatScreen); BlendPalettes(0xFFFFFFFF, 16, 0); - BeginNormalPaletteFade(-1, -1, 16, 0, 0); + BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, 0); data[EZCHAT_TASK_STATE] = 5; break; case 1: v0 = sub_811AAAC(); if (sub_811A88C(v0)) { - BeginNormalPaletteFade(-1, -2, 0, 16, 0); + BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, 0); data[EZCHAT_TASK_STATE] = 3; data[EZCHAT_TASK_UNK06] = v0; } else if (v0 == 0x18) { - BeginNormalPaletteFade(-1, -1, 0, 16, 0); + BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, 0); data[EZCHAT_TASK_STATE] = 4; } else if (v0 != 0) @@ -391,27 +1164,19 @@ static void sub_811A2FC(u8 taskId) break; case 2: if (!sub_811C170()) - { data[EZCHAT_TASK_STATE] = 1; - } break; case 3: if (!gPaletteFade.active) - { sub_811A8A4(data[EZCHAT_TASK_UNK06]); - } break; case 4: if (!gPaletteFade.active) - { sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); - } break; case 5: if (!gPaletteFade.active) - { data[EZCHAT_TASK_STATE] = 1; - } break; } } @@ -436,7 +1201,7 @@ static bool8 sub_811A428(u8 taskId) } break; case 2: - if (!EasyChat_AllocateResources(data[EZCHAT_TASK_KIND], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE])) + if (!EasyChat_AllocateResources(data[EZCHAT_TASK_TYPE], (u16 *)GetWordTaskArg(taskId, EZCHAT_TASK_WORDS), data[EZCHAT_TASK_SIZE])) { sub_811A4D0((MainCallback)GetWordTaskArg(taskId, EZCHAT_TASK_MAINCALLBACK)); } @@ -469,98 +1234,98 @@ static void sub_811A4D0(MainCallback callback) SetMainCallback2(callback); } -void easy_chat_input_maybe(void) +void ShowEasyChatScreen(void) { int i; u16 *words; struct MauvilleManBard *bard; - u8 sizeParam = 3; + u8 displayedPersonType = EASY_CHAT_PERSON_DISPLAY_NONE; switch (gSpecialVar_0x8004) { - case 0: - words = gSaveBlock1Ptr->unk2BB0; + case EASY_CHAT_TYPE_PROFILE: + words = gSaveBlock1Ptr->easyChatProfile; break; - case 1: - words = gSaveBlock1Ptr->unk2BBC; + case EASY_CHAT_TYPE_BATTLE_START: + words = gSaveBlock1Ptr->easyChatBattleStart; break; - case 2: - words = gSaveBlock1Ptr->unk2BC8; + case EASY_CHAT_TYPE_BATTLE_WON: + words = gSaveBlock1Ptr->easyChatBattleWon; break; - case 3: - words = gSaveBlock1Ptr->unk2BD4; + case EASY_CHAT_TYPE_BATTLE_LOST: + words = gSaveBlock1Ptr->easyChatBattleLost; break; - case 4: + case EASY_CHAT_TYPE_MAIL: words = gSaveBlock1Ptr->mail[gSpecialVar_0x8005].words; break; - case 6: + case EASY_CHAT_TYPE_BARD_SONG: bard = &gSaveBlock1Ptr->oldMan.bard; for (i = 0; i < 6; i ++) - { bard->temporaryLyrics[i] = bard->songLyrics[i]; - } + words = bard->temporaryLyrics; break; - case 5: + case EASY_CHAT_TYPE_INTERVIEW: words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words; - sizeParam = gSpecialVar_0x8006; + displayedPersonType = gSpecialVar_0x8006; break; - case 7: + case EASY_CHAT_TYPE_FAN_CLUB: words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words[gSpecialVar_0x8006]; - sizeParam = 1; + displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE; break; - case 8: + case EASY_CHAT_TYPE_UNK_8: words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].unkShow04.words; - sizeParam = 0; + displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE; break; - case 9: + case EASY_CHAT_TYPE_TRENDY_PHRASE: words = (u16 *)gStringVar3; words[0] = gSaveBlock1Ptr->easyChatPairs[0].words[0]; words[1] = gSaveBlock1Ptr->easyChatPairs[0].words[1]; break; - case 10: + case EASY_CHAT_TYPE_GABBY_AND_TY: words = gSaveBlock1Ptr->gabbyAndTyData.quote; *words = -1; - sizeParam = 1; + displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE; break; - case 11: + case EASY_CHAT_TYPE_CONTEST_INTERVIEW: words = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].bravoTrainer.words[gSpecialVar_0x8006]; - sizeParam = 0; + displayedPersonType = EASY_CHAT_PERSON_REPORTER_MALE; break; - case 12: + case EASY_CHAT_TYPE_BATTLE_TOWER_INTERVIEW: words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanclubOpinions.words18; - sizeParam = 1; + displayedPersonType = EASY_CHAT_PERSON_REPORTER_FEMALE; break; - case 13: + case EASY_CHAT_TYPE_GOOD_SAYING: words = (u16 *)gStringVar3; InitializeEasyChatWordArray(words, 2); break; - case 14: + case EASY_CHAT_TYPE_FAN_QUESTION: words = gSaveBlock1Ptr->tvShows[gSpecialVar_0x8005].fanClubSpecial.words; words[0] = -1; - sizeParam = 2; + displayedPersonType = EASY_CHAT_PERSON_BOY; break; - case 15: + case EASY_CHAT_TYPE_QUIZ_ANSWER: words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016; break; - case 16: + case EASY_CHAT_TYPE_QUIZ_QUESTION: return; - case 17: + case EASY_CHAT_TYPE_QUIZ_SET_QUESTION: words = gSaveBlock1Ptr->lilycoveLady.quiz.unk_002; break; - case 18: + case EASY_CHAT_TYPE_QUIZ_SET_ANSWER: words = &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014; break; - case 19: + case EASY_CHAT_TYPE_APPRENTICE: words = gSaveBlock2Ptr->apprentices[0].easyChatWords; break; - case 20: + case EASY_CHAT_TYPE_QUESTIONNAIRE: words = GetSaveBlock1Field3564(); break; default: return; } + CleanupOverworldWindowsAndTilemaps(); - sub_811A20C(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, sizeParam); + DoEasyChatScreen(gSpecialVar_0x8004, words, CB2_ReturnToFieldContinueScript, displayedPersonType); } static void sub_811A7E4(void) @@ -579,7 +1344,7 @@ static void sub_811A7E4(void) lilycoveLady = &gSaveBlock1Ptr->lilycoveLady; lilycoveLady->quiz.unk_016 = -1; CleanupOverworldWindowsAndTilemaps(); - sub_811A8F0(); + DoQuizQuestionEasyChatScreen(); } return; } @@ -595,9 +1360,9 @@ static int sub_811A868(u16 word) { int i; - for (i = 0; i < ARRAY_COUNT(gUnknown_08597530); i ++) + for (i = 0; i < ARRAY_COUNT(sUnknown_08597530); i ++) { - if (word == gUnknown_08597530[i].word) + if (word == sUnknown_08597530[i].word) return i; } return -1; @@ -614,91 +1379,103 @@ static void sub_811A8A4(u16 word) i = sub_811A868(word); ResetTasks(); - sub_811A4D0(gUnknown_08597530[i].callback); + sub_811A4D0(sUnknown_08597530[i].callback); } -void sub_811A8CC(void) +static void DoQuizAnswerEasyChatScreen(void) { - sub_811A20C(0xF, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016, CB2_ReturnToFieldContinueScript, 3); + DoEasyChatScreen( + EASY_CHAT_TYPE_QUIZ_ANSWER, + &gSaveBlock1Ptr->lilycoveLady.quiz.unk_016, + CB2_ReturnToFieldContinueScript, + EASY_CHAT_PERSON_DISPLAY_NONE); } -void sub_811A8F0(void) +static void DoQuizQuestionEasyChatScreen(void) { - sub_811A20C(0x10, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3); + DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_QUESTION, + gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, + CB2_ReturnToFieldContinueScript, + EASY_CHAT_PERSON_DISPLAY_NONE); } -void sub_811A914(void) +static void DoQuizSetAnswerEasyChatScreen(void) { - sub_811A20C(0x12, &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014, CB2_ReturnToFieldContinueScript, 3); + DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_ANSWER, + &gSaveBlock1Ptr->lilycoveLady.quiz.unk_014, + CB2_ReturnToFieldContinueScript, + EASY_CHAT_PERSON_DISPLAY_NONE); } -void sub_811A938(void) +static void DoQuizSetQuestionEasyChatScreen(void) { - sub_811A20C(0x11, gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, CB2_ReturnToFieldContinueScript, 3); + DoEasyChatScreen(EASY_CHAT_TYPE_QUIZ_SET_QUESTION, + gSaveBlock1Ptr->lilycoveLady.quiz.unk_002, + CB2_ReturnToFieldContinueScript, + EASY_CHAT_PERSON_DISPLAY_NONE); } -static bool8 EasyChat_AllocateResources(u8 kind, u16 *words, u8 sizeParam) +static bool8 EasyChat_AllocateResources(u8 type, u16 *words, u8 displayedPersonType) { u8 templateId; int i; - gEasyChatScreen = malloc(sizeof(*gEasyChatScreen)); - if (gEasyChatScreen == NULL) - { + sEasyChatScreen = malloc(sizeof(*sEasyChatScreen)); + if (sEasyChatScreen == NULL) return FALSE; - } - gEasyChatScreen->kind = kind; - gEasyChatScreen->words = words; - gEasyChatScreen->mainCursorColumn = 0; - gEasyChatScreen->mainCursorRow = 0; - gEasyChatScreen->unk_09 = 0; - gEasyChatScreen->sizeParam = sizeParam; - gEasyChatScreen->unk_13 = 0; - templateId = sub_811BCC8(kind); - if (kind == 0x10) + + sEasyChatScreen->type = type; + sEasyChatScreen->words = words; + sEasyChatScreen->mainCursorColumn = 0; + sEasyChatScreen->mainCursorRow = 0; + sEasyChatScreen->unk_09 = 0; + sEasyChatScreen->displayedPersonType = displayedPersonType; + sEasyChatScreen->unk_13 = 0; + templateId = GetEachChatScreenTemplateId(type); + if (type == EASY_CHAT_TYPE_QUIZ_QUESTION) { - sub_811BDF0(gEasyChatScreen->unk_14); - gEasyChatScreen->titleText = gEasyChatScreen->unk_14; - gEasyChatScreen->state = 7; + sub_811BDF0(sEasyChatScreen->unk_14); + sEasyChatScreen->titleText = sEasyChatScreen->unk_14; + sEasyChatScreen->state = 7; } else { - gEasyChatScreen->state = 0; - gEasyChatScreen->titleText = gEasyChatScreenTemplates[templateId].titleText; - } - gEasyChatScreen->numColumns = gEasyChatScreenTemplates[templateId].numColumns; - gEasyChatScreen->numRows = gEasyChatScreenTemplates[templateId].numRows; - gEasyChatScreen->unk_07 = gEasyChatScreen->numColumns * gEasyChatScreen->numRows; - gEasyChatScreen->templateId = templateId; - if (gEasyChatScreen->unk_07 > 9) - { - gEasyChatScreen->unk_07 = 9; + sEasyChatScreen->state = 0; + sEasyChatScreen->titleText = sEasyChatScreenTemplates[templateId].titleText; } + + sEasyChatScreen->numColumns = sEasyChatScreenTemplates[templateId].numColumns; + sEasyChatScreen->numRows = sEasyChatScreenTemplates[templateId].numRows; + sEasyChatScreen->unk_07 = sEasyChatScreen->numColumns * sEasyChatScreen->numRows; + sEasyChatScreen->templateId = templateId; + if (sEasyChatScreen->unk_07 > 9) + sEasyChatScreen->unk_07 = 9; + if (words != NULL) { - CpuCopy16(words, gEasyChatScreen->ecWordBuffer, gEasyChatScreen->unk_07 * sizeof(u16)); + CpuCopy16(words, sEasyChatScreen->ecWordBuffer, sEasyChatScreen->unk_07 * sizeof(u16)); } else { - for (i = 0; i < gEasyChatScreen->unk_07; i ++) - { - gEasyChatScreen->ecWordBuffer[i] = -1; - } - gEasyChatScreen->words = gEasyChatScreen->ecWordBuffer; + for (i = 0; i < sEasyChatScreen->unk_07; i ++) + sEasyChatScreen->ecWordBuffer[i] = -1; + + sEasyChatScreen->words = sEasyChatScreen->ecWordBuffer; } - gEasyChatScreen->unk_0d = (sub_811F3AC() - 1) / 2 + 1; + + sEasyChatScreen->unk_0d = (sub_811F3AC() - 1) / 2 + 1; return TRUE; } static void EasyChat_FreeResources(void) { - if (gEasyChatScreen != NULL) - FREE_AND_SET_NULL(gEasyChatScreen); + if (sEasyChatScreen != NULL) + FREE_AND_SET_NULL(sEasyChatScreen); } static u16 sub_811AAAC(void) { - switch (gEasyChatScreen->state) + switch (sEasyChatScreen->state) { case 0: return sub_811AB68(); @@ -728,7 +1505,7 @@ static u16 sub_811AAAC(void) bool32 sub_811AB44(void) { - switch (sub_811BA68()) + switch (GetEasyChatScreenFrameId()) { case 2: case 7: @@ -738,508 +1515,150 @@ bool32 sub_811AB44(void) return FALSE; } -#ifdef NONMATCHING static u16 sub_811AB68(void) { - if (gMain.newKeys & A_BUTTON) - { - sub_811BF78(); - gEasyChatScreen->state = 2; - gEasyChatScreen->unk_0a = 0; - gEasyChatScreen->unk_0b = 0; - gEasyChatScreen->unk_0c = 0; - return 9; - } - else if (gMain.newKeys & B_BUTTON) - { - return sub_811B150(); - } - else if (gMain.newKeys & START_BUTTON) - { - return sub_811B1B4(); - } - else if (gMain.newKeys & DPAD_UP) - { - gEasyChatScreen->mainCursorRow--; - } - else if (gMain.newKeys & DPAD_LEFT) - { - gEasyChatScreen->mainCursorColumn--; - } - else if (gMain.newKeys & DPAD_DOWN) - { - gEasyChatScreen->mainCursorRow++; - } - else if (gMain.newKeys & DPAD_RIGHT) - { - gEasyChatScreen->mainCursorColumn++; - } - else + do { + if (gMain.newKeys & A_BUTTON) + { + sub_811BF78(); + sEasyChatScreen->state = 2; + sEasyChatScreen->unk_0a = 0; + sEasyChatScreen->unk_0b = 0; + sEasyChatScreen->unk_0c = 0; + return 9; + } + else if (gMain.newKeys & B_BUTTON) + { + return sub_811B150(); + } + else if (gMain.newKeys & START_BUTTON) + { + return sub_811B1B4(); + } + else if (gMain.newKeys & DPAD_UP) + { + sEasyChatScreen->mainCursorRow--; + break; + } + else if (gMain.newKeys & DPAD_LEFT) + { + sEasyChatScreen->mainCursorColumn--; + break; + } + else if (gMain.newKeys & DPAD_DOWN) + { + sEasyChatScreen->mainCursorRow++; + break; + } + else if (gMain.newKeys & DPAD_RIGHT) + { + sEasyChatScreen->mainCursorColumn++; + break; + } + return 0; - } - - if (gEasyChatScreen->mainCursorRow < 0) - gEasyChatScreen->mainCursorRow = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows; + } while (0); + + if (sEasyChatScreen->mainCursorRow < 0) + sEasyChatScreen->mainCursorRow = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows; - if (gEasyChatScreen->mainCursorRow > gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows) - gEasyChatScreen->mainCursorRow = 0; + if (sEasyChatScreen->mainCursorRow > sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows) + sEasyChatScreen->mainCursorRow = 0; - if (gEasyChatScreen->mainCursorRow == gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows) + if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows) { - if (gEasyChatScreen->mainCursorColumn > 2) - gEasyChatScreen->mainCursorColumn = 2; + if (sEasyChatScreen->mainCursorColumn > 2) + sEasyChatScreen->mainCursorColumn = 2; - gEasyChatScreen->state = 1; + sEasyChatScreen->state = 1; return 3; } - if (gEasyChatScreen->mainCursorColumn < 0) - gEasyChatScreen->mainCursorColumn = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns - 1; + if (sEasyChatScreen->mainCursorColumn < 0) + sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1; - if (gEasyChatScreen->mainCursorColumn >= gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns) - gEasyChatScreen->mainCursorColumn = 0; + if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns) + sEasyChatScreen->mainCursorColumn = 0; - if (sub_811AB44() && gEasyChatScreen->mainCursorColumn == 1 && gEasyChatScreen->mainCursorRow == 4) - gEasyChatScreen->mainCursorColumn = 0; + if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4) + sEasyChatScreen->mainCursorColumn = 0; return 2; } -#else -NAKED -static u16 sub_811AB68(void) -{ - asm_unified("\n\ - push {r4-r7,lr}\n\ - ldr r0, =gMain\n\ - ldrh r1, [r0, 0x2E]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0811ABB8\n\ - bl sub_811BF78\n\ - ldr r1, =gEasyChatScreen\n\ - ldr r3, [r1]\n\ - movs r2, 0\n\ - movs r0, 0x2\n\ - strb r0, [r3, 0x4]\n\ - ldr r0, [r1]\n\ - strb r2, [r0, 0xA]\n\ - ldr r0, [r1]\n\ - strb r2, [r0, 0xB]\n\ - ldr r0, [r1]\n\ - strb r2, [r0, 0xC]\n\ - movs r0, 0x9\n\ - b RETURN\n\ - .pool\n\ -_0811AB9C:\n\ - movs r0, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0811AC68_dpad_left\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0811AC58_dpad_down\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0811AC48_dpad_right\n\ - movs r0, 0\n\ - b RETURN\n\ -_0811ABB8:\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0811AC78_b_button\n\ - movs r0, 0x8\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _0811AC7E_start_button\n\ - movs r0, 0x40\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0811AB9C\n\ - ldr r2, =gEasyChatScreen\n\ - ldr r1, [r2]\n\ - ldrb r0, [r1, 0x6]\n\ - subs r0, 0x1\n\ -_0811ABD8:\n\ - strb r0, [r1, 0x6]\n\ -_0811ABDA:\n\ - adds r7, r2, 0\n\ - adds r4, r7, 0\n\ - ldr r2, [r4]\n\ - movs r0, 0x6\n\ - ldrsb r0, [r2, r0]\n\ - ldr r6, =gEasyChatScreenTemplates\n\ - cmp r0, 0\n\ - bge _0811ABF8\n\ - ldrb r0, [r2, 0x1]\n\ - lsls r1, r0, 1\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - adds r1, r6\n\ - ldrb r0, [r1, 0x2]\n\ - strb r0, [r2, 0x6]\n\ -_0811ABF8:\n\ - ldr r3, [r4]\n\ - movs r2, 0x6\n\ - ldrsb r2, [r3, r2]\n\ - adds r5, r6, 0\n\ - ldrb r1, [r3, 0x1]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r5\n\ - ldrb r0, [r0, 0x2]\n\ - cmp r2, r0\n\ - ble _0811AC14\n\ - movs r0, 0\n\ - strb r0, [r3, 0x6]\n\ -_0811AC14:\n\ - ldr r3, [r4]\n\ - movs r2, 0x6\n\ - ldrsb r2, [r3, r2]\n\ - ldrb r1, [r3, 0x1]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r1, r0, r5\n\ - ldrb r0, [r1, 0x2]\n\ - cmp r2, r0\n\ - bne _0811AC88\n\ - movs r0, 0x5\n\ - ldrsb r0, [r3, r0]\n\ - cmp r0, 0x2\n\ - ble _0811AC36\n\ - movs r0, 0x2\n\ - strb r0, [r3, 0x5]\n\ -_0811AC36:\n\ - ldr r1, [r4]\n\ - movs r0, 0x1\n\ - strb r0, [r1, 0x4]\n\ - movs r0, 0x3\n\ - b RETURN\n\ - .pool\n\ -_0811AC48_dpad_right:\n\ - ldr r2, =gEasyChatScreen\n\ - ldr r1, [r2]\n\ - ldrb r0, [r1, 0x5]\n\ - adds r0, 0x1\n\ - strb r0, [r1, 0x5]\n\ - b _0811ABDA\n\ - .pool\n\ -_0811AC58_dpad_down:\n\ - ldr r2, =gEasyChatScreen\n\ - ldr r1, [r2]\n\ - ldrb r0, [r1, 0x6]\n\ - adds r0, 0x1\n\ - b _0811ABD8\n\ - .pool\n\ -_0811AC68_dpad_left:\n\ - ldr r2, =gEasyChatScreen\n\ - ldr r1, [r2]\n\ - ldrb r0, [r1, 0x5]\n\ - subs r0, 0x1\n\ - strb r0, [r1, 0x5]\n\ - b _0811ABDA\n\ - .pool\n\ -_0811AC78_b_button:\n\ - bl sub_811B150\n\ - b _0811AC82\n\ -_0811AC7E_start_button:\n\ - bl sub_811B1B4\n\ -_0811AC82:\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - b RETURN\n\ -_0811AC88:\n\ - movs r0, 0x5\n\ - ldrsb r0, [r3, r0]\n\ - cmp r0, 0\n\ - bge _0811AC96\n\ - ldrb r0, [r1, 0x1]\n\ - subs r0, 0x1\n\ - strb r0, [r3, 0x5]\n\ -_0811AC96:\n\ - ldr r3, [r4]\n\ - movs r2, 0x5\n\ - ldrsb r2, [r3, r2]\n\ - ldrb r1, [r3, 0x1]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r6\n\ - ldrb r0, [r0, 0x1]\n\ - cmp r2, r0\n\ - blt _0811ACB0\n\ - movs r0, 0\n\ - strb r0, [r3, 0x5]\n\ -_0811ACB0:\n\ - bl sub_811AB44\n\ - cmp r0, 0\n\ - beq _0811ACCA\n\ - ldr r2, [r7]\n\ - ldr r0, [r2, 0x4]\n\ - ldr r1, =0x00ffff00\n\ - ands r0, r1\n\ - ldr r1, =0x00040100\n\ - cmp r0, r1\n\ - bne _0811ACCA\n\ - movs r0, 0\n\ - strb r0, [r2, 0x5]\n\ -_0811ACCA:\n\ - movs r0, 0x2\n\ -RETURN:\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .pool"); -} -#endif // NONMATCHING - -#ifdef NONMATCHING + static u16 sub_811ACDC(void) { - int numFooterColumns; - - if (gMain.newKeys & A_BUTTON) + do { - switch (gEasyChatScreen->mainCursorColumn) + if (gMain.newKeys & A_BUTTON) + { + switch (sEasyChatScreen->mainCursorColumn) + { + case 0: + return sub_811B184(); + case 1: + return sub_811B150(); + case 2: + return sub_811B1B4(); + case 3: + return sub_811B264(); + } + } + + if (gMain.newKeys & B_BUTTON) { - case 0: - return sub_811B184(); - case 1: return sub_811B150(); - case 2: + } + else if (gMain.newKeys & START_BUTTON) + { return sub_811B1B4(); - case 3: - return sub_811B264(); } - } + else if (gMain.newKeys & DPAD_UP) + { + sEasyChatScreen->mainCursorRow--; + break; + } + else if (gMain.newKeys & DPAD_LEFT) + { + sEasyChatScreen->mainCursorColumn--; + break; + } + else if (gMain.newKeys & DPAD_DOWN) + { + sEasyChatScreen->mainCursorRow = 0; + break; + } + else if (gMain.newKeys & DPAD_RIGHT) + { + sEasyChatScreen->mainCursorColumn++; + break; + } - if (gMain.newKeys & B_BUTTON) - return sub_811B150(); - else if (gMain.newKeys & START_BUTTON) - return sub_811B1B4(); - else if (gMain.newKeys & DPAD_UP) - gEasyChatScreen->mainCursorRow--; - else if (gMain.newKeys & DPAD_LEFT) - gEasyChatScreen->mainCursorColumn--; - else if (gMain.newKeys & DPAD_DOWN) - gEasyChatScreen->mainCursorRow = 0; - else if (gMain.newKeys & DPAD_RIGHT) - gEasyChatScreen->mainCursorColumn++; - else return 0; + } while (0); - if (gEasyChatScreen->mainCursorRow == gEasyChatScreenTemplates[gEasyChatScreen->templateId].numRows) + if (sEasyChatScreen->mainCursorRow == sEasyChatScreenTemplates[sEasyChatScreen->templateId].numRows) { - numFooterColumns = sub_811BA3C() ? 4 : 3; - if (gEasyChatScreen->mainCursorColumn < 0) - gEasyChatScreen->mainCursorColumn = numFooterColumns - 1; + int numFooterColumns = FooterHasFourOptions() ? 4 : 3; + if (sEasyChatScreen->mainCursorColumn < 0) + sEasyChatScreen->mainCursorColumn = numFooterColumns - 1; - if (gEasyChatScreen->mainCursorColumn >= numFooterColumns) - gEasyChatScreen->mainCursorColumn = 0; + if (sEasyChatScreen->mainCursorColumn >= numFooterColumns) + sEasyChatScreen->mainCursorColumn = 0; return 3; } - if (gEasyChatScreen->mainCursorColumn >= gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns) - gEasyChatScreen->mainCursorColumn = gEasyChatScreenTemplates[gEasyChatScreen->templateId].numColumns - 1; - - if (sub_811AB44() && gEasyChatScreen->mainCursorColumn == 1 && gEasyChatScreen->mainCursorRow == 4) - gEasyChatScreen->mainCursorColumn = 0; + if (sEasyChatScreen->mainCursorColumn >= sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns) + sEasyChatScreen->mainCursorColumn = sEasyChatScreenTemplates[sEasyChatScreen->templateId].numColumns - 1; + + if (sub_811AB44() && sEasyChatScreen->mainCursorColumn == 1 && sEasyChatScreen->mainCursorRow == 4) + sEasyChatScreen->mainCursorColumn = 0; - gEasyChatScreen->state = 0; + sEasyChatScreen->state = 0; return 2; } -#else -NAKED -static u16 sub_811ACDC(void) -{ - asm_unified("\n\ - push {r4-r6,lr}\n\ - ldr r2, =gMain\n\ - ldrh r1, [r2, 0x2E]\n\ - movs r0, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0811AD4A\n\ - ldr r0, =gEasyChatScreen\n\ - ldr r0, [r0]\n\ - ldrb r0, [r0, 0x5]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _0811AD3E\n\ - b _0811AD24\n\ - .pool\n\ -_0811AD04:\n\ - movs r0, 0x20\n\ - ands r0, r2\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0\n\ - bne _0811ADE0\n\ - movs r0, 0x80\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _0811ADD0\n\ - movs r0, 0x10\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _0811ADC0\n\ - movs r0, 0\n\ - b _0811AE32\n\ -_0811AD24:\n\ - cmp r0, 0x1\n\ - bgt _0811AD2E\n\ - cmp r0, 0\n\ - beq _0811AD38\n\ - b _0811AD4A\n\ -_0811AD2E:\n\ - cmp r0, 0x2\n\ - beq _0811ADF6\n\ - cmp r0, 0x3\n\ - beq _0811AD44\n\ - b _0811AD4A\n\ -_0811AD38:\n\ - bl sub_811B184\n\ - b _0811ADFA\n\ -_0811AD3E:\n\ - bl sub_811B150\n\ - b _0811ADFA\n\ -_0811AD44:\n\ - bl sub_811B264\n\ - b _0811ADFA\n\ -_0811AD4A:\n\ - ldrh r2, [r2, 0x2E]\n\ - movs r0, 0x2\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _0811ADF0\n\ - movs r0, 0x8\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - bne _0811ADF6\n\ - movs r0, 0x40\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _0811AD04\n\ - ldr r2, =gEasyChatScreen\n\ - ldr r1, [r2]\n\ - ldrb r0, [r1, 0x6]\n\ - subs r0, 0x1\n\ - strb r0, [r1, 0x6]\n\ -_0811AD6E:\n\ - adds r6, r2, 0\n\ -_0811AD70:\n\ - adds r5, r6, 0\n\ - ldr r4, [r5]\n\ - movs r3, 0x6\n\ - ldrsb r3, [r4, r3]\n\ - ldr r2, =gEasyChatScreenTemplates\n\ - ldrb r1, [r4, 0x1]\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r1, r0, r2\n\ - ldrb r0, [r1, 0x2]\n\ - cmp r3, r0\n\ - bne _0811AE00\n\ - bl sub_811BA3C\n\ - movs r2, 0x3\n\ - cmp r0, 0\n\ - beq _0811AD96\n\ - movs r2, 0x4\n\ -_0811AD96:\n\ - ldr r1, [r5]\n\ - movs r0, 0x5\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0\n\ - bge _0811ADA4\n\ - subs r0, r2, 0x1\n\ - strb r0, [r1, 0x5]\n\ -_0811ADA4:\n\ - ldr r1, [r5]\n\ - movs r0, 0x5\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, r2\n\ - blt _0811ADB2\n\ - movs r0, 0\n\ - strb r0, [r1, 0x5]\n\ -_0811ADB2:\n\ - movs r0, 0x3\n\ - b _0811AE32\n\ - .pool\n\ -_0811ADC0:\n\ - ldr r2, =gEasyChatScreen\n\ - ldr r1, [r2]\n\ - ldrb r0, [r1, 0x5]\n\ - adds r0, 0x1\n\ - strb r0, [r1, 0x5]\n\ - b _0811AD6E\n\ - .pool\n\ -_0811ADD0:\n\ - ldr r1, =gEasyChatScreen\n\ - ldr r0, [r1]\n\ - strb r3, [r0, 0x6]\n\ - adds r6, r1, 0\n\ - b _0811AD70\n\ - .pool\n\ -_0811ADE0:\n\ - ldr r2, =gEasyChatScreen\n\ - ldr r1, [r2]\n\ - ldrb r0, [r1, 0x5]\n\ - subs r0, 0x1\n\ - strb r0, [r1, 0x5]\n\ - b _0811AD6E\n\ - .pool\n\ -_0811ADF0:\n\ - bl sub_811B150\n\ - b _0811ADFA\n\ -_0811ADF6:\n\ - bl sub_811B1B4\n\ -_0811ADFA:\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - b _0811AE32\n\ -_0811AE00:\n\ - movs r0, 0x5\n\ - ldrsb r0, [r4, r0]\n\ - ldrb r1, [r1, 0x1]\n\ - cmp r0, r1\n\ - blt _0811AE0E\n\ - subs r0, r1, 0x1\n\ - strb r0, [r4, 0x5]\n\ -_0811AE0E:\n\ - bl sub_811AB44\n\ - cmp r0, 0\n\ - beq _0811AE28\n\ - ldr r2, [r6]\n\ - ldr r0, [r2, 0x4]\n\ - ldr r1, =0x00ffff00\n\ - ands r0, r1\n\ - ldr r1, =0x00040100\n\ - cmp r0, r1\n\ - bne _0811AE28\n\ - movs r0, 0\n\ - strb r0, [r2, 0x5]\n\ -_0811AE28:\n\ - ldr r0, =gEasyChatScreen\n\ - ldr r1, [r0]\n\ - movs r0, 0\n\ - strb r0, [r1, 0x4]\n\ - movs r0, 0x2\n\ -_0811AE32:\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .pool"); -} -#endif // NONMATCHING static u16 sub_811AE44(void) { @@ -1248,10 +1667,10 @@ static u16 sub_811AE44(void) if (gMain.newKeys & A_BUTTON) { - if (gEasyChatScreen->unk_0a != -1) + if (sEasyChatScreen->unk_0a != -1) return sub_811B2B0(); - switch (gEasyChatScreen->unk_0b) + switch (sEasyChatScreen->unk_0b) { case 0: return sub_811B33C(); @@ -1284,7 +1703,7 @@ static u16 sub_811AF00(void) { if (gMain.newKeys & B_BUTTON) { - gEasyChatScreen->state = 2; + sEasyChatScreen->state = 2; return 14; } @@ -1320,11 +1739,11 @@ static u16 sub_811AF8C(void) { case MENU_B_PRESSED: // B Button case 1: // No - gEasyChatScreen->state = sub_811B2A4(); + sEasyChatScreen->state = sub_811B2A4(); return 7; case 0: // Yes gSpecialVar_Result = 0; - var0 = gEasyChatScreen->kind - 17; + var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION; if (var0 < 2) sub_811B3E4(); @@ -1340,7 +1759,7 @@ static u16 sub_811AFEC(void) { case MENU_B_PRESSED: // B Button case 1: // No - gEasyChatScreen->state = sub_811B2A4(); + sEasyChatScreen->state = sub_811B2A4(); return 7; case 0: // Yes sub_811BE9C(); @@ -1358,11 +1777,11 @@ static u16 sub_811B040(void) { case MENU_B_PRESSED: // B Button case 1: // No - gEasyChatScreen->state = 1; + sEasyChatScreen->state = 1; return 7; case 0: // Yes sub_811B418(); - gEasyChatScreen->state = 1; + sEasyChatScreen->state = 1; return 8; default: return 0; @@ -1384,7 +1803,7 @@ static u16 sub_811B0BC(void) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - gEasyChatScreen->state = sub_811B2A4(); + sEasyChatScreen->state = sub_811B2A4(); return 7; } @@ -1393,7 +1812,7 @@ static u16 sub_811B0BC(void) static u16 sub_811B0E8(void) { - gEasyChatScreen->state = 10; + sEasyChatScreen->state = 10; return 6; } @@ -1404,8 +1823,8 @@ static u16 sub_811B0F8(void) case MENU_B_PRESSED: // B Button case 1: // No sub_811B454(); - gEasyChatScreen->unk_08 = 0; - gEasyChatScreen->state = 8; + sEasyChatScreen->stateBackup = 0; + sEasyChatScreen->state = 8; return 31; case 0: // Yes gSpecialVar_Result = sub_811B4EC(); @@ -1418,124 +1837,127 @@ static u16 sub_811B0F8(void) static u16 sub_811B150(void) { - if (gEasyChatScreen->kind == 19 || gEasyChatScreen->kind == 11) + if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE + || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW) { - gEasyChatScreen->unk_08 = gEasyChatScreen->state; - gEasyChatScreen->state = 8; + sEasyChatScreen->stateBackup = sEasyChatScreen->state; + sEasyChatScreen->state = 8; return 34; } else { - gEasyChatScreen->unk_08 = gEasyChatScreen->state; - gEasyChatScreen->state = 4; + sEasyChatScreen->stateBackup = sEasyChatScreen->state; + sEasyChatScreen->state = 4; return 5; } } -int sub_811B184(void) +static int sub_811B184(void) { - gEasyChatScreen->unk_08 = gEasyChatScreen->state; - if (gEasyChatScreen->kind != 6) + sEasyChatScreen->stateBackup = sEasyChatScreen->state; + if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG) { - gEasyChatScreen->state = 5; + sEasyChatScreen->state = 5; return 4; } else { - gEasyChatScreen->unk_08 = gEasyChatScreen->state; - gEasyChatScreen->state = 8; + sEasyChatScreen->stateBackup = sEasyChatScreen->state; + sEasyChatScreen->state = 8; return 32; } } -u16 sub_811B1B4(void) +static u16 sub_811B1B4(void) { - gEasyChatScreen->unk_08 = gEasyChatScreen->state; - if (gEasyChatScreen->kind == 17) + sEasyChatScreen->stateBackup = sEasyChatScreen->state; + if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION) { if (sub_811BD64()) { - gEasyChatScreen->state = 8; + sEasyChatScreen->state = 8; return 29; } if (sub_811BDB0()) { - gEasyChatScreen->state = 8; + sEasyChatScreen->state = 8; return 30; } - gEasyChatScreen->state = 6; + sEasyChatScreen->state = 6; return 6; } - else if (gEasyChatScreen->kind == 18) + else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER) { if (sub_811BDB0()) { - gEasyChatScreen->state = 8; + sEasyChatScreen->state = 8; return 30; } if (sub_811BD64()) { - gEasyChatScreen->state = 8; + sEasyChatScreen->state = 8; return 29; } - gEasyChatScreen->state = 6; + sEasyChatScreen->state = 6; return 6; } - else if (gEasyChatScreen->kind == 9 || gEasyChatScreen->kind == 13) + else if (sEasyChatScreen->type == EASY_CHAT_TYPE_TRENDY_PHRASE + || sEasyChatScreen->type == EASY_CHAT_TYPE_GOOD_SAYING) { if (!sub_811BD2C()) { - gEasyChatScreen->state = 8; + sEasyChatScreen->state = 8; return 33; } - gEasyChatScreen->state = 6; + sEasyChatScreen->state = 6; return 6; } - else if (gEasyChatScreen->kind == 19 || gEasyChatScreen->kind == 11) + else if (sEasyChatScreen->type == EASY_CHAT_TYPE_APPRENTICE + || sEasyChatScreen->type == EASY_CHAT_TYPE_CONTEST_INTERVIEW) { if (sub_811BCF4()) { - gEasyChatScreen->state = 8; + sEasyChatScreen->state = 8; return 34; } - gEasyChatScreen->state = 6; + sEasyChatScreen->state = 6; return 6; } - else if (gEasyChatScreen->kind == 20) + else if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUESTIONNAIRE) { - gEasyChatScreen->state = 6; + sEasyChatScreen->state = 6; return 6; } else { if (sub_811BCF4() == 1 || !sub_811B4EC()) { - gEasyChatScreen->state = 4; + sEasyChatScreen->state = 4; return 5; } - gEasyChatScreen->state = 6; + sEasyChatScreen->state = 6; return 6; } } -int sub_811B264(void) +static int sub_811B264(void) { - gEasyChatScreen->unk_08 = gEasyChatScreen->state; - switch (gEasyChatScreen->kind) + sEasyChatScreen->stateBackup = sEasyChatScreen->state; + switch (sEasyChatScreen->type) { - case 15: + case EASY_CHAT_TYPE_QUIZ_ANSWER: return 25; - case 17: + case EASY_CHAT_TYPE_QUIZ_SET_QUESTION: sub_811B3E4(); return 28; - case 18: + case EASY_CHAT_TYPE_QUIZ_SET_ANSWER: sub_811B3E4(); return 27; default: @@ -1545,17 +1967,17 @@ int sub_811B264(void) static u8 sub_811B2A4(void) { - return gEasyChatScreen->unk_08; + return sEasyChatScreen->stateBackup; } static int sub_811B2B0(void) { u16 var1; - if (gEasyChatScreen->unk_09 == 0) + if (sEasyChatScreen->unk_09 == 0) { - u8 var0 = sub_811F3B8(sub_811B8E8()); - sub_811F548(0, var0); + u8 groupId = sub_811F3B8(sub_811B8E8()); + sub_811F548(0, groupId); } else { @@ -1565,37 +1987,37 @@ static int sub_811B2B0(void) var1 = sub_811F5B0(); if (var1 == 0) return 0; - - gEasyChatScreen->unk_0f = (var1 - 1) / 2; - gEasyChatScreen->unk_0e = 0; - gEasyChatScreen->unk_10 = 0; - gEasyChatScreen->unk_11 = 0; - gEasyChatScreen->state = 3; + + sEasyChatScreen->unk_0f = (var1 - 1) / 2; + sEasyChatScreen->unk_0e = 0; + sEasyChatScreen->unk_10 = 0; + sEasyChatScreen->unk_11 = 0; + sEasyChatScreen->state = 3; return 11; } static int sub_811B32C(void) { - gEasyChatScreen->state = 0; + sEasyChatScreen->state = 0; return 10; } static int sub_811B33C(void) { - gEasyChatScreen->unk_0a = 0; - gEasyChatScreen->unk_0b = 0; - gEasyChatScreen->unk_0c = 0; - if (!gEasyChatScreen->unk_09) - gEasyChatScreen->unk_09 = 1; + sEasyChatScreen->unk_0a = 0; + sEasyChatScreen->unk_0b = 0; + sEasyChatScreen->unk_0c = 0; + if (!sEasyChatScreen->unk_09) + sEasyChatScreen->unk_09 = 1; else - gEasyChatScreen->unk_09 = 0; + sEasyChatScreen->unk_09 = 0; return 23; } static int sub_811B368(void) { - if (gEasyChatScreen->kind == 6) + if (sEasyChatScreen->type == EASY_CHAT_TYPE_BARD_SONG) { PlaySE(SE_HAZURE); return 0; @@ -1618,14 +2040,14 @@ static int sub_811B394(void) else { sub_811B488(easyChatWord); - if (gEasyChatScreen->kind != 6) + if (sEasyChatScreen->type != EASY_CHAT_TYPE_BARD_SONG) { - gEasyChatScreen->state = 0; + sEasyChatScreen->state = 0; return 12; } else { - gEasyChatScreen->state = 9; + sEasyChatScreen->state = 9; return 13; } } @@ -1634,36 +2056,36 @@ static int sub_811B394(void) static void sub_811B3E4(void) { int i; - for (i = 0; i < gEasyChatScreen->unk_07; i++) - gEasyChatScreen->words[i] = gEasyChatScreen->ecWordBuffer[i]; + for (i = 0; i < sEasyChatScreen->unk_07; i++) + sEasyChatScreen->words[i] = sEasyChatScreen->ecWordBuffer[i]; } static void sub_811B418(void) { int i; - for (i = 0; i < gEasyChatScreen->unk_07; i++) - gEasyChatScreen->ecWordBuffer[i] = 0xFFFF; + for (i = 0; i < sEasyChatScreen->unk_07; i++) + sEasyChatScreen->ecWordBuffer[i] = 0xFFFF; } static void sub_811B454(void) { int i; - for (i = 0; i < gEasyChatScreen->unk_07; i++) - gEasyChatScreen->ecWordBuffer[i] = gEasyChatScreen->words[i]; + for (i = 0; i < sEasyChatScreen->unk_07; i++) + sEasyChatScreen->ecWordBuffer[i] = sEasyChatScreen->words[i]; } static void sub_811B488(u16 easyChatWord) { u16 index = sub_811B8C8(); - gEasyChatScreen->ecWordBuffer[index] = easyChatWord; + sEasyChatScreen->ecWordBuffer[index] = easyChatWord; } static u8 sub_811B4AC(void) { u16 i; - for (i = 0; i < gEasyChatScreen->unk_07; i++) + for (i = 0; i < sEasyChatScreen->unk_07; i++) { - if (gEasyChatScreen->ecWordBuffer[i] != gEasyChatScreen->words[i]) + if (sEasyChatScreen->ecWordBuffer[i] != sEasyChatScreen->words[i]) return 1; } @@ -1672,7 +2094,7 @@ static u8 sub_811B4AC(void) static int sub_811B4EC(void) { - u8 var0 = gEasyChatScreen->kind - 17; + u8 var0 = sEasyChatScreen->type - EASY_CHAT_TYPE_QUIZ_SET_QUESTION; if (var0 < 2) { if (sub_811BD64()) @@ -1691,9 +2113,9 @@ static int sub_811B4EC(void) static u16 sub_811B528(int arg0) { - if (gEasyChatScreen->unk_0a != -1) + if (sEasyChatScreen->unk_0a != -1) { - if (gEasyChatScreen->unk_09 == 0) + if (sEasyChatScreen->unk_09 == 0) return sub_811B568(arg0); else return sub_811B634(arg0); @@ -1709,32 +2131,32 @@ static int sub_811B568(u32 arg0) switch (arg0) { case 2: - if (gEasyChatScreen->unk_0b != -gEasyChatScreen->unk_0c) + if (sEasyChatScreen->unk_0b != -sEasyChatScreen->unk_0c) { - if (gEasyChatScreen->unk_0b) + if (sEasyChatScreen->unk_0b) { - gEasyChatScreen->unk_0b--; + sEasyChatScreen->unk_0b--; return 15; } else { - gEasyChatScreen->unk_0c--; + sEasyChatScreen->unk_0c--; return 17; } } break; case 3: - if (gEasyChatScreen->unk_0b + gEasyChatScreen->unk_0c < gEasyChatScreen->unk_0d - 1) + if (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c < sEasyChatScreen->unk_0d - 1) { int var0; - if (gEasyChatScreen->unk_0b < 3) + if (sEasyChatScreen->unk_0b < 3) { - gEasyChatScreen->unk_0b++; + sEasyChatScreen->unk_0b++; var0 = 15; } else { - gEasyChatScreen->unk_0c++; + sEasyChatScreen->unk_0c++; var0 = 16; } @@ -1743,16 +2165,16 @@ static int sub_811B568(u32 arg0) } break; case 1: - if (gEasyChatScreen->unk_0a) - gEasyChatScreen->unk_0a--; + if (sEasyChatScreen->unk_0a) + sEasyChatScreen->unk_0a--; else sub_811B744(); return 15; case 0: - if (gEasyChatScreen->unk_0a < 1) + if (sEasyChatScreen->unk_0a < 1) { - gEasyChatScreen->unk_0a++; + sEasyChatScreen->unk_0a++; if (sub_811B9C8()) sub_811B744(); } @@ -1771,30 +2193,30 @@ static int sub_811B634(u32 arg0) switch (arg0) { case 2: - if (gEasyChatScreen->unk_0b > 0) - gEasyChatScreen->unk_0b--; + if (sEasyChatScreen->unk_0b > 0) + sEasyChatScreen->unk_0b--; else - gEasyChatScreen->unk_0b = 3; + sEasyChatScreen->unk_0b = 3; sub_811B978(); return 15; case 3: - if (gEasyChatScreen->unk_0b < 3) - gEasyChatScreen->unk_0b++; + if (sEasyChatScreen->unk_0b < 3) + sEasyChatScreen->unk_0b++; else - gEasyChatScreen->unk_0b = 0; + sEasyChatScreen->unk_0b = 0; sub_811B978(); return 15; case 0: - gEasyChatScreen->unk_0a++; + sEasyChatScreen->unk_0a++; if (sub_811B9C8()) sub_811B744(); return 15; case 1: - gEasyChatScreen->unk_0a--; - if (gEasyChatScreen->unk_0a < 0) + sEasyChatScreen->unk_0a--; + if (sEasyChatScreen->unk_0a < 0) sub_811B744(); return 15; @@ -1808,26 +2230,26 @@ static int sub_811B6C4(u32 arg0) switch (arg0) { case 2: - if (gEasyChatScreen->unk_0b) - gEasyChatScreen->unk_0b--; + if (sEasyChatScreen->unk_0b) + sEasyChatScreen->unk_0b--; else - gEasyChatScreen->unk_0b = 2; + sEasyChatScreen->unk_0b = 2; return 15; case 3: - if (gEasyChatScreen->unk_0b < 2) - gEasyChatScreen->unk_0b++; + if (sEasyChatScreen->unk_0b < 2) + sEasyChatScreen->unk_0b++; else - gEasyChatScreen->unk_0b = 0; + sEasyChatScreen->unk_0b = 0; return 15; case 1: - gEasyChatScreen->unk_0b++; + sEasyChatScreen->unk_0b++; sub_811B768(); return 15; case 0: - gEasyChatScreen->unk_0a = 0; - gEasyChatScreen->unk_0b++; + sEasyChatScreen->unk_0a = 0; + sEasyChatScreen->unk_0b++; return 15; } @@ -1836,21 +2258,21 @@ static int sub_811B6C4(u32 arg0) static void sub_811B744(void) { - gEasyChatScreen->unk_0a = 0xFF; - if (gEasyChatScreen->unk_0b) - gEasyChatScreen->unk_0b--; + sEasyChatScreen->unk_0a = 0xFF; + if (sEasyChatScreen->unk_0b) + sEasyChatScreen->unk_0b--; } static void sub_811B768(void) { - if (gEasyChatScreen->unk_09 == 0) + if (sEasyChatScreen->unk_09 == 0) { - gEasyChatScreen->unk_0a = 1; + sEasyChatScreen->unk_0a = 1; sub_811B978(); } else { - gEasyChatScreen->unk_0a = sub_811B960(gEasyChatScreen->unk_0b); + sEasyChatScreen->unk_0a = sub_811B960(sEasyChatScreen->unk_0b); } } @@ -1860,16 +2282,16 @@ static u16 sub_811B794(u32 arg0) switch (arg0) { case 2: - if (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e > 0) + if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e > 0) { - if (gEasyChatScreen->unk_11 > 0) + if (sEasyChatScreen->unk_11 > 0) { - gEasyChatScreen->unk_11--; + sEasyChatScreen->unk_11--; result = 18; } else { - gEasyChatScreen->unk_0e--; + sEasyChatScreen->unk_0e--; result = 19; } @@ -1878,16 +2300,16 @@ static u16 sub_811B794(u32 arg0) } break; case 3: - if (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e < gEasyChatScreen->unk_0f) + if (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e < sEasyChatScreen->unk_0f) { - if (gEasyChatScreen->unk_11 < 3) + if (sEasyChatScreen->unk_11 < 3) { - gEasyChatScreen->unk_11++; + sEasyChatScreen->unk_11++; result = 18; } else { - gEasyChatScreen->unk_0e++; + sEasyChatScreen->unk_0e++; result = 20; } @@ -1896,43 +2318,43 @@ static u16 sub_811B794(u32 arg0) } break; case 1: - if (gEasyChatScreen->unk_10 > 0) - gEasyChatScreen->unk_10--; + if (sEasyChatScreen->unk_10 > 0) + sEasyChatScreen->unk_10--; else - gEasyChatScreen->unk_10 = 1; + sEasyChatScreen->unk_10 = 1; sub_811B9A0(); return 18; case 0: - if (gEasyChatScreen->unk_10 < 1) + if (sEasyChatScreen->unk_10 < 1) { - gEasyChatScreen->unk_10++; + sEasyChatScreen->unk_10++; if (sub_811BA1C()) - gEasyChatScreen->unk_10 = 0; + sEasyChatScreen->unk_10 = 0; } else { - gEasyChatScreen->unk_10 = 0; + sEasyChatScreen->unk_10 = 0; } return 18; case 4: - if (gEasyChatScreen->unk_0e) + if (sEasyChatScreen->unk_0e) { - if (gEasyChatScreen->unk_0e > 3) - gEasyChatScreen->unk_0e -= 4; + if (sEasyChatScreen->unk_0e > 3) + sEasyChatScreen->unk_0e -= 4; else - gEasyChatScreen->unk_0e = 0; + sEasyChatScreen->unk_0e = 0; return 21; } break; case 5: - if (gEasyChatScreen->unk_0e <= gEasyChatScreen->unk_0f - 4) + if (sEasyChatScreen->unk_0e <= sEasyChatScreen->unk_0f - 4) { - gEasyChatScreen->unk_0e += 4; - if (gEasyChatScreen->unk_0e > gEasyChatScreen->unk_0f - 3) - gEasyChatScreen->unk_0e = gEasyChatScreen->unk_0f + 0xFD; - + sEasyChatScreen->unk_0e += 4; + if (sEasyChatScreen->unk_0e > sEasyChatScreen->unk_0f - 3) + sEasyChatScreen->unk_0e = sEasyChatScreen->unk_0f + 0xFD; + sub_811B9A0(); return 22; } @@ -1944,24 +2366,24 @@ static u16 sub_811B794(u32 arg0) static u16 sub_811B8C8(void) { - return (gEasyChatScreen->mainCursorRow * gEasyChatScreen->numColumns) + gEasyChatScreen->mainCursorColumn; + return (sEasyChatScreen->mainCursorRow * sEasyChatScreen->numColumns) + sEasyChatScreen->mainCursorColumn; } static u16 sub_811B8E8(void) { - return 2 * (gEasyChatScreen->unk_0b + gEasyChatScreen->unk_0c) + gEasyChatScreen->unk_0a; + return 2 * (sEasyChatScreen->unk_0b + sEasyChatScreen->unk_0c) + sEasyChatScreen->unk_0a; } static int sub_811B908(void) { - int var0 = (u8)gEasyChatScreen->unk_0a < 7 ? gEasyChatScreen->unk_0a : 0; - int var1 = (u8)gEasyChatScreen->unk_0b < 4 ? gEasyChatScreen->unk_0b : 0; - return gUnknown_08597748[var1][var0]; + int var0 = (u8)sEasyChatScreen->unk_0a < 7 ? sEasyChatScreen->unk_0a : 0; + int var1 = (u8)sEasyChatScreen->unk_0b < 4 ? sEasyChatScreen->unk_0b : 0; + return sUnknown_08597748[var1][var0]; } -u16 sub_811B940(void) +static u16 sub_811B940(void) { - return 2 * (gEasyChatScreen->unk_11 + gEasyChatScreen->unk_0e) + gEasyChatScreen->unk_10; + return 2 * (sEasyChatScreen->unk_11 + sEasyChatScreen->unk_0e) + sEasyChatScreen->unk_10; } static u8 sub_811B960(u8 arg0) @@ -1980,8 +2402,8 @@ static void sub_811B978(void) { while (sub_811B9C8()) { - if (gEasyChatScreen->unk_0a) - gEasyChatScreen->unk_0a--; + if (sEasyChatScreen->unk_0a) + sEasyChatScreen->unk_0a--; else break; } @@ -1991,8 +2413,8 @@ static void sub_811B9A0(void) { while (sub_811BA1C()) { - if (gEasyChatScreen->unk_10) - gEasyChatScreen->unk_10--; + if (sEasyChatScreen->unk_10) + sEasyChatScreen->unk_10--; else break; } @@ -2000,10 +2422,10 @@ static void sub_811B9A0(void) static u8 sub_811B9C8(void) { - if (gEasyChatScreen->unk_09 == 0) + if (sEasyChatScreen->unk_09 == 0) return sub_811B8E8() >= sub_811F3AC() ? 1 : 0; else - return gEasyChatScreen->unk_0a > sub_811B960(gEasyChatScreen->unk_0b) ? 1 : 0; + return sEasyChatScreen->unk_0a > sub_811B960(sEasyChatScreen->unk_0b) ? 1 : 0; } static u8 sub_811BA1C(void) @@ -2011,73 +2433,73 @@ static u8 sub_811BA1C(void) return sub_811B940() >= sub_811F5B0() ? 1 : 0; } -int sub_811BA3C(void) +static int FooterHasFourOptions(void) { - return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_7; + return sEasyChatScreenTemplates[sEasyChatScreen->templateId].fourFooterOptions; } -u8 sub_811BA5C(void) +static u8 GetEasyChatScreenType(void) { - return gEasyChatScreen->kind; + return sEasyChatScreen->type; } -u8 sub_811BA68(void) +static u8 GetEasyChatScreenFrameId(void) { - return gEasyChatScreenTemplates[gEasyChatScreen->templateId].unk_03_0; + return sEasyChatScreenTemplates[sEasyChatScreen->templateId].frameId; } -const u8 *sub_811BA88(void) +const u8 *GetTitleText(void) { - return gEasyChatScreen->titleText; + return sEasyChatScreen->titleText; } -u16 *sub_811BA94(void) +static u16 *GetEasyChatWordBuffer(void) { - return gEasyChatScreen->ecWordBuffer; + return sEasyChatScreen->ecWordBuffer; } -u8 sub_811BAA0(void) +static u8 GetNumRows(void) { - return gEasyChatScreen->numRows; + return sEasyChatScreen->numRows; } -u8 sub_811BAAC(void) +static u8 GetNumColumns(void) { - return gEasyChatScreen->numColumns; + return sEasyChatScreen->numColumns; } -u8 sub_811BAB8(void) +static u8 GetMainCursorColumn(void) { - return gEasyChatScreen->mainCursorColumn; + return sEasyChatScreen->mainCursorColumn; } -u8 sub_811BAC4(void) +static u8 GetMainCursorRow(void) { - return gEasyChatScreen->mainCursorRow; + return sEasyChatScreen->mainCursorRow; } static void GetEasyChatInstructionsText(const u8 **str1, const u8 **str2) { - *str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText1; - *str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].instructionsText2; + *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText1; + *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].instructionsText2; } static void GetEasyChatConfirmText(const u8 **str1, const u8 **str2) { - *str1 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText1; - *str2 = gEasyChatScreenTemplates[gEasyChatScreen->templateId].confirmText2; + *str1 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText1; + *str2 = sEasyChatScreenTemplates[sEasyChatScreen->templateId].confirmText2; } static void sub_811BB40(const u8 **str1, const u8 **str2) { - switch (gEasyChatScreen->kind) + switch (sEasyChatScreen->type) { - case 4: + case EASY_CHAT_TYPE_MAIL: *str1 = gText_StopGivingPkmnMail; *str2 = NULL; break; - case 15: - case 16: + case EASY_CHAT_TYPE_QUIZ_ANSWER: + case EASY_CHAT_TYPE_QUIZ_QUESTION: *str1 = gText_LikeToQuitQuiz; *str2 = gText_ChallengeQuestionMark; break; @@ -2097,34 +2519,34 @@ static void GetEasyChatConfirmDeletionText(const u8 **str1, const u8 **str2) void sub_811BB9C(u8 *arg0, u8 *arg1) { - *arg0 = gEasyChatScreen->unk_0a; - *arg1 = gEasyChatScreen->unk_0b; + *arg0 = sEasyChatScreen->unk_0a; + *arg1 = sEasyChatScreen->unk_0b; } u8 sub_811BBB0(void) { - return gEasyChatScreen->unk_09; + return sEasyChatScreen->unk_09; } u8 sub_811BBBC(void) { - return gEasyChatScreen->unk_0c; + return sEasyChatScreen->unk_0c; } void sub_811BBC8(u8 *arg0, u8 *arg1) { - *arg0 = gEasyChatScreen->unk_10; - *arg1 = gEasyChatScreen->unk_11; + *arg0 = sEasyChatScreen->unk_10; + *arg1 = sEasyChatScreen->unk_11; } u8 sub_811BBDC(void) { - return gEasyChatScreen->unk_0e; + return sEasyChatScreen->unk_0e; } u8 sub_811BBE8(void) { - return gEasyChatScreen->unk_0f; + return sEasyChatScreen->unk_0f; } static u8 unref_sub_811BBF4(void) @@ -2134,14 +2556,14 @@ static u8 unref_sub_811BBF4(void) int sub_811BBF8(void) { - switch (gEasyChatScreen->state) + switch (sEasyChatScreen->state) { case 2: - if (gEasyChatScreen->unk_09 == 0 && gEasyChatScreen->unk_0c) + if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c) return 1; break; case 3: - if (gEasyChatScreen->unk_0e) + if (sEasyChatScreen->unk_0e) return 1; break; } @@ -2151,14 +2573,14 @@ int sub_811BBF8(void) int sub_811BC2C(void) { - switch (gEasyChatScreen->state) + switch (sEasyChatScreen->state) { case 2: - if (gEasyChatScreen->unk_09 == 0 && gEasyChatScreen->unk_0c + 4 <= gEasyChatScreen->unk_0d - 1) + if (sEasyChatScreen->unk_09 == 0 && sEasyChatScreen->unk_0c + 4 <= sEasyChatScreen->unk_0d - 1) return 1; break; case 3: - if (gEasyChatScreen->unk_0e + 4 <= gEasyChatScreen->unk_0f) + if (sEasyChatScreen->unk_0e + 4 <= sEasyChatScreen->unk_0f) return 1; break; } @@ -2166,9 +2588,9 @@ int sub_811BC2C(void) return 0; } -static int sub_811BC70(void) +static int FooterHasFourOptions_(void) { - return sub_811BA3C(); + return FooterHasFourOptions(); } u8 sub_811BC7C(const u16 *arg0, u8 arg1) @@ -2177,38 +2599,38 @@ u8 sub_811BC7C(const u16 *arg0, u8 arg1) for (i = 0; i < arg1; i++) { - if (arg0[i] != gEasyChatScreen->ecWordBuffer[i]) + if (arg0[i] != sEasyChatScreen->ecWordBuffer[i]) return 1; } return 0; } -u8 sub_811BCBC(void) +static u8 GetDisplayedPersonType(void) { - return gEasyChatScreen->sizeParam; + return sEasyChatScreen->displayedPersonType; } -static u8 sub_811BCC8(u8 entryType) +static u8 GetEachChatScreenTemplateId(u8 type) { u32 i; - for (i = 0; i < ARRAY_COUNT(gEasyChatScreenTemplates); i++) + for (i = 0; i < ARRAY_COUNT(sEasyChatScreenTemplates); i++) { - if (gEasyChatScreenTemplates[i].unk_00 == entryType) + if (sEasyChatScreenTemplates[i].type == type) return i; } return 0; } -int sub_811BCF4(void) +static int sub_811BCF4(void) { int i; - for (i = 0; i < gEasyChatScreen->unk_07; i++) + for (i = 0; i < sEasyChatScreen->unk_07; i++) { - if (gEasyChatScreen->ecWordBuffer[i] != 0xFFFF) + if (sEasyChatScreen->ecWordBuffer[i] != 0xFFFF) return 0; } @@ -2219,9 +2641,9 @@ static int sub_811BD2C(void) { int i; - for (i = 0; i < gEasyChatScreen->unk_07; i++) + for (i = 0; i < sEasyChatScreen->unk_07; i++) { - if (gEasyChatScreen->ecWordBuffer[i] == 0xFFFF) + if (sEasyChatScreen->ecWordBuffer[i] == 0xFFFF) return 0; } @@ -2233,9 +2655,9 @@ static int sub_811BD64(void) int i; struct SaveBlock1 *saveBlock1; - if (gEasyChatScreen->kind == 17) + if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_QUESTION) return sub_811BCF4(); - + saveBlock1 = gSaveBlock1Ptr; for (i = 0; i < 9; i++) { @@ -2249,7 +2671,7 @@ static int sub_811BD64(void) static int sub_811BDB0(void) { struct LilycoveLadyQuiz *quiz; - if (gEasyChatScreen->kind == 18) + if (sEasyChatScreen->type == EASY_CHAT_TYPE_QUIZ_SET_ANSWER) return sub_811BCF4(); quiz = &gSaveBlock1Ptr->lilycoveLady.quiz; @@ -2280,10 +2702,10 @@ static void sub_811BE54(void) u16 *ecWord; u8 *str; - ecWord = gEasyChatScreen->ecWordBuffer; + ecWord = sEasyChatScreen->ecWordBuffer; str = gStringVar2; i = 0; - while (i < gEasyChatScreen->unk_07) + while (i < sEasyChatScreen->unk_07) { str = CopyEasyChatWordPadded(str, *ecWord, 0); *str = 0; @@ -2298,22 +2720,22 @@ static void sub_811BE54(void) static void sub_811BE9C(void) { - switch (gEasyChatScreen->kind) + switch (sEasyChatScreen->type) { - case 0: + case EASY_CHAT_TYPE_PROFILE: FlagSet(FLAG_SYS_CHAT_USED); break; - case 20: + case EASY_CHAT_TYPE_QUESTIONNAIRE: if (sub_811BF20()) gSpecialVar_0x8004 = 2; else gSpecialVar_0x8004 = 0; break; - case 9: + case EASY_CHAT_TYPE_TRENDY_PHRASE: sub_811BE54(); - gSpecialVar_0x8004 = sub_81226D8(gEasyChatScreen->ecWordBuffer); + gSpecialVar_0x8004 = sub_81226D8(sEasyChatScreen->ecWordBuffer); break; - case 13: + case EASY_CHAT_TYPE_GOOD_SAYING: gSpecialVar_0x8004 = sub_811BF40(); break; } @@ -2321,7 +2743,7 @@ static void sub_811BE9C(void) static int sub_811BF20(void) { - return sub_811BC7C(gUnknown_08597764, 4) == 0; + return sub_811BC7C(sMysteryGiftPhrase, ARRAY_COUNT(sMysteryGiftPhrase)) == 0; } static u16 sub_811BF40(void) @@ -2329,19 +2751,19 @@ static u16 sub_811BF40(void) int i; for (i = 0; i < 5; i++) { - if (!sub_811BC7C(gUnknown_0859776C[i], 2)) + if (!sub_811BC7C(sBerryMasterWifePhrases[i], ARRAY_COUNT(*sBerryMasterWifePhrases))) return i + 1; } return 0; } -void sub_811BF78(void) +static void sub_811BF78(void) { - gEasyChatScreen->unk_13 = 0; + sEasyChatScreen->unk_13 = 0; } -int sub_811BF88(int easyChatWord) +static int sub_811BF88(int easyChatWord) { return 0; } @@ -2349,21 +2771,21 @@ int sub_811BF88(int easyChatWord) static bool8 sub_811BF8C(void) { if (!sub_811CE94()) - return 0; + return 0; else return 1; } static bool8 sub_811BFA4(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_08597C54, ARRAY_COUNT(gUnknown_08597C54)); - SetBgTilemapBuffer(3, gUnknown_0203A11C->unkB00); - SetBgTilemapBuffer(1, gUnknown_0203A11C->unk300); - InitWindows(gUnknown_08597C64); + InitBgsFromTemplates(0, sEasyChatBgTemplates, ARRAY_COUNT(sEasyChatBgTemplates)); + SetBgTilemapBuffer(3, sUnknown_0203A11C->unkB00); + SetBgTilemapBuffer(1, sUnknown_0203A11C->unk300); + InitWindows(sEasyChatWindowTemplates); DeactivateAllTextPrinters(); sub_811CF64(); sub_811CF04(); @@ -2373,13 +2795,13 @@ static bool8 sub_811BFA4(void) DecompressAndLoadBgGfxUsingHeap(3, gEasyChatWindow_Gfx, 0, 0, 0); CopyToBgTilemapBuffer(3, gEasyChatWindow_Tilemap, 0, 0); sub_811D60C(); - sub_811D424(gUnknown_0203A11C->unk300); + sub_811D424(sUnknown_0203A11C->unk300); sub_811D230(); sub_811E948(); CopyBgTilemapBufferToVram(3); break; case 2: - DecompressAndLoadBgGfxUsingHeap(1, gUnknown_08597B54, 0, 0, 0); + DecompressAndLoadBgGfxUsingHeap(1, sUnknown_08597B54, 0, 0, 0); CopyBgTilemapBufferToVram(1); break; case 3: @@ -2390,7 +2812,7 @@ static bool8 sub_811BFA4(void) break; case 4: sub_811DE90(); - if (sub_811BA5C() != 16) + if (GetEasyChatScreenType() != EASY_CHAT_TYPE_QUIZ_QUESTION) sub_811DEC4(); break; case 5: @@ -2416,26 +2838,26 @@ static bool8 sub_811BFA4(void) return FALSE; } - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return TRUE; } static void sub_811C13C(void) { - if (gUnknown_0203A11C) - FREE_AND_SET_NULL(gUnknown_0203A11C); + if (sUnknown_0203A11C) + FREE_AND_SET_NULL(sUnknown_0203A11C); } static void sub_811C158(u16 arg0) { - gUnknown_0203A11C->unk4 = arg0; - gUnknown_0203A11C->unk0 = 0; + sUnknown_0203A11C->unk4 = arg0; + sUnknown_0203A11C->unk0 = 0; sub_811C170(); } static bool8 sub_811C170(void) { - switch (gUnknown_0203A11C->unk4) + switch (sUnknown_0203A11C->unk4) { case 0: return FALSE; case 1: return sub_811C2D4(); @@ -2478,11 +2900,11 @@ static bool8 sub_811C170(void) static bool8 sub_811C2D4(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811D2C8(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -2496,21 +2918,21 @@ static bool8 sub_811C30C(void) u8 i; u16 *ecWordBuffer; u16 *ecWord; - u8 var0; + u8 frameId; u8 cursorColumn, cursorRow, numColumns; s16 var1; int stringWidth; int trueStringWidth; u8 var2; - u8 sp0[64]; - - ecWordBuffer = sub_811BA94(); - var0 = sub_811BA68(); - cursorColumn = sub_811BAB8(); - cursorRow = sub_811BAC4(); - numColumns = sub_811BAAC(); + u8 str[64]; + + ecWordBuffer = GetEasyChatWordBuffer(); + frameId = GetEasyChatScreenFrameId(); + cursorColumn = GetMainCursorColumn(); + cursorRow = GetMainCursorRow(); + numColumns = GetNumColumns(); ecWord = &ecWordBuffer[cursorRow * numColumns]; - var1 = 8 * gUnknown_08597C30[var0].unk0_0 + 13; + var1 = 8 * sPhraseFrameDimensions[frameId].left + 13; for (i = 0; i < cursorColumn; i++) { if (*ecWord == 0xFFFF) @@ -2519,8 +2941,8 @@ static bool8 sub_811C30C(void) } else { - CopyEasyChatWord(sp0, *ecWord); - stringWidth = GetStringWidth(1, sp0, 0); + CopyEasyChatWord(str, *ecWord); + stringWidth = GetStringWidth(1, str, 0); } trueStringWidth = stringWidth + 17; @@ -2528,27 +2950,27 @@ static bool8 sub_811C30C(void) ecWord++; } - var2 = 8 * (gUnknown_08597C30[var0].unk0_5 + cursorRow * 2); + var2 = 8 * (sPhraseFrameDimensions[frameId].top + cursorRow * 2); sub_811DF60(var1, var2 + 8); return FALSE; } static bool8 sub_811C3E4(void) { - u8 var0 = sub_811E920(sub_811BAB8()); - sub_811DF60(var0, 96); + u8 xOffset = GetFooterOptionXOffset(GetMainCursorColumn()); + sub_811DF60(xOffset, 96); return FALSE; } static bool8 sub_811C404(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); sub_811D104(2); sub_811D214(1); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -2559,13 +2981,13 @@ static bool8 sub_811C404(void) static bool8 sub_811C448(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); sub_811D104(3); sub_811D214(0); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -2576,13 +2998,13 @@ static bool8 sub_811C448(void) static bool8 sub_811C48C(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); sub_811D104(1); sub_811D214(1); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -2593,14 +3015,14 @@ static bool8 sub_811C48C(void) static bool8 sub_811C4D0(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DFB0(); sub_811D104(0); sub_811D2C8(); ShowBg(0); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -2611,13 +3033,13 @@ static bool8 sub_811C4D0(void) static bool8 sub_811C518(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DFB0(); sub_811D104(0); sub_811D2C8(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; // Fall through case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -2628,31 +3050,31 @@ static bool8 sub_811C518(void) static bool8 sub_811C554(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); HideBg(0); sub_811DE5C(0, 0, 0, 0); sub_811D6D4(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811D9CC(0); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 2: if (!IsDma3ManagerBusyWithBgCopy() && !sub_811DAA4()) - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811E3AC(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 4: @@ -2661,7 +3083,7 @@ static bool8 sub_811C554(void) sub_811DFC8(); sub_811E6E0(0); sub_811E64C(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -2674,31 +3096,31 @@ static bool8 sub_811C554(void) static bool8 sub_811C620(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811E050(); sub_811E4AC(); sub_811E6B0(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: if (sub_811E4D0() == TRUE) break; sub_811D9CC(1); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; // Fall through case 2: if (!sub_811DAA4()) - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811DFB0(); ShowBg(0); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 4: @@ -2710,20 +3132,20 @@ static bool8 sub_811C620(void) static bool8 sub_811C6C0(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811E050(); sub_811E6B0(); sub_811E55C(); sub_811D9CC(5); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: if (!sub_811DAA4() && !sub_811E5B8()) { sub_811D6D4(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 2: @@ -2731,7 +3153,7 @@ static bool8 sub_811C6C0(void) { sub_811D9CC(6); sub_811E578(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 3: @@ -2739,7 +3161,7 @@ static bool8 sub_811C6C0(void) { sub_811E64C(); sub_811DFC8(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -2758,11 +3180,11 @@ static bool8 sub_811C780(void) static bool8 sub_811C78C(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DDAC(1, 4); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; // Fall through case 1: if (!sub_811DE10()) @@ -2779,17 +3201,17 @@ static bool8 sub_811C78C(void) static bool8 sub_811C7D4(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DDAC(-1, 4); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; // Fall through case 1: if (!sub_811DE10()) { sub_811E64C(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -2802,33 +3224,33 @@ static bool8 sub_811C7D4(void) static bool8 sub_811C830(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811E050(); sub_811E4AC(); sub_811E6B0(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: if (!sub_811E4D0()) { sub_811D9B4(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 2: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811D9CC(2); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 3: if (!sub_811DAA4()) { sub_811D698(2); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 4: @@ -2838,7 +3260,7 @@ static bool8 sub_811C830(void) sub_811E6E0(1); sub_811E64C(); sub_811E794(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -2851,38 +3273,38 @@ static bool8 sub_811C830(void) static bool8 sub_811C8F0(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811D2C8(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: sub_811E380(); sub_811E6B0(); sub_811E7F8(); sub_811D9B4(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 2: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811D9CC(3); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 3: if (!sub_811DAA4()) { ShowBg(0); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 4: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811DFB0(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -2895,45 +3317,45 @@ static bool8 sub_811C8F0(void) static bool8 sub_811C99C(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811D2C8(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: sub_811E380(); sub_811E6B0(); sub_811E7F8(); sub_811D9B4(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 2: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811D9CC(3); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 3: if (!sub_811DAA4()) { sub_811D104(3); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 4: if (!IsDma3ManagerBusyWithBgCopy()) { ShowBg(0); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 5: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811DFB0(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -2946,34 +3368,34 @@ static bool8 sub_811C99C(void) static bool8 sub_811CA5C(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811E380(); sub_811E6B0(); sub_811E7F8(); sub_811D9B4(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811D9CC(4); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 2: if (!sub_811DAA4()) { sub_811D6D4(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811E3AC(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 4: @@ -2982,7 +3404,7 @@ static bool8 sub_811CA5C(void) sub_811DFC8(); sub_811E6E0(0); sub_811E64C(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -2999,17 +3421,17 @@ static bool8 sub_811CB18(void) static bool8 sub_811CB24(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811D7A4(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811DDAC(1, 4); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 2: @@ -3018,7 +3440,7 @@ static bool8 sub_811CB24(void) sub_811E30C(); sub_811E64C(); sub_811E794(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -3031,17 +3453,17 @@ static bool8 sub_811CB24(void) static bool8 sub_811CB98(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811D7C8(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { sub_811DDAC(-1, 4); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 2: @@ -3049,7 +3471,7 @@ static bool8 sub_811CB98(void) { sub_811E64C(); sub_811E794(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -3062,18 +3484,18 @@ static bool8 sub_811CB98(void) static bool8 sub_811CC08(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811D7EC(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { s16 var0 = sub_811BBDC() - sub_811DE48(); sub_811DDAC(var0, 8); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 2: @@ -3082,7 +3504,7 @@ static bool8 sub_811CC08(void) sub_811E30C(); sub_811E64C(); sub_811E794(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -3095,18 +3517,18 @@ static bool8 sub_811CC08(void) static bool8 sub_811CC90(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811D830(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) { s16 var0 = sub_811BBDC() - sub_811DE48(); sub_811DDAC(var0, 8); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; } break; case 2: @@ -3114,7 +3536,7 @@ static bool8 sub_811CC90(void) { sub_811E64C(); sub_811E794(); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; return FALSE; } break; @@ -3127,12 +3549,12 @@ static bool8 sub_811CC90(void) static bool8 sub_811CD14(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); sub_811D104(4); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -3143,12 +3565,12 @@ static bool8 sub_811CD14(void) static bool8 sub_811CD54(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); sub_811D104(5); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -3159,12 +3581,12 @@ static bool8 sub_811CD54(void) static bool8 sub_811CD94(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); sub_811D104(6); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -3175,12 +3597,12 @@ static bool8 sub_811CD94(void) static bool8 sub_811CDD4(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); sub_811D104(7); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -3191,12 +3613,12 @@ static bool8 sub_811CDD4(void) static bool8 sub_811CE14(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); sub_811D104(8); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -3207,12 +3629,12 @@ static bool8 sub_811CE14(void) static bool8 sub_811CE54(void) { - switch (gUnknown_0203A11C->unk0) + switch (sUnknown_0203A11C->unk0) { case 0: sub_811DF90(); sub_811D104(9); - gUnknown_0203A11C->unk0++; + sUnknown_0203A11C->unk0++; break; case 1: return IsDma3ManagerBusyWithBgCopy(); @@ -3223,22 +3645,22 @@ static bool8 sub_811CE54(void) static bool8 sub_811CE94(void) { - gUnknown_0203A11C = Alloc(sizeof(*gUnknown_0203A11C)); - if (!gUnknown_0203A11C) + sUnknown_0203A11C = Alloc(sizeof(*sUnknown_0203A11C)); + if (!sUnknown_0203A11C) return FALSE; - gUnknown_0203A11C->unk0 = 0; - gUnknown_0203A11C->unk2D8 = 0; - gUnknown_0203A11C->unk2DC = 0; - gUnknown_0203A11C->unk2E0 = 0; - gUnknown_0203A11C->unk2E4 = 0; - gUnknown_0203A11C->unk2E8 = 0; - gUnknown_0203A11C->unk2EC = 0; - gUnknown_0203A11C->unk2F0 = 0; - gUnknown_0203A11C->unk2F4 = 0; - gUnknown_0203A11C->unk2F8 = 0; - gUnknown_0203A11C->unk2FC = 0; - gUnknown_0203A11C->unkA = sub_811BC70(); + sUnknown_0203A11C->unk0 = 0; + sUnknown_0203A11C->unk2D8 = NULL; + sUnknown_0203A11C->unk2DC = NULL; + sUnknown_0203A11C->unk2E0 = NULL; + sUnknown_0203A11C->unk2E4 = NULL; + sUnknown_0203A11C->unk2E8 = NULL; + sUnknown_0203A11C->unk2EC = NULL; + sUnknown_0203A11C->unk2F0 = NULL; + sUnknown_0203A11C->unk2F4 = NULL; + sUnknown_0203A11C->unk2F8 = NULL; + sUnknown_0203A11C->unk2FC = NULL; + sUnknown_0203A11C->unkA = FooterHasFourOptions_(); return TRUE; } @@ -3259,23 +3681,23 @@ static void sub_811CF64(void) { ResetPaletteFade(); LoadPalette(gEasyChatMode_Pal, 0, 32); - LoadPalette(gUnknown_08597B14, 1 * 16, 32); - LoadPalette(gUnknown_08597B34, 4 * 16, 32); - LoadPalette(gUnknown_08597C1C, 10 * 16, 8); - LoadPalette(gUnknown_08597C24, 11 * 16, 12); - LoadPalette(gUnknown_08597C24, 15 * 16, 12); - LoadPalette(gUnknown_08597C24, 3 * 16, 12); + LoadPalette(sUnknown_08597B14, 1 * 16, 32); + LoadPalette(sUnknown_08597B34, 4 * 16, 32); + LoadPalette(sUnknown_08597C1C, 10 * 16, 8); + LoadPalette(sUnknown_08597C24, 11 * 16, 12); + LoadPalette(sUnknown_08597C24, 15 * 16, 12); + LoadPalette(sUnknown_08597C24, 3 * 16, 12); } static void sub_811CFCC(void) { int xOffset; - const u8 *titleText = sub_811BA88(); + const u8 *titleText = GetTitleText(); if (!titleText) return; xOffset = GetStringCenterAlignXOffset(1, titleText, 144); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); sub_811D058(0, 1, titleText, xOffset, 1, 0xFF, 0, 2, 3); PutWindowTilemap(0); CopyWindowToVram(0, 3); @@ -3286,7 +3708,7 @@ void sub_811D028(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, vo AddTextPrinterParameterized(windowId, fontId, str, x, y, speed, callback); } -void sub_811D058(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, u8 red, u8 green, u8 blue) +static void sub_811D058(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 speed, u8 red, u8 green, u8 blue) { u8 color[3]; color[0] = red; @@ -3345,7 +3767,7 @@ static void sub_811D104(u8 arg0) break; } - FillWindowPixelBuffer(1, 0x11); + FillWindowPixelBuffer(1, PIXEL_FILL(1)); if (text1) sub_811D028(1, 1, text1, 0, 1, 0xFF, 0); @@ -3357,24 +3779,24 @@ static void sub_811D104(u8 arg0) static void sub_811D214(u8 initialCursorPos) { - CreateYesNoMenu(&gUnknown_08597C84, 1, 14, initialCursorPos); + CreateYesNoMenu(&sEasyChatYesNoWindowTemplate, 1, 14, initialCursorPos); } static void sub_811D230(void) { - u8 var0; + u8 frameId; struct WindowTemplate template; - var0 = sub_811BA68(); + frameId = GetEasyChatScreenFrameId(); template.bg = 3; - template.tilemapLeft = gUnknown_08597C30[var0].unk0_0; - template.tilemapTop = gUnknown_08597C30[var0].unk0_5; - template.width = gUnknown_08597C30[var0].unk1; - template.height = gUnknown_08597C30[var0].unk2; + template.tilemapLeft = sPhraseFrameDimensions[frameId].left; + template.tilemapTop = sPhraseFrameDimensions[frameId].top; + template.width = sPhraseFrameDimensions[frameId].width; + template.height = sPhraseFrameDimensions[frameId].height; template.paletteNum = 11; template.baseBlock = 0x6C; - gUnknown_0203A11C->windowId = AddWindow(&template); - PutWindowTilemap(gUnknown_0203A11C->windowId); + sUnknown_0203A11C->windowId = AddWindow(&template); + PutWindowTilemap(sUnknown_0203A11C->windowId); } static void sub_811D2C8(void) @@ -3383,27 +3805,27 @@ static void sub_811D2C8(void) u16 *ecWord; u8 numColumns, numRows; u8 *str; - int var0; + int frameId; int var1; int i, j, k; - ecWord = sub_811BA94(); - numColumns = sub_811BAAC(); - numRows = sub_811BAA0(); - var0 = sub_811BA68(); + ecWord = GetEasyChatWordBuffer(); + numColumns = GetNumColumns(); + numRows = GetNumRows(); + frameId = GetEasyChatScreenFrameId(); var1 = 0; - if (var0 == 7) + if (frameId == 7) var1 = 1; - FillWindowPixelBuffer(gUnknown_0203A11C->windowId, 0x11); + FillWindowPixelBuffer(sUnknown_0203A11C->windowId, PIXEL_FILL(1)); for (i = 0; i < numRows; i++) { - memcpy(spC, gUnknown_08597C8C, sizeof(gUnknown_08597C8C)); + memcpy(spC, sText_Clear17, sizeof(sText_Clear17)); if (var1) spC[2] = 6; - str = gUnknown_0203A11C->unkB; - gUnknown_0203A11C->unkB[0] = EOS; + str = sUnknown_0203A11C->unkB; + sUnknown_0203A11C->unkB[0] = EOS; str = StringAppend(str, spC); for (j = 0; j < numColumns; j++) { @@ -3432,7 +3854,7 @@ static void sub_811D2C8(void) spC[2] = 3; str = StringAppend(str, spC); - if (var0 == 2 || var0 == 7 || var0 == 8) + if (frameId == 2 || frameId == 7 || frameId == 8) { if (j == 0 && i == 4) break; @@ -3440,41 +3862,41 @@ static void sub_811D2C8(void) } *str = EOS; - sub_811D028(gUnknown_0203A11C->windowId, 1, gUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0); + sub_811D028(sUnknown_0203A11C->windowId, 1, sUnknown_0203A11C->unkB, 0, i * 16 + 1, 0xFF, 0); } - CopyWindowToVram(gUnknown_0203A11C->windowId, 3); + CopyWindowToVram(sUnknown_0203A11C->windowId, 3); } static void sub_811D424(u16 *tilemap) { - u8 var0; + u8 frameId; int right, bottom; int x, y; - var0 = sub_811BA68(); + frameId = GetEasyChatScreenFrameId(); CpuFastFill(0, tilemap, BG_SCREEN_SIZE); - if (var0 == 2 || var0 == 8) + if (frameId == 2 || frameId == 8) { - right = gUnknown_08597C30[var0].unk0_0 + gUnknown_08597C30[var0].unk1; - bottom = gUnknown_08597C30[var0].unk0_5 + gUnknown_08597C30[var0].unk2; - for (y = gUnknown_08597C30[var0].unk0_5; y < bottom; y++) + right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width; + bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height; + for (y = sPhraseFrameDimensions[frameId].top; y < bottom; y++) { - x = gUnknown_08597C30[var0].unk0_0 - 1; + x = sPhraseFrameDimensions[frameId].left - 1; tilemap[y * 32 + x] = 0x1005; x++; for (; x < right; x++) tilemap[y * 32 + x] = 0x1000; - + tilemap[y* 32 + x] = 0x1007; } } else { - y = gUnknown_08597C30[var0].unk0_5 - 1; - x = gUnknown_08597C30[var0].unk0_0 - 1; - right = gUnknown_08597C30[var0].unk0_0 + gUnknown_08597C30[var0].unk1; - bottom = gUnknown_08597C30[var0].unk0_5 + gUnknown_08597C30[var0].unk2; + y = sPhraseFrameDimensions[frameId].top - 1; + x = sPhraseFrameDimensions[frameId].left - 1; + right = sPhraseFrameDimensions[frameId].left + sPhraseFrameDimensions[frameId].width; + bottom = sPhraseFrameDimensions[frameId].top + sPhraseFrameDimensions[frameId].height; tilemap[y * 32 + x] = 0x1001; x++; for (; x < right; x++) @@ -3484,7 +3906,7 @@ static void sub_811D424(u16 *tilemap) y++; for (; y < bottom; y++) { - x = gUnknown_08597C30[var0].unk0_0 - 1; + x = sPhraseFrameDimensions[frameId].left - 1; tilemap[y * 32 + x] = 0x1005; x++; for (; x < right; x++) @@ -3493,7 +3915,7 @@ static void sub_811D424(u16 *tilemap) tilemap[y* 32 + x] = 0x1007; } - x = gUnknown_08597C30[var0].unk0_0 - 1; + x = sPhraseFrameDimensions[frameId].left - 1; tilemap[y * 32 + x] = 0x1009; x++; for (; x < right; x++) @@ -3505,12 +3927,12 @@ static void sub_811D424(u16 *tilemap) static void sub_811D60C(void) { - u8 var0; + u8 frameId; u16 *tilemap; tilemap = GetBgTilemapBuffer(3); - var0 = sub_811BA68(); - switch (gUnknown_08597C30[var0].unk3) + frameId = GetEasyChatScreenFrameId(); + switch (sPhraseFrameDimensions[frameId].footerId) { case 2: tilemap += 0x2A0; @@ -3535,7 +3957,7 @@ static void sub_811D684(void) static void sub_811D698(u32 arg0) { sub_811DD84(); - FillWindowPixelBuffer(2, 0x11); + FillWindowPixelBuffer(2, PIXEL_FILL(1)); switch (arg0) { case 0: @@ -3571,14 +3993,14 @@ static void sub_811D6F4(void) { for (x = 0; x < 2; x++) { - u8 index = sub_811F3B8(i++); - if (index == 22) + u8 groupId = sub_811F3B8(i++); + if (groupId == EC_NUM_GROUPS) { sub_811DDAC(sub_811BBBC(), 0); return; } - sub_811D028(2, 1, sub_811F424(index), x * 84 + 10, y, 0xFF, NULL); + sub_811D028(2, 1, GetEasyChatWordGroupName(groupId), x * 84 + 10, y, 0xFF, NULL); } y += 16; @@ -3589,8 +4011,8 @@ static void sub_811D758(void) { u32 i; - for (i = 0; i < 4; i++) - sub_811D028(2, 1, gUnknown_08597C90[i], 10, 97 + i * 16, 0xFF, NULL); + for (i = 0; i < ARRAY_COUNT(sUnknown_08597C90); i++) + sub_811D028(2, 1, sUnknown_08597C90[i], 10, 97 + i * 16, 0xFF, NULL); } static void sub_811D794(void) @@ -3658,11 +4080,11 @@ static void sub_811D864(u8 arg0, u8 arg1) easyChatWord = sub_811F578(var0++); if (easyChatWord != 0xFFFF) { - CopyEasyChatWordPadded(gUnknown_0203A11C->unkCC, easyChatWord, 0); + CopyEasyChatWordPadded(sUnknown_0203A11C->unkCC, easyChatWord, 0); if (!sub_811BF88(easyChatWord)) - sub_811D028(2, 1, gUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, NULL); + sub_811D028(2, 1, sUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, NULL); else - sub_811D058(2, 1, gUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, 1, 5, 3); + sub_811D058(2, 1, sUnknown_0203A11C->unkCC, (j * 13 + 3) * 8, y, 0xFF, 1, 5, 3); } } @@ -3692,14 +4114,14 @@ static void sub_811D950(u8 arg0, u8 arg1) var1 = 0; } - FillWindowPixelRect(2, 0x11, 0, y, 224, var2); + FillWindowPixelRect(2, PIXEL_FILL(1), 0, y, 224, var2); if (var1) - FillWindowPixelRect(2, 0x11, 0, 0, 224, var1); + FillWindowPixelRect(2, PIXEL_FILL(1), 0, 0, 224, var1); } static void sub_811D9B4(void) { - FillWindowPixelBuffer(2, 0x11); + FillWindowPixelBuffer(2, PIXEL_FILL(1)); CopyWindowToVram(2, 2); } @@ -3708,47 +4130,1419 @@ static void sub_811D9CC(int arg0) switch (arg0) { case 0: - gUnknown_0203A11C->unk6 = 0; - gUnknown_0203A11C->unk7 = 10; + sUnknown_0203A11C->unk6 = 0; + sUnknown_0203A11C->unk7 = 10; break; case 1: - gUnknown_0203A11C->unk6 = 9; - gUnknown_0203A11C->unk7 = 0; + sUnknown_0203A11C->unk6 = 9; + sUnknown_0203A11C->unk7 = 0; break; case 2: - gUnknown_0203A11C->unk6 = 11; - gUnknown_0203A11C->unk7 = 17; + sUnknown_0203A11C->unk6 = 11; + sUnknown_0203A11C->unk7 = 17; break; case 3: - gUnknown_0203A11C->unk6 = 17; - gUnknown_0203A11C->unk7 = 0; + sUnknown_0203A11C->unk6 = 17; + sUnknown_0203A11C->unk7 = 0; break; case 4: - gUnknown_0203A11C->unk6 = 17; - gUnknown_0203A11C->unk7 = 10; + sUnknown_0203A11C->unk6 = 17; + sUnknown_0203A11C->unk7 = 10; break; case 5: - gUnknown_0203A11C->unk6 = 18; - gUnknown_0203A11C->unk7 = 22; + sUnknown_0203A11C->unk6 = 18; + sUnknown_0203A11C->unk7 = 22; break; case 6: - gUnknown_0203A11C->unk6 = 22; - gUnknown_0203A11C->unk7 = 18; + sUnknown_0203A11C->unk6 = 22; + sUnknown_0203A11C->unk7 = 18; break; } - gUnknown_0203A11C->unk8 = gUnknown_0203A11C->unk6 < gUnknown_0203A11C->unk7 ? 1 : -1; + sUnknown_0203A11C->unk8 = sUnknown_0203A11C->unk6 < sUnknown_0203A11C->unk7 ? 1 : -1; } static bool8 sub_811DAA4(void) { u8 var0, var1; - if (gUnknown_0203A11C->unk6 == gUnknown_0203A11C->unk7) + if (sUnknown_0203A11C->unk6 == sUnknown_0203A11C->unk7) return FALSE; - gUnknown_0203A11C->unk6 += gUnknown_0203A11C->unk8; - sub_811DADC(gUnknown_0203A11C->unk6); - var0 = gUnknown_0203A11C->unk6; - var1 = gUnknown_0203A11C->unk7; + sUnknown_0203A11C->unk6 += sUnknown_0203A11C->unk8; + sub_811DADC(sUnknown_0203A11C->unk6); + var0 = sUnknown_0203A11C->unk6; + var1 = sUnknown_0203A11C->unk7; return (var0 ^ var1) > 0; } + +static void sub_811DADC(u8 arg0) +{ + FillBgTilemapBufferRect_Palette0(1, 0, 0, 10, 30, 10); + switch (arg0) + { + case 0: + break; + case 1: + sub_811DC28(11, 14, 3, 2); + break; + case 2: + sub_811DC28(9, 14, 7, 2); + break; + case 3: + sub_811DC28(7, 14, 11, 2); + break; + case 4: + sub_811DC28(5, 14, 15, 2); + break; + case 5: + sub_811DC28(3, 14, 19, 2); + break; + case 6: + sub_811DC28(1, 14, 23, 2); + break; + case 11: + sub_811DC28(1, 10, 24, 10); + break; + case 12: + sub_811DC28(1, 10, 25, 10); + break; + case 13: + sub_811DC28(1, 10, 26, 10); + break; + case 14: + sub_811DC28(1, 10, 27, 10); + break; + case 15: + sub_811DC28(1, 10, 28, 10); + break; + case 16: + sub_811DC28(1, 10, 29, 10); + break; + case 17: + sub_811DC28(0, 10, 30, 10); + break; + case 10: + case 18: + sub_811DC28(1, 10, 23, 10); + break; + case 9: + case 19: + sub_811DC28(1, 11, 23, 8); + break; + case 8: + case 20: + sub_811DC28(1, 12, 23, 6); + break; + case 7: + case 21: + sub_811DC28(1, 13, 23, 4); + break; + case 22: + sub_811DC28(1, 14, 23, 2); + break; + } + + CopyBgTilemapBufferToVram(1); +} + +static void sub_811DC28(int left, int top, int width, int height) +{ + u16 *tilemap; + int right; + int bottom; + int x, y; + + tilemap = sUnknown_0203A11C->unk300; + right = left + width - 1; + bottom = top + height - 1; + x = left; + y = top; + tilemap[y * 32 + x] = 0x4001; + x++; + for (; x < right; x++) + tilemap[y * 32 + x] = 0x4002; + + tilemap[y * 32 + x] = 0x4003; + y++; + for (; y < bottom; y++) + { + tilemap[y * 32 + left] = 0x4005; + x = left + 1; + for (; x < right; x++) + tilemap[y * 32 + x] = 0x4000; + + tilemap[y * 32 + x] = 0x4007; + } + + tilemap[y * 32 + left] = 0x4009; + x = left + 1; + for (; x < right; x++) + tilemap[y * 32 + x] = 0x400A; + + tilemap[y * 32 + x] = 0x400B; + sub_811DE5C((left + 1) * 8, (top + 1) * 8, (width - 2) * 8, (height - 2) * 8); +} + +static void sub_811DD84(void) +{ + ChangeBgY(2, 0x800, 0); + sUnknown_0203A11C->unk2CE = 0; +} + +static void sub_811DDAC(s16 arg0, u8 arg1) +{ + int bgY; + s16 var0; + + bgY = GetBgY(2); + sUnknown_0203A11C->unk2CE += arg0; + var0 = arg0 * 16; + bgY += var0 << 8; + if (arg1) + { + sUnknown_0203A11C->unk2D0 = bgY; + sUnknown_0203A11C->unk2D4 = arg1 * 256; + if (var0 < 0) + sUnknown_0203A11C->unk2D4 = -sUnknown_0203A11C->unk2D4; + } + else + { + ChangeBgY(2, bgY, 0); + } +} + +static bool8 sub_811DE10(void) +{ + int bgY; + + bgY = GetBgY(2); + if (bgY == sUnknown_0203A11C->unk2D0) + { + return FALSE; + } + else + { + ChangeBgY(2, sUnknown_0203A11C->unk2D4, 1); + return TRUE; + } +} + +static int sub_811DE48(void) +{ + return sUnknown_0203A11C->unk2CE; +} + +static void sub_811DE5C(u8 left, u8 top, u8 width, u8 height) +{ + u16 horizontalDimensions = WIN_RANGE(left, left + width); + u16 verticalDimensions = WIN_RANGE(top, top + height); + SetGpuReg(REG_OFFSET_WIN0H, horizontalDimensions); + SetGpuReg(REG_OFFSET_WIN0V, verticalDimensions); +} + +static void sub_811DE90(void) +{ + u32 i; + + LoadSpriteSheets(sEasyChatSpriteSheets); + LoadSpritePalettes(sEasyChatSpritePalettes); + for (i = 0; i < ARRAY_COUNT(sUnknown_08597CE8); i++) + LoadCompressedSpriteSheet(&sUnknown_08597CE8[i]); +} + +static void sub_811DEC4(void) +{ + u8 frameId = GetEasyChatScreenFrameId(); + int x = sPhraseFrameDimensions[frameId].left * 8 + 13; + int y = sPhraseFrameDimensions[frameId].top * 8 + 8; + u8 spriteId = CreateSprite(&sUnknown_08597D18, x, y, 2); + sUnknown_0203A11C->unk2D8 = &gSprites[spriteId]; + gSprites[spriteId].data[1] = 1; +} + +static void sub_811DF28(struct Sprite *sprite) +{ + if (sprite->data[1]) + { + if (++sprite->data[0] > 2) + { + sprite->data[0] = 0; + if (++sprite->pos2.x > 0) + sprite->pos2.x = -6; + } + } +} + +static void sub_811DF60(u8 x, u8 y) +{ + sUnknown_0203A11C->unk2D8->pos1.x = x; + sUnknown_0203A11C->unk2D8->pos1.y = y; + sUnknown_0203A11C->unk2D8->pos2.x = 0; + sUnknown_0203A11C->unk2D8->data[0] = 0; +} + +static void sub_811DF90(void) +{ + sUnknown_0203A11C->unk2D8->data[0] = 0; + sUnknown_0203A11C->unk2D8->data[1] = 0; + sUnknown_0203A11C->unk2D8->pos2.x = 0; +} + +static void sub_811DFB0(void) +{ + sUnknown_0203A11C->unk2D8->data[1] = 1; +} + +static void sub_811DFC8(void) +{ + u8 spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3); + sUnknown_0203A11C->unk2DC = &gSprites[spriteId]; + sUnknown_0203A11C->unk2DC->pos2.x = 32; + + spriteId = CreateSprite(&sUnknown_08597D68, 0, 0, 3); + sUnknown_0203A11C->unk2E0 = &gSprites[spriteId]; + sUnknown_0203A11C->unk2E0->pos2.x = -32; + + sUnknown_0203A11C->unk2DC->hFlip = 1; + sub_811E088(); +} + +static void sub_811E050(void) +{ + DestroySprite(sUnknown_0203A11C->unk2DC); + sUnknown_0203A11C->unk2DC = NULL; + DestroySprite(sUnknown_0203A11C->unk2E0); + sUnknown_0203A11C->unk2E0 = NULL; +} + +static void sub_811E088(void) +{ + u8 var0; + u8 var1; + + if (sUnknown_0203A11C->unk2DC && sUnknown_0203A11C->unk2E0) + { + sub_811BB9C(&var0, &var1); + if (!sub_811BBB0()) + sub_811E0EC(var0, var1); + else + sub_811E1A4(var0, var1); + } +} + +static void sub_811E0EC(s8 arg0, s8 arg1) +{ + if (arg0 != -1) + { + StartSpriteAnim(sUnknown_0203A11C->unk2DC, 0); + sUnknown_0203A11C->unk2DC->pos1.x = arg0 * 84 + 58; + sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 96; + + StartSpriteAnim(sUnknown_0203A11C->unk2E0, 0); + sUnknown_0203A11C->unk2E0->pos1.x = arg0 * 84 + 58; + sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 96; + } + else + { + StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1); + sUnknown_0203A11C->unk2DC->pos1.x = 216; + sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112; + + StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1); + sUnknown_0203A11C->unk2E0->pos1.x = 216; + sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112; + } +} + +static void sub_811E1A4(s8 arg0, s8 arg1) +{ + int anim; + int x, y; + + if (arg0 != -1) + { + y = arg1 * 16 + 96; + x = 32; + if (arg0 == 6 && arg1 == 0) + { + x = 158; + anim = 2; + } + else + { + x += sUnknown_08597D08[arg0 < ARRAY_COUNT(sUnknown_08597D08) ? arg0 : 0]; + anim = 3; + } + + StartSpriteAnim(sUnknown_0203A11C->unk2DC, anim); + sUnknown_0203A11C->unk2DC->pos1.x = x; + sUnknown_0203A11C->unk2DC->pos1.y = y; + + StartSpriteAnim(sUnknown_0203A11C->unk2E0, anim); + sUnknown_0203A11C->unk2E0->pos1.x = x; + sUnknown_0203A11C->unk2E0->pos1.y = y; + } + else + { + StartSpriteAnim(sUnknown_0203A11C->unk2DC, 1); + sUnknown_0203A11C->unk2DC->pos1.x = 216; + sUnknown_0203A11C->unk2DC->pos1.y = arg1 * 16 + 112; + + StartSpriteAnim(sUnknown_0203A11C->unk2E0, 1); + sUnknown_0203A11C->unk2E0->pos1.x = 216; + sUnknown_0203A11C->unk2E0->pos1.y = arg1 * 16 + 112; + } +} + +static void sub_811E288(void) +{ + u8 spriteId = CreateSprite(&sUnknown_08597D18, 0, 0, 4); + sUnknown_0203A11C->unk2E4 = &gSprites[spriteId]; + sUnknown_0203A11C->unk2E4->callback = sub_811E2DC; + sUnknown_0203A11C->unk2E4->oam.priority = 2; + sub_811E30C(); +} + +static void sub_811E2DC(struct Sprite *sprite) +{ + if (++sprite->data[0] > 2) + { + sprite->data[0] = 0; + if (++sprite->pos2.x > 0) + sprite->pos2.x = -6; + } +} + +static void sub_811E30C(void) +{ + s8 var0, var1, x, y; + + sub_811BBC8(&var0, &var1); + x = var0 * 13; + x = x * 8 + 28; + y = var1 * 16 + 96; + sub_811E34C(x, y); +} + +static void sub_811E34C(u8 x, u8 y) +{ + if (sUnknown_0203A11C->unk2E4) + { + sUnknown_0203A11C->unk2E4->pos1.x = x; + sUnknown_0203A11C->unk2E4->pos1.y = y; + sUnknown_0203A11C->unk2E4->pos2.x = 0; + sUnknown_0203A11C->unk2E4->data[0] = 0; + } +} + +static void sub_811E380(void) +{ + if (sUnknown_0203A11C->unk2E4) + { + DestroySprite(sUnknown_0203A11C->unk2E4); + sUnknown_0203A11C->unk2E4 = NULL; + } +} + +static void sub_811E3AC(void) +{ + u8 spriteId = CreateSprite(&sUnknown_08597DF0, 208, 128, 6); + sUnknown_0203A11C->unk2E8 = &gSprites[spriteId]; + sUnknown_0203A11C->unk2E8->pos2.x = -64; + + spriteId = CreateSprite(&sUnknown_08597DD0, 208, 80, 5); + sUnknown_0203A11C->unk2EC = &gSprites[spriteId]; + sUnknown_0203A11C->unk9 = 0; +} + +static bool8 sub_811E418(void) +{ + switch (sUnknown_0203A11C->unk9) + { + default: + return FALSE; + case 0: + sUnknown_0203A11C->unk2E8->pos2.x += 8; + if (sUnknown_0203A11C->unk2E8->pos2.x >= 0) + { + sUnknown_0203A11C->unk2E8->pos2.x = 0; + if (!sub_811BBB0()) + StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1); + else + StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2); + + sUnknown_0203A11C->unk9++; + } + break; + case 1: + if (sUnknown_0203A11C->unk2EC->animEnded) + { + sUnknown_0203A11C->unk9 = 2; + return FALSE; + } + } + + return TRUE; +} + +static void sub_811E4AC(void) +{ + sUnknown_0203A11C->unk9 = 0; + StartSpriteAnim(sUnknown_0203A11C->unk2EC, 3); +} + +static bool8 sub_811E4D0(void) +{ + switch (sUnknown_0203A11C->unk9) + { + default: + return FALSE; + case 0: + if (sUnknown_0203A11C->unk2EC->animEnded) + sUnknown_0203A11C->unk9 = 1; + break; + case 1: + sUnknown_0203A11C->unk2E8->pos2.x -= 8; + if (sUnknown_0203A11C->unk2E8->pos2.x <= -64) + { + DestroySprite(sUnknown_0203A11C->unk2EC); + DestroySprite(sUnknown_0203A11C->unk2E8); + sUnknown_0203A11C->unk2EC = NULL; + sUnknown_0203A11C->unk2E8 = NULL; + sUnknown_0203A11C->unk9++; + return FALSE; + } + } + + return TRUE; +} + +static void sub_811E55C(void) +{ + StartSpriteAnim(sUnknown_0203A11C->unk2EC, 4); +} + +static void sub_811E578(void) +{ + if (!sub_811BBB0()) + StartSpriteAnim(sUnknown_0203A11C->unk2EC, 1); + else + StartSpriteAnim(sUnknown_0203A11C->unk2EC, 2); +} + +static bool8 sub_811E5B8(void) +{ + return !sUnknown_0203A11C->unk2EC->animEnded; +} + +static void sub_811E5D4(void) +{ + u8 spriteId = CreateSprite(&sUnknown_08597E48, 96, 80, 0); + if (spriteId != MAX_SPRITES) + sUnknown_0203A11C->unk2F0 = &gSprites[spriteId]; + + spriteId = CreateSprite(&sUnknown_08597E48, 96, 156, 0); + if (spriteId != MAX_SPRITES) + { + sUnknown_0203A11C->unk2F4 = &gSprites[spriteId]; + sUnknown_0203A11C->unk2F4->vFlip = 1; + } + + sub_811E6B0(); +} + +static void sub_811E64C(void) +{ + sUnknown_0203A11C->unk2F0->invisible = !sub_811BBF8(); + sUnknown_0203A11C->unk2F4->invisible = !sub_811BC2C(); +} + +static void sub_811E6B0(void) +{ + sUnknown_0203A11C->unk2F0->invisible = 1; + sUnknown_0203A11C->unk2F4->invisible = 1; +} + +static void sub_811E6E0(int arg0) +{ + if (!arg0) + { + sUnknown_0203A11C->unk2F0->pos1.x = 96; + sUnknown_0203A11C->unk2F4->pos1.x = 96; + } + else + { + sUnknown_0203A11C->unk2F0->pos1.x = 120; + sUnknown_0203A11C->unk2F4->pos1.x = 120; + } +} + +static void sub_811E720(void) +{ + u8 spriteId = CreateSprite(&sUnknown_08597E30, 220, 84, 1); + if (spriteId != MAX_SPRITES) + sUnknown_0203A11C->unk2F8 = &gSprites[spriteId]; + + spriteId = CreateSprite(&sUnknown_08597E30, 220, 156, 1); + if (spriteId != MAX_SPRITES) + { + sUnknown_0203A11C->unk2FC = &gSprites[spriteId]; + StartSpriteAnim(sUnknown_0203A11C->unk2FC, 1); + } + + sub_811E7F8(); +} + +static void sub_811E794(void) +{ + sUnknown_0203A11C->unk2F8->invisible = !sub_811BBF8(); + sUnknown_0203A11C->unk2FC->invisible = !sub_811BC2C(); +} + +static void sub_811E7F8(void) +{ + sUnknown_0203A11C->unk2F8->invisible = 1; + sUnknown_0203A11C->unk2FC->invisible = 1; +} + +static void sub_811E828(void) +{ + int graphicsId; + u8 spriteId; + + switch (GetDisplayedPersonType()) + { + case EASY_CHAT_PERSON_REPORTER_MALE: + graphicsId = EVENT_OBJ_GFX_REPORTER_M; + break; + case EASY_CHAT_PERSON_REPORTER_FEMALE: + graphicsId = EVENT_OBJ_GFX_REPORTER_F; + break; + case EASY_CHAT_PERSON_BOY: + graphicsId = EVENT_OBJ_GFX_BOY_1; + break; + default: + return; + } + + if (GetEasyChatScreenFrameId() != 4) + return; + + spriteId = AddPseudoEventObject(graphicsId, SpriteCallbackDummy, 76, 40, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 0; + StartSpriteAnim(&gSprites[spriteId], 2); + } + + spriteId = AddPseudoEventObject( + gSaveBlock2Ptr->playerGender == MALE ? EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL : EVENT_OBJ_GFX_RIVAL_MAY_NORMAL, + SpriteCallbackDummy, + 52, + 40, + 0); + + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.priority = 0; + StartSpriteAnim(&gSprites[spriteId], 3); + } +} + +int GetFooterIndex(void) +{ + u8 frameId = GetEasyChatScreenFrameId(); + switch (sPhraseFrameDimensions[frameId].footerId) + { + case 1: + return 1; + case 2: + return 2; + case 0: + return 0; + default: + return 3; + } +} + +static int GetFooterOptionXOffset(int option) +{ + int footerIndex = GetFooterIndex(); + if (footerIndex < 3) + return sFooterOptionXOffsets[footerIndex][option] + 4; + else + return 0; +} + +static void sub_811E948(void) +{ + int i; + u16 windowId; + struct WindowTemplate template; + int footerId = GetFooterIndex(); + if (footerId == 3) + return; + + template.bg = 3; + template.tilemapLeft = 1; + template.tilemapTop = 11; + template.width = 28; + template.height = 2; + template.paletteNum = 11; + template.baseBlock = 0x34; + windowId = AddWindow(&template); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); + for (i = 0; i < 4; i++) + { + const u8 *str = sFooterTextOptions[footerId][i]; + if (str) + { + int x = sFooterOptionXOffsets[footerId][i]; + sub_811D028(windowId, 1, str, x, 1, 0, NULL); + } + } + + PutWindowTilemap(windowId); +} + +static bool8 sub_811EA28(u8 groupId) +{ + switch (groupId) + { + case EC_GROUP_TRENDY_SAYING: + return FlagGet(FLAG_SYS_HIPSTER_MEET); + case EC_GROUP_EVENTS: + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + return FlagGet(FLAG_SYS_GAME_CLEAR); + case EC_GROUP_POKEMON_2: + return sub_811F0F8(); + default: + return TRUE; + } +} + +u16 EasyChat_GetNumWordsInGroup(u8 groupId) +{ + if (groupId == EC_GROUP_POKEMON) + return GetNationalPokedexCount(FLAG_GET_SEEN); + + if (sub_811EA28(groupId)) + return gEasyChatGroups[groupId].numEnabledWords; + + return 0; +} + +bool8 sub_811EAA4(u16 easyChatWord) +{ + u16 i; + u8 groupId; + u32 index; + u16 numWords; + const u16 *list; + if (easyChatWord == 0xFFFF) + return FALSE; + + groupId = EC_GROUP(easyChatWord); + index = EC_INDEX(easyChatWord); + if (groupId >= EC_NUM_GROUPS) + return TRUE; + + numWords = gEasyChatGroups[groupId].numWords; + switch (groupId) + { + case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_2: + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + list = gEasyChatGroups[groupId].wordData.valueList; + for (i = 0; i < numWords; i++) + { + if (index == list[i]) + return FALSE; + } + return TRUE; + default: + if (index >= numWords) + return TRUE; + else + return FALSE; + } +} + +bool8 ECWord_CheckIfOutsideOfValidRange(u16 easyChatWord) +{ + int numWordsInGroup; + u8 groupId = EC_GROUP(easyChatWord); + u32 index = EC_INDEX(easyChatWord); + if (groupId >= EC_NUM_GROUPS) + return TRUE; + + switch (groupId) + { + case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_2: + numWordsInGroup = gUnknown_085F5490; + break; + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + numWordsInGroup = gUnknown_085FA1D4; + break; + default: + numWordsInGroup = gEasyChatGroups[groupId].numWords; + break; + } + + if (numWordsInGroup <= index) + return TRUE; + else + return FALSE; +} + +const u8 *GetEasyChatWord(u8 groupId, u16 index) +{ + switch (groupId) + { + case EC_GROUP_POKEMON: + case EC_GROUP_POKEMON_2: + return gSpeciesNames[index]; + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + return gMoveNames[index]; + default: + return gEasyChatGroups[groupId].wordData.words[index].text; + } +} + +u8 *CopyEasyChatWord(u8 *dest, u16 easyChatWord) +{ + u8 *resultStr; + if (sub_811EAA4(easyChatWord)) + { + resultStr = StringCopy(dest, gText_ThreeQuestionMarks); + } + else if (easyChatWord != 0xFFFF) + { + u16 index = EC_INDEX(easyChatWord); + u8 groupId = EC_GROUP(easyChatWord); + resultStr = StringCopy(dest, GetEasyChatWord(groupId, index)); + } + else + { + *dest = EOS; + resultStr = dest; + } + + return resultStr; +} + +u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows) +{ + u16 i, j; + u16 numColumns = columns - 1; + + for (i = 0; i < rows; i++) + { + for (j = 0; j < numColumns; j++) + { + dest = CopyEasyChatWord(dest, *src); + if (*src != 0xFFFF) + { + *dest = CHAR_SPACE; + dest++; + } + + src++; + } + + dest = CopyEasyChatWord(dest, *(src++)); + *dest = CHAR_NEWLINE; + dest++; + } + + dest--; + *dest = EOS; + return dest; +} + +u8 *unref_sub_811EC98(u8 *dest, const u16 *src, u16 columns, u16 rows) +{ + u16 i, j, k; + u16 numColumns; + int var0, var1; + + numColumns = columns; + var1 = 0; + columns--; + for (i = 0; i < rows; i++) + { + const u16 *var2 = src; + var0 = 0; + for (j = 0; j < numColumns; j++) + { + if (var2[j] != 0xFFFF) + var0 = 1; + } + + if (!var0) + { + src += numColumns; + continue; + } + + for (k = 0; k < columns; k++) + { + dest = CopyEasyChatWord(dest, *src); + if (*src != 0xFFFF) + { + *dest = CHAR_SPACE; + dest++; + } + + src++; + } + + dest = CopyEasyChatWord(dest, *(src++)); + if (var1 == 0) + *dest = CHAR_NEWLINE; + else + *dest = CHAR_PROMPT_SCROLL; + + dest++; + var1++; + } + + dest--; + *dest = EOS; + return dest; +} + +static u16 GetEasyChatWordStringLength(u16 easyChatWord) +{ + if (easyChatWord == 0xFFFF) + return 0; + + if (sub_811EAA4(easyChatWord)) + { + return StringLength(gText_ThreeQuestionMarks); + } + else + { + u16 index = EC_INDEX(easyChatWord); + u8 groupId = EC_GROUP(easyChatWord); + return StringLength(GetEasyChatWord(groupId, index)); + } +} + +bool8 sub_811EDC4(const u16 *easyChatWords, u8 arg1, u8 arg2, u16 arg3) +{ + u8 i, j; + + for (i = 0; i < arg2; i++) + { + u16 totalLength = arg1 - 1; + for (j = 0; j < arg1; j++) + totalLength += GetEasyChatWordStringLength(*(easyChatWords++)); + + if (totalLength > arg3) + return TRUE; + } + + return FALSE; +} + +u16 sub_811EE38(u16 groupId) +{ + u16 index = Random() % gEasyChatGroups[groupId].numWords; + if (groupId == EC_GROUP_POKEMON + || groupId == EC_GROUP_POKEMON_2 + || groupId == EC_GROUP_MOVE_1 + || groupId == EC_GROUP_MOVE_2) + { + index = gEasyChatGroups[groupId].wordData.valueList[index]; + } + + return EC_WORD(groupId, index); +} + +u16 sub_811EE90(u16 groupId) +{ + if (!sub_811EA28(groupId)) + return 0xFFFF; + + if (groupId == EC_GROUP_POKEMON) + return sub_811F108(); + + return sub_811EE38(groupId); +} + +void sub_811EECC(void) +{ + u16 *easyChatWords; + int columns, rows; + switch (gSpecialVar_0x8004) + { + case 0: + easyChatWords = gSaveBlock1Ptr->easyChatProfile; + columns = 2; + rows = 2; + break; + case 1: + easyChatWords = gSaveBlock1Ptr->easyChatBattleStart; + if (sub_811EDC4(gSaveBlock1Ptr->easyChatBattleStart, 3, 2, 18)) + { + columns = 2; + rows = 3; + } + else + { + columns = 3; + rows = 2; + } + break; + case 2: + easyChatWords = gSaveBlock1Ptr->easyChatBattleWon; + columns = 3; + rows = 2; + break; + case 3: + easyChatWords = gSaveBlock1Ptr->easyChatBattleLost; + columns = 3; + rows = 2; + break; + default: + return; + } + + ConvertEasyChatWordsToString(gStringVar4, easyChatWords, columns, rows); + ShowFieldAutoScrollMessage(gStringVar4); +} + +void sub_811EF6C(void) +{ + int groupId = Random() & 1 ? EC_GROUP_HOBBIES : EC_GROUP_LIFESTYLE; + u16 easyChatWord = sub_811EE90(groupId); + CopyEasyChatWord(gStringVar2, easyChatWord); +} + +static bool8 sub_811EF98(u8 additionalPhraseId) +{ + int byteOffset = additionalPhraseId / 8; + int shift = additionalPhraseId % 8; + return (gSaveBlock1Ptr->additionalPhrases[byteOffset] >> shift) & 1; +} + +void sub_811EFC0(u8 additionalPhraseId) +{ + if (additionalPhraseId < 33) + { + int byteOffset = additionalPhraseId / 8; + int shift = additionalPhraseId % 8; + gSaveBlock1Ptr->additionalPhrases[byteOffset] |= 1 << shift; + } +} + +u8 sub_811EFF0(void) +{ + u8 i; + u8 numAdditionalPhrasesUnlocked; + + for (i = 0, numAdditionalPhrasesUnlocked = 0; i < 33; i++) + { + if (sub_811EF98(i)) + numAdditionalPhrasesUnlocked++; + } + + return numAdditionalPhrasesUnlocked; +} + +u16 sub_811F01C(void) +{ + u16 i; + u16 additionalPhraseId; + u8 numAdditionalPhrasesUnlocked = sub_811EFF0(); + if (numAdditionalPhrasesUnlocked == 33) + return 0xFFFF; + + additionalPhraseId = Random() % (33 - numAdditionalPhrasesUnlocked); + for (i = 0; i < 33; i++) + { + if (!sub_811EF98(i)) + { + if (additionalPhraseId) + { + additionalPhraseId--; + } + else + { + sub_811EFC0(i); + return EC_WORD(EC_GROUP_TRENDY_SAYING, i); + } + } + } + + return 0xFFFF; +} + +u16 sub_811F090(void) +{ + u16 i; + u16 additionalPhraseId = sub_811EFF0(); + if (additionalPhraseId == 0) + return 0xFFFF; + + additionalPhraseId = Random() % additionalPhraseId; + for (i = 0; i < 33; i++) + { + if (sub_811EF98(i)) + { + if (additionalPhraseId) + additionalPhraseId--; + else + return EC_WORD(EC_GROUP_TRENDY_SAYING, i); + } + } + + return 0xFFFF; +} + +static bool8 sub_811F0F8(void) +{ + return IsNationalPokedexEnabled(); +} + +static u16 sub_811F108(void) +{ + u16 i; + u16 numWords; + const u16 *species; + u16 index = EasyChat_GetNumWordsInGroup(EC_GROUP_POKEMON); + if (index == 0) + return 0xFFFF; + + index = Random() % index; + species = gEasyChatGroups[EC_GROUP_POKEMON].wordData.valueList; + numWords = gEasyChatGroups[EC_GROUP_POKEMON].numWords; + for (i = 0; i < numWords; i++) + { + u16 dexNum = SpeciesToNationalPokedexNum(*species); + if (GetSetPokedexFlag(dexNum, FLAG_GET_SEEN)) + { + if (index) + index--; + else + return EC_WORD(EC_GROUP_POKEMON, *species); + } + + species++; + } + + return 0xFFFF; +} + +void InitEasyChatPhrases(void) +{ + u16 i, j; + + for (i = 0; i < 4; i++) + gSaveBlock1Ptr->easyChatProfile[i] = sDefaultProfileWords[i]; + + for (i = 0; i < 6; i++) + gSaveBlock1Ptr->easyChatBattleStart[i] = sDefaultBattleStartWords[i]; + + for (i = 0; i < 6; i++) + gSaveBlock1Ptr->easyChatBattleWon[i] = sUnknown_0859E640[i]; + + for (i = 0; i < 6; i++) + gSaveBlock1Ptr->easyChatBattleLost[i] = sUnknown_0859E64C[i]; + + for (i = 0; i < MAIL_COUNT; i++) + { + for (j = 0; j < MAIL_WORDS_COUNT; j++) + gSaveBlock1Ptr->mail[i].words[j] = 0xFFFF; + } + + // BUG: This is supposed to clear 64 bits, but this loop is clearing 64 bytes. + // However, this bug has no resulting effect on gameplay because only the + // Mauville old man data is corrupted, which is initialized directly after + // this function is called when starting a new game. + for (i = 0; i < 64; i++) + gSaveBlock1Ptr->additionalPhrases[i] = 0; +} + +static bool8 sub_811F28C(void) +{ + sUnknown_0203A120 = Alloc(sizeof(*sUnknown_0203A120)); + if (!sUnknown_0203A120) + return FALSE; + + sub_811F2D4(); + sub_811F46C(); + return TRUE; +} + +static void sub_811F2B8(void) +{ + if (sUnknown_0203A120) + FREE_AND_SET_NULL(sUnknown_0203A120); +} + +static void sub_811F2D4(void) +{ + int i; + + sUnknown_0203A120->unk0 = 0; + if (GetNationalPokedexCount(FLAG_GET_SEEN)) + sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON; + + for (i = EC_GROUP_TRAINER; i <= EC_GROUP_ADJECTIVES; i++) + sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = i; + + if (FlagGet(FLAG_SYS_GAME_CLEAR)) + { + sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_EVENTS; + sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_1; + sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_MOVE_2; + } + + if (FlagGet(FLAG_SYS_HIPSTER_MEET)) + sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_TRENDY_SAYING; + + if (IsNationalPokedexEnabled()) + sUnknown_0203A120->unk2[sUnknown_0203A120->unk0++] = EC_GROUP_POKEMON_2; +} + +static u8 sub_811F3AC(void) +{ + return sUnknown_0203A120->unk0; +} + +static u8 sub_811F3B8(u8 index) +{ + if (index >= sUnknown_0203A120->unk0) + return EC_NUM_GROUPS; + else + return sUnknown_0203A120->unk2[index]; +} + +u8 *unref_sub_811F3E0(u8 *dest, u8 groupId, u16 totalChars) +{ + u16 i; + u8 *str = StringCopy(dest, gEasyChatGroupNamePointers[groupId]); + for (i = str - dest; i < totalChars; i++) + { + *str = CHAR_SPACE; + str++; + } + + *str = EOS; + return str; +} + +static const u8 *GetEasyChatWordGroupName(u8 groupId) +{ + return gEasyChatGroupNamePointers[groupId]; +} + +static u8 *CopyEasyChatWordPadded(u8 *dest, u16 easyChatWord, u16 totalChars) +{ + u16 i; + u8 *str = CopyEasyChatWord(dest, easyChatWord); + for (i = str - dest; i < totalChars; i++) + { + *str = CHAR_SPACE; + str++; + } + + *str = EOS; + return str; +} + +static void sub_811F46C(void) +{ + int i, j, k; + int numWords; + const u16 *words; + u16 numToProcess; + int index; + + for (i = 0; i < 27; i++) + { + numWords = gEasyChatWordsByLetterPointers[i].numWords; + words = gEasyChatWordsByLetterPointers[i].words; + sUnknown_0203A120->unk2E[i] = 0; + index = 0; + for (j = 0; j < numWords; j++) + { + if (*words == 0xFFFF) + { + words++; + numToProcess = *words; + words++; + j += 1 + numToProcess; + } + else + { + numToProcess = 1; + } + + for (k = 0; k < numToProcess; k++) + { + if (sub_811F860(words[k])) + { + sUnknown_0203A120->unk64[i][index++] = words[k]; + sUnknown_0203A120->unk2E[i]++; + break; + } + } + + words += numToProcess; + } + } +} + +static void sub_811F548(int arg0, u16 groupId) +{ + if (!arg0) + sUnknown_0203A120->unk3BA0 = sub_811F5C4(groupId); + else + sUnknown_0203A120->unk3BA0 = sub_811F6B8(groupId); +} + +static u16 sub_811F578(u16 arg0) +{ + if (arg0 >= sUnknown_0203A120->unk3BA0) + return 0xFFFF; + else + return sUnknown_0203A120->unk3984[arg0]; +} + +static u16 sub_811F5B0(void) +{ + return sUnknown_0203A120->unk3BA0; +} + +static u16 sub_811F5C4(u16 groupId) +{ + u32 i; + int totalWords; + const u16 *list; + const struct EasyChatWordInfo *wordInfo; + u16 numWords = gEasyChatGroups[groupId].numWords; + + if (groupId == EC_GROUP_POKEMON || groupId == EC_GROUP_POKEMON_2 + || groupId == EC_GROUP_MOVE_1 || groupId == EC_GROUP_MOVE_2) + { + list = gEasyChatGroups[groupId].wordData.valueList; + for (i = 0, totalWords = 0; i < numWords; i++) + { + if (sub_811F764(list[i], groupId)) + sUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, list[i]); + } + + return totalWords; + } + else + { + wordInfo = gEasyChatGroups[groupId].wordData.words; + for (i = 0, totalWords = 0; i < numWords; i++) + { + u16 alphabeticalOrder = wordInfo[i].alphabeticalOrder; + if (sub_811F764(alphabeticalOrder, groupId)) + sUnknown_0203A120->unk3984[totalWords++] = EC_WORD(groupId, alphabeticalOrder); + } + + return totalWords; + } +} + +static u16 sub_811F6B8(u16 alphabeticalGroup) +{ + u16 i; + u16 totalWords; + + for (i = 0, totalWords = 0; i < sUnknown_0203A120->unk2E[alphabeticalGroup]; i++) + sUnknown_0203A120->unk3984[totalWords++] = sUnknown_0203A120->unk64[alphabeticalGroup][i]; + + return totalWords; +} + +static bool8 sub_811F72C(u8 arg0) +{ + int i; + for (i = 0; i < sUnknown_0203A120->unk0; i++) + { + if (sUnknown_0203A120->unk2[i] == arg0) + return TRUE; + } + + return FALSE; +} + +static bool8 sub_811F764(u16 wordIndex, u8 groupId) +{ + switch (groupId) + { + case EC_GROUP_POKEMON: + return GetSetPokedexFlag(SpeciesToNationalPokedexNum(wordIndex), FLAG_GET_SEEN); + case EC_GROUP_POKEMON_2: + if (sub_811F838(wordIndex)) + GetSetPokedexFlag(SpeciesToNationalPokedexNum(wordIndex), FLAG_GET_SEEN); + return TRUE; + case EC_GROUP_MOVE_1: + case EC_GROUP_MOVE_2: + return TRUE; + case EC_GROUP_TRENDY_SAYING: + return sub_811EF98(wordIndex); + default: + return gEasyChatGroups[groupId].wordData.words[wordIndex].enabled; + } +} + +static int sub_811F838(u16 species) +{ + u32 i; + for (i = 0; i < ARRAY_COUNT(sUnknown_0859E658); i++) + { + if (sUnknown_0859E658[i] == species) + return TRUE; + } + + return FALSE; +} + +static u8 sub_811F860(u16 easyChatWord) +{ + u8 groupId = EC_GROUP(easyChatWord); + u32 index = EC_INDEX(easyChatWord); + if (!sub_811F72C(groupId)) + return FALSE; + else + return sub_811F764(index, groupId); +} + +void InitializeEasyChatWordArray(u16 *words, u16 length) +{ + u16 i; + for (i = length - 1; i != 0xFFFF; i--) + *(words++) = 0xFFFF; +} + +void sub_811F8BC(void) +{ + int i; + u16 *words = GetSaveBlock1Field3564(); + for (i = 0; i < 4; i++) + words[i] = 0xFFFF; +} + +bool32 sub_811F8D8(int easyChatWord) +{ + int groupId = EC_GROUP(easyChatWord); + int mask = 0x7F; + int index = EC_INDEX(easyChatWord); + if (!sub_811EA28(groupId & mask)) + return FALSE; + else + return sub_811F764(index, groupId & mask); +} diff --git a/src/egg_hatch.c b/src/egg_hatch.c index e1d94889a..a9b6001ec 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -574,7 +574,7 @@ static void Task_EggHatchPlayBGM(u8 taskID) if (gTasks[taskID].data[0] == 0) { StopMapMusic(); - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); } if (gTasks[taskID].data[0] == 1) PlayBGM(MUS_ME_SHINKA); @@ -606,7 +606,7 @@ static void CB2_EggHatch_1(void) case 1: if (!gPaletteFade.active) { - FillWindowPixelBuffer(sEggHatchData->windowId, 0); + FillWindowPixelBuffer(sEggHatchData->windowId, PIXEL_FILL(0)); sEggHatchData->CB2_PalCounter = 0; sEggHatchData->CB2_state++; } @@ -857,7 +857,7 @@ static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 static void EggHatchPrintMessage(u8 windowId, u8* string, u8 x, u8 y, u8 speed) { - FillWindowPixelBuffer(windowId, 0xFF); + FillWindowPixelBuffer(windowId, PIXEL_FILL(15)); sEggHatchData->textColor[0] = 0; sEggHatchData->textColor[1] = 5; sEggHatchData->textColor[2] = 6; diff --git a/src/electric.c b/src/electric.c index 142a9ca09..5e7729842 100644 --- a/src/electric.c +++ b/src/electric.c @@ -5,9 +5,6 @@ #include "constants/songs.h" #include "sound.h" -extern void sub_810E2C8(struct Sprite *); -extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *); - static void sub_810A1A8(struct Sprite *); static void sub_810A1F8(struct Sprite *); static void sub_810A214(struct Sprite *); diff --git a/src/event_data.c b/src/event_data.c index e75c37773..50628f984 100644 --- a/src/event_data.c +++ b/src/event_data.c @@ -23,8 +23,8 @@ EWRAM_DATA u16 gSpecialVar_LastTalked = 0; EWRAM_DATA u16 gSpecialVar_Facing = 0; EWRAM_DATA u16 gSpecialVar_MonBoxId = 0; EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0; -EWRAM_DATA u16 gSpecialVar_0x8014 = 0; -EWRAM_DATA static u8 gUnknown_020375FC[16] = {0}; +EWRAM_DATA u16 gSpecialVar_Unused_0x8014 = 0; +EWRAM_DATA static u8 gSpecialFlags[16] = {0}; extern u16 *const gSpecialVars[]; @@ -32,7 +32,7 @@ void InitEventData(void) { memset(gSaveBlock1Ptr->flags, 0, sizeof(gSaveBlock1Ptr->flags)); memset(gSaveBlock1Ptr->vars, 0, sizeof(gSaveBlock1Ptr->vars)); - memset(gUnknown_020375FC, 0, sizeof(gUnknown_020375FC)); + memset(gSpecialFlags, 0, sizeof(gSpecialFlags)); } void ClearTempFieldEventData(void) @@ -131,13 +131,13 @@ void sub_809D4D8(void) void sub_809D570(void) { VarSet(VAR_EVENT_PICHU_SLOT, 0); - VarSet(VAR_0x40DE, 0); - VarSet(VAR_0x40DF, 0); - VarSet(VAR_0x40E0, 0); - VarSet(VAR_0x40E1, 0); - VarSet(VAR_0x40E2, 0); - VarSet(VAR_0x40E3, 0); - VarSet(VAR_0x40E4, 0); + VarSet(VAR_NEVER_READ_0x40DE, 0); + VarSet(VAR_NEVER_READ_0x40DF, 0); + VarSet(VAR_NEVER_READ_0x40E0, 0); + VarSet(VAR_NEVER_READ_0x40E1, 0); + VarSet(VAR_NEVER_READ_0x40E2, 0); + VarSet(VAR_NEVER_READ_0x40E3, 0); + VarSet(VAR_NEVER_READ_0x40E4, 0); } void DisableResetRTC(void) @@ -199,7 +199,7 @@ u8 *GetFlagPointer(u16 id) else if (id < SPECIAL_FLAGS_START) return &gSaveBlock1Ptr->flags[id / 8]; else - return &gUnknown_020375FC[(id - SPECIAL_FLAGS_START) / 8]; + return &gSpecialFlags[(id - SPECIAL_FLAGS_START) / 8]; } u8 FlagSet(u16 id) diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 00dce4c7d..680191bb3 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -32,8 +32,7 @@ #include "constants/map_types.h" #include "constants/maps.h" #include "constants/songs.h" - -extern bool32 TryStartMatchCall(void); +#include "match_call.h" static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0; static EWRAM_DATA u16 sPreviousPlayerMetatileBehavior = 0; @@ -147,7 +146,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input) if (CheckForTrainersWantingBattle() == TRUE) return TRUE; - if (mapheader_run_first_tag2_script_list_match() == 1) + if (TryRunOnFrameMapScript() == TRUE) return TRUE; if (input->pressedBButton && TrySetupDiveEmergeScript() == TRUE) @@ -557,9 +556,9 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior) ScriptContext1_SetupScript(EventScript_EggHatch); return TRUE; } - if (sub_813B3B0() == TRUE) + if (UnusualWeatherHasExpired() == TRUE) { - ScriptContext1_SetupScript(gUnknown_08273D1F); + ScriptContext1_SetupScript(UnusualWeather_EventScript_EndEventAndCleanup_1); return TRUE; } if (ShouldDoBrailleRegicePuzzle() == TRUE) @@ -567,27 +566,27 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior) ScriptContext1_SetupScript(IslandCave_EventScript_238EAF); return TRUE; } - if (is_tile_that_overrides_player_control() == TRUE) + if (ShouldDoWallyCall() == TRUE) { ScriptContext1_SetupScript(MauvilleCity_EventScript_1DF7BA); return TRUE; } - if (sub_8138120() == TRUE) + if (ShouldDoWinonaCall() == TRUE) { ScriptContext1_SetupScript(Route119_EventScript_1F49EC); return TRUE; } - if (sub_8138168() == TRUE) + if (ShouldDoScottCall() == TRUE) { ScriptContext1_SetupScript(LittlerootTown_ProfessorBirchsLab_EventScript_1FA4D6); return TRUE; } - if (sub_81381B0() == TRUE) + if (ShouldDoRoxanneCall() == TRUE) { ScriptContext1_SetupScript(RustboroCity_Gym_EventScript_21307B); return TRUE; } - if (sub_81381F8() == TRUE) + if (ShouldDoRivalRayquazaCall() == TRUE) { ScriptContext1_SetupScript(MossdeepCity_SpaceCenter_2F_EventScript_224175); return TRUE; diff --git a/src/field_effect.c b/src/field_effect.c index e7c0b39b9..ee9dcb987 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -240,12 +240,6 @@ static IWRAM_DATA u8 sActiveList[32]; extern u8 *gFieldEffectScriptPointers[]; extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; -extern void sub_81555D8(u8, u8); -extern void pal_fill_for_maplights(void); -extern void sub_80E1558(u8); -extern void sub_80E1570(void); -extern bool8 sub_80E1584(void); -extern void WarpFadeScreen(void); // .rodata const u32 gNewGameBirchPic[] = INCBIN_U32("graphics/birch_speech/birch.4bpp"); @@ -2443,7 +2437,7 @@ static void sub_80B8410(struct Task *task) bool8 FldEff_FieldMoveShowMon(void) { u8 taskId; - if (is_map_type_1_2_3_5_or_6(GetCurrentMapType()) == TRUE) + if (IsMapTypeOutdoors(GetCurrentMapType()) == TRUE) { taskId = CreateTask(sub_80B8554, 0xff); } else @@ -2620,7 +2614,7 @@ static void sub_80B8874(u16 offs) dest = (u16 *)(VRAM + 0x140 + offs); for (i = 0; i < 0x140; i++, dest++) { - *dest = gFieldMoveStreaksTilemap[i] | 0xf000; + *dest = gFieldMoveStreaksTilemap[i] | METATILE_ELEVATION_MASK; } } diff --git a/src/field_message_box.c b/src/field_message_box.c index 299aafaf2..1c554b6c6 100755 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -4,9 +4,7 @@ #include "string_util.h" #include "task.h" #include "text.h" - -extern bool32 IsMatchCallTaskActive(void); -extern void StartMatchCallFromScript(u8*); +#include "match_call.h" static EWRAM_DATA u8 sFieldMessageBoxMode = 0; @@ -33,7 +31,7 @@ static void sub_8098154(u8 taskId) task->data[0]++; break; case 1: - NewMenuHelpers_DrawDialogueFrame(0, 1); + DrawDialogueFrame(0, 1); task->data[0]++; break; case 2: @@ -127,7 +125,7 @@ static void textbox_auto_and_task_add(void) void HideFieldMessageBox(void) { task_del_textbox(); - sub_8197434(0, 1); + ClearDialogWindowAndFrame(0, 1); sFieldMessageBoxMode = 0; } @@ -146,7 +144,7 @@ bool8 IsFieldMessageBoxHidden(void) void sub_8098358(void) { task_del_textbox(); - NewMenuHelpers_DrawStdWindowFrame(0, 1); + DrawStdWindowFrame(0, 1); sFieldMessageBoxMode = 0; } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index b1291f0ce..a070fe0e1 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -1918,7 +1918,7 @@ static bool8 Fishing9(struct Task *task) static bool8 Fishing10(struct Task *task) { AlignFishingAnimationFrames(); - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gText_PokemonOnHook, 1, 0, 2, 1, 3); task->tStep++; task->tFrameCounter = 0; @@ -1944,7 +1944,7 @@ static bool8 Fishing11(struct Task *task) sub_8155604(gEventObjects[gPlayerAvatar.eventObjectId].fieldEffectSpriteId, 0, 0); gSprites[gPlayerAvatar.spriteId].pos2.x = 0; gSprites[gPlayerAvatar.spriteId].pos2.y = 0; - sub_8197434(0, TRUE); + ClearDialogWindowAndFrame(0, TRUE); task->tFrameCounter++; return FALSE; } @@ -1966,7 +1966,7 @@ static bool8 Fishing12(struct Task *task) { AlignFishingAnimationFrames(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection())); - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gText_NotEvenANibble, 1, 0, 2, 1, 3); task->tStep = FISHING_SHOW_RESULT; return TRUE; @@ -1977,7 +1977,7 @@ static bool8 Fishing13(struct Task *task) { AlignFishingAnimationFrames(); StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], GetFishingNoCatchDirectionAnimNum(GetPlayerFacingDirection())); - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gText_ItGotAway, 1, 0, 2, 1, 3); task->tStep++; return TRUE; @@ -2017,7 +2017,7 @@ static bool8 Fishing16(struct Task *task) gPlayerAvatar.preventStep = FALSE; ScriptContext2_Disable(); UnfreezeEventObjects(); - sub_8197434(0, TRUE); + ClearDialogWindowAndFrame(0, TRUE); sub_80ED950(0); DestroyTask(FindTaskIdByFunc(Task_Fishing)); } @@ -2125,7 +2125,7 @@ void sub_808D194(void) sub_808D1FC(CreateTask(sub_808D1FC, 0)); } -bool8 sub_808D1B4(void) +bool32 sub_808D1B4(void) { return FuncIsActiveTask(sub_808D1FC); } @@ -2135,7 +2135,7 @@ void sub_808D1C8(void) sub_808D094(CreateTask(sub_808D094, 0)); } -bool8 sub_808D1E8(void) +bool32 sub_808D1E8(void) { return FuncIsActiveTask(sub_808D094); } diff --git a/src/field_region_map.c b/src/field_region_map.c index d49ce3a4e..1d54333fb 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -139,11 +139,11 @@ static void FieldUpdateRegionMap(void) sFieldRegionMapHandler->state++; break; case 1: - SetWindowBorderStyle(1, 0, 0x27, 0xd); + DrawStdFrameWithCustomTileAndPalette(1, 0, 0x27, 0xd); offset = GetStringCenterAlignXOffset(1, gText_Hoenn, 0x38); AddTextPrinterParameterized(1, 1, gText_Hoenn, offset, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); - SetWindowBorderStyle(0, 0, 0x27, 0xd); + DrawStdFrameWithCustomTileAndPalette(0, 0, 0x27, 0xd); PrintRegionMapSecName(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); sFieldRegionMapHandler->state++; @@ -196,13 +196,13 @@ static void PrintRegionMapSecName(void) { if (sFieldRegionMapHandler->regionMap.iconDrawType != MAPSECTYPE_NONE) { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized(0, 1, sFieldRegionMapHandler->regionMap.mapSecName, 0, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); } else { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); CopyWindowToVram(0, 3); } } diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 93017f125..b6dcf212c 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -10,7 +10,6 @@ #include "field_screen_effect.h" #include "field_special_scene.h" #include "field_weather.h" -// #include "fldeff_flash.h" #include "gpu_regs.h" #include "link.h" #include "link_rfu.h" @@ -31,22 +30,9 @@ #include "constants/event_object_movement_constants.h" #include "constants/songs.h" #include "constants/rgb.h" - -extern bool32 sub_81D6534(void); -extern bool8 walkrun_is_standing_still(void); -extern void ScriptUnfreezeEventObjects(void); -extern void sub_80FB768(void); -extern void sub_808D194(void); -extern void sub_808D1C8(void); -extern bool32 sub_808D1B4(void); -extern bool32 sub_808D1E8(void); -extern void sub_80B6B68(void); -extern void sub_80B6E4C(u8, u8); -extern void sub_80B75D8(u8); -extern void sub_80B7A74(u8); -extern void sub_808C0A8(u8); -extern u8 GetMapPairFadeToType(u8, u8); -extern u8 GetMapPairFadeFromType(u8, u8); +#include "trainer_hill.h" +#include "event_obj_lock.h" +#include "fldeff.h" extern const u16 gUnknown_82EC7CC[]; @@ -255,7 +241,7 @@ void sub_80AF2B4(u8 taskId) break; case 2: sub_8009F18(); - sub_8086C2C(); + ResetAllMultiplayerState(); ScriptContext2_Disable(); DestroyTask(taskId); break; @@ -503,7 +489,7 @@ void DoWarp(void) ScriptContext2_Enable(); TryFadeOutOldMapMusic(); WarpFadeScreen(); - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); PlaySE(SE_KAIDAN); gFieldCallback = mapldr_default; CreateTask(sub_80AFA0C, 10); @@ -514,7 +500,7 @@ void DoDiveWarp(void) ScriptContext2_Enable(); TryFadeOutOldMapMusic(); WarpFadeScreen(); - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); gFieldCallback = mapldr_default; CreateTask(sub_80AFA0C, 10); } @@ -524,7 +510,7 @@ void sub_80AF79C(void) ScriptContext2_Enable(); TryFadeOutOldMapMusic(); FadeScreen(FADE_TO_WHITE, 8); - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); gFieldCallback = sub_80AF3B0; CreateTask(sub_80AFA0C, 10); } @@ -621,7 +607,7 @@ void sub_80AF948(void) CreateTask(sub_80AF8E0, 10); } -static void sub_80AF96C(u8 taskId) +static void Task_ReturnToWorldFromLinkRoom(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -654,7 +640,7 @@ static void sub_80AF96C(u8 taskId) void sub_80AF9F8(void) { - CreateTask(sub_80AF96C, 10); + CreateTask(Task_ReturnToWorldFromLinkRoom, 10); } static void sub_80AFA0C(u8 taskId) @@ -734,7 +720,7 @@ static void sub_80AFA88(u8 taskId) case 4: TryFadeOutOldMapMusic(); WarpFadeScreen(); - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); task->data[0] = 0; task->func = sub_80AFA0C; break; @@ -771,7 +757,7 @@ void sub_80AFC60(void) ScriptContext2_Enable(); TryFadeOutOldMapMusic(); WarpFadeScreen(); - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); PlaySE(SE_KAIDAN); gFieldCallback = sub_80AF3C8; CreateTask(task0A_fade_n_map_maybe, 10); diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 2b518808b..e059e6ef8 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -301,7 +301,7 @@ void Task_HandlePorthole(u8 taskId) break; case EXIT_PORTHOLE: // exit porthole. FlagClear(FLAG_SPECIAL_FLAG_0x4001); - FlagClear(FLAG_SPECIAL_FLAG_0x4000); + FlagClear(FLAG_HIDE_MAP_NAME_POPUP); SetWarpDestinationToDynamicWarp(0); DoDiveWarp(); DestroyTask(taskId); @@ -338,7 +338,7 @@ void sub_80FB7A4(void) { FlagSet(FLAG_SYS_CRUISE_MODE); FlagSet(FLAG_SPECIAL_FLAG_0x4001); - FlagSet(FLAG_SPECIAL_FLAG_0x4000); + FlagSet(FLAG_HIDE_MAP_NAME_POPUP); SetDynamicWarp(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1); sub_80FB59C(); sub_80AF8B8(); diff --git a/src/field_specials.c b/src/field_specials.c index 3c26085dd..436b06f53 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -54,6 +54,8 @@ #include "constants/moves.h" #include "constants/vars.h" #include "constants/battle_frontier.h" +#include "constants/weather.h" +#include "palette.h" EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE; EWRAM_DATA u8 gBikeCollisions = 0; @@ -79,9 +81,6 @@ extern const u16 gEventObjectPalette17[]; extern const u16 gEventObjectPalette33[]; extern const u16 gEventObjectPalette34[]; -extern void LoadPalette(const void *src, u32 offset, u16 size); // incorrect signature, needed to match -extern void BlendPalettes(u32, u8, u16); -extern void FieldInitRegionMap(MainCallback callback); void UpdateMovedLilycoveFanClubMembers(void); void sub_813BF60(void); @@ -359,17 +358,17 @@ u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y) return 0; } -bool32 is_tile_that_overrides_player_control(void) +bool32 ShouldDoWallyCall(void) { if (FlagGet(FLAG_ENABLE_FIRST_WALLY_POKENAV_CALL)) { switch (gMapHeader.mapType) { - case 1: - case 2: - case 3: - case 6: - if (++(*GetVarPointer(VAR_0x40F2)) < 0xFA) + case MAP_TYPE_TOWN: + case MAP_TYPE_CITY: + case MAP_TYPE_ROUTE: + case MAP_TYPE_OCEAN_ROUTE: + if (++(*GetVarPointer(VAR_WALLY_CALL_STEP_COUNTER)) < 250) { return FALSE; } @@ -386,7 +385,7 @@ bool32 is_tile_that_overrides_player_control(void) return TRUE; } -bool32 sub_8138120(void) +bool32 ShouldDoWinonaCall(void) { if (FlagGet(FLAG_REGISTER_WINONA_POKENAV)) { @@ -395,8 +394,8 @@ bool32 sub_8138120(void) case MAP_TYPE_TOWN: case MAP_TYPE_CITY: case MAP_TYPE_ROUTE: - case MAP_TYPE_6: - if (++(*GetVarPointer(VAR_0x40F3)) < 10) + case MAP_TYPE_OCEAN_ROUTE: + if (++(*GetVarPointer(VAR_WINONA_CALL_STEP_COUNTER)) < 10) { return FALSE; } @@ -413,7 +412,7 @@ bool32 sub_8138120(void) return TRUE; } -bool32 sub_8138168(void) +bool32 ShouldDoScottCall(void) { if (FlagGet(FLAG_SCOTT_CALL_NATIONAL_DEX)) { @@ -423,7 +422,7 @@ bool32 sub_8138168(void) case 2: case 3: case 6: - if (++(*GetVarPointer(VAR_0x40F5)) < 0xA) + if (++(*GetVarPointer(VAR_SCOTT_CALL_STEP_COUNTER)) < 10) { return FALSE; } @@ -440,7 +439,7 @@ bool32 sub_8138168(void) return TRUE; } -bool32 sub_81381B0(void) +bool32 ShouldDoRoxanneCall(void) { if (FlagGet(FLAG_ENABLE_ROXANNE_FIRST_CALL)) { @@ -450,7 +449,7 @@ bool32 sub_81381B0(void) case 2: case 3: case 6: - if (++(*GetVarPointer(VAR_0x40F4)) < 0xFA) + if (++(*GetVarPointer(VAR_ROXANNE_CALL_STEP_COUNTER)) < 250) { return FALSE; } @@ -467,7 +466,7 @@ bool32 sub_81381B0(void) return TRUE; } -bool32 sub_81381F8(void) +bool32 ShouldDoRivalRayquazaCall(void) { if (FlagGet(FLAG_DEFEATED_MAGMA_SPACE_CENTER)) { @@ -477,7 +476,7 @@ bool32 sub_81381F8(void) case 2: case 3: case 6: - if (++(*GetVarPointer(VAR_0x40F6)) < 0xFA) + if (++(*GetVarPointer(VAR_RIVAL_RAYQUAZA_CALL_STEP_COUNTER)) < 250) { return FALSE; } @@ -590,7 +589,9 @@ void SpawnLinkPartnerEventObject(void) static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEventId, u8 paletteNum) { - paletteNum += 6; + u8 adjustedPaletteNum; + // Note: This temp var is necessary; paletteNum += 6 doesn't match. + adjustedPaletteNum = paletteNum + 6; if (graphicsId == EVENT_OBJ_GFX_LINK_RS_BRENDAN || graphicsId == EVENT_OBJ_GFX_LINK_RS_MAY || graphicsId == EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL || @@ -601,21 +602,21 @@ static void LoadLinkPartnerEventObjectSpritePalette(u8 graphicsId, u8 localEvent { u8 spriteId = gEventObjects[obj].spriteId; struct Sprite *sprite = &gSprites[spriteId]; - sprite->oam.paletteNum = paletteNum; + sprite->oam.paletteNum = adjustedPaletteNum; switch (graphicsId) { case EVENT_OBJ_GFX_LINK_RS_BRENDAN: - LoadPalette(gEventObjectPalette33, 0x100 + paletteNum * 16, 0x20); + LoadPalette(gEventObjectPalette33, 0x100 + (adjustedPaletteNum << 4), 0x20); break; case EVENT_OBJ_GFX_LINK_RS_MAY: - LoadPalette(gEventObjectPalette34, 0x100 + paletteNum * 16, 0x20); + LoadPalette(gEventObjectPalette34, 0x100 + (adjustedPaletteNum << 4), 0x20); break; case EVENT_OBJ_GFX_RIVAL_BRENDAN_NORMAL: - LoadPalette(gEventObjectPalette8, 0x100 + paletteNum * 16, 0x20); + LoadPalette(gEventObjectPalette8, 0x100 + (adjustedPaletteNum << 4), 0x20); break; case EVENT_OBJ_GFX_RIVAL_MAY_NORMAL: - LoadPalette(gEventObjectPalette17, 0x100 + paletteNum * 16, 0x20); + LoadPalette(gEventObjectPalette17, 0x100 + (adjustedPaletteNum << 4), 0x20); break; } } @@ -886,8 +887,8 @@ static void PetalburgGymFunc(u8 a0, u16 a1) } for (i = 0; i < nDoors; i++) { - MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | 0xc00); - MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | 0xc00); + MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | METATILE_COLLISION_MASK); + MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | METATILE_COLLISION_MASK); } DrawWholeMapView(); } @@ -1099,7 +1100,7 @@ static void PCTurnOnEffect_1(s16 flag, s8 dx, s8 dy) tileId = 0x27e; } } - MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00); + MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK); } void DoPCTurnOffEffect(void) @@ -1140,7 +1141,7 @@ static void PCTurnOffEffect(void) { tileId = 0x259; } - MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | 0xc00); + MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + dx + 7, gSaveBlock1Ptr->pos.y + dy + 7, tileId | METATILE_COLLISION_MASK); DrawWholeMapView(); } @@ -1515,7 +1516,7 @@ bool8 FoundBlackGlasses(void) void SetRoute119Weather(void) { - if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE) + if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE) { SetSav1Weather(20); } @@ -1523,7 +1524,7 @@ void SetRoute119Weather(void) void SetRoute123Weather(void) { - if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType()) != TRUE) + if (IsMapTypeOutdoors(GetLastUsedWarpMapType()) != TRUE) { SetSav1Weather(21); } @@ -1859,7 +1860,7 @@ void sub_8139B60(void) void sub_8139C10(void) { - sub_8198070(gUnknown_0203AB5E, TRUE); + ClearStdWindowAndFrameToTransparent(gUnknown_0203AB5E, TRUE); RemoveWindow(gUnknown_0203AB5E); } @@ -1891,7 +1892,7 @@ static void sub_8139C80(u8 taskId) { for (x = 0; x < 3; x++) { - MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | 0xC00); + MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2BF4[y][data[0] % 3] | METATILE_COLLISION_MASK); } } } @@ -1901,7 +1902,7 @@ static void sub_8139C80(u8 taskId) { for (x = 0; x < 3; x++) { - MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | 0xC00); + MapGridSetMetatileIdAt(x + 8, y + 7, gUnknown_085B2C06[y][data[0] % 3] | METATILE_COLLISION_MASK); } } } @@ -2644,8 +2645,8 @@ static void sub_813A570(u8 taskId) sub_813A738(taskId); DestroyListMenuTask(task->data[14], NULL, NULL); Free(gUnknown_0203AB64); - sub_8198070(task->data[13], 1); - FillWindowPixelBuffer(task->data[13], 0); + ClearStdWindowAndFrameToTransparent(task->data[13], 1); + FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0)); CopyWindowToVram(task->data[13], 2); RemoveWindow(task->data[13]); DestroyTask(taskId); @@ -2889,7 +2890,7 @@ void sub_813A958(void) void sub_813A988(void) { - sub_8198070(gUnknown_0203AB6D, TRUE); + ClearStdWindowAndFrameToTransparent(gUnknown_0203AB6D, TRUE); RemoveWindow(gUnknown_0203AB6D); } @@ -2941,7 +2942,7 @@ void sub_813AA18(void) void sub_813AA44(void) { - sub_8198070(gUnknown_0203AB6E, TRUE); + ClearStdWindowAndFrameToTransparent(gUnknown_0203AB6E, TRUE); RemoveWindow(gUnknown_0203AB6E); } @@ -3000,7 +3001,7 @@ static void sub_813AA60(u16 a0, u16 a1) if (a0 > 2 && a0 < 7) { - FillWindowPixelRect(0, 0x11, 0, 0, 216, 32); + FillWindowPixelRect(0, PIXEL_FILL(1), 0, 0, 216, 32); switch (a0) { case 3: @@ -3139,7 +3140,7 @@ static void sub_813AD34(u8 a0, u16 a1) if (a0 == 9 || a0 == 10) { - FillWindowPixelRect(gUnknown_0203AB5E, 0x11, 0, 0, 96, 48); + FillWindowPixelRect(gUnknown_0203AB5E, PIXEL_FILL(1), 0, 0, 96, 48); if (a0 == 10) { AddTextPrinterParameterized(gUnknown_0203AB5E, 1, gUnknown_085B3254[a1], 0, 1, 0, NULL); @@ -3153,7 +3154,7 @@ static void sub_813AD34(u8 a0, u16 a1) void sub_813ADB8(void) { - sub_8198070(gUnknown_0203AB5E, TRUE); + ClearStdWindowAndFrameToTransparent(gUnknown_0203AB5E, TRUE); RemoveWindow(gUnknown_0203AB5E); } @@ -3225,8 +3226,8 @@ void sub_813AF48(void) struct Task *task = &gTasks[taskId]; DestroyListMenuTask(task->data[14], NULL, NULL); Free(gUnknown_0203AB64); - sub_8198070(task->data[13], TRUE); - FillWindowPixelBuffer(task->data[13], 0); + ClearStdWindowAndFrameToTransparent(task->data[13], TRUE); + FillWindowPixelBuffer(task->data[13], PIXEL_FILL(0)); ClearWindowTilemap(task->data[13]); CopyWindowToVram(task->data[13], 2); RemoveWindow(task->data[13]); @@ -3378,7 +3379,7 @@ u16 get_unknown_box_id(void) return gUnknown_0203AB6F; } -bool32 sub_813B21C(void) +bool8 sub_813B21C(void) { if (FlagGet(FLAG_SYS_STORAGE_UNKNOWN_FLAG) == FALSE) { @@ -3420,40 +3421,59 @@ bool8 sub_813B260(void) return FALSE; } -void sub_813B2E4(void) +void CreateUnusualWeatherEvent(void) { u16 randomValue = Random(); - VarSet(VAR_0x4038, 0); + VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, 0); if (FlagGet(FLAG_DEFEATED_KYOGRE) == TRUE) { - VarSet(VAR_0x4037, (randomValue & 7) + 1); + VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_GROUDON_LOCATIONS_START); } else if (FlagGet(FLAG_DEFEATED_GROUDON) == TRUE) { - VarSet(VAR_0x4037, (randomValue & 7) + 9); + VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START); } else if ((randomValue & 1) == 0) { randomValue = Random(); - VarSet(VAR_0x4037, (randomValue & 7) + 1); + VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_GROUDON_LOCATIONS_START); } else { randomValue = Random(); - VarSet(VAR_0x4037, (randomValue & 7) + 9); - } -} - -bool32 sub_813B374(void) -{ - static const u8 gUnknown_085B3400[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c }; + VarSet(VAR_UNUSUAL_WEATHER_LOCATION, (randomValue % UNUSUAL_WEATHER_COUNT_PER_LEGENDARY) + UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START); + } +} + +// Saves the map name for the current unusual weather location in gStringVar1, then +// returns TRUE if the weather is for Kyogre, and FALSE if it's for Groudon. +bool32 GetUnusualWeatherMapNameAndType(void) +{ + static const u8 sUnusualWeatherMapNumbers[] = { + MAP_NUM(ROUTE114), + MAP_NUM(ROUTE114), + MAP_NUM(ROUTE115), + MAP_NUM(ROUTE115), + MAP_NUM(ROUTE116), + MAP_NUM(ROUTE116), + MAP_NUM(ROUTE118), + MAP_NUM(ROUTE118), + MAP_NUM(ROUTE105), + MAP_NUM(ROUTE105), + MAP_NUM(ROUTE125), + MAP_NUM(ROUTE125), + MAP_NUM(ROUTE127), + MAP_NUM(ROUTE127), + MAP_NUM(ROUTE129), + MAP_NUM(ROUTE129) + }; - u16 var = VarGet(VAR_0x4037); + u16 unusualWeather = VarGet(VAR_UNUSUAL_WEATHER_LOCATION); - GetMapName(gStringVar1, gUnknown_085B3400[var - 1], 0); + GetMapName(gStringVar1, sUnusualWeatherMapNumbers[unusualWeather - 1], 0); - if (var < 9) + if (unusualWeather < UNUSUAL_WEATHER_KYOGRE_LOCATIONS_START) { return FALSE; } @@ -3463,21 +3483,39 @@ bool32 sub_813B374(void) } } -bool8 sub_813B3B0(void) -{ - static const u8 gUnknown_085B3410[] = { 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x21, 0x21, 0x14, 0x14, 0x28, 0x28, 0x2a, 0x2a, 0x2c, 0x2c }; +bool8 UnusualWeatherHasExpired(void) +{ + // Duplicate array. + static const u8 sUnusualWeatherMapNumbers_2[] = { + MAP_NUM(ROUTE114), + MAP_NUM(ROUTE114), + MAP_NUM(ROUTE115), + MAP_NUM(ROUTE115), + MAP_NUM(ROUTE116), + MAP_NUM(ROUTE116), + MAP_NUM(ROUTE118), + MAP_NUM(ROUTE118), + MAP_NUM(ROUTE105), + MAP_NUM(ROUTE105), + MAP_NUM(ROUTE125), + MAP_NUM(ROUTE125), + MAP_NUM(ROUTE127), + MAP_NUM(ROUTE127), + MAP_NUM(ROUTE129), + MAP_NUM(ROUTE129) + }; - u16 var1 = VarGet(VAR_0x4038); - u16 var2 = VarGet(VAR_0x4037); + u16 steps = VarGet(VAR_UNUSUAL_WEATHER_STEP_COUNTER); + u16 unusualWeather = VarGet(VAR_UNUSUAL_WEATHER_LOCATION); - if (!var2) + if (unusualWeather == UNUSUAL_WEATHER_NONE) { return FALSE; } - if (++var1 > 999) + if (++steps > 999) { - VarSet(VAR_0x4038, 0); + VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, 0); if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(UNDERWATER_MARINE_CAVE)) { switch (gSaveBlock1Ptr->location.mapNum) @@ -3487,7 +3525,7 @@ bool8 sub_813B3B0(void) case MAP_NUM(MARINE_CAVE_END): case MAP_NUM(TERRA_CAVE_ENTRANCE): case MAP_NUM(TERRA_CAVE_END): - VarSet(VAR_0x4039, 1); + VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 1); return FALSE; default: break; @@ -3502,34 +3540,34 @@ bool8 sub_813B3B0(void) case MAP_NUM(UNDERWATER5): case MAP_NUM(UNDERWATER6): case MAP_NUM(UNDERWATER7): - VarSet(VAR_0x4039, 1); + VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 1); return FALSE; default: break; } } - if (gSaveBlock1Ptr->location.mapNum == gUnknown_085B3410[var2 - 1] && + if (gSaveBlock1Ptr->location.mapNum == sUnusualWeatherMapNumbers_2[unusualWeather - 1] && gSaveBlock1Ptr->location.mapGroup == 0) { return TRUE; } else { - VarSet(VAR_0x4037, 0); + VarSet(VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_NONE); return FALSE; } } else { - VarSet(VAR_0x4038, var1); + VarSet(VAR_UNUSUAL_WEATHER_STEP_COUNTER, steps); return FALSE; } } -void sub_813B484(void) +void Unused_SetWeatherSunny(void) { - sub_80AB104(2); + SetCurrentAndNextWeather(WEATHER_SUNNY); } bool32 sub_813B490(void) @@ -3576,7 +3614,7 @@ bool32 sub_813B4E0(void) bool32 sub_813B514(void) { - if (!VarGet(VAR_0x403F)) + if (!VarGet(VAR_ALWAYS_ZERO_0x403F)) { return FALSE; } diff --git a/src/field_weather.c b/src/field_weather.c index 0db635c60..9913e9a61 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -186,11 +186,11 @@ void StartWeather(void) } } -void ChangeWeather(u8 weather) +void SetNextWeather(u8 weather) { if (weather != WEATHER_RAIN_LIGHT && weather != WEATHER_RAIN_MED && weather != WEATHER_RAIN_HEAVY) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); } if (gWeatherPtr->nextWeather != weather && gWeatherPtr->currWeather == weather) @@ -203,18 +203,19 @@ void ChangeWeather(u8 weather) gWeatherPtr->finishStep = 0; } -void sub_80AB104(u8 weather) +void SetCurrentAndNextWeather(u8 weather) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); gWeatherPtr->currWeather = weather; gWeatherPtr->nextWeather = weather; } -void sub_80AB130(u8 weather) +void SetCurrentAndNextWeatherNoDelay(u8 weather) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); gWeatherPtr->currWeather = weather; gWeatherPtr->nextWeather = weather; + // Overrides the normal delay during screen fading. gWeatherPtr->readyForInit = TRUE; } @@ -1053,7 +1054,7 @@ void SetRainStrengthFromSoundEffect(u16 soundEffect) } } -void PlayRainSoundEffect(void) +void PlayRainStoppingSoundEffect(void) { if (IsSpecialSEPlaying()) { diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 2ec51a722..be8fdc6cb 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -16,8 +16,8 @@ void sub_80AC6B4(struct Sprite *); // EWRAM -EWRAM_DATA static u8 gUnknown_02038BC4 = 0; -EWRAM_DATA static u16 gUnknown_02038BC6 = 0; +EWRAM_DATA static u8 gCurrentAlternatingWeather = 0; +EWRAM_DATA static u16 gUnusedWeatherRelated = 0; // CONST const u16 gUnknown_0854C290[] = INCBIN_U16("graphics/weather/1.gbapal"); @@ -2286,13 +2286,14 @@ void unc_0807DAB4(struct Sprite *sprite) //------------------------------------------------------------------------------ -static void sub_80AEC94(u32 a0, u32 a1) +// Unused function. +static void UnusedSetCurrentAlternatingWeather(u32 a0, u32 a1) { - gUnknown_02038BC4 = a0; - gUnknown_02038BC6 = a1; + gCurrentAlternatingWeather = a0; + gUnusedWeatherRelated = a1; } -static void sub_80AECA8(u8 taskId) +static void Task_DoAlternatingWeather(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -2301,8 +2302,8 @@ static void sub_80AECA8(u8 taskId) case 0: if (data[15]-- <= 0) { - ChangeWeather(data[1]); - gUnknown_02038BC4 = data[1]; + SetNextWeather(data[1]); + gCurrentAlternatingWeather = data[1]; data[15] = 600; data[0]++; } @@ -2310,8 +2311,8 @@ static void sub_80AECA8(u8 taskId) case 1: if (data[15]-- <= 0) { - ChangeWeather(data[2]); - gUnknown_02038BC4 = data[2]; + SetNextWeather(data[2]); + gCurrentAlternatingWeather = data[2]; data[15] = 600; data[0] = 0; } @@ -2319,25 +2320,25 @@ static void sub_80AECA8(u8 taskId) } } -static void sub_80AED28(void) +static void CreateAlternatingWeatherTask(void) { - u8 taskId = CreateTask(sub_80AECA8, 0); + u8 taskId = CreateTask(Task_DoAlternatingWeather, 0); s16 *data = gTasks[taskId].data; data[15] = 600; - if (gUnknown_02038BC4 == WEATHER_RAIN_HEAVY) + if (gCurrentAlternatingWeather == WEATHER_RAIN_HEAVY) { data[1] = WEATHER_DROUGHT; data[2] = WEATHER_RAIN_HEAVY; } - else if (gUnknown_02038BC4 == WEATHER_DROUGHT) + else if (gCurrentAlternatingWeather == WEATHER_DROUGHT) { data[1] = WEATHER_RAIN_HEAVY; data[2] = WEATHER_DROUGHT; } else { - gUnknown_02038BC4 = WEATHER_RAIN_HEAVY; + gCurrentAlternatingWeather = WEATHER_RAIN_HEAVY; data[1] = WEATHER_DROUGHT; data[2] = WEATHER_RAIN_HEAVY; } @@ -2368,51 +2369,51 @@ void SetSav1WeatherFromCurrMapHeader(void) void SetWeather(u32 weather) { SetSav1Weather(weather); - ChangeWeather(GetSav1Weather()); + SetNextWeather(GetSav1Weather()); } void SetWeather_Unused(u32 weather) { SetSav1Weather(weather); - sub_80AB104(GetSav1Weather()); + SetCurrentAndNextWeather(GetSav1Weather()); } void DoCurrentWeather(void) { u8 weather = GetSav1Weather(); - if (weather == WEATHER_15) + if (weather == WEATHER_ALTERNATING) { - if (!FuncIsActiveTask(sub_80AECA8)) - sub_80AED28(); - weather = gUnknown_02038BC4; + if (!FuncIsActiveTask(Task_DoAlternatingWeather)) + CreateAlternatingWeatherTask(); + weather = gCurrentAlternatingWeather; } else { - if (FuncIsActiveTask(sub_80AECA8)) - DestroyTask(FindTaskIdByFunc(sub_80AECA8)); - gUnknown_02038BC4 = WEATHER_RAIN_HEAVY; + if (FuncIsActiveTask(Task_DoAlternatingWeather)) + DestroyTask(FindTaskIdByFunc(Task_DoAlternatingWeather)); + gCurrentAlternatingWeather = WEATHER_RAIN_HEAVY; } - ChangeWeather(weather); + SetNextWeather(weather); } -void sub_80AEE84(void) +void ResumePausedWeather(void) { u8 weather = GetSav1Weather(); - if (weather == WEATHER_15) + if (weather == WEATHER_ALTERNATING) { - if (!FuncIsActiveTask(sub_80AECA8)) - sub_80AED28(); - weather = gUnknown_02038BC4; + if (!FuncIsActiveTask(Task_DoAlternatingWeather)) + CreateAlternatingWeatherTask(); + weather = gCurrentAlternatingWeather; } else { - if (FuncIsActiveTask(sub_80AECA8)) - DestroyTask(FindTaskIdByFunc(sub_80AECA8)); - gUnknown_02038BC4 = WEATHER_RAIN_HEAVY; + if (FuncIsActiveTask(Task_DoAlternatingWeather)) + DestroyTask(FindTaskIdByFunc(Task_DoAlternatingWeather)); + gCurrentAlternatingWeather = WEATHER_RAIN_HEAVY; } - sub_80AB104(weather); + SetCurrentAndNextWeather(weather); } static const u8 sWeatherCycleRoute119[] = @@ -2434,25 +2435,25 @@ static u8 TranslateWeatherNum(u8 weather) { switch (weather) { - case WEATHER_NONE: return WEATHER_NONE; - case WEATHER_CLOUDS: return WEATHER_CLOUDS; - case WEATHER_SUNNY: return WEATHER_SUNNY; - case WEATHER_RAIN_LIGHT: return WEATHER_RAIN_LIGHT; - case WEATHER_SNOW: return WEATHER_SNOW; - case WEATHER_RAIN_MED: return WEATHER_RAIN_MED; - case WEATHER_FOG_1: return WEATHER_FOG_1; - case WEATHER_ASH: return WEATHER_ASH; - case WEATHER_SANDSTORM: return WEATHER_SANDSTORM; - case WEATHER_FOG_2: return WEATHER_FOG_2; - case WEATHER_FOG_3: return WEATHER_FOG_3; - case WEATHER_SHADE: return WEATHER_SHADE; - case WEATHER_DROUGHT: return WEATHER_DROUGHT; - case WEATHER_RAIN_HEAVY: return WEATHER_RAIN_HEAVY; - case WEATHER_BUBBLES: return WEATHER_BUBBLES; - case WEATHER_15: return WEATHER_15; + case WEATHER_NONE: return WEATHER_NONE; + case WEATHER_CLOUDS: return WEATHER_CLOUDS; + case WEATHER_SUNNY: return WEATHER_SUNNY; + case WEATHER_RAIN_LIGHT: return WEATHER_RAIN_LIGHT; + case WEATHER_SNOW: return WEATHER_SNOW; + case WEATHER_RAIN_MED: return WEATHER_RAIN_MED; + case WEATHER_FOG_1: return WEATHER_FOG_1; + case WEATHER_ASH: return WEATHER_ASH; + case WEATHER_SANDSTORM: return WEATHER_SANDSTORM; + case WEATHER_FOG_2: return WEATHER_FOG_2; + case WEATHER_FOG_3: return WEATHER_FOG_3; + case WEATHER_SHADE: return WEATHER_SHADE; + case WEATHER_DROUGHT: return WEATHER_DROUGHT; + case WEATHER_RAIN_HEAVY: return WEATHER_RAIN_HEAVY; + case WEATHER_BUBBLES: return WEATHER_BUBBLES; + case WEATHER_ALTERNATING: return WEATHER_ALTERNATING; case WEATHER_ROUTE119_CYCLE: return sWeatherCycleRoute119[gSaveBlock1Ptr->weatherCycleStage]; case WEATHER_ROUTE123_CYCLE: return sWeatherCycleRoute123[gSaveBlock1Ptr->weatherCycleStage]; - default: return WEATHER_NONE; + default: return WEATHER_NONE; } } diff --git a/src/fieldmap.c b/src/fieldmap.c index 7d9d079fc..a96b71c0f 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -53,7 +53,7 @@ void InitMap(void) { InitMapLayoutData(&gMapHeader); sub_80E8EE0(gMapHeader.events); - mapheader_run_script_with_tag_x1(); + RunOnLoadMapScript(); } void InitMapFromSavedGame(void) @@ -62,7 +62,7 @@ void InitMapFromSavedGame(void) sub_80E9238(0); sub_80E8EE0(gMapHeader.events); LoadSavedMapView(); - mapheader_run_script_with_tag_x1(); + RunOnLoadMapScript(); UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height); } @@ -383,15 +383,15 @@ u8 MapGridGetZCoordAt(int x, int y) i = (x + 1) & 1; i += ((y + 1) & 1) * 2; block = gMapHeader.mapLayout->border[i]; - block |= 0xc00; + block |= METATILE_COLLISION_MASK; } - if (block == 0x3ff) + if (block == METATILE_ID_UNDEFINED) { return 0; } - return block >> 12; + return block >> METATILE_ELEVATION_SHIFT; } u8 MapGridIsImpassableAt(int x, int y) @@ -411,13 +411,13 @@ u8 MapGridIsImpassableAt(int x, int y) i = (x + 1) & 1; i += ((y + 1) & 1) * 2; block = gMapHeader.mapLayout->border[i]; - block |= 0xc00; + block |= METATILE_COLLISION_MASK; } - if (block == 0x3ff) + if (block == METATILE_ID_UNDEFINED) { return 1; } - return (block & 0xc00) >> 10; + return (block & METATILE_COLLISION_MASK) >> METATILE_COLLISION_SHIFT; } u32 MapGridGetMetatileIdAt(int x, int y) @@ -439,18 +439,19 @@ u32 MapGridGetMetatileIdAt(int x, int y) mapLayout = gMapHeader.mapLayout; i = (x + 1) & 1; i += ((y + 1) & 1) * 2; - block = mapLayout->border[i] | 0xc00; + block = mapLayout->border[i] | METATILE_COLLISION_MASK; } - if (block == 0x3ff) + if (block == METATILE_ID_UNDEFINED) { border = gMapHeader.mapLayout->border; j = (x + 1) & 1; j += ((y + 1) & 1) * 2; block2 = gMapHeader.mapLayout->border[j]; - block2 |= 0xc00; - return block2 & block; + // This OR is completely pointless. + block2 |= METATILE_COLLISION_MASK; + return block2 & METATILE_ID_MASK; } - return block & 0x3ff; + return block & METATILE_ID_MASK; } u32 MapGridGetMetatileBehaviorAt(int x, int y) @@ -464,7 +465,7 @@ u8 MapGridGetMetatileLayerTypeAt(int x, int y) { u16 metatile; metatile = MapGridGetMetatileIdAt(x, y); - return (GetBehaviorByMetatileId(metatile) & 0xf000) >> 12; + return (GetBehaviorByMetatileId(metatile) & METATILE_ELEVATION_MASK) >> METATILE_ELEVATION_SHIFT; } void MapGridSetMetatileIdAt(int x, int y, u16 metatile) @@ -474,7 +475,7 @@ void MapGridSetMetatileIdAt(int x, int y, u16 metatile) && y >= 0 && y < gBackupMapLayout.height) { i = x + y * gBackupMapLayout.width; - gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & 0xf000) | (metatile & 0xfff); + gBackupMapLayout.map[i] = (gBackupMapLayout.map[i] & METATILE_ELEVATION_MASK) | (metatile & ~METATILE_ELEVATION_MASK); } } @@ -654,7 +655,7 @@ int GetMapBorderIdAt(int x, int y) i = gBackupMapLayout.width; i *= y; block = gBackupMapLayout.map[x + i]; - if (block == 0x3ff) + if (block == METATILE_ID_UNDEFINED) { goto fail; } @@ -664,8 +665,8 @@ int GetMapBorderIdAt(int x, int y) mapLayout = gMapHeader.mapLayout; j = (x + 1) & 1; j += ((y + 1) & 1) * 2; - block2 = 0xc00 | mapLayout->border[j]; - if (block2 == 0x3ff) + block2 = METATILE_COLLISION_MASK | mapLayout->border[j]; + if (block2 == METATILE_ID_UNDEFINED) { goto fail; } @@ -775,7 +776,7 @@ bool8 CameraMove(int x, int y) old_y = gSaveBlock1Ptr->pos.y; connection = sub_8088950(direction, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y); sub_80887F8(connection, direction, x, y); - mliX_load_map(connection->mapGroup, connection->mapNum); + LoadMapFromCameraTransition(connection->mapGroup, connection->mapNum); gCamera.active = TRUE; gCamera.x = old_x - gSaveBlock1Ptr->pos.x; gCamera.y = old_y - gSaveBlock1Ptr->pos.y; @@ -921,9 +922,9 @@ void sub_8088B94(int x, int y, int a2) if (x >= 0 && x < gBackupMapLayout.width && y >= 0 && y < gBackupMapLayout.height) { if (a2 != 0) - gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= 0xC00; + gBackupMapLayout.map[x + gBackupMapLayout.width * y] |= METATILE_COLLISION_MASK; else - gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= 0xF3FF; + gBackupMapLayout.map[x + gBackupMapLayout.width * y] &= ~METATILE_COLLISION_MASK; } } @@ -937,7 +938,7 @@ static bool8 SkipCopyingMetatileFromSavedMap(u16* mapMetatilePtr, u16 mapWidth, else mapMetatilePtr += mapWidth; - if (sub_80FADE4(*mapMetatilePtr & 0x3FF, yMode) == 1) + if (sub_80FADE4(*mapMetatilePtr & METATILE_ID_MASK, yMode) == 1) return TRUE; return FALSE; } diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index 348a1f46c..a715608c5 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -20,7 +20,6 @@ #include "constants/field_effects.h" #include "constants/songs.h" -extern void ScriptUnfreezeEventObjects(void); extern bool8 IsMewPlayingHideAndSeek(void); extern struct MapPosition gPlayerFacingPosition; diff --git a/src/fldeff_escalator.c b/src/fldeff_escalator.c index 3d00fb162..7ab2db4db 100644 --- a/src/fldeff_escalator.c +++ b/src/fldeff_escalator.c @@ -7,7 +7,7 @@ static EWRAM_DATA u8 sEscalatorAnim_TaskId = 0; -static void sub_80E12E8(u8 taskId, const s16 *list, u16 c) +static void sub_80E12E8(u8 taskId, const s16 *list, u16 isImpassableFlag) { s16 r5 = gTasks[taskId].data[4] - 1; s16 r3 = gTasks[taskId].data[5] - 1; @@ -26,9 +26,9 @@ static void sub_80E12E8(u8 taskId, const s16 *list, u16 c) if (list[r4] == metatileId) { if (r4 != 2) - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]); + MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[r4 + 1]); else - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]); + MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[0]); } } } @@ -44,9 +44,9 @@ static void sub_80E12E8(u8 taskId, const s16 *list, u16 c) if (list[2 - r4] == metatileId) { if (r4 != 2) - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]); + MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[1 - r4]); else - MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]); + MapGridSetMetatileIdAt(r5 + x, r3 + y, isImpassableFlag | list[2]); } } } @@ -76,13 +76,13 @@ static void sub_80E1444(u8 taskId) sub_80E12E8(taskId, gUnknown_08589AC0, 0); break; case 2: - sub_80E12E8(taskId, gUnknown_08589AC6, 0xC00); + sub_80E12E8(taskId, gUnknown_08589AC6, METATILE_COLLISION_MASK); break; case 3: sub_80E12E8(taskId, gUnknown_08589ACC, 0); break; case 4: - sub_80E12E8(taskId, gUnknown_08589AD2, 0xC00); + sub_80E12E8(taskId, gUnknown_08589AD2, METATILE_COLLISION_MASK); break; case 5: sub_80E12E8(taskId, gUnknown_08589AD8, 0); diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index df4576a7f..d4d6075f3 100644 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -1126,7 +1126,7 @@ void GetShieldToyTVDecorationInfo(void) if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x10); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x10); break; case 734: ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2); @@ -1137,7 +1137,7 @@ void GetShieldToyTVDecorationInfo(void) if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x20); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x20); break; case 756: gSpecialVar_Result = 1; @@ -1145,7 +1145,7 @@ void GetShieldToyTVDecorationInfo(void) if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80); break; case 757: gSpecialVar_Result = 2; @@ -1153,7 +1153,7 @@ void GetShieldToyTVDecorationInfo(void) if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80); break; case 758: gSpecialVar_Result = 3; @@ -1161,7 +1161,7 @@ void GetShieldToyTVDecorationInfo(void) if (!VarGet(VAR_CURRENT_SECRET_BASE)) return; - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x80); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x80); break; } } diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c index adec780b3..eca7d045b 100644 --- a/src/fldeff_softboiled.c +++ b/src/fldeff_softboiled.c @@ -86,7 +86,7 @@ static void sub_8161724(u8 taskId) sub_81B0FCC(gUnknown_0203CEC8.unk9, 0); gUnknown_0203CEC8.unk9 = gUnknown_0203CEC8.unkA; sub_81B0FCC(gUnknown_0203CEC8.unkA, 1); - sub_8198070(0x6, FALSE); + ClearStdWindowAndFrameToTransparent(0x6, FALSE); ClearWindowTilemap(0x6); display_pokemon_menu_message(0); gTasks[taskId].func = sub_81B1370; diff --git a/src/flying.c b/src/flying.c index 48df12a06..a157582e9 100644 --- a/src/flying.c +++ b/src/flying.c @@ -4,6 +4,9 @@ #include "trig.h" #include "constants/battle_anim.h" #include "constants/rgb.h" +#include "random.h" + +extern const struct SpriteTemplate gUnknown_085973E8; void sub_810DE70(struct Sprite *); void sub_810DFA8(struct Sprite *); @@ -11,22 +14,29 @@ void sub_810E044(struct Sprite *); void sub_810E13C(struct Sprite *); void sub_810E1C8(struct Sprite *); void sub_810E314(struct Sprite *); -extern void sub_810EA4C(struct Sprite *); -extern void sub_810EAA0(struct Sprite *); -extern void sub_810EC34(struct Sprite *); -extern void sub_810EC94(struct Sprite *); -extern void sub_810ED28(struct Sprite *); -extern void sub_810EE14(struct Sprite *); -extern void sub_810EEF8(struct Sprite *); -extern void sub_810F004(struct Sprite *); -extern void sub_810F084(struct Sprite *); +void sub_810E520(struct Sprite *); +void sub_810EB40(struct Sprite *); +void sub_810EA4C(struct Sprite *); +void sub_810EAA0(struct Sprite *); +void sub_810EC34(struct Sprite *); +void sub_810EC94(struct Sprite *); +void sub_810ED28(struct Sprite *); +void sub_810ED70(struct Sprite *); +void sub_810EDD0(struct Sprite *); +void sub_810EE14(struct Sprite *); +void sub_810EEF8(struct Sprite *); +void sub_810EFA8(struct Sprite *); +void sub_810F004(struct Sprite *); +void sub_810F018(struct Sprite *); +void sub_810F084(struct Sprite *); +void sub_810F140(struct Sprite *); static void sub_810DE98(struct Sprite *); static void sub_810DF18(u8); static void sub_810E028(struct Sprite *); static void sub_810E184(struct Sprite *); static void sub_810E24C(struct Sprite *); -void sub_810E520(struct Sprite *); + const struct SpriteTemplate gUnknown_08596270 = { @@ -98,7 +108,7 @@ const union AffineAnimCmd gUnknown_085962EC[] = const union AffineAnimCmd *const gUnknown_08596314[] = { - gUnknown_085962EC, + gUnknown_085962EC, }; const union AffineAnimCmd gUnknown_08596318[] = @@ -347,7 +357,8 @@ void sub_810DE70(struct Sprite *sprite) sprite->callback(sprite); } -static void sub_810DE98(struct Sprite *sprite) { +static void sub_810DE98(struct Sprite *sprite) +{ sprite->pos2.x = Sin(sprite->data[1], 32); sprite->pos2.y = Cos(sprite->data[1], 8); sprite->data[1] += 5; @@ -382,8 +393,7 @@ static void sub_810DF18(u8 taskId) { gPlttBufferFaded[base + 0x101 + i] = gPlttBufferFaded[base + 0x100 + i]; i--; - } - while (i > 0); + } while (i > 0); gPlttBufferFaded[base + 0x101] = temp; } @@ -514,7 +524,9 @@ static void sub_810E24C(struct Sprite *sprite) sprite->data[3] &= 0xFF; } - if ((u32)(sprite->pos1.x + sprite->pos2.x + 32) > 304 || sprite->pos1.y + sprite->pos2.y > 160) + if (sprite->pos1.x + sprite->pos2.x < -32 + || sprite->pos1.x + sprite->pos2.x > 272 + || sprite->pos1.y + sprite->pos2.y > 160) { gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = 0; DestroyAnimSprite(sprite); @@ -536,56 +548,62 @@ void sub_810E2C8(struct Sprite *sprite) } } -// FAKEMATCHING +struct FeatherDanceData +{ + u8 unk0_0a:1; + u8 unk0_0b:1; + u8 unk0_0c:1; + u8 unk0_0d:1; + u8 unk0_1:4; + u8 unk1; + u16 unk2; + s16 unk4; + u16 unk6; + u16 unk8; + u16 unkA; + u8 unkC[2]; + u16 unkE_0:1; + u16 unkE_1:15; +}; + void sub_810E314(struct Sprite *sprite) { - s16 *data; - u8 slot; - s16 spriteCoord; - int t1, t2; - u32 arg2; - u32 matrixNum; - u8 sinIndex; - register s16 sinVal asm ("r4"); - register int sinVal2 asm ("r0"); + u8 battler, matrixNum, sinIndex; + s16 spriteCoord, sinVal; - data = sprite->data; + struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data; if (gBattleAnimArgs[7] & 0x100) - slot = gBattleAnimAttacker; + battler = gBattleAnimAttacker; else - slot = gBattleAnimTarget; + battler = gBattleAnimTarget; - if (GetBattlerSide(slot) == B_SIDE_PLAYER) + if (GetBattlerSide(battler) == B_SIDE_PLAYER) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; - sprite->pos1.x = GetBattlerSpriteCoord(slot, 0) + gBattleAnimArgs[0]; - spriteCoord = GetBattlerSpriteCoord(slot, 1); + sprite->pos1.x = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_HEIGHT) + gBattleAnimArgs[0]; + spriteCoord = GetBattlerSpriteCoord(battler, BATTLER_COORD_ATTR_WIDTH); sprite->pos1.y = spriteCoord + gBattleAnimArgs[1]; - data[4] = sprite->pos1.y << 8; - - t1 = (spriteCoord + (u16) gBattleAnimArgs[6]) << 1; - data[7] = (data[7] & 1) | t1; - ((u8 *) data)[0] |= 4; - arg2 = (u16) gBattleAnimArgs[2]; - data[1] = (u8) gBattleAnimArgs[2]; - arg2 <<= 16; - data[5] = arg2 >> 24; - data[2] = gBattleAnimArgs[3]; - data[3] = gBattleAnimArgs[4]; - data[6] = gBattleAnimArgs[5]; + data->unk8 = sprite->pos1.y << 8; + data->unkE_1 = spriteCoord + gBattleAnimArgs[6]; + data->unk0_0c = 1; + data->unk2 = gBattleAnimArgs[2] & 0xFF; + data->unkA = (gBattleAnimArgs[2] >> 8) & 0xFF; + data->unk4 = gBattleAnimArgs[3]; + data->unk6 = gBattleAnimArgs[4]; + *(u16*)(data->unkC) = gBattleAnimArgs[5]; - if ((u16) (data[1] - 64) <= 0x7f) + if (data->unk2 >= 64 && data->unk2 <= 191) { if (!IsContest()) - sprite->oam.priority = GetBattlerSpriteBGPriority(slot) + 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(battler) + 1; else - sprite->oam.priority = GetBattlerSpriteBGPriority(slot); + sprite->oam.priority = GetBattlerSpriteBGPriority(battler); - ((u8 *) data)[14] = data[7] & -2; + data->unkE_0 = 0; - if (!(data[2] & 0x8000)) + if (!(data->unk4 & 0x8000)) { sprite->hFlip ^= 1; sprite->animNum = sprite->hFlip; @@ -596,10 +614,10 @@ void sub_810E314(struct Sprite *sprite) } else { - sprite->oam.priority = GetBattlerSpriteBGPriority(slot); - ((u8 *) data)[14] |= 1; + sprite->oam.priority = GetBattlerSpriteBGPriority(battler); + data->unkE_0 = 1; - if (data[2] & 0x8000) + if (data->unk4 & 0x8000) { sprite->hFlip ^= 1; sprite->animNum = sprite->hFlip; @@ -609,20 +627,1291 @@ void sub_810E314(struct Sprite *sprite) } } - t2 = (u16) data[1] >> 6 << 4; - ((u8 *) data)[0] = (15 & data[0]) | t2; - - sprite->pos2.x = (gSineTable[(u16) data[1]] * (u8) data[6]) >> 8; - + data->unk0_1 = data->unk2 >> 6; + sprite->pos2.x = (gSineTable[data->unk2] * data->unkC[0]) >> 8; matrixNum = sprite->oam.matrixNum; - sinIndex = (-sprite->pos2.x >> 1) + data[5]; + sinIndex = (-sprite->pos2.x >> 1) + data->unkA; sinVal = gSineTable[sinIndex]; gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64]; - gOamMatrices[matrixNum].b = sinVal; - sinVal2 = -sinVal; - gOamMatrices[matrixNum].c = sinVal2; + // The comparison below is completely pointless. 'sprite' is sure to be a valid pointer and + // both the 'if' and 'else' parts are exactly the same. + // The only reason for this is making sure the compiler generates the exact ASM. + if (sprite) + { + gOamMatrices[matrixNum].b = sinVal; + gOamMatrices[matrixNum].c = -sinVal; + } + else + { + gOamMatrices[matrixNum].b = sinVal; + gOamMatrices[matrixNum].c = -sinVal; + } sprite->callback = sub_810E520; } + +#ifdef NONMATCHING +/* +Things I can't get to match: +1. data->unk0_1 bitfield behaviour. The way bits are read is different. +2. sprite->oam.priority--; sprite->oam.priority++; Nonmatching version tail-merges these, original does not. +3. sprite->pos2.x = (gSineTable[data->unk2] * var) >> 8; data->unk2 is very weirdly read at seemingly random moments inside the switch. +4. sinVal r6/r7 mismatch. +*/ +void sub_810E520(struct Sprite *sprite) +{ + u8 matrixNum, sinIndex, var; + s16 sinVal = 0; + struct FeatherDanceData *data = (struct FeatherDanceData *)sprite->data; + + if (data->unk0_0a) + { + if (data->unk1-- % 256 == 0) + { + data->unk0_0a = 0; + data->unk1 = 0; + } + } + else + { + switch (data->unk2 >> 6) + { + case 0: + if (data->unk0_1 == 1) + { + data->unk0_0d = 1; + data->unk0_0a = 1; + data->unk1 = 0; + } + else if (data->unk0_1 == 3) + { + data->unk0_0b ^= 1; + data->unk1 = 0; + } + else if (data->unk0_0d) + { + sprite->hFlip ^= 1; + sprite->animNum = sprite->hFlip; + sprite->animBeginning = 1; + sprite->animEnded = 0; + if (data->unk0_0c) + { + if (!IsContest()) + { + if (!data->unkE_0) + sprite->oam.priority--; + else + sprite->oam.priority++; + } + else + { + if (!data->unkE_0) + sprite->subpriority -= 12; + else + sprite->subpriority += 12; + } + data->unkE_0 ^= 1; + } + data->unk0_0d = 0; + } + data->unk0_1 = 0; + break; + case 1: + if (data->unk0_1 == 0) + { + data->unk0_0d = 1; + data->unk0_0a = 1; + data->unk1 = 0; + } + else if (data->unk0_1 == 2) + { + data->unk0_0a = 1; + data->unk1 = 0; + } + else if (data->unk0_0d) + { + sprite->hFlip ^= 1; + sprite->animNum = sprite->hFlip; + sprite->animBeginning = 1; + sprite->animEnded = 0; + if (data->unk0_0c) + { + if (!IsContest()) + { + if (!data->unkE_0) + sprite->oam.priority--; + else + sprite->oam.priority++; + } + else + { + if (!data->unkE_0) + sprite->subpriority -= 12; + else + sprite->subpriority += 12; + } + data->unkE_0 ^= 1; + } + data->unk0_0d = 0; + } + data->unk0_1 = 1; + break; + case 2: + if (data->unk0_1 == 0) + { + data->unk0_0d = 1; + data->unk0_0a = 1; + data->unk1 = 0; + } + else if (data->unk0_1 == 2) + { + data->unk0_0a = 1; + data->unk1 = 0; + } + else if (data->unk0_0d) + { + sprite->hFlip ^= 1; + sprite->animNum = sprite->hFlip; + sprite->animBeginning = 1; + sprite->animEnded = 0; + if (data->unk0_0c) + { + if (!IsContest()) + { + if (!data->unkE_0) + sprite->oam.priority--; + else + sprite->oam.priority++; + } + else + { + if (!data->unkE_0) + sprite->subpriority -= 12; + else + sprite->subpriority += 12; + } + data->unkE_0 ^= 1; + } + data->unk0_0d = 0; + } + data->unk0_1 = 2; + break; + case 3: + if (data->unk0_1 == 2) + { + data->unk0_0d = 1; + } + else if (data->unk0_1 == 0) + { + data->unk0_0b ^= 1; + data->unk1 = 0; + } + else if (data->unk0_0d) + { + sprite->hFlip ^= 1; + sprite->animNum = sprite->hFlip; + sprite->animBeginning = 1; + sprite->animEnded = 0; + if (data->unk0_0c) + { + if (!IsContest()) + { + if (!data->unkE_0) + sprite->oam.priority--; + else + sprite->oam.priority++; + } + else + { + if (!data->unkE_0) + sprite->subpriority -= 12; + else + sprite->subpriority += 12; + } + data->unkE_0 ^= 1; + } + data->unk0_0d = 0; + } + data->unk0_1 = 3; + break; + } + + var = data->unkC[data->unk0_0b]; + sprite->pos2.x = (gSineTable[data->unk2] * var) >> 8; + matrixNum = sprite->oam.matrixNum; + + sinIndex = (-sprite->pos2.x >> 1) + data->unkA; + sinVal = gSineTable[sinIndex]; + + gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[sinIndex + 64]; + gOamMatrices[matrixNum].b = sinVal; + gOamMatrices[matrixNum].c = -sinVal; + + data->unk8 += data->unk6; + sprite->pos1.y = data->unk8 >> 8; + if (data->unk4 & 0x8000) + data->unk2 = (data->unk2 - (data->unk4 & 0x7FFF)) & 0xFF; + else + data->unk2 = (data->unk2 + (data->unk4 & 0x7FFF)) & 0xFF; + + if (sprite->pos1.y + sprite->pos2.y > data->unkE_1) + { + sprite->data[0] = 0; + sprite->callback = sub_810E2C8; + } + } +} +#else +NAKED +void sub_810E520(struct Sprite *sprite) +{ + asm_unified("push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + adds r5, r0, 0\n\ + movs r6, 0\n\ + adds r4, r5, 0\n\ + adds r4, 0x2E\n\ + ldrb r2, [r4]\n\ + movs r7, 0x1\n\ + movs r0, 0x1\n\ + mov r9, r0\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _0810E55A\n\ + ldrb r0, [r4, 0x1]\n\ + adds r1, r0, 0\n\ + adds r1, 0xFF\n\ + strb r1, [r4, 0x1]\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _0810E54E\n\ + b _0810EA36\n\ +_0810E54E:\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + ands r0, r2\n\ + strb r0, [r4]\n\ + strb r6, [r4, 0x1]\n\ + b _0810EA36\n\ +_0810E55A:\n\ + ldrh r0, [r4, 0x2]\n\ + lsrs r1, r0, 6\n\ + mov r12, r0\n\ + cmp r1, 0x1\n\ + bne _0810E566\n\ + b _0810E68A\n\ +_0810E566:\n\ + cmp r1, 0x1\n\ + bgt _0810E570\n\ + cmp r1, 0\n\ + beq _0810E57E\n\ + b _0810E97C\n\ +_0810E570:\n\ + cmp r1, 0x2\n\ + bne _0810E576\n\ + b _0810E77E\n\ +_0810E576:\n\ + cmp r1, 0x3\n\ + bne _0810E57C\n\ + b _0810E872\n\ +_0810E57C:\n\ + b _0810E97C\n\ +_0810E57E:\n\ + lsls r1, r2, 24\n\ + lsrs r0, r1, 28\n\ + cmp r0, 0x1\n\ + bne _0810E592\n\ + movs r0, 0x8\n\ + orrs r0, r2\n\ + orrs r0, r7\n\ + strb r0, [r4]\n\ + strb r6, [r4, 0x1]\n\ + b _0810E680\n\ +_0810E592:\n\ + lsrs r0, r1, 28\n\ + cmp r0, 0x3\n\ + bne _0810E5B4\n\ + lsls r0, r2, 30\n\ + lsrs r0, 31\n\ + movs r1, 0x1\n\ + eors r0, r1\n\ + ands r0, r7\n\ + lsls r0, 1\n\ + movs r1, 0x3\n\ + negs r1, r1\n\ + ands r1, r2\n\ + orrs r1, r0\n\ + orrs r1, r7\n\ + strb r1, [r4]\n\ + strb r6, [r4, 0x1]\n\ + b _0810E680\n\ +_0810E5B4:\n\ + movs r0, 0x8\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _0810E680\n\ + adds r3, r5, 0\n\ + adds r3, 0x3F\n\ + ldrb r2, [r3]\n\ + lsls r1, r2, 31\n\ + lsrs r1, 31\n\ + movs r6, 0x1\n\ + eors r1, r6\n\ + ands r1, r7\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + mov r8, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r3]\n\ + lsls r0, 31\n\ + lsrs r0, 31\n\ + adds r1, r5, 0\n\ + adds r1, 0x2A\n\ + strb r0, [r1]\n\ + ldrb r0, [r3]\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + movs r1, 0x11\n\ + negs r1, r1\n\ + ands r0, r1\n\ + strb r0, [r3]\n\ + ldrb r1, [r4]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0810E672\n\ + bl IsContest\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0810E642\n\ + ldrb r1, [r4, 0xE]\n\ + mov r0, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0810E628\n\ + ldrb r2, [r5, 0x5]\n\ + lsls r1, r2, 28\n\ + lsrs r1, 30\n\ + subs r1, 0x1\n\ + movs r0, 0x3\n\ + ands r1, r0\n\ + lsls r1, 2\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x5]\n\ + b _0810E660\n\ +_0810E628:\n\ + ldrb r2, [r5, 0x5]\n\ + lsls r1, r2, 28\n\ + lsrs r1, 30\n\ + adds r1, 0x1\n\ + movs r0, 0x3\n\ + ands r1, r0\n\ + lsls r1, 2\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x5]\n\ + b _0810E660\n\ +_0810E642:\n\ + ldrb r1, [r4, 0xE]\n\ + mov r0, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0810E656\n\ + adds r1, r5, 0\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + subs r0, 0xC\n\ + b _0810E65E\n\ +_0810E656:\n\ + adds r1, r5, 0\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + adds r0, 0xC\n\ +_0810E65E:\n\ + strb r0, [r1]\n\ +_0810E660:\n\ + ldrb r2, [r4, 0xE]\n\ + lsls r0, r2, 31\n\ + lsrs r0, 31\n\ + eors r0, r6\n\ + ands r0, r7\n\ + mov r1, r8\n\ + ands r1, r2\n\ + orrs r1, r0\n\ + strb r1, [r4, 0xE]\n\ +_0810E672:\n\ + ldrb r1, [r4]\n\ + movs r0, 0x9\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r4]\n\ + ldrh r1, [r4, 0x2]\n\ + mov r12, r1\n\ +_0810E680:\n\ + ldrb r1, [r4]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + strb r0, [r4]\n\ + b _0810E97C\n\ +_0810E68A:\n\ + lsls r1, r2, 24\n\ + lsrs r0, r1, 28\n\ + cmp r0, 0\n\ + bne _0810E698\n\ + movs r0, 0x8\n\ + orrs r0, r2\n\ + b _0810E6A0\n\ +_0810E698:\n\ + lsrs r0, r1, 28\n\ + cmp r0, 0x2\n\ + bne _0810E6A8\n\ + adds r0, r2, 0\n\ +_0810E6A0:\n\ + orrs r0, r7\n\ + strb r0, [r4]\n\ + strb r6, [r4, 0x1]\n\ + b _0810E774\n\ +_0810E6A8:\n\ + movs r0, 0x8\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _0810E774\n\ + adds r3, r5, 0\n\ + adds r3, 0x3F\n\ + ldrb r2, [r3]\n\ + lsls r1, r2, 31\n\ + lsrs r1, 31\n\ + movs r6, 0x1\n\ + eors r1, r6\n\ + ands r1, r7\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + mov r8, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r3]\n\ + lsls r0, 31\n\ + lsrs r0, 31\n\ + adds r1, r5, 0\n\ + adds r1, 0x2A\n\ + strb r0, [r1]\n\ + ldrb r0, [r3]\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + movs r1, 0x11\n\ + negs r1, r1\n\ + ands r0, r1\n\ + strb r0, [r3]\n\ + ldrb r1, [r4]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0810E766\n\ + bl IsContest\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0810E736\n\ + ldrb r1, [r4, 0xE]\n\ + mov r0, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0810E71C\n\ + ldrb r2, [r5, 0x5]\n\ + lsls r1, r2, 28\n\ + lsrs r1, 30\n\ + subs r1, 0x1\n\ + movs r0, 0x3\n\ + ands r1, r0\n\ + lsls r1, 2\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x5]\n\ + b _0810E754\n\ +_0810E71C:\n\ + ldrb r2, [r5, 0x5]\n\ + lsls r1, r2, 28\n\ + lsrs r1, 30\n\ + adds r1, 0x1\n\ + movs r0, 0x3\n\ + ands r1, r0\n\ + lsls r1, 2\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x5]\n\ + b _0810E754\n\ +_0810E736:\n\ + ldrb r1, [r4, 0xE]\n\ + mov r0, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0810E74A\n\ + adds r1, r5, 0\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + subs r0, 0xC\n\ + b _0810E752\n\ +_0810E74A:\n\ + adds r1, r5, 0\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + adds r0, 0xC\n\ +_0810E752:\n\ + strb r0, [r1]\n\ +_0810E754:\n\ + ldrb r2, [r4, 0xE]\n\ + lsls r0, r2, 31\n\ + lsrs r0, 31\n\ + eors r0, r6\n\ + ands r0, r7\n\ + mov r1, r8\n\ + ands r1, r2\n\ + orrs r1, r0\n\ + strb r1, [r4, 0xE]\n\ +_0810E766:\n\ + ldrb r1, [r4]\n\ + movs r0, 0x9\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r4]\n\ + ldrh r1, [r4, 0x2]\n\ + mov r12, r1\n\ +_0810E774:\n\ + ldrb r0, [r4]\n\ + movs r1, 0xF\n\ + ands r1, r0\n\ + movs r0, 0x10\n\ + b _0810E978\n\ +_0810E77E:\n\ + lsls r1, r2, 24\n\ + lsrs r0, r1, 28\n\ + cmp r0, 0x3\n\ + bne _0810E78C\n\ + movs r0, 0x8\n\ + orrs r0, r2\n\ + b _0810E794\n\ +_0810E78C:\n\ + lsrs r0, r1, 28\n\ + cmp r0, 0x1\n\ + bne _0810E79C\n\ + adds r0, r2, 0\n\ +_0810E794:\n\ + orrs r0, r7\n\ + strb r0, [r4]\n\ + strb r6, [r4, 0x1]\n\ + b _0810E868\n\ +_0810E79C:\n\ + movs r0, 0x8\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _0810E868\n\ + adds r3, r5, 0\n\ + adds r3, 0x3F\n\ + ldrb r2, [r3]\n\ + lsls r1, r2, 31\n\ + lsrs r1, 31\n\ + movs r6, 0x1\n\ + eors r1, r6\n\ + ands r1, r7\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + mov r8, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r3]\n\ + lsls r0, 31\n\ + lsrs r0, 31\n\ + adds r1, r5, 0\n\ + adds r1, 0x2A\n\ + strb r0, [r1]\n\ + ldrb r0, [r3]\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + movs r1, 0x11\n\ + negs r1, r1\n\ + ands r0, r1\n\ + strb r0, [r3]\n\ + ldrb r1, [r4]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0810E85A\n\ + bl IsContest\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0810E82A\n\ + ldrb r1, [r4, 0xE]\n\ + mov r0, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0810E810\n\ + ldrb r2, [r5, 0x5]\n\ + lsls r1, r2, 28\n\ + lsrs r1, 30\n\ + subs r1, 0x1\n\ + movs r0, 0x3\n\ + ands r1, r0\n\ + lsls r1, 2\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x5]\n\ + b _0810E848\n\ +_0810E810:\n\ + ldrb r2, [r5, 0x5]\n\ + lsls r1, r2, 28\n\ + lsrs r1, 30\n\ + adds r1, 0x1\n\ + movs r0, 0x3\n\ + ands r1, r0\n\ + lsls r1, 2\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x5]\n\ + b _0810E848\n\ +_0810E82A:\n\ + ldrb r1, [r4, 0xE]\n\ + mov r0, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0810E83E\n\ + adds r1, r5, 0\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + subs r0, 0xC\n\ + b _0810E846\n\ +_0810E83E:\n\ + adds r1, r5, 0\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + adds r0, 0xC\n\ +_0810E846:\n\ + strb r0, [r1]\n\ +_0810E848:\n\ + ldrb r2, [r4, 0xE]\n\ + lsls r0, r2, 31\n\ + lsrs r0, 31\n\ + eors r0, r6\n\ + ands r0, r7\n\ + mov r1, r8\n\ + ands r1, r2\n\ + orrs r1, r0\n\ + strb r1, [r4, 0xE]\n\ +_0810E85A:\n\ + ldrb r1, [r4]\n\ + movs r0, 0x9\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r4]\n\ + ldrh r1, [r4, 0x2]\n\ + mov r12, r1\n\ +_0810E868:\n\ + ldrb r0, [r4]\n\ + movs r1, 0xF\n\ + ands r1, r0\n\ + movs r0, 0x20\n\ + b _0810E978\n\ +_0810E872:\n\ + lsls r1, r2, 24\n\ + lsrs r0, r1, 28\n\ + cmp r0, 0x2\n\ + bne _0810E882\n\ + movs r0, 0x8\n\ + orrs r0, r2\n\ + strb r0, [r4]\n\ + b _0810E970\n\ +_0810E882:\n\ + lsrs r0, r1, 28\n\ + cmp r0, 0\n\ + bne _0810E8A4\n\ + lsls r0, r2, 30\n\ + lsrs r0, 31\n\ + movs r1, 0x1\n\ + eors r0, r1\n\ + ands r0, r7\n\ + lsls r0, 1\n\ + movs r1, 0x3\n\ + negs r1, r1\n\ + ands r1, r2\n\ + orrs r1, r0\n\ + orrs r1, r7\n\ + strb r1, [r4]\n\ + strb r6, [r4, 0x1]\n\ + b _0810E970\n\ +_0810E8A4:\n\ + movs r0, 0x8\n\ + ands r0, r2\n\ + cmp r0, 0\n\ + beq _0810E970\n\ + adds r3, r5, 0\n\ + adds r3, 0x3F\n\ + ldrb r2, [r3]\n\ + lsls r1, r2, 31\n\ + lsrs r1, 31\n\ + movs r6, 0x1\n\ + eors r1, r6\n\ + ands r1, r7\n\ + movs r0, 0x2\n\ + negs r0, r0\n\ + mov r8, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r3]\n\ + lsls r0, 31\n\ + lsrs r0, 31\n\ + adds r1, r5, 0\n\ + adds r1, 0x2A\n\ + strb r0, [r1]\n\ + ldrb r0, [r3]\n\ + movs r1, 0x4\n\ + orrs r0, r1\n\ + movs r1, 0x11\n\ + negs r1, r1\n\ + ands r0, r1\n\ + strb r0, [r3]\n\ + ldrb r1, [r4]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0810E962\n\ + bl IsContest\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _0810E932\n\ + ldrb r1, [r4, 0xE]\n\ + mov r0, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0810E918\n\ + ldrb r2, [r5, 0x5]\n\ + lsls r1, r2, 28\n\ + lsrs r1, 30\n\ + subs r1, 0x1\n\ + movs r0, 0x3\n\ + ands r1, r0\n\ + lsls r1, 2\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x5]\n\ + b _0810E950\n\ +_0810E918:\n\ + ldrb r2, [r5, 0x5]\n\ + lsls r1, r2, 28\n\ + lsrs r1, 30\n\ + adds r1, 0x1\n\ + movs r0, 0x3\n\ + ands r1, r0\n\ + lsls r1, 2\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x5]\n\ + b _0810E950\n\ +_0810E932:\n\ + ldrb r1, [r4, 0xE]\n\ + mov r0, r9\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0810E946\n\ + adds r1, r5, 0\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + subs r0, 0xC\n\ + b _0810E94E\n\ +_0810E946:\n\ + adds r1, r5, 0\n\ + adds r1, 0x43\n\ + ldrb r0, [r1]\n\ + adds r0, 0xC\n\ +_0810E94E:\n\ + strb r0, [r1]\n\ +_0810E950:\n\ + ldrb r2, [r4, 0xE]\n\ + lsls r0, r2, 31\n\ + lsrs r0, 31\n\ + eors r0, r6\n\ + ands r0, r7\n\ + mov r1, r8\n\ + ands r1, r2\n\ + orrs r1, r0\n\ + strb r1, [r4, 0xE]\n\ +_0810E962:\n\ + ldrb r1, [r4]\n\ + movs r0, 0x9\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r4]\n\ + ldrh r1, [r4, 0x2]\n\ + mov r12, r1\n\ +_0810E970:\n\ + ldrb r0, [r4]\n\ + movs r1, 0xF\n\ + ands r1, r0\n\ + movs r0, 0x30\n\ +_0810E978:\n\ + orrs r1, r0\n\ + strb r1, [r4]\n\ +_0810E97C:\n\ + ldrb r1, [r4]\n\ + lsls r1, 30\n\ + lsrs r1, 31\n\ + adds r0, r4, 0\n\ + adds r0, 0xC\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + ldr r3, =gSineTable\n\ + mov r2, r12\n\ + lsls r0, r2, 1\n\ + adds r0, r3\n\ + movs r2, 0\n\ + ldrsh r0, [r0, r2]\n\ + muls r0, r1\n\ + asrs r0, 8\n\ + strh r0, [r5, 0x24]\n\ + ldrb r2, [r5, 0x3]\n\ + lsls r2, 26\n\ + lsrs r2, 27\n\ + movs r1, 0x24\n\ + ldrsh r0, [r5, r1]\n\ + negs r0, r0\n\ + asrs r0, 1\n\ + ldrb r1, [r4, 0xA]\n\ + adds r0, r1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, r0, 1\n\ + adds r1, r3\n\ + ldrh r6, [r1]\n\ + ldr r1, =gOamMatrices\n\ + lsls r2, 3\n\ + adds r2, r1\n\ + adds r0, 0x40\n\ + lsls r0, 1\n\ + adds r0, r3\n\ + ldrh r0, [r0]\n\ + strh r0, [r2, 0x6]\n\ + strh r0, [r2]\n\ + strh r6, [r2, 0x2]\n\ + lsls r0, r6, 16\n\ + asrs r0, 16\n\ + negs r0, r0\n\ + strh r0, [r2, 0x4]\n\ + ldrh r0, [r4, 0x6]\n\ + ldrh r2, [r4, 0x8]\n\ + adds r0, r2\n\ + strh r0, [r4, 0x8]\n\ + lsls r0, 16\n\ + lsrs r0, 24\n\ + strh r0, [r5, 0x22]\n\ + movs r1, 0x4\n\ + ldrsh r0, [r4, r1]\n\ + movs r1, 0x80\n\ + lsls r1, 8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0810EA0C\n\ + ldrh r0, [r4, 0x4]\n\ + subs r1, 0x1\n\ + ands r1, r0\n\ + ldrh r0, [r4, 0x2]\n\ + subs r0, r1\n\ + movs r1, 0xFF\n\ + ands r0, r1\n\ + strh r0, [r4, 0x2]\n\ + b _0810EA1C\n\ + .pool\n\ +_0810EA0C:\n\ + ldrh r0, [r4, 0x4]\n\ + ldr r1, =0x00007fff\n\ + ands r1, r0\n\ + ldrh r2, [r4, 0x2]\n\ + adds r1, r2\n\ + movs r0, 0xFF\n\ + ands r1, r0\n\ + strh r1, [r4, 0x2]\n\ +_0810EA1C:\n\ + movs r0, 0x22\n\ + ldrsh r1, [r5, r0]\n\ + movs r2, 0x26\n\ + ldrsh r0, [r5, r2]\n\ + adds r1, r0\n\ + ldrh r0, [r4, 0xE]\n\ + lsrs r0, 1\n\ + cmp r1, r0\n\ + blt _0810EA36\n\ + movs r0, 0\n\ + strh r0, [r5, 0x2E]\n\ + ldr r0, =sub_810E2C8\n\ + str r0, [r5, 0x1C]\n\ +_0810EA36:\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .pool\n\ + "); +} +#endif + +void sub_810EA4C(struct Sprite *sprite) +{ + sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->callback = TranslateAnimSpriteToTargetMonLocation; +} + +void sub_810EAA0(struct Sprite * sprite) +{ + u16 arg; + u8 mult; + + if (!gBattleAnimArgs[2]) + InitSpritePosToAnimAttacker(sprite, 0); + else + InitSpritePosToAnimTarget(sprite, FALSE); + + if ((!gBattleAnimArgs[2] && !GetBattlerSide(gBattleAnimAttacker)) + || (gBattleAnimArgs[2] == 1 && !GetBattlerSide(gBattleAnimTarget))) + { + sprite->pos1.x += 8; + } + + SeekSpriteAnim(sprite, gBattleAnimArgs[4]); + sprite->pos1.x -= 32; + sprite->data[1] = 0x0ccc; + + arg = gBattleAnimArgs[4]; + mult = 12; + sprite->pos2.x += mult * arg; + sprite->data[0] = arg; + sprite->data[7] = gBattleAnimArgs[3]; + sprite->callback = sub_810EB40; +} + +void sub_810EB40(struct Sprite *sprite) +{ + sprite->pos2.x += sprite->data[1] >> 8; + + if (++sprite->data[0] == 6) + { + sprite->data[0] = 0; + sprite->pos2.x = 0; + StartSpriteAnim(sprite, 0); + } + + if (--sprite->data[7] == -1) + DestroyAnimSprite(sprite); +} + +void sub_810EB88(u8 task) +{ + if (!(gTasks[task].data[0] % 32)) + { + gAnimVisualTaskCount++; + + gBattleAnimArgs[0] = Sin(gTasks[task].data[0], -13); + gBattleAnimArgs[1] = Cos(gTasks[task].data[0], -13); + gBattleAnimArgs[2] = 1; + gBattleAnimArgs[3] = 3; + + CreateSpriteAndAnimate(&gUnknown_085973E8, + GetBattlerSpriteCoord(gBattleAnimTarget, 2), + GetBattlerSpriteCoord(gBattleAnimTarget, 3), + 3); + } + + gTasks[task].data[0] += 8; + + if (gTasks[task].data[0] > 255) + DestroyAnimVisualTask(task); +} + +void sub_810EC34(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + InitSpritePosToAnimAttacker(sprite, 1); + gSprites[GetAnimBattlerSpriteId(0)].invisible = 1; + ++sprite->data[0]; + break; + case 1: + if (sprite->affineAnimEnded) + DestroyAnimSprite(sprite); + break; + } +} + +void sub_810EC94(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->pos2.y = -sprite->pos1.y - 32; + sprite->data[0]++; + break; + case 1: + sprite->pos2.y += 10; + if (sprite->pos2.y >= 0) + ++sprite->data[0]; + break; + case 2: + sprite->pos2.y -= 10; + if (sprite->pos1.y + sprite->pos2.y < -32) + { + gSprites[GetAnimBattlerSpriteId(0)].invisible = 0; + DestroyAnimSprite(sprite); + } + break; + } +} + +void sub_810ED28(struct Sprite *sprite) +{ + InitSpritePosToAnimAttacker(sprite, 1); + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[3]; + sprite->callback = sub_810ED70; + gSprites[GetAnimBattlerSpriteId(0)].invisible = 1; +} + +void sub_810ED70(struct Sprite *sprite) +{ + if (sprite->data[0] > 0) + { + sprite->data[0]--; + } + else if (sprite->pos1.y + sprite->pos2.y > -32) + { + sprite->data[2] += sprite->data[1]; + sprite->pos2.y -= (sprite->data[2] >> 8); + } + else + { + sprite->invisible = 1; + if (sprite->data[3]++ > 20) + sprite->callback = sub_810EDD0; + } +} + +void sub_810EDD0(struct Sprite *sprite) +{ + sprite->pos2.y += sprite->data[2] >> 8; + + if (sprite->pos1.y + sprite->pos2.y > -32) + sprite->invisible = 0; + + if (sprite->pos2.y > 0) + DestroyAnimSprite(sprite); +} + +void sub_810EE14(struct Sprite *sprite) +{ + u32 matrixNum; + int t1, t2; + + switch (sprite->data[0]) + { + case 0: + if (!gBattleAnimArgs[0]) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + } + + sprite->data[1] = 512; + + TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0); + sprite->data[0]++; + break; + case 1: + if (sprite->data[2] <= 11) + sprite->data[1] -= 40; + else + sprite->data[1] += 40; + + sprite->data[2]++; + + TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0); + + matrixNum = sprite->oam.matrixNum; + + t1 = 15616; + t2 = t1 / gOamMatrices[matrixNum].d + 1; + + if (t2 > 128) + t2 = 128; + + t2 = (64 - t2) / 2; + sprite->pos2.y = t2; + + if (sprite->data[2] == 24) + { + sub_80A749C(sprite); + DestroyAnimSprite(sprite); + } + break; + } +} + +void sub_810EEF8(struct Sprite *sprite) +{ + int v1 = 0x1ff & Random2(); + int v2 = 0x7f & Random2(); + + if (v1 % 2) + sprite->data[0] = 736 + v1; + else + sprite->data[0] = 736 - v1; + + if (v2 % 2) + sprite->data[1] = 896 + v2; + else + sprite->data[1] = 896 - v2; + + sprite->data[2] = gBattleAnimArgs[0]; + + if (sprite->data[2]) + sprite->oam.matrixNum = 8; + + if (gBattleAnimArgs[1] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32; + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32; + } + + sprite->callback = sub_810EFA8; +} + +void sub_810EFA8(struct Sprite *sprite) +{ + if (sprite->data[2] == 0) + { + sprite->pos2.x += sprite->data[0] >> 8; + sprite->pos2.y -= sprite->data[1] >> 8; + } + else + { + sprite->pos2.x -= sprite->data[0] >> 8; + sprite->pos2.y -= sprite->data[1] >> 8; + } + + sprite->data[0] = sprite->data[0]; + sprite->data[1] -= 32; + + if (sprite->data[0] < 0) + sprite->data[0] = 0; + + if (++sprite->data[3] == 31) + DestroyAnimSprite(sprite); +} + +void sub_810F004(struct Sprite *sprite) +{ + sprite->data[6] = 0; + sprite->data[7] = 64; + sprite->callback = sub_810F018; +} + +void sub_810F018(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[1] > 8) + { + sprite->data[1] = 0; + sprite->invisible ^= 1; + if (++sprite->data[2] > 5 && sprite->invisible) + sprite->data[0]++; + } + break; + case 1: + DestroyAnimSprite(sprite); + break; + } +} + +void sub_810F084(struct Sprite *sprite) +{ + u16 rotation; + s16 posx = sprite->pos1.x; + s16 posy = sprite->pos1.y; + + sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + + sprite->data[4] = sprite->pos1.x << 4; + sprite->data[5] = sprite->pos1.y << 4; + + sprite->data[6] = ((posx - sprite->pos1.x) << 4) / 12; + sprite->data[7] = ((posy - sprite->pos1.y) << 4) / 12; + + rotation = ArcTan2Neg(posx - sprite->pos1.x, posy - sprite->pos1.y); + rotation += 49152; + + TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation); + + sprite->callback = sub_810F140; +} + +void sub_810F140(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; + + if (sprite->pos1.x > 285 || sprite->pos1.x < -45 + || sprite->pos1.y > 157 || sprite->pos1.y < -45) + DestroySpriteAndMatrix(sprite); +} + +void unref_sub_810F184(u8 taskId) +{ + if (gBattleAnimArgs[0] == 0) + { + u8 spriteId = GetAnimBattlerSpriteId(0); + gSprites[spriteId].invisible = 1; + } + else + { + u8 spriteId = GetAnimBattlerSpriteId(0); + gSprites[spriteId].invisible = 0; + } + DestroyAnimVisualTask(taskId); +} diff --git a/src/frontier_pass.c b/src/frontier_pass.c index 0db546c4d..fff93c3c7 100644 --- a/src/frontier_pass.c +++ b/src/frontier_pass.c @@ -1090,7 +1090,7 @@ static void ShowAndPrintWindows(void) for (i = 0; i < WINDOW_COUNT; i++) { PutWindowTilemap(i); - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); } x = GetStringCenterAlignXOffset(1, gText_SymbolsEarned, 96); @@ -1116,7 +1116,7 @@ static void ShowAndPrintWindows(void) static void PrintAreaDescription(u8 cursorArea) { - FillWindowPixelBuffer(WINDOW_DESCRIPTION, 0); + FillWindowPixelBuffer(WINDOW_DESCRIPTION, PIXEL_FILL(0)); if (cursorArea == CURSOR_AREA_RECORD && !sPassData->hasBattleRecord) AddTextPrinterParameterized3(WINDOW_DESCRIPTION, 1, 2, 0, sTextColors[1], 0, sPassAreaDescriptions[0]); else if (cursorArea != CURSOR_AREA_NOTHING) @@ -1656,7 +1656,7 @@ static void PrintOnFrontierMap(void) for (i = 0; i < MAP_WINDOW_COUNT; i++) { PutWindowTilemap(i); - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); } for (i = 0; i < NUM_FRONTIER_FACILITIES; i++) @@ -1698,7 +1698,7 @@ static void HandleFrontierMapCursorMove(u8 direction) StartSpriteAnim(sMapData->mapIndicatorSprite, sMapLandmarks[sMapData->cursorPos].animNum); sMapData->mapIndicatorSprite->pos1.x = sMapLandmarks[sMapData->cursorPos].x; sMapData->mapIndicatorSprite->pos1.y = sMapLandmarks[sMapData->cursorPos].y; - FillWindowPixelBuffer(MAP_WINDOW_DESCRIPTION, 0); + FillWindowPixelBuffer(MAP_WINDOW_DESCRIPTION, PIXEL_FILL(0)); AddTextPrinterParameterized3(MAP_WINDOW_DESCRIPTION, 1, 4, 0, sTextColors[0], 0, sMapLandmarks[sMapData->cursorPos].description); for (i = 0; i < 3; i++) diff --git a/src/frontier_util.c b/src/frontier_util.c index 6fcbd4ffb..bce7b926f 100644 --- a/src/frontier_util.c +++ b/src/frontier_util.c @@ -35,8 +35,7 @@ #include "constants/moves.h" #include "constants/items.h" #include "constants/event_objects.h" - -extern u8 gSelectedOrderFromParty[]; +#include "party_menu.h" struct FrontierBrainMon { @@ -48,8 +47,6 @@ struct FrontierBrainMon u16 moves[4]; }; -extern void sub_81B8558(void); - // This file's functions. static void sub_81A17A0(void); static void sub_81A1830(void); @@ -1044,8 +1041,8 @@ static void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x static void ShowTowerResultsWindow(u8 battleMode) { gRecordsWindowId = AddWindow(&gUnknown_08611C74); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); if (battleMode == FRONTIER_MODE_SINGLES) StringExpandPlaceholders(gStringVar4, gText_SingleBattleRoomResults); else if (battleMode == FRONTIER_MODE_DOUBLES) @@ -1115,8 +1112,8 @@ static void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2 static void ShowDomeResultsWindow(u8 battleMode) { gRecordsWindowId = AddWindow(&gUnknown_08611C74); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); if (battleMode == FRONTIER_MODE_SINGLES) StringExpandPlaceholders(gStringVar4, gText_SingleBattleTourneyResults); else @@ -1191,8 +1188,8 @@ static void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 static void ShowPalaceResultsWindow(u8 battleMode) { gRecordsWindowId = AddWindow(&gUnknown_08611C74); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); if (battleMode == FRONTIER_MODE_SINGLES) StringExpandPlaceholders(gStringVar4, gText_SingleBattleHallResults); else @@ -1247,8 +1244,8 @@ static void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y) static void ShowPikeResultsWindow(void) { gRecordsWindowId = AddWindow(&gUnknown_08611C74); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); StringExpandPlaceholders(gStringVar4, gText_BattleChoiceResults); PrintAligned(gStringVar4, 0); AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 33, TEXT_SPEED_FF, NULL); @@ -1309,8 +1306,8 @@ static void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y) static void ShowArenaResultsWindow(void) { gRecordsWindowId = AddWindow(&gUnknown_08611C74); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); PrintHyphens(10); StringExpandPlaceholders(gStringVar4, gText_SetKOTourneyResults); PrintAligned(gStringVar4, 2); @@ -1395,8 +1392,8 @@ static void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 static void ShowFactoryResultsWindow(u8 battleMode) { gRecordsWindowId = AddWindow(&gUnknown_08611C74); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); if (battleMode == FRONTIER_MODE_SINGLES) StringExpandPlaceholders(gStringVar4, gText_BattleSwapSingleResults); else @@ -1460,8 +1457,8 @@ static void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y) static void ShowPyramidResultsWindow(void) { gRecordsWindowId = AddWindow(&gUnknown_08611C74); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); StringExpandPlaceholders(gStringVar4, gText_BattleQuestResults); PrintAligned(gStringVar4, 2); AddTextPrinterParameterized(gRecordsWindowId, 1, gText_Lv502, 8, 49, TEXT_SPEED_FF, NULL); @@ -1483,8 +1480,8 @@ static void ShowLinkContestResultsWindow(void) s32 x; gRecordsWindowId = AddWindow(&gUnknown_08611C7C); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); StringExpandPlaceholders(gStringVar4, gText_LinkContestResults); x = GetStringCenterAlignXOffset(1, gStringVar4, 208); @@ -2353,8 +2350,8 @@ static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode) void ShowRankingHallRecordsWindow(void) { gRecordsWindowId = AddWindow(&gUnknown_08611C84); - NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE); - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + DrawStdWindowFrame(gRecordsWindowId, FALSE); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_50); PutWindowTilemap(gRecordsWindowId); CopyWindowToVram(gRecordsWindowId, 3); @@ -2362,7 +2359,7 @@ void ShowRankingHallRecordsWindow(void) void ScrollRankingHallRecordsWindow(void) { - FillWindowPixelBuffer(gRecordsWindowId, 0x11); + FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_OPEN); CopyWindowToVram(gRecordsWindowId, 2); } diff --git a/src/graphics.c b/src/graphics.c index c6af13477..a3b9eb913 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1152,16 +1152,16 @@ const u32 gStatusPal_Icons[] = INCBIN_U32("graphics/interface/status_icons.gbapa const u32 gMoveTypes_Gfx[] = INCBIN_U32("graphics/types/move_types.4bpp.lz"); const u32 gMoveTypes_Pal[] = INCBIN_U32("graphics/types/move_types.gbapal.lz"); -const u32 gUnknown_08D97BEC[] = INCBIN_U32("graphics/interface/summary_frames.4bpp.lz"); +const u32 gMoveSelectorBitmap[] = INCBIN_U32("graphics/interface/summary_frames.4bpp.lz"); const u32 gUnknown_08D97CF4[] = INCBIN_U32("graphics/interface/summary_frames.gbapal.lz"); -const u32 gUnknown_08D97D0C[] = INCBIN_U32("graphics/interface/status_screen.4bpp.lz"); -const u32 gUnknown_08D9853C[] = INCBIN_U32("graphics/interface/status_screen.gbapal.lz"); -const u32 gUnknown_08D9862C[] = INCBIN_U32("graphics/interface/status_screen.bin.lz"); +const u32 gStatusScreenBitmap[] = INCBIN_U32("graphics/interface/status_screen.4bpp.lz"); +const u32 gStatusScreenPalette[] = INCBIN_U32("graphics/interface/status_screen.gbapal.lz"); +const u32 gPageInfoTilemap[] = INCBIN_U32("graphics/interface/status_screen.bin.lz"); -const u32 gUnknown_08D987FC[] = INCBIN_U32("graphics/interface/status_tilemap1.bin.lz"); -const u32 gUnknown_08D9898C[] = INCBIN_U32("graphics/interface/status_tilemap2.bin.lz"); -const u32 gUnknown_08D98B28[] = INCBIN_U32("graphics/interface/status_tilemap3.bin.lz"); +const u32 gPageSkillsTilemap[] = INCBIN_U32("graphics/interface/status_tilemap1.bin.lz"); +const u32 gPageBattleMovesTilemap[] = INCBIN_U32("graphics/interface/status_tilemap2.bin.lz"); +const u32 gPageContestMovesTilemap[] = INCBIN_U32("graphics/interface/status_tilemap3.bin.lz"); const u32 gUnknown_08D98CC8[] = INCBIN_U32("graphics/interface/status_tilemap0.bin.lz"); const u32 gBagMaleTiles[] = INCBIN_U32("graphics/misc/bag_male.4bpp.lz"); diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 3f217b782..2c31dba01 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -66,8 +66,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM; #define HALL_OF_FAME_MAX_TEAMS 50 -extern void ReturnFromHallOfFamePC(void); - // this file's functions static void ClearVramOamPltt_LoadHofPal(void); static void sub_8174F70(void); @@ -490,7 +488,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId) } *lastSavedTeam = *sHofMonPtr; - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, 1, gText_SavingDontTurnOffPower, 0, NULL, 2, 1, 3); CopyWindowToVram(0, 3); gTasks[taskId].func = Task_Hof_TrySaveData; @@ -570,7 +568,7 @@ static void Task_Hof_DisplayMon(u8 taskId) gSprites[spriteId].tSpecies = currMon->species; gSprites[spriteId].callback = SpriteCB_GetOnScreenAndAnimate; gTasks[taskId].tMonSpriteId(currMonId) = spriteId; - sub_8197434(0, TRUE); + ClearDialogWindowAndFrame(0, TRUE); gTasks[taskId].func = Task_Hof_PrintMonInfoAfterAnimating; } @@ -649,7 +647,7 @@ static void sub_8173DC0(u8 taskId) gSprites[gTasks[taskId].tMonSpriteId(i)].oam.priority = 1; } BeginNormalPaletteFade(sUnknown_0203BCD4, 0, 12, 12, RGB(16, 29, 24)); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); CopyWindowToVram(0, 3); gTasks[taskId].tFrameCount = 7; gTasks[taskId].func = sub_8173EA4; @@ -697,7 +695,7 @@ static void Task_Hof_WaitAndPrintPlayerInfo(u8 taskId) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); HallOfFame_PrintPlayerInfo(1, 2); - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, 1, gText_LeagueChamp, 0, NULL, 2, 1, 3); CopyWindowToVram(0, 3); gTasks[taskId].func = Task_Hof_ExitOnKeyPressed; @@ -1066,7 +1064,7 @@ static void Task_HofPC_HandleExit(u8 taskId) static void Task_HofPC_PrintDataIsCorrupted(u8 taskId) { sub_8198180(gText_UnkCtrlF800Exit, 8, TRUE); - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized2(0, 1, gText_HOFCorrupted, 0, NULL, 2, 1, 3); CopyWindowToVram(0, 3); gTasks[taskId].func = Task_HofPC_ExitOnButtonPress; @@ -1086,7 +1084,7 @@ static void Task_HofPC_ExitOnButtonPress(u8 taskId) static void HallOfFame_PrintWelcomeText(u8 unusedPossiblyWindowId, u8 unused2) { - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); AddTextPrinterParameterized3(0, 1, GetStringCenterAlignXOffset(1, gText_WelcomeToHOF, 0xD0), 1, sUnknown_085E5388, 0, gText_WelcomeToHOF); CopyWindowToVram(0, 3); @@ -1099,7 +1097,7 @@ static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 unused1, u s32 dexNumber; s32 width; - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); // dex number @@ -1180,9 +1178,9 @@ static void HallOfFame_PrintPlayerInfo(u8 unused1, u8 unused2) u32 width; u16 trainerId; - FillWindowPixelBuffer(1, 0x11); + FillWindowPixelBuffer(1, PIXEL_FILL(1)); PutWindowTilemap(1); - SetWindowBorderStyle(1, FALSE, 0x21D, 0xD); + DrawStdFrameWithCustomTileAndPalette(1, FALSE, 0x21D, 0xD); AddTextPrinterParameterized3(1, 1, 0, 1, sUnknown_085E538C, -1, gText_Name); width = GetStringRightAlignXOffset(1, gSaveBlock2Ptr->playerName, 0x70); diff --git a/src/hof_pc.c b/src/hof_pc.c index 2cea5540a..d76f04372 100644 --- a/src/hof_pc.c +++ b/src/hof_pc.c @@ -7,10 +7,6 @@ #include "script_menu.h" #include "task.h" -extern void Overworld_PlaySpecialMapMusic(void); -extern bool16 ScrSpecial_CreatePCMenu(void); -extern void ScriptMenu_DisplayPCStartupPrompt(void); - static void ReshowPCMenuAfterHallOfFamePC(void); static void Task_WaitForPaletteFade(u8); @@ -21,30 +21,29 @@ struct HailStruct { }; static void sub_810B6C4(struct Sprite *); -extern void sub_810B848(struct Sprite *); -extern void AnimIcePunchSwirlingParticle(struct Sprite *); -extern void AnimIceBeamParticle(struct Sprite *); -extern void AnimIceEffectParticle(struct Sprite *); -extern void AnimFlickerIceEffectParticle(struct Sprite *); -extern void AnimSwirlingSnowball_Step1(struct Sprite *); -extern void AnimSwirlingSnowball_Step2(struct Sprite *); -extern void AnimSwirlingSnowball_Step3(struct Sprite *); -extern void AnimSwirlingSnowball_End(struct Sprite *); -extern void AnimMoveParticleBeyondTarget(struct Sprite *); -extern void AnimWiggleParticleTowardsTarget(struct Sprite *); -extern void AnimWaveFromCenterOfTarget(struct Sprite *); -extern void InitSwirlingFogAnim(struct Sprite *); -extern void AnimSwirlingFogAnim(struct Sprite *); -extern void AnimThrowMistBall(struct Sprite *); -extern void InitPoisonGasCloudAnim(struct Sprite *); -extern void MovePoisonGasCloud(struct Sprite *); -extern void AnimHailBegin(struct Sprite *); -extern void AnimHailContinue(struct Sprite *); -extern void sub_80A8EE4(struct Sprite *); -extern void InitIceBallAnim(struct Sprite *); -extern void AnimThrowIceBall(struct Sprite *); -extern void InitIceBallParticle(struct Sprite *); -extern void AnimIceBallParticle(struct Sprite *); +void sub_810B848(struct Sprite *); +void AnimIcePunchSwirlingParticle(struct Sprite *); +void AnimIceBeamParticle(struct Sprite *); +void AnimIceEffectParticle(struct Sprite *); +void AnimFlickerIceEffectParticle(struct Sprite *); +void AnimSwirlingSnowball_Step1(struct Sprite *); +void AnimSwirlingSnowball_Step2(struct Sprite *); +void AnimSwirlingSnowball_Step3(struct Sprite *); +void AnimSwirlingSnowball_End(struct Sprite *); +void AnimMoveParticleBeyondTarget(struct Sprite *); +void AnimWiggleParticleTowardsTarget(struct Sprite *); +void AnimWaveFromCenterOfTarget(struct Sprite *); +void InitSwirlingFogAnim(struct Sprite *); +void AnimSwirlingFogAnim(struct Sprite *); +void AnimThrowMistBall(struct Sprite *); +void InitPoisonGasCloudAnim(struct Sprite *); +void MovePoisonGasCloud(struct Sprite *); +void AnimHailBegin(struct Sprite *); +void AnimHailContinue(struct Sprite *); +void InitIceBallAnim(struct Sprite *); +void AnimThrowIceBall(struct Sprite *); +void InitIceBallParticle(struct Sprite *); +void AnimIceBallParticle(struct Sprite *); void AnimTask_Haze2(u8); void AnimTask_OverlayFogTiles(u8); void AnimTask_Hail2(u8); diff --git a/src/item.c b/src/item.c index 71c2dc0f7..0e13ddf4c 100644 --- a/src/item.c +++ b/src/item.c @@ -539,8 +539,8 @@ bool8 RemoveBagItem(u16 itemId, u16 count) if (CurrentMapIsSecretBase() == TRUE) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x200); - VarSet(VAR_0x40ED, itemId); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x200); + VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, itemId); } var = GetItemListPosition(pocket); diff --git a/src/item_menu.c b/src/item_menu.c index 43f2afce3..5738757bd 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -8,6 +8,7 @@ #include "bg.h" #include "constants/items.h" #include "constants/songs.h" +#include "data2.h" #include "decompress.h" #include "event_data.h" #include "event_object_movement.h" @@ -140,7 +141,6 @@ void unknown_ItemMenu_Confirm2(u8 taskId); void unknown_item_menu_type(u8 taskId); void item_menu_type_2(u8 taskId); void display_sell_item_ask_str(u8 taskId); -void unknown_ItemMenu_Confirm(u8 taskId); void display_deposit_item_ask_str(u8 taskId); void item_menu_type_b(u8 taskId); void BagMenuActuallyToss(u8 taskId); @@ -446,7 +446,6 @@ EWRAM_DATA u16 gSpecialVar_ItemId = 0; static EWRAM_DATA struct TempWallyStruct *gUnknown_0203CE80 = 0; extern u8 *const gPocketNamesStringsTable[]; -extern const u8 gMoveNames[][0xD]; extern u8* gReturnToXStringsTable[]; extern const u8 EventScript_2736B3[]; extern const u16 gUnknown_0860F074[]; @@ -476,7 +475,7 @@ void CB2_ChooseBerry(void) GoToBagMenu(RETURN_LOCATION_FIELD_2, BERRIES_POCKET, CB2_ReturnToFieldContinueScript); } -void sub_81AABF0(void(*callback)(void)) +void sub_81AABF0(void (*callback)(void)) { GoToBagMenu(RETURN_LOCATION_FIELD_3, BERRIES_POCKET, callback); } @@ -884,7 +883,7 @@ void bag_menu_print_description_box_text(int a) StringExpandPlaceholders(gStringVar4, gText_ReturnToVar1); str = gStringVar4; } - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); bag_menu_print(1, 1, str, 3, 1, 0, 0, 0, 0); } @@ -896,7 +895,7 @@ void bag_menu_print_cursor_(u8 a, u8 b) void bag_menu_print_cursor(u8 a, u8 b) { if (b == 0xFF) - FillWindowPixelRect(0, 0, 0, a, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1)); + FillWindowPixelRect(0, PIXEL_FILL(0), 0, a, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1)); else bag_menu_print(0, 1, gText_SelectorArrow2, 0, a, 0, 0, 0, b); @@ -1028,7 +1027,7 @@ void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u s16* data = gTasks[taskId].data; data[10] = AddItemMessageWindow(4); - FillWindowPixelBuffer(data[10], 17); + FillWindowPixelBuffer(data[10], PIXEL_FILL(1)); DisplayMessageAndContinueTask(taskId, data[10], 10, 13, fontId, GetPlayerTextSpeedDelay(), str, callback); schedule_bg_copy_tilemap_to_vram(1); } @@ -1293,7 +1292,7 @@ void bag_menu_swap_items(u8 taskId) gUnknown_0203CE54->unk81A = data[1]; CopyItemName(BagGetItemIdByPocketPosition(gUnknown_0203CE58.pocket + 1, data[1]), gStringVar1); StringExpandPlaceholders(gStringVar4, gText_MoveVar1Where); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0); sub_80D4FEC(data[1]); sub_81AB89C(); @@ -1505,7 +1504,7 @@ void sub_81AC644(u8 unused) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0); } if (gUnknown_0203CE54->unk828 == 1) @@ -1646,7 +1645,7 @@ void ItemMenu_UseOutOfBattle(u8 taskId) bag_menu_print_there_is_no_pokemon(taskId); else { - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); schedule_bg_copy_tilemap_to_vram(0); if (gUnknown_0203CE58.pocket != BERRIES_POCKET) ItemId_GetFieldFunc(gSpecialVar_ItemId)(taskId); @@ -1670,7 +1669,7 @@ void ItemMenu_Toss(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_TossHowManyVar1s); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0); sub_81ABC3C(7); gTasks[taskId].func = Task_ChooseHowManyToToss; @@ -1684,7 +1683,7 @@ void BagMenuConfirmToss(u8 taskId) CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, data[8], 0, 3); StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0); bag_menu_yes_no(taskId, 5, &gUnknown_08614084); } @@ -1727,7 +1726,7 @@ void BagMenuActuallyToss(u8 taskId) CopyItemName(gSpecialVar_ItemId, gStringVar1); ConvertIntToDecimalStringN(gStringVar2, data[8], 0, 3); StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0); gTasks[taskId].func = Task_ActuallyToss; } @@ -2043,7 +2042,7 @@ void display_deposit_item_ask_str(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_DepositHowManyVar1); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); bag_menu_print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0); sub_81ABC3C(7); gTasks[taskId].func = sub_81ADA7C; @@ -2078,7 +2077,7 @@ void sub_81ADB14(u8 taskId) { s16* data = gTasks[taskId].data; - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); if (ItemId_GetImportance(gSpecialVar_ItemId)) { bag_menu_print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0); @@ -2244,7 +2243,7 @@ void bag_menu_print_pocket_names(const u8 *pocketName1, const u8 *pocketName2) window.width = 16; window.height = 2; windowId = AddWindow(&window); - FillWindowPixelBuffer(windowId, 0); + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); offset = GetStringCenterAlignXOffset(1, pocketName1, 0x40); bag_menu_print(windowId, 1, pocketName1, offset, 1, 0, 0, -1, 1); if (pocketName2) @@ -2283,7 +2282,7 @@ void setup_bag_menu_textboxes(void) LoadPalette(&gUnknown_0860F074, 0xF0, 0x20); for (i = 0; i < 3; i++) { - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); PutWindowTilemap(i); } schedule_bg_copy_tilemap_to_vram(0); @@ -2306,7 +2305,7 @@ u8 bag_menu_add_window(u8 a) if (*ptr == 0xFF) { *ptr = AddWindow(&gUnknown_086141AC[a]); - SetWindowBorderStyle(*ptr, 0, 1, 14); + DrawStdFrameWithCustomTileAndPalette(*ptr, 0, 1, 14); schedule_bg_copy_tilemap_to_vram(1); } return *ptr; @@ -2317,7 +2316,7 @@ void bag_menu_remove_window(u8 a) u8 *ptr = &gUnknown_0203CE54->windowPointers[a]; if (*ptr != 0xFF) { - sub_8198070(*ptr, 0); + ClearStdWindowAndFrameToTransparent(*ptr, 0); ClearWindowTilemap(*ptr); RemoveWindow(*ptr); schedule_bg_copy_tilemap_to_vram(1); @@ -2338,7 +2337,8 @@ void bag_menu_RemoveBagItem_message_window(u8 a) u8 *ptr = &gUnknown_0203CE54->windowPointers[a]; if (*ptr != 0xFF) { - sub_8197DF8(*ptr, 0); + ClearDialogWindowAndFrameToTransparent(*ptr, FALSE); + // This ClearWindowTilemap call is redundant, since ClearDialogWindowAndFrameToTransparent already calls it. ClearWindowTilemap(*ptr); RemoveWindow(*ptr); schedule_bg_copy_tilemap_to_vram(1); @@ -2366,7 +2366,7 @@ void bag_menu_remove_money_window(void) void bag_menu_prepare_tmhm_move_window(void) { - FillWindowPixelBuffer(3, 0); + FillWindowPixelBuffer(3, PIXEL_FILL(0)); blit_move_info_icon(3, 19, 0, 0); blit_move_info_icon(3, 20, 0, 12); blit_move_info_icon(3, 21, 0, 24); @@ -2380,7 +2380,7 @@ void PrintTMHMMoveData(u16 itemId) u16 moveId; const u8* text; - FillWindowPixelBuffer(4, 0); + FillWindowPixelBuffer(4, PIXEL_FILL(0)); if (itemId == ITEM_NONE) { for (i = 0; i < 4; i++) diff --git a/src/item_use.c b/src/item_use.c index 97d6292c4..e646a18ee 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -8,13 +8,15 @@ #include "coins.h" #include "data2.h" #include "event_data.h" -#include "fieldmap.h" #include "event_object_movement.h" +#include "fieldmap.h" +#include "field_effect.h" #include "field_player_avatar.h" #include "field_screen_effect.h" #include "field_weather.h" #include "item.h" #include "item_menu.h" +#include "item_use.h" #include "mail.h" #include "main.h" #include "menu.h" @@ -37,31 +39,15 @@ #include "constants/items.h" #include "constants/songs.h" #include "constants/vars.h" +#include "event_obj_lock.h" -extern void unknown_ItemMenu_Confirm(u8 taskId); -extern void sub_81C5B14(u8 taskId); -extern void ScriptUnfreezeEventObjects(void); -extern void ItemUseOutOfBattle_TMHM(u8 a); -extern void ItemUseOutOfBattle_EvolutionStone(u8 b); -extern bool8 IsPlayerFacingSurfableFishableWater(void); -extern bool8 sub_81221AC(void); extern u8 Route102_EventScript_274482[]; extern u8 Route102_EventScript_2744C0[]; extern u8 BattleFrontier_OutsideEast_EventScript_242CFC[]; -extern int sub_80247BC(void); -extern struct MapHeader* mapconnection_get_mapheader(struct MapConnection *connection); -extern void SetUpItemUseCallback(u8 taskId); -extern void ItemUseCB_Medicine(u8, TaskFunc); -extern void bag_menu_yes_no(u8, u8, const struct YesNoFuncTable*); -extern void sub_81C5924(void); -extern void sub_81C59BC(void); -extern void sub_81AB9A8(u8); -extern void StartEscapeRopeFieldEffect(void); -extern u8* sub_806CF78(u16); -extern void sub_81B89F0(void); -extern u8 GetItemEffectType(u16); -extern struct MapConnection *sub_8088A8C(s16, s16); +extern s32 sub_80247BC(void); + +void SetUpItemUseCallback(u8 taskId); void MapPostLoadHook_UseItem(void); void sub_80AF6D4(void); void Task_CallItemUseOnFieldCallback(u8 taskId); @@ -188,7 +174,7 @@ void DisplayCannotDismountBikeMessage(u8 taskId, bool8 isUsingRegisteredKeyItemO void CleanUpAfterFailingToUseRegisteredKeyItemOnField(u8 taskId) { - sub_8197434(0, 1); + ClearDialogWindowAndFrame(0, 1); DestroyTask(taskId); ScriptUnfreezeEventObjects(); ScriptContext2_Disable(); @@ -350,7 +336,7 @@ void sub_80FD504(u8 taskId) void sub_80FD5CC(u8 taskId) { - sub_8197434(0, 1); + ClearDialogWindowAndFrame(0, 1); ScriptUnfreezeEventObjects(); ScriptContext2_Disable(); DestroyTask(taskId); @@ -404,12 +390,12 @@ bool8 sub_80FD6D4(const struct MapEvents *events, s16 x, s16 y) bool8 sub_80FD730(struct MapConnection *connection, int x, int y) { - struct MapHeader *mapHeader; + u16 localX, localY; u32 localOffset; s32 localLength; - mapHeader = mapconnection_get_mapheader(connection); + struct MapHeader const *const mapHeader = mapconnection_get_mapheader(connection); switch (connection->direction) { diff --git a/src/learn_move.c b/src/learn_move.c index 7a6916013..879acff6d 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -498,7 +498,7 @@ static void LearnMoveMain(void) case 27: if (!sub_81D2C3C()) { - FillWindowPixelBuffer(3, 0x11); + FillWindowPixelBuffer(3, PIXEL_FILL(1)); if (sLearnMoveStruct2.showContestInfo == FALSE) { sLearnMoveStruct->state = 3; @@ -631,7 +631,7 @@ static void HideSpritesAndPrintTeachText(bool8 a) if (!a) { StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn); - FillWindowPixelBuffer(3, 0x11); + FillWindowPixelBuffer(3, PIXEL_FILL(1)); AddTextPrinterParameterized(3, 1, gStringVar4, 0, 1, 0, NULL); } } @@ -695,7 +695,7 @@ static void ShowTeachMoveText(bool8 showContest) if (showContest == FALSE) { StringExpandPlaceholders(gStringVar4, gText_TeachWhichMoveToPkmn); - FillWindowPixelBuffer(3, 0x11); + FillWindowPixelBuffer(3, PIXEL_FILL(1)); AddTextPrinterParameterized(3, 1, gStringVar4, 0, 1, 0, NULL); } } diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c index 3d4f8a90d..dc38d8848 100644 --- a/src/lilycove_lady.c +++ b/src/lilycove_lady.c @@ -695,7 +695,7 @@ u8 sub_818E2D8(void) void sub_818E2FC(void) { - easy_chat_input_maybe(); + ShowEasyChatScreen(); } bool8 sub_818E308(void) @@ -763,8 +763,8 @@ void sub_818E430(void) void sub_818E47C(void) { - gSpecialVar_0x8004 = 0x11; - easy_chat_input_maybe(); + gSpecialVar_0x8004 = EASY_CHAT_TYPE_QUIZ_SET_QUESTION; + ShowEasyChatScreen(); } void sub_818E490(void) diff --git a/src/link.c b/src/link.c index bec9dddc6..525d50d7c 100644 --- a/src/link.c +++ b/src/link.c @@ -28,7 +28,7 @@ #include "link.h" #include "link_rfu.h" -extern u16 gUnknown_03005DA8; +extern u16 gHeldKeyCodeToSend; // Static type declarations @@ -302,9 +302,9 @@ void LinkTestScreen(void) SetMainCallback2(CB2_LinkTest); } -void sub_8009628(u8 a0) +void SetLocalLinkPlayerId(u8 playerId) { - gLocalLinkPlayer.id = a0; + gLocalLinkPlayer.id = playerId; } static void InitLocalLinkPlayer(void) @@ -695,12 +695,12 @@ static void BuildSendCmd(u16 command) gSendCmd[0] = LINKCMD_0x5566; break; case LINKCMD_SEND_HELD_KEYS_2: - if (gUnknown_03005DA8 == 0 || gLinkTransferringData) + if (gHeldKeyCodeToSend == 0 || gLinkTransferringData) { break; } gSendCmd[0] = LINKCMD_SEND_HELD_KEYS_2; - gSendCmd[1] = gUnknown_03005DA8; + gSendCmd[1] = gHeldKeyCodeToSend; break; } } @@ -714,11 +714,11 @@ void sub_8009F18(void) gLinkCallback = sub_8009F70; } -bool32 sub_8009F3C(void) +bool32 IsSendingKeysToLink(void) { if (gWirelessCommType) { - return sub_800F7E4(); + return IsSendingKeysToRfu(); } if (gLinkCallback == sub_8009F70) { @@ -1142,7 +1142,7 @@ void ResetBlockReceivedFlag(u8 who) } } -void sub_800A620(void) +void CheckShouldAdvanceLinkState(void) { if ((gLinkStatus & LINK_STAT_MASTER) && EXTRACT_PLAYER_COUNT(gLinkStatus) > 1) { @@ -1327,7 +1327,9 @@ void sub_800AA04(u8 a0) } } -u8 sub_800AA48(void) +// The number of players when trading began. This is frequently compared against the +// current number of connected players to check if anyone dropped out. +u8 GetSavedPlayerCount(void) { return gSavedLinkPlayerCount; } @@ -1683,8 +1685,8 @@ static void sub_800B080(void) CopyToBgTilemapBuffer(1, gWirelessLinkDisplayTilemap, 0, 0); CopyBgTilemapBufferToVram(1); LoadPalette(gWirelessLinkDisplayPal, 0, 0x20); - FillWindowPixelBuffer(0, 0x00); - FillWindowPixelBuffer(2, 0x00); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); AddTextPrinterParameterized3(0, 3, 2, 6, gUnknown_082ED224, 0, gText_CommErrorEllipsis); AddTextPrinterParameterized3(2, 3, 2, 1, gUnknown_082ED224, 0, gText_MoveCloserToLinkPartner); PutWindowTilemap(0); @@ -1696,8 +1698,8 @@ static void sub_800B080(void) static void sub_800B138(void) { LoadBgTiles(0, g2BlankTilesGfx, 0x20, 0); - FillWindowPixelBuffer(1, 0x00); - FillWindowPixelBuffer(2, 0x00); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); AddTextPrinterParameterized3(1, 3, 2, 0, gUnknown_082ED224, 0, gText_CommErrorCheckConnections); PutWindowTilemap(1); PutWindowTilemap(2); @@ -1849,7 +1851,7 @@ bool8 HandleLinkConnection(void) r5 = sub_8010F1C(); if (sub_808766C() == TRUE) { - if (r4 == TRUE || sub_800F0B8() || r5) + if (r4 == TRUE || IsRfuRecvQueueEmpty() || r5) { return TRUE; } @@ -1882,18 +1884,18 @@ void sub_800B4C0(void) } } -u32 sub_800B4DC(void) +u32 GetLinkRecvQueueLength(void) { if (gWirelessCommType != 0) { - return sub_80124D4(); + return GetRfuRecvQueueLength(); } return gLink.recvQueue.count; } -bool8 sub_800B504(void) +bool32 sub_800B504(void) { - if (sub_800B4DC() > 2) + if (GetLinkRecvQueueLength() > 2) { return TRUE; } diff --git a/src/link_rfu.c b/src/link_rfu.c index 4ad2a5169..d80ff2ae9 100644 --- a/src/link_rfu.c +++ b/src/link_rfu.c @@ -17,9 +17,9 @@ #include "text.h" #include "constants/species.h" #include "save.h" +#include "rom_8011DC0.h" -extern u16 gUnknown_03005DA8; -extern void nullsub_89(u8 taskId); +extern u16 gHeldKeyCodeToSend; struct UnkRfuStruct_1 gUnknown_03004140; struct UnkRfuStruct_2 gUnknown_03005000; @@ -2991,7 +2991,7 @@ static void sub_800F048(void) } } -bool32 sub_800F0B8(void) +bool32 IsRfuRecvQueueEmpty(void) { s32 i; s32 j; @@ -3212,7 +3212,7 @@ bool32 sub_800F4F0(void) for (i = 0; i < CMD_LENGTH - 1; i++) gSendCmd[i] = 0; } - return sub_800F0B8(); + return IsRfuRecvQueueEmpty(); } void sub_800F638(u8 unused, u32 flags) @@ -3272,10 +3272,12 @@ u8 sub_800F74C(const u8 *a0) void rfu_func_080F97B8(void) { - if (gReceivedRemoteLinkPlayers && gUnknown_03005DA8 && gLinkTransferringData != 1) + if (gReceivedRemoteLinkPlayers + && gHeldKeyCodeToSend != LINK_KEY_CODE_NULL + && gLinkTransferringData != TRUE) { gUnknown_03000D78[0]++; - gUnknown_03005DA8 |= (gUnknown_03000D78[0] << 8); + gHeldKeyCodeToSend |= (gUnknown_03000D78[0] << 8); sub_800FD14(0xbe00); } } @@ -3285,7 +3287,7 @@ struct UnkLinkRfuStruct_02022B14 *sub_800F7DC(void) return &gUnknown_02022B14; } -bool32 sub_800F7E4(void) +bool32 IsSendingKeysToRfu(void) { return gUnknown_03005000.unk_00 == rfu_func_080F97B8; } @@ -3509,7 +3511,7 @@ void sub_800FD14(u16 command) gSendCmd[1 + i] = gUnknown_03005000.unk_f2[i]; break; case 0xbe00: - gSendCmd[1] = gUnknown_03005DA8; + gSendCmd[1] = gHeldKeyCodeToSend; break; case 0xee00: break; @@ -3799,10 +3801,10 @@ bool32 sub_8010454(u32 a0) u8 sub_801048C(bool32 a0) { - if (a0 == 0) + if (a0 == FALSE) return sub_800D550(0, 0); sub_800D550(1, 0x258); - return FALSE; + return 0; } void sub_80104B0(void) @@ -5163,7 +5165,7 @@ u32 sub_80124C0(void) return gUnknown_03005000.unk_9e8.unk_232; } -u32 sub_80124D4(void) +u32 GetRfuRecvQueueLength(void) { return gUnknown_03005000.unk_124.unk_8c2; } diff --git a/src/list_menu.c b/src/list_menu.c index 7a9547661..51d7dcb15 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -355,11 +355,11 @@ s32 DoMysteryGiftListMenu(struct WindowTemplate *windowTemplate, struct ListMenu switch (arg2) { case 0: // can never be reached, because of the if statement above - sub_819746C(sMysteryGiftLinkMenu.windowId, FALSE); + ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE); break; case 2: case 1: - sub_819746C(sMysteryGiftLinkMenu.windowId, FALSE); + ClearStdWindowAndFrame(sMysteryGiftLinkMenu.windowId, FALSE); break; } } @@ -486,7 +486,7 @@ void RedrawListMenu(u8 listTaskId) { struct ListMenu *list = (void*) gTasks[listTaskId].data; - FillWindowPixelBuffer(list->template.windowId, (list->template.fillValue << 4) | (list->template.fillValue)); + FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue)); ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed); ListMenuDrawCursor(list); CopyWindowToVram(list->template.windowId, 2); @@ -584,7 +584,7 @@ static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 sc if (list->template.totalItems < list->template.maxShowed) list->template.maxShowed = list->template.totalItems; - FillWindowPixelBuffer(list->template.windowId, (list->template.fillValue << 4) | (list->template.fillValue)); + FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue)); ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed); ListMenuDrawCursor(list); ListMenuCallSelectionChangedCallback(list, TRUE); @@ -698,7 +698,7 @@ static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 selectedRow) u8 width = GetMenuCursorDimensionByFont(list->template.fontId, 0); u8 height = GetMenuCursorDimensionByFont(list->template.fontId, 1); FillWindowPixelRect(list->template.windowId, - (list->template.fillValue << 4) | (list->template.fillValue), + PIXEL_FILL(list->template.fillValue), list->template.cursor_X, selectedRow * yMultiplier + list->template.upText_Y, width, @@ -795,7 +795,7 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown) { if (count >= list->template.maxShowed) { - FillWindowPixelBuffer(list->template.windowId, (list->template.fillValue << 4) | (list->template.fillValue)); + FillWindowPixelBuffer(list->template.windowId, PIXEL_FILL(list->template.fillValue)); ListMenuPrintEntries(list, list->scrollOffset, 0, list->template.maxShowed); } else @@ -806,26 +806,26 @@ static void ListMenuScroll(struct ListMenu *list, u8 count, bool8 movingDown) { u16 y, width, height; - ScrollWindow(list->template.windowId, 1, count * yMultiplier, (list->template.fillValue << 4) | (list->template.fillValue)); + ScrollWindow(list->template.windowId, 1, count * yMultiplier, PIXEL_FILL(list->template.fillValue)); ListMenuPrintEntries(list, list->scrollOffset, 0, count); y = (list->template.maxShowed * yMultiplier) + list->template.upText_Y; width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8; height = (GetWindowAttribute(list->template.windowId, WINDOW_HEIGHT) * 8) - y; FillWindowPixelRect(list->template.windowId, - (list->template.fillValue << 4) | (list->template.fillValue), + PIXEL_FILL(list->template.fillValue), 0, y, width, height); } else { u16 width; - ScrollWindow(list->template.windowId, 0, count * yMultiplier, (list->template.fillValue << 4) | (list->template.fillValue)); + ScrollWindow(list->template.windowId, 0, count * yMultiplier, PIXEL_FILL(list->template.fillValue)); ListMenuPrintEntries(list, list->scrollOffset + (list->template.maxShowed - count), list->template.maxShowed - count, count); width = GetWindowAttribute(list->template.windowId, WINDOW_WIDTH) * 8; FillWindowPixelRect(list->template.windowId, - (list->template.fillValue << 4) | (list->template.fillValue), + PIXEL_FILL(list->template.fillValue), 0, 0, width, list->template.upText_Y); } } diff --git a/src/load_save.c b/src/load_save.c index 0d19c6dae..d6785254f 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -11,10 +11,10 @@ #include "trainer_hill.h" #include "gba/flash_internal.h" #include "decoration_inventory.h" +#include "agb_flash.h" static void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey); -extern bool16 IdentifyFlash(void); extern void ApplyNewEncryptionKeyToBerryPowder(u32 key); #define SAVEBLOCK_MOVE_RANGE 128 @@ -99,7 +99,7 @@ void MoveSaveBlocks_ResetHeap(void) hblankCB = gMain.hblankCallback; gMain.vblankCallback = NULL; gMain.hblankCallback = NULL; - gUnknown_0203CF5C = NULL; + gTrainerHillVBlankCounter = NULL; saveBlock2Copy = (struct SaveBlock2 *)(gHeap); saveBlock1Copy = (struct SaveBlock1 *)(gHeap + sizeof(struct SaveBlock2)); diff --git a/src/lottery_corner.c b/src/lottery_corner.c index bd7d17ef7..bb3bb7a5c 100644 --- a/src/lottery_corner.c +++ b/src/lottery_corner.c @@ -27,7 +27,7 @@ void ResetLotteryCorner(void) u16 rand = Random(); SetLotteryNumber((Random() << 16) | rand); - VarSet(VAR_POKELOT_PRIZE, 0); + VarSet(VAR_POKELOT_PRIZE_ITEM, 0); } void SetRandomLotteryNumber(u16 i) diff --git a/src/mail.c b/src/mail.c index 45e96e85e..9cca4492e 100644 --- a/src/mail.c +++ b/src/mail.c @@ -102,7 +102,7 @@ struct MailRead /*0x021d*/ u8 language; /*0x021e*/ bool8 playerIsSender; /*0x0220*/ u8 * (*parserSingle)(u8 *dest, u16 word); - /*0x0224*/ void (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2); + /*0x0224*/ u8 * (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2); /*0x0228*/ const struct MailLayout *layout; /*0x022c*/ u8 bg1TilemapBuffer[0x1000]; /*0x122c*/ u8 bg2TilemapBuffer[0x1000]; @@ -477,8 +477,8 @@ static void sub_8121B1C(void) y = 0; PutWindowTilemap(0); PutWindowTilemap(1); - FillWindowPixelBuffer(0, 0); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); for (i = 0; i < sMailRead->layout->numSubStructs; i ++) { if (sMailRead->strbuf[i][0] == EOS || sMailRead->strbuf[i][0] == CHAR_SPACE) diff --git a/src/main.c b/src/main.c index 61c5e3386..40381bb68 100644 --- a/src/main.c +++ b/src/main.c @@ -24,9 +24,6 @@ #include "main.h" #include "trainer_hill.h" -extern void sub_800B9B8(void); -extern u8 gUnknown_03002748; - static void VBlankIntr(void); static void HBlankIntr(void); static void VCountIntr(void); @@ -163,7 +160,7 @@ static void UpdateLinkAndCallCallbacks(void) static void InitMainCallbacks(void) { gMain.vblankCounter1 = 0; - gUnknown_0203CF5C = NULL; + gTrainerHillVBlankCounter = NULL; gMain.vblankCounter2 = 0; gMain.callback1 = NULL; SetMainCallback2(CB2_InitCopyrightScreenAfterBootup); @@ -313,8 +310,6 @@ void SetSerialCallback(IntrCallback callback) gMain.serialCallback = callback; } -extern void CopyBufferedValuesToGpuRegs(void); - static void VBlankIntr(void) { if (gWirelessCommType != 0) @@ -324,8 +319,8 @@ static void VBlankIntr(void) gMain.vblankCounter1++; - if (gUnknown_0203CF5C && *gUnknown_0203CF5C < 0xFFFFFFFF) - (*gUnknown_0203CF5C)++; + if (gTrainerHillVBlankCounter && *gTrainerHillVBlankCounter < 0xFFFFFFFF) + (*gTrainerHillVBlankCounter)++; if (gMain.vblankCallback) gMain.vblankCallback(); @@ -393,14 +388,14 @@ static void WaitForVBlank(void) ; } -void sub_80008DC(u32 *var) +void SetTrainerHillVBlankCounter(u32 *counter) { - gUnknown_0203CF5C = var; + gTrainerHillVBlankCounter = counter; } -void sub_80008E8(void) +void ClearTrainerHillVBlankCounter(void) { - gUnknown_0203CF5C = NULL; + gTrainerHillVBlankCounter = NULL; } void DoSoftReset(void) diff --git a/src/main_menu.c b/src/main_menu.c index 82a30aa59..e6e29d942 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -39,6 +39,135 @@ #include "title_screen.h" #include "window.h" +/* + * Main menu state machine + * ----------------------- + * + * Entry point: CB2_InitMainMenu + * + * Note: States advance sequentially unless otherwise stated. + * + * CB2_InitMainMenu / CB2_ReinitMainMenu + * - Both of these states call InitMainMenu, which does all the work. + * - In the Reinit case, the init code will check if the user came from + * the options screen. If they did, then the options menu item is + * pre-selected. + * + * Task_MainMenuCheckSaveFile + * - Determines how many menu options to show based on whether + * the save file is Ok, empty, corrupted, etc. + * - If there was an error loading the save file, advance to + * Task_WaitForSaveFileErrorWindow. + * - If there were no errors, advance to Task_MainMenuCheckBattery. + * - Note that the check to enable Mystery Events would normally happen + * here, but this version of Emerald has them disabled. + * + * Task_WaitForSaveFileErrorWindow + * - Wait for the text to finish printing and then for the A button + * to be pressed. + * + * Task_MainMenuCheckBattery + * - If the battery is OK, advance to Task_DisplayMainMenu. + * - If the battery is dry, advance to Task_WaitForBatteryDryErrorWindow. + * + * Task_WaitForBatteryDryErrorWindow + * - Wait for the text to finish printing and then for the A button + * to be pressed. + * + * Task_DisplayMainWindow + * - Display the buttons to the user. If the menu is in HAS_MYSTERY_EVENTS + * mode, there are too many buttons for one screen and a scrollbar is added, + * and the scrollbar task is spawned (Task_ScrollIndicatorArrowPairOnMainMenu). + * + * Task_HighlightSelectedMainMenuItem + * - Update the UI to match the currently selected item. + * + * Task_HandleMainMenuInput + * - If A is pressed, advance to Task_HandleMainMenuAPressed. + * - If B is pressed, return to the title screen via CB2_InitTitleScreen. + * - If Up or Down is pressed, handle scrolling if there is a scroll bar, change + * the selection, then go back to Task_HighlightSelectedMainMenuItem. + * + * Task_HandleMainMenuAPressed + * - If the user selected New Game, advance to Task_NewGameBirchSpeech_Init. + * - If the user selected Continue, advance to CB2_ContinueSavedGame. + * - If the user selected the Options menu, advance to CB2_InitOptionMenu. + * - If the user selected Mystery Gift, advance to CB2_MysteryGift. However, + * if the wireless adapter was removed, instead advance to + * Task_DisplayMainMenuInvalidActionError. + * - Code to start a Mystery Event is present here, but is unreachable in this + * version. + * + * Task_HandleMainMenuBPressed + * - Clean up the main menu and go back to CB2_InitTitleScreen. + * + * Task_DisplayMainMenuInvalidActionError + * - Print one of three different error messages, wait for the text to stop + * printing, and then wait for A or B to be pressed. + * - Then advance to Task_HandleMainMenuBPressed. + * + * Task_NewGameBirchSpeechInit + * - Load the sprites for the intro speech, start playing music + * Task_NewGameBirchSpeech_WaitToShowBirch + * - Spawn Task_NewGameBirchSpeech_FadeInTarget1OutTarget2 + * - Spawn Task_NewGameBirchSpeech_FadePlatformOut + * - Both of these tasks destroy themselves when done. + * Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome + * Task_NewGameBirchSpeech_ThisIsAPokemon + * - When the text is done printing, spawns Task_NewGameBirchSpeechSub_InitPokeball + * Task_NewGameBirchSpeech_MainSpeech + * Task_NewGameBirchSpeech_AndYouAre + * Task_NewGameBirchSpeech_StartBirchLotadPlatformFade + * Task_NewGameBirchSpeech_StartBirchLotadPlatformFade + * Task_NewGameBirchSpeech_SlidePlatformAway + * Task_NewGameBirchSpeech_StartPlayerFadeIn + * Task_NewGameBirchSpeech_WaitForPlayerFadeIn + * Task_NewGameBirchSpeech_BoyOrGirl + * Task_NewGameBirchSpeech_WaitToShowGenderMenu + * Task_NewGameBirchSpeech_ChooseGender + * - Animates by advancing to Task_NewGameBirchSpeech_SlideOutOldGenderSprite + * whenever the player's selection changes. + * - Advances to Task_NewGameBirchSpeech_WhatsYourName when done. + * + * Task_NewGameBirchSpeech_SlideOutOldGenderSprite + * Task_NewGameBirchSpeech_SlideInNewGenderSprite + * - Returns back to Task_NewGameBirchSpeech_ChooseGender. + * + * Task_NewGameBirchSpeech_WhatsYourName + * Task_NewGameBirchSpeech_WaitForWhatsYourNameToPrint + * Task_NewGameBirchSpeech_WaitPressBeforeNameChoice + * Task_NewGameBirchSpeech_StartNamingScreen + * C2_NamingScreen + * - Returns to CB2_NewGameBirchSpeech_ReturnFromNamingScreen when done + * CB2_NewGameBirchSpeech_ReturnFromNamingScreen + * Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox + * Task_NewGameBirchSpeech_SoItsPlayerName + * Task_NewGameBirchSpeech_CreateNameYesNo + * Task_NewGameBirchSpeech_ProcessNameYesNoMenu + * - If confirmed, advance to Task_NewGameBirchSpeech_SlidePlatformAway2. + * - Otherwise, return to Task_NewGameBirchSpeech_BoyOrGirl. + * + * Task_NewGameBirchSpeech_SlidePlatformAway2 + * Task_NewGameBirchSpeech_ReshowBirchLotad + * Task_NewGameBirchSpeech_WaitForSpriteFadeInAndTextPrinter + * Task_NewGameBirchSpeech_AreYouReady + * Task_NewGameBirchSpeech_ShrinkPlayer + * Task_NewGameBirchSpeech_WaitForPlayerShrink + * Task_NewGameBirchSpeech_FadePlayerToWhite + * Task_NewGameBirchSpeech_Cleanup + * - Advances to CB2_NewGame. + * + * Task_NewGameBirchSpeechSub_InitPokeball + * - Advances to Task_NewGameBirchSpeechSub_WaitForLotad + * Task_NewGameBirchSpeechSub_WaitForLotad + * - Destroys itself when done. + */ + +// These two defines are used with the sCurrItemAndOptionsMenuCheck, +// to distinguish between its two parts. +#define OPTION_MENU_FLAG 0x8000 +#define CURRENT_ITEM_MASK 0x7FFF + // Static type declarations // Static RAM declarations @@ -112,7 +241,7 @@ static void SpriteCB_MovePlayerDownWhileShrinking(struct Sprite*); static void Task_NewGameBirchSpeech_WaitForPlayerShrink(u8); static void Task_NewGameBirchSpeech_FadePlayerToWhite(u8); static void Task_NewGameBirchSpeech_Cleanup(u8); -static void nullsub_11(); +static void SpriteCB_Null(); static void Task_NewGameBirchSpeech_ReturnFromNamingScreenShowTextbox(u8); static void MainMenu_FormatSavegamePlayer(void); static void MainMenu_FormatSavegamePokedex(void); @@ -247,7 +376,7 @@ static const struct WindowTemplate sWindowTemplates_MainMenu[] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate gUnknown_082FF080[] = +static const struct WindowTemplate gNewGameBirchSpeechTextWindows[] = { { .bg = 0, @@ -542,7 +671,7 @@ static void Task_MainMenuCheckSaveFile(u8 taskId) gTasks[taskId].func = Task_WaitForSaveFileErrorWindow; break; } - if (sCurrItemAndOptionMenuCheck & 0x8000) // are we returning from the options menu? + if (sCurrItemAndOptionMenuCheck & OPTION_MENU_FLAG) // are we returning from the options menu? { switch (tMenuType) // if so, highlight the OPTIONS item { @@ -558,7 +687,7 @@ static void Task_MainMenuCheckSaveFile(u8 taskId) break; } } - sCurrItemAndOptionMenuCheck &= 0x7FFF; // turn off the "returning from options menu" flag + sCurrItemAndOptionMenuCheck &= CURRENT_ITEM_MASK; // turn off the "returning from options menu" flag tCurrItem = sCurrItemAndOptionMenuCheck; tItemCount = tMenuType + 2; } @@ -637,6 +766,8 @@ static void Task_DisplayMainMenu(u8 taskId) palette = RGB(26, 26, 25); LoadPalette(&palette, 252, 2); + // Note: If there is no save file, the save block is zeroed out, + // so the default gender is MALE. if (gSaveBlock2Ptr->playerGender == MALE) { palette = RGB(4, 16, 31); @@ -652,8 +783,8 @@ static void Task_DisplayMainMenu(u8 taskId) { case HAS_NO_SAVED_GAME: default: - FillWindowPixelBuffer(0, 0xAA); - FillWindowPixelBuffer(1, 0xAA); + FillWindowPixelBuffer(0, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(1, PIXEL_FILL(0xA)); AddTextPrinterParameterized3(0, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame); AddTextPrinterParameterized3(1, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption); PutWindowTilemap(0); @@ -664,9 +795,9 @@ static void Task_DisplayMainMenu(u8 taskId) DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[1], MAIN_MENU_BORDER_TILE); break; case HAS_SAVED_GAME: - FillWindowPixelBuffer(2, 0xAA); - FillWindowPixelBuffer(3, 0xAA); - FillWindowPixelBuffer(4, 0xAA); + FillWindowPixelBuffer(2, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(3, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(4, PIXEL_FILL(0xA)); AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue); AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame); AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuOption); @@ -682,10 +813,10 @@ static void Task_DisplayMainMenu(u8 taskId) DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[4], MAIN_MENU_BORDER_TILE); break; case HAS_MYSTERY_GIFT: - FillWindowPixelBuffer(2, 0xAA); - FillWindowPixelBuffer(3, 0xAA); - FillWindowPixelBuffer(4, 0xAA); - FillWindowPixelBuffer(5, 0xAA); + FillWindowPixelBuffer(2, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(3, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(4, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(5, PIXEL_FILL(0xA)); AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue); AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame); AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuMysteryGift); @@ -705,11 +836,11 @@ static void Task_DisplayMainMenu(u8 taskId) DrawMainMenuWindowBorder(&sWindowTemplates_MainMenu[5], MAIN_MENU_BORDER_TILE); break; case HAS_MYSTERY_EVENTS: - FillWindowPixelBuffer(2, 0xAA); - FillWindowPixelBuffer(3, 0xAA); - FillWindowPixelBuffer(4, 0xAA); - FillWindowPixelBuffer(5, 0xAA); - FillWindowPixelBuffer(6, 0xAA); + FillWindowPixelBuffer(2, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(3, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(4, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(5, PIXEL_FILL(0xA)); + FillWindowPixelBuffer(6, PIXEL_FILL(0xA)); AddTextPrinterParameterized3(2, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuContinue); AddTextPrinterParameterized3(3, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuNewGame); AddTextPrinterParameterized3(4, 1, 0, 1, sTextColor_Headers, -1, gText_MainMenuMysteryGift2); @@ -813,14 +944,14 @@ static void Task_HandleMainMenuAPressed(u8 taskId) { if (gTasks[taskId].tMenuType == HAS_MYSTERY_EVENTS) RemoveScrollIndicatorArrowPair(gTasks[taskId].tScrollArrowTaskId); - sub_819746C(0, 1); - sub_819746C(1, 1); - sub_819746C(2, 1); - sub_819746C(3, 1); - sub_819746C(4, 1); - sub_819746C(5, 1); - sub_819746C(6, 1); - sub_819746C(7, 1); + ClearStdWindowAndFrame(0, TRUE); + ClearStdWindowAndFrame(1, TRUE); + ClearStdWindowAndFrame(2, TRUE); + ClearStdWindowAndFrame(3, TRUE); + ClearStdWindowAndFrame(4, TRUE); + ClearStdWindowAndFrame(5, TRUE); + ClearStdWindowAndFrame(6, TRUE); + ClearStdWindowAndFrame(7, TRUE); wirelessAdapterConnected = IsWirelessAdapterConnected(); switch (gTasks[taskId].tMenuType) { @@ -973,7 +1104,7 @@ static void Task_HandleMainMenuAPressed(u8 taskId) if (action != ACTION_OPTION) sCurrItemAndOptionMenuCheck = 0; else - sCurrItemAndOptionMenuCheck |= 0x8000; // entering the options menu + sCurrItemAndOptionMenuCheck |= OPTION_MENU_FLAG; // entering the options menu } } @@ -981,7 +1112,7 @@ static void Task_HandleMainMenuBPressed(u8 taskId) { if (!gPaletteFade.active) { - if (gTasks[taskId].tMenuType == 3) + if (gTasks[taskId].tMenuType == HAS_MYSTERY_EVENTS) RemoveScrollIndicatorArrowPair(gTasks[taskId].tScrollArrowTaskId); sCurrItemAndOptionMenuCheck = 0; FreeAllWindowBuffers(); @@ -1199,7 +1330,7 @@ static void Task_NewGameBirchSpeech_WaitForSpriteFadeInWelcome(u8 taskId) } else { - InitWindows(gUnknown_082FF080); + InitWindows(gNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); LoadMessageBoxGfx(0, 0xFC, 0xF0); NewGameBirchSpeech_ShowDialogueWindow(0, 1); @@ -1642,7 +1773,7 @@ static void Task_NewGameBirchSpeech_FadePlayerToWhite(u8 taskId) if (!gPaletteFade.active) { spriteId = gTasks[taskId].tPlayerSpriteId; - gSprites[spriteId].callback = nullsub_11; + gSprites[spriteId].callback = SpriteCB_Null; SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP); BeginNormalPaletteFade(0xFFFF0000, 0, 0, 16, RGB_WHITEALPHA); gTasks[taskId].func = Task_NewGameBirchSpeech_Cleanup; @@ -1730,14 +1861,14 @@ static void CB2_NewGameBirchSpeech_ReturnFromNamingScreen(void) REG_IME = savedIme; SetVBlankCallback(VBlankCB_MainMenu); SetMainCallback2(CB2_MainMenu); - InitWindows(gUnknown_082FF080); + InitWindows(gNewGameBirchSpeechTextWindows); LoadMainMenuWindowFrameTiles(0, 0xF3); LoadMessageBoxGfx(0, 0xFC, 0xF0); PutWindowTilemap(0); CopyWindowToVram(0, 3); } -static void nullsub_11(struct Sprite *sprite) +static void SpriteCB_Null(struct Sprite *sprite) { } @@ -1763,22 +1894,22 @@ static void AddBirchSpeechObjects(u8 taskId) u8 maySpriteId; birchSpriteId = AddNewGameBirchObject(0x88, 0x3C, 1); - gSprites[birchSpriteId].callback = nullsub_11; + gSprites[birchSpriteId].callback = SpriteCB_Null; gSprites[birchSpriteId].oam.priority = 0; gSprites[birchSpriteId].invisible = TRUE; gTasks[taskId].tBirchSpriteId = birchSpriteId; lotadSpriteId = NewGameBirchSpeech_CreateLotadSprite(100, 0x4B); - gSprites[lotadSpriteId].callback = nullsub_11; + gSprites[lotadSpriteId].callback = SpriteCB_Null; gSprites[lotadSpriteId].oam.priority = 0; gSprites[lotadSpriteId].invisible = TRUE; gTasks[taskId].tLotadSpriteId = lotadSpriteId; brendanSpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_BRENDAN), 120, 60, 0, &gDecompressionBuffer[0]); - gSprites[brendanSpriteId].callback = nullsub_11; + gSprites[brendanSpriteId].callback = SpriteCB_Null; gSprites[brendanSpriteId].invisible = TRUE; gSprites[brendanSpriteId].oam.priority = 0; gTasks[taskId].tBrendanSpriteId = brendanSpriteId; maySpriteId = CreateTrainerSprite(FacilityClassToPicIndex(FACILITY_CLASS_MAY), 120, 60, 0, &gDecompressionBuffer[0x800]); - gSprites[maySpriteId].callback = nullsub_11; + gSprites[maySpriteId].callback = SpriteCB_Null; gSprites[maySpriteId].invisible = TRUE; gSprites[maySpriteId].oam.priority = 0; gTasks[taskId].tMaySpriteId = maySpriteId; @@ -1966,8 +2097,8 @@ static void NewGameBirchSpeech_StartFadePlatformOut(u8 taskId, u8 delay) static void NewGameBirchSpeech_ShowGenderMenu(void) { - DrawMainMenuWindowBorder(&gUnknown_082FF080[1], 0xF3); - FillWindowPixelBuffer(1, 17); + DrawMainMenuWindowBorder(&gNewGameBirchSpeechTextWindows[1], 0xF3); + FillWindowPixelBuffer(1, PIXEL_FILL(1)); PrintMenuTable(1, 2, sMenuActions_Gender); InitMenuInUpperLeftCornerPlaySoundWhenAPressed(1, 2, 0); PutWindowTilemap(1); @@ -1995,7 +2126,7 @@ static void NewGameBirchSpeech_SetDefaultPlayerName(u8 nameId) static void CreateMainMenuErrorWindow(const u8* str) { - FillWindowPixelBuffer(7, 17); + FillWindowPixelBuffer(7, PIXEL_FILL(1)); AddTextPrinterParameterized(7, 1, str, 0, 1, 2, 0); PutWindowTilemap(7); CopyWindowToVram(7, 2); @@ -2105,12 +2236,12 @@ static void NewGameBirchSpeech_ClearGenderWindowTilemap(u8 a, u8 b, u8 c, u8 d, FillBgTilemapBufferRect(a, 0, b + 0xFF, c + 0xFF, d + 2, e + 2, 2); } -static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, u8 a) +static void NewGameBirchSpeech_ClearGenderWindow(u8 windowId, bool8 copyToVram) { CallWindowFunction(windowId, NewGameBirchSpeech_ClearGenderWindowTilemap); - FillWindowPixelBuffer(windowId, 0x11); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); ClearWindowTilemap(windowId); - if (a == 1) + if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } @@ -2146,7 +2277,7 @@ void CreateYesNoMenuParameterized(u8 a, u8 b, u16 c, u16 d, u8 e, u8 f) static void NewGameBirchSpeech_ShowDialogueWindow(u8 windowId, u8 copyToVram) { CallWindowFunction(windowId, NewGameBirchSpeech_CreateDialogueWindowBorder); - FillWindowPixelBuffer(windowId, 17); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); diff --git a/src/map_name_popup.c b/src/map_name_popup.c index cdb4c3330..d95b808e9 100644 --- a/src/map_name_popup.c +++ b/src/map_name_popup.c @@ -207,7 +207,7 @@ bool8 sub_80D47D4(void) void ShowMapNamePopup(void) { - if (FlagGet(FLAG_SPECIAL_FLAG_0x4000) != TRUE) + if (FlagGet(FLAG_HIDE_MAP_NAME_POPUP) != TRUE) { if (!FuncIsActiveTask(Task_MapNamePopUpWindow)) { @@ -276,7 +276,7 @@ static void Task_MapNamePopUpWindow(u8 taskId) } break; case 4: - sub_819746C(GetMapNamePopUpWindowId(), TRUE); + ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE); task->data[0] = 5; break; case 5: @@ -290,7 +290,7 @@ void HideMapNamePopUpWindow(void) { if (FuncIsActiveTask(Task_MapNamePopUpWindow)) { - sub_819746C(GetMapNamePopUpWindowId(), TRUE); + ClearStdWindowAndFrame(GetMapNamePopUpWindowId(), TRUE); RemoveMapNamePopUpWindow(); SetGpuReg_ForcedBlank(REG_OFFSET_BG0VOFS, 0); DestroyTask(sPopupTaskId); diff --git a/src/match_call.c b/src/match_call.c index e7e91969f..641079ba9 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -111,8 +111,6 @@ static void PopulateSpeciesFromTrainerParty(int, u8 *); static void PopulateBattleFrontierFacilityName(int, u8 *); static void PopulateBattleFrontierStreak(int, u8 *); -extern void sub_81973A4(void); - #define TEXT_ID(topic, id) (((topic) << 8) | ((id) & 0xFF)) static const struct MatchCallTrainerTextInfo sMatchCallTrainers[] = @@ -1016,7 +1014,7 @@ static bool32 MapAllowsMatchCall(void) if (gMapHeader.regionMapSectionId == MAPSEC_SOOTOPOLIS_CITY && FlagGet(FLAG_HIDE_SOOTOPOLIS_CITY_RAYQUAZA) == TRUE - && FlagGet(FLAG_UNUSED_0x0DC) == FALSE) + && FlagGet(FLAG_NEVER_SET_0x0DC) == FALSE) return FALSE; if (gMapHeader.regionMapSectionId == MAPSEC_MT_CHIMNEY @@ -1191,7 +1189,7 @@ static bool32 LoadMatchCallWindowGfx(u8 taskId) return FALSE; } - FillWindowPixelBuffer(taskData[2], 0x88); + FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8)); LoadPalette(sUnknown_0860EA4C, 0xE0, 0x20); LoadPalette(sPokeNavIconPalette, 0xF0, 0x20); ChangeBgY(0, -0x2000, 0); @@ -1241,7 +1239,7 @@ static bool32 sub_81962D8(u8 taskId) s16 *taskData = gTasks[taskId].data; if (!ExecuteMatchCallTextPrinter(taskData[2])) { - FillWindowPixelBuffer(taskData[2], 0x88); + FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8)); if (!gMatchCallState.triggeredFromScript) SelectMatchCallMessage(gMatchCallState.trainerId, gStringVar4); @@ -1257,7 +1255,7 @@ static bool32 sub_8196330(u8 taskId) s16 *taskData = gTasks[taskId].data; if (!ExecuteMatchCallTextPrinter(taskData[2]) && !IsSEPlaying() && gMain.newKeys & (A_BUTTON | B_BUTTON)) { - FillWindowPixelBuffer(taskData[2], 0x88); + FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8)); CopyWindowToVram(taskData[2], 2); PlaySE(SE_TOREOFF); return TRUE; diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index fd8e74c0a..ec5cb238b 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -437,7 +437,7 @@ static void BardSong_TextSubPrinter(struct TextPrinterTemplate * printer, u16 a1 static void sub_8120708(const u8 * src) { - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, 1, src, 0, 1, 1, BardSong_TextSubPrinter); gUnknown_03002F84 = TRUE; CopyWindowToVram(0, 3); diff --git a/src/menu.c b/src/menu.c index ae589dff4..b04572b81 100644 --- a/src/menu.c +++ b/src/menu.c @@ -122,20 +122,18 @@ const struct MoveMenuInfoIcon gMoveMenuInfoIcons[] = { 8, 8, 0xAF }, // Unused (Small dark pokeball) }; + // Forward declarations -extern void sub_81973A4(void); -extern void DrawStandardFrame(u8, u8, u8, u8, u8, u8); -extern void DrawDialogueFrame(u8, u8, u8, u8, u8, u8); -extern void sub_81977BC(u8, u8, u8, u8, u8, u8); -extern void sub_8197804(u8, u8, u8, u8, u8, u8); -extern void sub_8197BB4(u8, u8, u8, u8, u8, u8); -extern void sub_8197E30(u8, u8, u8, u8, u8, u8); -extern void DrawWindowBorder(u8, u8, u8, u8, u8, u8); -extern void sub_81980A8(u8, u8, u8, u8, u8, u8); -extern u8 Menu_MoveCursor(s8); -extern u8 sub_8199134(s8, s8); -extern void sub_8198C78(void); -extern void task_free_buf_after_copying_tile_data_to_vram(u8 taskId); +void WindowFunc_DrawStandardFrame(u8, u8, u8, u8, u8, u8); +void WindowFunc_DrawDialogueFrame(u8, u8, u8, u8, u8, u8); +void WindowFunc_ClearStdWindowAndFrame(u8, u8, u8, u8, u8, u8); +void WindowFunc_ClearDialogWindowAndFrame(u8, u8, u8, u8, u8, u8); +void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8, u8, u8, u8, u8, u8); +void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8, u8, u8, u8, u8, u8); +void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8, u8, u8, u8, u8, u8); +void WindowFunc_ClearStdWindowAndFrameToTransparent(u8, u8, u8, u8, u8, u8); +void sub_8198C78(void); +void task_free_buf_after_copying_tile_data_to_vram(u8 taskId); void InitStandardTextBoxWindows(void) { @@ -210,43 +208,43 @@ void sub_81973A4(void) LoadUserWindowBorderGfx(0, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM * 0x10); } -void NewMenuHelpers_DrawDialogueFrame(u8 windowId, bool8 copyToVram) +void DrawDialogueFrame(u8 windowId, bool8 copyToVram) { - CallWindowFunction(windowId, DrawDialogueFrame); - FillWindowPixelBuffer(windowId, 0x11); + CallWindowFunction(windowId, WindowFunc_DrawDialogueFrame); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void NewMenuHelpers_DrawStdWindowFrame(u8 windowId, bool8 copyToVram) +void DrawStdWindowFrame(u8 windowId, bool8 copyToVram) { - CallWindowFunction(windowId, DrawStandardFrame); - FillWindowPixelBuffer(windowId, 0x11); + CallWindowFunction(windowId, WindowFunc_DrawStandardFrame); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void sub_8197434(u8 windowId, bool8 copyToVram) +void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram) { - CallWindowFunction(windowId, sub_8197804); - FillWindowPixelBuffer(windowId, 0x11); + CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrame); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); ClearWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void sub_819746C(u8 windowId, bool8 copyToVram) +void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram) { - CallWindowFunction(windowId, sub_81977BC); - FillWindowPixelBuffer(windowId, 0x11); + CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrame); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); ClearWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) +void WindowFunc_DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) { int i; @@ -313,7 +311,7 @@ void DrawStandardFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height STD_WINDOW_PALETTE_NUM); } -void DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) +void WindowFunc_DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) { FillBgTilemapBufferRect(bg, DLG_WINDOW_BASE_TILE_NUM + 1, @@ -408,25 +406,25 @@ void DrawDialogueFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height DLG_WINDOW_PALETTE_NUM); } -void sub_81977BC(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) +void WindowFunc_ClearStdWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) { FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, STD_WINDOW_PALETTE_NUM); } -void sub_8197804(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) +void WindowFunc_ClearDialogWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) { FillBgTilemapBufferRect(bg, 0, tilemapLeft - 3, tilemapTop - 1, width + 6, height + 2, STD_WINDOW_PALETTE_NUM); } void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram) { - SetWindowBorderStyle(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM); + DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM); } void sub_819786C(u8 windowId, bool8 copyToVram) { LoadMessageBoxGfx(windowId, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM * 0x10); - sub_8197B1C(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF); + DrawDialogFrameWithCustomTileAndPalette(windowId, copyToVram, DLG_WINDOW_BASE_TILE_NUM, 0xF); } void sub_819789C(void) @@ -458,12 +456,12 @@ void DisplayItemMessageOnField(u8 taskId, const u8 *string, TaskFunc callback) CopyWindowToVram(0, 3); } -void DisplayYesNoMenu(void) +void DisplayYesNoMenuDefaultYes(void) { CreateYesNoMenu(&sYesNo_WindowTemplates, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, 0); } -void sub_8197948(u8 initialCursorPos) +void DisplayYesNoMenuWithDefault(u8 initialCursorPos) { CreateYesNoMenu(&sYesNo_WindowTemplates, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM, initialCursorPos); } @@ -549,29 +547,30 @@ void sub_8197AE8(bool8 copyToVram) CopyBgTilemapBufferToVram(0); } -void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum) +void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum) { sTileNum = tileNum; sPaletteNum = paletteNum; - CallWindowFunction(windowId, sub_8197BB4); - FillWindowPixelBuffer(windowId, 0x11); + CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void sub_8197B64(u8 windowId, bool8 copyToVram, u16 tileNum) +// Never used. +void DrawDialogFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 tileNum) { sTileNum = tileNum; sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM); - CallWindowFunction(windowId, sub_8197BB4); - FillWindowPixelBuffer(windowId, 0x11); + CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void sub_8197BB4(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) +void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) { FillBgTilemapBufferRect(bg, sTileNum + 1, @@ -666,43 +665,45 @@ void sub_8197BB4(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 p sPaletteNum); } -void sub_8197DF8(u8 windowId, bool8 copyToVram) +void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram) { - CallWindowFunction(windowId, sub_8197E30); - FillWindowPixelBuffer(windowId, 0); + // The palette slot doesn't matter, since the tiles are transparent. + CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrameNullPalette); + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); ClearWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void sub_8197E30(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) +void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) { FillBgTilemapBufferRect(bg, 0, tilemapLeft - 3, tilemapTop - 1, width + 6, height + 2, 0); } -void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum) +void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum) { sTileNum = baseTileNum; sPaletteNum = paletteNum; - CallWindowFunction(windowId, DrawWindowBorder); - FillWindowPixelBuffer(windowId, 0x11); + CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void sub_8197EC8(u8 windowId, bool8 copyToVram, u16 baseTileNum) +// Never used. +void DrawStdFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 baseTileNum) { sTileNum = baseTileNum; sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM); - CallWindowFunction(windowId, DrawWindowBorder); - FillWindowPixelBuffer(windowId, 0x11); + CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); PutWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void DrawWindowBorder(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) +void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) { FillBgTilemapBufferRect(bg, sTileNum + 0, @@ -762,16 +763,16 @@ void DrawWindowBorder(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, sPaletteNum); } -void sub_8198070(u8 windowId, bool8 copyToVram) +void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram) { - CallWindowFunction(windowId, sub_81980A8); - FillWindowPixelBuffer(windowId, 0); + CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrameToTransparent); + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); ClearWindowTilemap(windowId); if (copyToVram == TRUE) CopyWindowToVram(windowId, 3); } -void sub_81980A8(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) +void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum) { FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0); } @@ -811,7 +812,7 @@ void sub_8198180(const u8 *string, u8 a2, bool8 copyToVram) if (sWindowId != 0xFF) { PutWindowTilemap(sWindowId); - FillWindowPixelBuffer(sWindowId, 0xFF); + FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15)); width = GetStringWidth(0, string, 0); AddTextPrinterParameterized3(sWindowId, 0, @@ -845,7 +846,7 @@ void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyTo color[2] = 2; } PutWindowTilemap(sWindowId); - FillWindowPixelBuffer(sWindowId, 0xFF); + FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15)); if (string2 != NULL) { width = GetStringWidth(0, string2, 0); @@ -873,7 +874,7 @@ void sub_81982F0(void) { if (sWindowId != 0xFF) { - FillWindowPixelBuffer(sWindowId, 0xFF); + FillWindowPixelBuffer(sWindowId, PIXEL_FILL(15)); CopyWindowToVram(sWindowId, 3); } } @@ -882,7 +883,7 @@ void sub_8198314(void) { if (sWindowId != 0xFF) { - FillWindowPixelBuffer(sWindowId, 0); + FillWindowPixelBuffer(sWindowId, PIXEL_FILL(0)); ClearWindowTilemap(sWindowId); CopyWindowToVram(sWindowId, 3); RemoveWindow(sWindowId); @@ -931,7 +932,7 @@ void RedrawMenuCursor(u8 oldPos, u8 newPos) width = GetMenuCursorDimensionByFont(sMenu.fontId, 0); height = GetMenuCursorDimensionByFont(sMenu.fontId, 1); - FillWindowPixelRect(sMenu.windowId, 0x11, sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height); + FillWindowPixelRect(sMenu.windowId, PIXEL_FILL(1), sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height); AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gText_SelectorArrow3, sMenu.left, sMenu.optionHeight * newPos + sMenu.top, 0, 0); } @@ -1175,7 +1176,7 @@ void sub_8198AF8(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top struct TextPrinterTemplate printer; sYesNoWindowId = AddWindow(window); - SetWindowBorderStyle(sYesNoWindowId, TRUE, baseTileNum, paletteNum); + DrawStdFrameWithCustomTileAndPalette(sYesNoWindowId, TRUE, baseTileNum, paletteNum); printer.currentChar = gText_YesNo; printer.windowId = sYesNoWindowId; @@ -1211,7 +1212,7 @@ s8 Menu_ProcessInputNoWrapClearOnChoose(void) void sub_8198C78(void) { - sub_8198070(sYesNoWindowId, TRUE); + ClearStdWindowAndFrameToTransparent(sYesNoWindowId, TRUE); RemoveWindow(sYesNoWindowId); } @@ -1310,7 +1311,7 @@ void sub_8199060(u8 oldCursorPos, u8 newCursorPos) u8 xPos = (oldCursorPos % sMenu.horizontalCount) * sMenu.optionWidth + sMenu.left; u8 yPos = (oldCursorPos / sMenu.horizontalCount) * sMenu.optionHeight + sMenu.top; FillWindowPixelRect(sMenu.windowId, - 0x11, + PIXEL_FILL(1), xPos, yPos, cursorWidth, @@ -1640,7 +1641,7 @@ void CreateYesNoMenu(const struct WindowTemplate *window, u16 baseTileNum, u8 pa struct TextPrinterTemplate printer; sYesNoWindowId = AddWindow(window); - SetWindowBorderStyle(sYesNoWindowId, TRUE, baseTileNum, paletteNum); + DrawStdFrameWithCustomTileAndPalette(sYesNoWindowId, TRUE, baseTileNum, paletteNum); printer.currentChar = gText_YesNo; printer.windowId = sYesNoWindowId; diff --git a/src/menu_helpers.c b/src/menu_helpers.c index e6547b300..3fb5ca40d 100644 --- a/src/menu_helpers.c +++ b/src/menu_helpers.c @@ -18,8 +18,6 @@ #include "constants/items.h" #include "constants/maps.h" -extern bool32 sub_800B504(void); - // this file's functions static void Task_ContinueTaskAfterMessagePrints(u8 taskId); static void Task_CallYesOrNoCallback(u8 taskId); @@ -129,7 +127,7 @@ void SetVBlankHBlankCallbacksToNull(void) void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc) { gUnknown_0203A140 = windowId; - sub_8197B1C(windowId, TRUE, arg2, arg3); + DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, arg2, arg3); if (string != gStringVar4) StringExpandPlaceholders(gStringVar4, string); @@ -293,7 +291,7 @@ bool8 sub_8122148(u16 itemId) bool8 itemid_80BF6D8_mail_related(u16 itemId) { - if (is_c1_link_related_active() != TRUE && InUnionRoom() != TRUE) + if (IsUpdateLinkStateCBActive() != TRUE && InUnionRoom() != TRUE) return TRUE; else if (ItemIsMail(itemId) != TRUE) return TRUE; @@ -303,7 +301,7 @@ bool8 itemid_80BF6D8_mail_related(u16 itemId) bool8 sub_81221AC(void) { - if (is_c1_link_related_active() == TRUE || gReceivedRemoteLinkPlayers == 1) + if (IsUpdateLinkStateCBActive() == TRUE || gReceivedRemoteLinkPlayers == 1) return TRUE; else return FALSE; diff --git a/src/mirage_tower.c b/src/mirage_tower.c index a8dd5d9de..4f5834db1 100644 --- a/src/mirage_tower.c +++ b/src/mirage_tower.c @@ -317,7 +317,7 @@ void SetMirageTowerVisibility(void) u16 rand; bool8 visible; - if (VarGet(VAR_0x40CB)) + if (VarGet(VAR_ROUTE_111_STATE)) { FlagClear(FLAG_MIRAGE_TOWER_VISIBLE); return; diff --git a/src/money.c b/src/money.c index faf830637..4ff8086ea 100644 --- a/src/money.c +++ b/src/money.c @@ -154,7 +154,7 @@ void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed) void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount) { - SetWindowBorderStyle(windowId, FALSE, tileStart, pallete); + DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, pallete); PrintMoneyAmountInMoneyBox(windowId, amount, 0); } @@ -169,7 +169,7 @@ void DrawMoneyBox(int amount, u8 x, u8 y) SetWindowTemplateFields(&template, 0, x + 1, y + 1, 10, 2, 15, 8); sMoneyBoxWindowId = AddWindow(&template); - FillWindowPixelBuffer(sMoneyBoxWindowId, 0); + FillWindowPixelBuffer(sMoneyBoxWindowId, PIXEL_FILL(0)); PutWindowTilemap(sMoneyBoxWindowId); CopyWindowToVram(sMoneyBoxWindowId, 1); PrintMoneyAmountInMoneyBoxWithBorder(sMoneyBoxWindowId, 0x214, 14, amount); @@ -179,7 +179,7 @@ void DrawMoneyBox(int amount, u8 x, u8 y) void HideMoneyBox(void) { RemoveMoneyLabelObject(); - sub_8198070(sMoneyBoxWindowId, FALSE); + ClearStdWindowAndFrameToTransparent(sMoneyBoxWindowId, FALSE); CopyWindowToVram(sMoneyBoxWindowId, 2); RemoveWindow(sMoneyBoxWindowId); } diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 0de4675d9..ad4a2e692 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -90,7 +90,7 @@ void CB2_InitMysteryEventMenu(void) DeactivateAllTextPrinters(); for (i = 0; i < 2; i++) - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14); LoadUserWindowBorderGfx(0, 1u, 0xD0u); @@ -133,7 +133,7 @@ static void CB2_MysteryEventMenu(void) switch (gMain.state) { case 0: - SetWindowBorderStyle(0, 1, 1, 0xD); + DrawStdFrameWithCustomTileAndPalette(0, 1, 1, 0xD); PutWindowTilemap(0); CopyWindowToVram(0, 3); ShowBg(0); @@ -179,8 +179,8 @@ static void CB2_MysteryEventMenu(void) if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - sub_800A620(); - SetWindowBorderStyle(1, 1, 1, 0xD); + CheckShouldAdvanceLinkState(); + DrawStdFrameWithCustomTileAndPalette(1, 1, 1, 0xD); PrintMysteryMenuText(1, gText_LoadingEvent, 1, 2, 0); PutWindowTilemap(1); CopyWindowToVram(1, 3); @@ -313,6 +313,6 @@ static void PrintMysteryMenuText(u8 windowId, const u8 *text, u8 x, u8 y, s32 sp textColor[1] = 2; textColor[2] = 3; - FillWindowPixelBuffer(windowId, (textColor[0]) | (textColor[0] << 4)); + FillWindowPixelBuffer(windowId, PIXEL_FILL(textColor[0])); AddTextPrinterParameterized4(windowId, 1, x, y, letterSpacing, lineSpacing, textColor, speed, text); } diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 4196bb34c..dba914b51 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -17,8 +17,6 @@ #include "mystery_event_msg.h" #include "pokemon_storage_system.h" -extern void sub_811EFC0(u8); - extern ScrCmdFunc gMysteryEventScriptCmdTable[]; extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; diff --git a/src/naming_screen.c b/src/naming_screen.c index c310ceb9f..22bbb84d7 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -557,7 +557,7 @@ static void DisplaySentToPCMessage(void) stringToDisplay++; StringExpandPlaceholders(gStringVar4, gUnknown_0858BDB8[stringToDisplay]); - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); gTextFlags.canABSpeedUpPrint = TRUE; AddTextPrinterParameterized2(0, 1, gStringVar4, GetPlayerTextSpeedDelay(), 0, 2, 1, 3); CopyWindowToVram(0, 3); @@ -1474,7 +1474,7 @@ static void HandleDpadMovement(struct Task *task) static void sub_80E4894(void) { - FillWindowPixelBuffer(gNamingScreenData->windows[3], 0x11); + FillWindowPixelBuffer(gNamingScreenData->windows[3], PIXEL_FILL(1)); AddTextPrinterParameterized(gNamingScreenData->windows[3], 1, gNamingScreenData->template->title, 8, 1, 0, 0); PutWindowTilemap(gNamingScreenData->windows[3]); } @@ -1485,7 +1485,7 @@ static void sub_80E48E8(void) StringCopy(buffer, gSpeciesNames[gNamingScreenData->monSpecies]); StringAppendN(buffer, gNamingScreenData->template->title, 15); - FillWindowPixelBuffer(gNamingScreenData->windows[3], 0x11); + FillWindowPixelBuffer(gNamingScreenData->windows[3], PIXEL_FILL(1)); AddTextPrinterParameterized(gNamingScreenData->windows[3], 1, buffer, 8, 1, 0, 0); PutWindowTilemap(gNamingScreenData->windows[3]); } @@ -1672,7 +1672,7 @@ static void sub_80E4D10(void) u8 maxChars = gNamingScreenData->template->maxChars; u16 unk = gNamingScreenData->inputCharBaseXPos - 0x40; - FillWindowPixelBuffer(gNamingScreenData->windows[2], 0x11); + FillWindowPixelBuffer(gNamingScreenData->windows[2], PIXEL_FILL(1)); for (i = 0; i < maxChars; i++) { @@ -1704,7 +1704,9 @@ static const struct TextColorThing sUnkColorStruct = static const u8 sFillValues[3] = { - 0xEE, 0xDD, 0xFF + PIXEL_FILL(0xE), + PIXEL_FILL(0xD), + PIXEL_FILL(0xF) }; static const u8 *const sUnkColors[3] = @@ -1766,7 +1768,7 @@ static void sub_80E4EF0(void) { const u8 color[3] = { 15, 1, 2 }; - FillWindowPixelBuffer(gNamingScreenData->windows[4], 0xFF); + FillWindowPixelBuffer(gNamingScreenData->windows[4], PIXEL_FILL(15)); AddTextPrinterParameterized3(gNamingScreenData->windows[4], 0, 2, 1, color, 0, gText_MoveOkBack); PutWindowTilemap(gNamingScreenData->windows[4]); CopyWindowToVram(gNamingScreenData->windows[4], 3); diff --git a/src/normal.c b/src/normal.c index 87c8792f1..2b592e199 100644 --- a/src/normal.c +++ b/src/normal.c @@ -36,8 +36,6 @@ static void sub_81162F8(u8); static void sub_81163D0(struct Sprite *); static void sub_81165E4(struct Sprite *); -extern void sub_810E2C8(struct Sprite *); - const union AnimCmd gUnknown_0859722C[] = { ANIMCMD_FRAME(0, 8), diff --git a/src/option_menu.c b/src/option_menu.c index 122ba8d8a..2fc0d6f3e 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -13,8 +13,7 @@ #include "text_window.h" #include "international_string_util.h" #include "strings.h" - -extern void SetPokemonCryStereo(u32 val); +#include "gba/m4a_internal.h" // Task data enum @@ -620,7 +619,7 @@ static void ButtonMode_DrawChoices(u8 selection) static void DrawTextOption(void) { - FillWindowPixelBuffer(WIN_TEXT_OPTION, 0x11); + FillWindowPixelBuffer(WIN_TEXT_OPTION, PIXEL_FILL(1)); AddTextPrinterParameterized(WIN_TEXT_OPTION, 1, gText_Option, 8, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(WIN_TEXT_OPTION, 3); } @@ -629,7 +628,7 @@ static void DrawOptionMenuTexts(void) { u8 i; - FillWindowPixelBuffer(WIN_OPTIONS, 0x11); + FillWindowPixelBuffer(WIN_OPTIONS, PIXEL_FILL(1)); for (i = 0; i < MENUITEM_COUNT; i++) { AddTextPrinterParameterized(WIN_OPTIONS, 1, sOptionMenuItemsNames[i], 8, (i * 16) + 1, TEXT_SPEED_FF, NULL); diff --git a/src/overworld.c b/src/overworld.c index 08fd94c1b..0ff8d5b7f 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -66,32 +66,47 @@ #include "constants/species.h" #include "constants/weather.h" +#define PLAYER_TRADING_STATE_IDLE 0x80 +#define PLAYER_TRADING_STATE_BUSY 0x81 +#define PLAYER_TRADING_STATE_UNK_2 0x82 +#define PLAYER_TRADING_STATE_EXITING_ROOM 0x83 + +#define FACING_NONE 0 +#define FACING_UP 1 +#define FACING_DOWN 2 +#define FACING_LEFT 3 +#define FACING_RIGHT 4 +#define FACING_FORCED_UP 7 +#define FACING_FORCED_DOWN 8 +#define FACING_FORCED_LEFT 9 +#define FACING_FORCED_RIGHT 10 + // event scripts extern const u8 EventScript_WhiteOut[]; -extern const u8 EventScript_271862[]; -extern const u8 EventScript_277513[]; -extern const u8 EventScript_TradeRoom_TooBusyToNotice[]; -extern const u8 EventScript_TradeRoom_ReadTrainerCard1[]; -extern const u8 EventScript_TradeRoom_ReadTrainerCard2[]; -extern const u8 gUnknown_08277388[]; -extern const u8 gUnknown_082773A3[]; -extern const u8 gUnknown_082773BE[]; -extern const u8 gUnknown_082773D9[]; -extern const u8 gUnknown_0827741D[]; -extern const u8 gUnknown_08277432[]; -extern const u8 gUnknown_08277447[]; -extern const u8 gUnknown_0827745C[]; -extern const u8 gUnknown_08277374[]; -extern const u8 gUnknown_0827737E[]; -extern const u8 gUnknown_082773FF[]; -extern const u8 gUnknown_082773F5[]; -extern const u8 gUnknown_082774EF[]; -extern const u8 gUnknown_08277509[]; +extern const u8 EventScript_ResetMrBriney[]; +extern const u8 EventScript_DoLinkRoomExit[]; +extern const u8 gEventScript_TradeRoom_TooBusyToNotice[]; +extern const u8 gEventScript_TradeRoom_ReadTrainerCard_NoColor[]; +extern const u8 gEventScript_TradeRoom_ReadTrainerCard_Normal[]; +extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot0[]; +extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot1[]; +extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot2[]; +extern const u8 EventScript_DoubleBattleColosseum_PlayerSpot3[]; +extern const u8 EventScript_RecordCenter_Spot0[]; +extern const u8 EventScript_RecordCenter_Spot1[]; +extern const u8 EventScript_RecordCenter_Spot2[]; +extern const u8 EventScript_RecordCenter_Spot3[]; +extern const u8 EventScript_SingleBattleColosseum_PlayerSpot0[]; +extern const u8 EventScript_SingleBattleColosseum_PlayerSpot1[]; +extern const u8 EventScript_TradeCenter_Chair1[]; +extern const u8 EventScript_TradeCenter_Chair0[]; +extern const u8 EventScript_ConfirmLeaveTradeRoom[]; +extern const u8 EventScript_TerminateLink[]; extern const struct MapLayout *const gMapLayouts[]; extern const struct MapHeader *const *const gMapGroups[]; extern const int gMaxFlashLevel; -extern const u16 gUnknown_82EC7C4[]; +extern const u16 gOverworldBackgroundLayerFlags[]; static void Overworld_ResetStateAfterWhiteOut(void); static void c2_80567AC(void); @@ -106,63 +121,63 @@ static bool32 load_map_stuff(u8 *state, u32); static bool32 map_loading_iteration_2_link(u8 *state); static void mli4_mapscripts_and_other(void); static void InitOverworldGraphicsRegisters(void); -static u8 sub_8087858(u8); -static u16 sub_80871C0(u32 a1); +static u8 GetSpriteForLinkedPlayer(u8); +static u16 KeyInterCB_SendNothing(u32 a1); static void sub_80867C8(void); static void sub_80867D8(void); static void sub_8086AE4(void); static void sub_80869DC(void); static void sub_8086B14(void); -static void sub_8086AAC(void); +static void SetCameraToTrackGuestPlayer(void); static void sub_8086988(bool32 arg0); static void sub_8086A80(void); static void sub_8086A68(void); static void sub_8086860(void); -static void sub_8086AC8(void); -static void sub_8086B9C(void); -static void sub_8086C40(void); -static void sub_8086C90(void); -static void sub_8086FA0(u16); -static void sub_8086F38(u16*, s32); -static u8 npc_something3(u8 a1, u8 a2); +static void SetCameraToTrackGuestPlayer_2(void); +static void CreateLinkPlayerSprites(void); +static void ClearAllPlayerKeys(void); +static void ResetAllTradingStates(void); +static void UpdateHeldKeyCode(u16); +static void UpdateAllLinkPlayers(u16*, s32); +static u8 FlipVerticalAndClearForced(u8 a1, u8 a2); static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y); static void CreateLinkPlayerSprite(u8 linkPlayerId, u8 gameVersion); -static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y); -static u8 sub_80878A0(u8 linkPlayerId); -static u8 sub_80878C0(u8 linkPlayerId); +static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y); +static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId); +static u8 GetLinkPlayerElevation(u8 linkPlayerId); static s32 sub_80878E4(u8 linkPlayerId); static u8 GetLinkPlayerIdAt(s16 x, s16 y); -static void sub_808796C(u8 linkPlayerId, u8 a2); +static void SetPlayerFacingDirection(u8 linkPlayerId, u8 a2); static void ZeroEventObject(struct EventObject *eventObj); static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4); static void InitLinkPlayerEventObjectPos(struct EventObject *eventObj, s16 x, s16 y); static void sub_80877DC(u8 linkPlayerId, u8 a2); static void sub_808780C(u8 linkPlayerId); -static u8 sub_8087858(u8 linkPlayerId); +static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId); static void sub_8087584(void); -static u32 sub_8087690(void); +static u32 GetLinkSendQueueLength(void); static void ZeroLinkPlayerEventObject(struct LinkPlayerEventObject *linkPlayerEventObj); -static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1); -static u16 sub_8087480(const u8 *script); +static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1); +static u16 GetDirectionForEventScript(const u8 *script); static void sub_8087510(void); -static void sub_808751C(void); +static void InitLinkRoomStartMenuScript(void); static void sub_8087530(const u8 *script); -static void sub_808754C(void); -static void sub_8087568(const u8 *script); -static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3); -static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1); -static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1); -static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1); -static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1); -static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1); -static u16 sub_808711C(u32); -static u16 sub_8087140(u32); -static void sub_808709C(u16 *a1); -static u16 sub_80870B0(u32 a1); -static u16 sub_80870F8(u32 a1); -static u16 sub_8087068(u16 a1); -static void c1_link_related(void); -static void c1_link_related_func_set(u16 (*func)(u32)); +static void CreateConfirmLeaveTradeRoomPrompt(void); +static void InitMenuBasedScript(const u8 *script); +static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 a2, struct TradeRoomPlayer *a3); +static bool32 sub_8087340(struct TradeRoomPlayer *a1); +static bool32 sub_8087340_2(struct TradeRoomPlayer *a1); +static u8 *TryGetTileEventScript(struct TradeRoomPlayer *a1); +static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *a1); +static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *a1); +static u16 KeyInterCB_DeferToRecvQueue(u32); +static u16 KeyInterCB_DeferToSendQueue(u32); +static void ResetPlayerHeldKeys(u16 *a1); +static u16 KeyInterCB_SelfIdle(u32 a1); +static u16 KeyInterCB_DeferToEventScript(u32 a1); +static u16 GetDirectionForDpadKey(u16 a1); +static void CB1_UpdateLinkState(void); +static void SetKeyInterceptCallback(u16 (*func)(u32)); static void SetFieldVBlankCallback(void); static void FieldClearVBlankHBlankCallbacks(void); static void sub_8085810(void); @@ -171,21 +186,24 @@ static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStr static u16 GetCenterScreenMetatileBehavior(void); // IWRAM bss vars -IWRAM_DATA static void *sUnknown_03000E0C; -IWRAM_DATA static u8 sUnknown_03000E10[4]; -IWRAM_DATA static u16 (*sUnknown_03000E14)(u32); -IWRAM_DATA static u8 sUnknown_03000E18; -IWRAM_DATA static u8 sUnknown_03000E19; +IWRAM_DATA static void *sUnusedOverworldCallback; +IWRAM_DATA static u8 sPlayerTradingStates[4]; +// This callback is called with a player's key code. It then returns an +// adjusted key code, effectively intercepting the input before anything +// can process it. +IWRAM_DATA static u16 (*sPlayerKeyInterceptCallback)(u32); +IWRAM_DATA static bool8 sUnknown_03000E18; +IWRAM_DATA static u8 sRfuKeepAliveTimer; IWRAM_DATA static u32 sUnusedVar; // IWRAM common u16 *gBGTilemapBuffers1; u16 *gBGTilemapBuffers2; u16 *gBGTilemapBuffers3; -u16 gUnknown_03005DA8; +u16 gHeldKeyCodeToSend; void (*gFieldCallback)(void); bool8 (*gFieldCallback2)(void); -u8 gUnknown_03005DB4; +u8 gLocalLinkPlayerId; // This is our player id in a multiplayer mode. u8 gFieldLinkPlayerCount; // EWRAM vars @@ -319,43 +337,47 @@ static const struct ScanlineEffectParams sFlashEffectParams = 0, }; -static u8 sub_80879D8(struct LinkPlayerEventObject *, struct EventObject *, u8); -static u8 sub_80879F8(struct LinkPlayerEventObject *, struct EventObject *, u8); -static u8 sub_80879FC(struct LinkPlayerEventObject *, struct EventObject *, u8); +static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *, struct EventObject *, u8); +static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *, struct EventObject *, u8); +static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *, struct EventObject *, u8); -static u8 (*const gUnknown_08339DC8[])(struct LinkPlayerEventObject *, struct EventObject *, u8) = +static u8 (*const gLinkPlayerMovementModes[])(struct LinkPlayerEventObject *, struct EventObject *, u8) = { - sub_80879D8, - sub_80879F8, - sub_80879FC, + MovementEventModeCB_Normal, // MOVEMENT_MODE_FREE + MovementEventModeCB_Ignored, // MOVEMENT_MODE_FROZEN + MovementEventModeCB_Normal_2, // MOVEMENT_MODE_SCRIPTED }; -static u8 sub_8087A1C(struct LinkPlayerEventObject *, struct EventObject *, u8); -static u8 sub_8087A20(struct LinkPlayerEventObject *, struct EventObject *, u8); -static u8 sub_8087A88(struct LinkPlayerEventObject *, struct EventObject *, u8); - -static u8 (*const gUnknown_08339DD4[])(struct LinkPlayerEventObject *, struct EventObject *, u8) = -{ - sub_8087A1C, - sub_8087A20, - sub_8087A20, - sub_8087A20, - sub_8087A20, - sub_8087A1C, - sub_8087A1C, - sub_8087A88, - sub_8087A88, - sub_8087A88, - sub_8087A88, +static u8 FacingHandler_DoNothing(struct LinkPlayerEventObject *, struct EventObject *, u8); +static u8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *, struct EventObject *, u8); +static u8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *, struct EventObject *, u8); + +// These handlers return TRUE if the movement was scripted and successful, and FALSE otherwise. +static bool8 (*const gLinkPlayerFacingHandlers[])(struct LinkPlayerEventObject *, struct EventObject *, u8) = +{ + FacingHandler_DoNothing, + FacingHandler_DpadMovement, + FacingHandler_DpadMovement, + FacingHandler_DpadMovement, + FacingHandler_DpadMovement, + FacingHandler_DoNothing, + FacingHandler_DoNothing, + FacingHandler_ForcedFacingChange, + FacingHandler_ForcedFacingChange, + FacingHandler_ForcedFacingChange, + FacingHandler_ForcedFacingChange, }; -static void sub_8087AA0(struct LinkPlayerEventObject *, struct EventObject *); -static void sub_8087AA8(struct LinkPlayerEventObject *, struct EventObject *); +static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *, struct EventObject *); +static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *, struct EventObject *); -static void (*const gUnknown_08339E00[])(struct LinkPlayerEventObject *, struct EventObject *) = +// These handlers are run after an attempted movement. +static void (*const gMovementStatusHandler[])(struct LinkPlayerEventObject *, struct EventObject *) = { - sub_8087AA0, - sub_8087AA8, + // FALSE: + MovementStatusHandler_EnterFreeMode, + // TRUE: + MovementStatusHandler_TryAdvanceScript, }; // code @@ -387,7 +409,7 @@ void Overworld_ResetStateAfterTeleport(void) FlagClear(FLAG_SYS_SAFARI_MODE); FlagClear(FLAG_SYS_USE_STRENGTH); FlagClear(FLAG_SYS_USE_FLASH); - ScriptContext2_RunNewScript(EventScript_271862); + ScriptContext2_RunNewScript(EventScript_ResetMrBriney); } void Overworld_ResetStateAfterDigEscRope(void) @@ -408,10 +430,12 @@ static void Overworld_ResetStateAfterWhiteOut(void) FlagClear(FLAG_SYS_SAFARI_MODE); FlagClear(FLAG_SYS_USE_STRENGTH); FlagClear(FLAG_SYS_USE_FLASH); - if (VarGet(VAR_0x4039) == 1) + // If you were defeated by Kyogre/Groudon and the step counter has + // maxed out, end the unusual weather. + if (VarGet(VAR_SHOULD_END_UNUSUAL_WEATHER) == 1) { - VarSet(VAR_0x4039, 0); - VarSet(VAR_0x4037, 0); + VarSet(VAR_SHOULD_END_UNUSUAL_WEATHER, 0); + VarSet(VAR_UNUSUAL_WEATHER_LOCATION, UNUSUAL_WEATHER_NONE); } } @@ -676,7 +700,7 @@ void UpdateEscapeWarp(s16 x, s16 y) { u8 currMapType = GetCurrentMapType(); u8 destMapType = GetMapTypeByGroupAndId(sWarpDestination.mapGroup, sWarpDestination.mapNum); - if (is_map_type_1_2_3_5_or_6(currMapType) && is_map_type_1_2_3_5_or_6(destMapType) != TRUE) + if (IsMapTypeOutdoors(currMapType) && IsMapTypeOutdoors(destMapType) != TRUE) SetEscapeWarp(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x - 7, y - 6); } @@ -761,7 +785,7 @@ static bool8 SetDiveWarp(u8 dir, u16 x, u16 y) } else { - mapheader_run_script_with_tag_x6(); + RunOnDiveWarpMapScript(); if (IsDummyWarp(&gFixedDiveWarp)) return FALSE; SetWarpDestinationToDiveWarp(); @@ -779,7 +803,7 @@ bool8 SetDiveWarpDive(u16 x, u16 y) return SetDiveWarp(CONNECTION_DIVE, x, y); } -void mliX_load_map(u8 mapGroup, u8 mapNum) +void LoadMapFromCameraTransition(u8 mapGroup, u8 mapNum) { s32 paletteIndex; @@ -800,7 +824,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum) ChooseAmbientCrySpecies(); SetDefaultFlashLevel(); Overworld_ClearSavedMusic(); - mapheader_run_script_with_tag_x3(); + RunOnTransitionMapScript(); InitMap(); copy_map_tileset2_to_vram_2(gMapHeader.mapLayout); apply_map_tileset2_palette(gMapHeader.mapLayout); @@ -813,7 +837,7 @@ void mliX_load_map(u8 mapGroup, u8 mapNum) RoamerMove(); DoCurrentWeather(); ResetFieldTasksArgs(); - mapheader_run_script_with_tag_x5(); + RunOnResumeMapScript(); if (gMapHeader.regionMapSectionId != MAPSEC_BATTLE_FRONTIER || gMapHeader.regionMapSectionId != sLastMapSectionId) ShowMapNamePopup(); @@ -821,8 +845,8 @@ void mliX_load_map(u8 mapGroup, u8 mapNum) static void mli0_load_map(u32 a1) { - bool8 v2; - bool8 indoors; + bool8 isOutdoors; + bool8 isIndoors; LoadCurrentMapData(); if (!(sUnknown_020322D8 & 1)) @@ -835,8 +859,8 @@ static void mli0_load_map(u32 a1) LoadEventObjTemplatesFromHeader(); } - v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType); - indoors = Overworld_MapTypeIsIndoors(gMapHeader.mapType); + isOutdoors = IsMapTypeOutdoors(gMapHeader.mapType); + isIndoors = IsMapTypeIndoors(gMapHeader.mapType); sub_80EB218(); TrySetMapSaveWarpStatus(); @@ -848,11 +872,11 @@ static void mli0_load_map(u32 a1) DoTimeBasedEvents(); SetSav1WeatherFromCurrMapHeader(); ChooseAmbientCrySpecies(); - if (v2) + if (isOutdoors) FlagClear(FLAG_SYS_USE_FLASH); SetDefaultFlashLevel(); Overworld_ClearSavedMusic(); - mapheader_run_script_with_tag_x3(); + RunOnTransitionMapScript(); UpdateLocationHistoryForRoamer(); RoamerMoveToOtherLocationSet(); if (gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE) @@ -862,7 +886,7 @@ static void mli0_load_map(u32 a1) else InitMap(); - if (a1 != 1 && indoors) + if (a1 != 1 && isIndoors) { UpdateTVScreensOnMap(gBackupMapLayout.width, gBackupMapLayout.height); sub_80E9238(1); @@ -923,7 +947,7 @@ static u8 GetAdjustedInitialTransitionFlags(struct InitialPlayerAvatarState *pla static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStruct, u8 transitionFlags, u16 metatileBehavior, u8 mapType) { - if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_6) + if (FlagGet(FLAG_SYS_CRUISE_MODE) && mapType == MAP_TYPE_OCEAN_ROUTE) return DIR_EAST; else if (MetatileBehavior_IsDeepSouthWarp(metatileBehavior) == TRUE) return DIR_NORTH; @@ -1016,7 +1040,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) case MAP_NUM(ROUTE128): return TRUE; default: - if (VarGet(VAR_0x405E) < 4) + if (VarGet(VAR_RAYQUAZA_STATE) < 4) return FALSE; switch (warp->mapNum) { @@ -1032,7 +1056,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) static bool16 NoMusicInSotopolisWithLegendaries(struct WarpData *warp) { - if (VarGet(VAR_0x40CA) != 1) + if (VarGet(VAR_SKY_PILLAR_STATE) != 1) return FALSE; else if (warp->mapGroup != MAP_GROUP(SOOTOPOLIS_CITY)) return FALSE; @@ -1057,9 +1081,9 @@ static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) static bool16 IsInflitratedSpaceCenter(struct WarpData *warp) { - if (VarGet(VAR_0x405D) == 0) + if (VarGet(VAR_MOSSDEEP_STATE) == 0) return FALSE; - else if (VarGet(VAR_0x405D) > 2) + else if (VarGet(VAR_MOSSDEEP_STATE) > 2) return FALSE; else if (warp->mapGroup != MAP_GROUP(MOSSDEEP_CITY_SPACE_CENTER_1F)) return FALSE; @@ -1197,7 +1221,7 @@ void Overworld_ChangeMusicTo(u16 newMusic) u8 GetMapMusicFadeoutSpeed(void) { const struct MapHeader *mapHeader = GetDestinationWarpMapHeader(); - if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE) + if (IsMapTypeIndoors(mapHeader->mapType) == TRUE) return 2; else return 4; @@ -1210,7 +1234,7 @@ void TryFadeOutOldMapMusic(void) if (FlagGet(FLAG_SPECIAL_FLAG_0x4001) != TRUE && warpMusic != GetCurrentMapMusic()) { if (currentMusic == MUS_NAMINORI - && VarGet(VAR_0x40CA) == 2 + && VarGet(VAR_SKY_PILLAR_STATE) == 2 && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY) && sWarpDestination.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY) @@ -1328,13 +1352,13 @@ u8 GetLastUsedWarpMapType(void) return GetMapTypeByWarpData(&gLastUsedWarp); } -bool8 is_map_type_1_2_3_5_or_6(u8 mapType) +bool8 IsMapTypeOutdoors(u8 mapType) { if (mapType == MAP_TYPE_ROUTE || mapType == MAP_TYPE_TOWN || mapType == MAP_TYPE_UNDERWATER || mapType == MAP_TYPE_CITY - || mapType == MAP_TYPE_6) + || mapType == MAP_TYPE_OCEAN_ROUTE) return TRUE; else return FALSE; @@ -1344,14 +1368,14 @@ bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType) { if (mapType == MAP_TYPE_ROUTE || mapType == MAP_TYPE_TOWN - || mapType == MAP_TYPE_6 + || mapType == MAP_TYPE_OCEAN_ROUTE || mapType == MAP_TYPE_CITY) return TRUE; else return FALSE; } -bool8 Overworld_MapTypeIsIndoors(u8 mapType) +bool8 IsMapTypeIndoors(u8 mapType) { if (mapType == MAP_TYPE_INDOOR || mapType == MAP_TYPE_SECRET_BASE) @@ -1407,9 +1431,9 @@ static void ResetSafariZoneFlag_(void) ResetSafariZoneFlag(); } -bool32 is_c1_link_related_active(void) +bool32 IsUpdateLinkStateCBActive(void) { - if (gMain.callback1 == c1_link_related) + if (gMain.callback1 == CB1_UpdateLinkState) return TRUE; else return FALSE; @@ -1476,9 +1500,10 @@ void SetMainCallback1(MainCallback cb) gMain.callback1 = cb; } -void sub_8085E94(void *a0) +// This function is never called. +void SetUnusedCallback(void *func) { - sUnknown_03000E0C = a0; + sUnusedOverworldCallback = func; } static bool8 map_post_load_hook_exec(void) @@ -1595,15 +1620,15 @@ static void c2_80567AC(void) if (map_loading_iteration_3(&gMain.state)) { SetFieldVBlankCallback(); - SetMainCallback1(c1_link_related); - sub_8086C2C(); + SetMainCallback1(CB1_UpdateLinkState); + ResetAllMultiplayerState(); SetMainCallback2(CB2_Overworld); } } void CB2_ReturnToField(void) { - if (is_c1_link_related_active() == TRUE) + if (IsUpdateLinkStateCBActive() == TRUE) { SetMainCallback2(CB2_ReturnToFieldLink); } @@ -1629,12 +1654,12 @@ void CB2_ReturnToFieldLink(void) SetMainCallback2(CB2_Overworld); } -void c2_8056854(void) +void CB2_ReturnToFieldFromMultiplayer(void) { FieldClearVBlankHBlankCallbacks(); StopMapMusic(); - SetMainCallback1(c1_link_related); - sub_8086C2C(); + SetMainCallback1(CB1_UpdateLinkState); + ResetAllMultiplayerState(); if (gWirelessCommType != 0) gFieldCallback = sub_80AF314; @@ -1810,7 +1835,7 @@ static bool32 map_loading_iteration_3(u8 *state) sub_8086AE4(); sub_80869DC(); sub_8086B14(); - sub_8086AAC(); + SetCameraToTrackGuestPlayer(); (*state)++; break; case 4: @@ -1980,9 +2005,9 @@ static bool32 map_loading_iteration_2_link(u8 *state) (*state)++; break; case 2: - sub_8086B9C(); + CreateLinkPlayerSprites(); sub_8086A68(); - sub_8086AC8(); + SetCameraToTrackGuestPlayer_2(); (*state)++; break; case 3: @@ -2083,7 +2108,7 @@ static void InitOverworldGraphicsRegisters(void) SetGpuReg(REG_OFFSET_WIN0V, 0xFF); SetGpuReg(REG_OFFSET_WIN1H, 0xFFFF); SetGpuReg(REG_OFFSET_WIN1V, 0xFFFF); - SetGpuReg(REG_OFFSET_BLDCNT, gUnknown_82EC7C4[1] | gUnknown_82EC7C4[2] | gUnknown_82EC7C4[3] + SetGpuReg(REG_OFFSET_BLDCNT, gOverworldBackgroundLayerFlags[1] | gOverworldBackgroundLayerFlags[2] | gOverworldBackgroundLayerFlags[3] | BLDCNT_TGT2_OBJ | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(13, 7)); InitOverworldBgs(); @@ -2123,10 +2148,10 @@ static void sub_8086988(u32 a1) FieldEffectActiveListClear(); StartWeather(); - sub_80AEE84(); + ResumePausedWeather(); if (!a1) SetUpFieldTasks(); - mapheader_run_script_with_tag_x5(); + RunOnResumeMapScript(); TryStartMirageTowerPulseBlendEffect(); } @@ -2136,7 +2161,7 @@ static void sub_80869DC(void) gTotalCameraPixelOffsetY = 0; ResetEventObjects(); TrySpawnEventObjects(0, 0); - mapheader_run_first_tag4_script_list_match(); + TryRunOnWarpIntoMapScript(); } static void mli4_mapscripts_and_other(void) @@ -2153,14 +2178,14 @@ static void mli4_mapscripts_and_other(void) SetPlayerAvatarTransitionFlags(player->transitionFlags); ResetInitialPlayerAvatarState(); TrySpawnEventObjects(0, 0); - mapheader_run_first_tag4_script_list_match(); + TryRunOnWarpIntoMapScript(); } static void sub_8086A68(void) { sub_808E16C(0, 0); RotatingGate_InitPuzzleAndGraphics(); - mapheader_run_script_with_tag_x7(); + RunOnReturnToFieldMapScript(); } static void sub_8086A80(void) @@ -2169,21 +2194,25 @@ static void sub_8086A80(void) InitCameraUpdateCallback(gPlayerAvatar.spriteId); } -static void sub_8086AAC(void) +static void SetCameraToTrackGuestPlayer(void) { - InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4)); + InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId)); } -static void sub_8086AC8(void) +// Duplicate function. +static void SetCameraToTrackGuestPlayer_2(void) { - InitCameraUpdateCallback(sub_8087858(gUnknown_03005DB4)); + InitCameraUpdateCallback(GetSpriteForLinkedPlayer(gLocalLinkPlayerId)); } static void sub_8086AE4(void) { u16 x, y; GetCameraFocusCoords(&x, &y); - sub_8088B3C(x + gUnknown_03005DB4, y); + + // This is a hack of some kind; it's undone in sub_8086B14, which is called + // soon after this function. + sub_8088B3C(x + gLocalLinkPlayerId, y); } static void sub_8086B14(void) @@ -2192,7 +2221,7 @@ static void sub_8086B14(void) u16 x, y; GetCameraFocusCoords(&x, &y); - x -= gUnknown_03005DB4; + x -= gLocalLinkPlayerId; for (i = 0; i < gFieldLinkPlayerCount; i++) { @@ -2200,161 +2229,180 @@ static void sub_8086B14(void) CreateLinkPlayerSprite(i, gLinkPlayers[i].version); } - sub_8086C40(); + ClearAllPlayerKeys(); } -static void sub_8086B9C(void) +static void CreateLinkPlayerSprites(void) { u16 i; for (i = 0; i < gFieldLinkPlayerCount; i++) CreateLinkPlayerSprite(i, gLinkPlayers[i].version); } -static void c1_link_related(void) + +static void CB1_UpdateLinkState(void) { - if (gWirelessCommType == 0 || !sub_800F0B8() || !sub_8009F3C()) + if (gWirelessCommType == 0 || !IsRfuRecvQueueEmpty() || !IsSendingKeysToLink()) { - u8 var = gUnknown_03005DB4; - sub_8086F38(gLinkPartnersHeldKeys, var); - sub_8086FA0(sUnknown_03000E14(var)); - sub_8086C40(); + u8 selfId = gLocalLinkPlayerId; + UpdateAllLinkPlayers(gLinkPartnersHeldKeys, selfId); + + // Note: Because guestId is between 0 and 4, while the smallest key code is + // LINK_KEY_CODE_EMPTY, this is functionally equivalent to `sPlayerKeyInterceptCallback(0)`. + // It is expecting the callback to be KeyInterCB_SelfIdle, and that will + // completely ignore any input parameters. + // + // UpdateHeldKeyCode performs a sanity check on its input; if + // sPlayerKeyInterceptCallback echoes back the argument, which is selfId, then + // it'll use LINK_KEY_CODE_EMPTY instead. + // + // Note 2: There are some key intercept callbacks that treat the key as a player + // ID. It's so hacky. + UpdateHeldKeyCode(sPlayerKeyInterceptCallback(selfId)); + ClearAllPlayerKeys(); } } -void sub_8086C2C(void) +void ResetAllMultiplayerState(void) { - sub_8086C90(); - c1_link_related_func_set(sub_80870B0); + ResetAllTradingStates(); + SetKeyInterceptCallback(KeyInterCB_SelfIdle); } -static void sub_8086C40(void) +static void ClearAllPlayerKeys(void) { - sub_808709C(gLinkPartnersHeldKeys); + ResetPlayerHeldKeys(gLinkPartnersHeldKeys); } -static void c1_link_related_func_set(u16 (*func)(u32)) +static void SetKeyInterceptCallback(u16 (*func)(u32)) { - sUnknown_03000E19 = 0; - sUnknown_03000E14 = func; + sRfuKeepAliveTimer = 0; + sPlayerKeyInterceptCallback = func; } -static void sub_8086C64(void) +// Once every ~60 frames, if the link state hasn't changed (timer reset by calls +// to SetKeyInterceptCallback), it does a bunch of sanity checks on the connection. +// I'm not sure if sRfuKeepAliveTimer is reset in the process, though; rfu stuff is +// still undocumented. +static void CheckRfuKeepAliveTimer(void) { - if (gWirelessCommType != 0 && ++sUnknown_03000E19 > 60) + if (gWirelessCommType != 0 && ++sRfuKeepAliveTimer > 60) sub_8010198(); } -static void sub_8086C90(void) +static void ResetAllTradingStates(void) { s32 i; for (i = 0; i < 4; i++) - sUnknown_03000E10[i] = 0x80; + sPlayerTradingStates[i] = PLAYER_TRADING_STATE_IDLE; } -static bool32 sub_8086CA8(u16 a1) +// Returns true if all connected players are in tradingState. +static bool32 AreAllPlayersInTradingState(u16 tradingState) { s32 i; s32 count = gFieldLinkPlayerCount; for (i = 0; i < count; i++) - if (sUnknown_03000E10[i] != a1) + if (sPlayerTradingStates[i] != tradingState) return FALSE; return TRUE; } -static bool32 sub_8086CE0(u16 a1) +static bool32 IsAnyPlayerInTradingState(u16 tradingState) { s32 i; s32 count = gFieldLinkPlayerCount; for (i = 0; i < count; i++) - if (sUnknown_03000E10[i] == a1) + if (sPlayerTradingStates[i] == tradingState) return TRUE; return FALSE; } -static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4) +static void HandleLinkPlayerKeyInput(u32 playerId, u16 key, struct TradeRoomPlayer *trainer, u16 *forceFacing) { const u8 *script; - if (sUnknown_03000E10[a1] == 0x80) + if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_IDLE) { - script = sub_8087370(a3); + script = TryGetTileEventScript(trainer); if (script) { - *a4 = sub_8087480(script); - sUnknown_03000E10[a1] = 0x81; - if (a3->b) + *forceFacing = GetDirectionForEventScript(script); + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY; + if (trainer->isLocalPlayer) { - c1_link_related_func_set(sub_80870F8); + SetKeyInterceptCallback(KeyInterCB_DeferToEventScript); sub_8087530(script); } return; } - if (sub_8086CE0(0x83) == 1) + if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE) { - sUnknown_03000E10[a1] = 0x81; - if (a3->b) + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY; + if (trainer->isLocalPlayer) { - c1_link_related_func_set(sub_80870F8); + SetKeyInterceptCallback(KeyInterCB_DeferToEventScript); sub_8087584(); } return; } - switch (a2) + + switch (key) { - case 24: - if (sub_8087358(a3)) + case LINK_KEY_CODE_START_BUTTON: + if (sub_8087340_2(trainer)) { - sUnknown_03000E10[a1] = 0x81; - if (a3->b) + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY; + if (trainer->isLocalPlayer) { - c1_link_related_func_set(sub_80870F8); - sub_808751C(); + SetKeyInterceptCallback(KeyInterCB_DeferToEventScript); + InitLinkRoomStartMenuScript(); } } break; - case 18: - if (sub_8087388(a3) == TRUE) + case LINK_KEY_CODE_DPAD_DOWN: + if (PlayerIsAtSouthExit(trainer) == TRUE) { - sUnknown_03000E10[a1] = 0x81; - if (a3->b) + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY; + if (trainer->isLocalPlayer) { - c1_link_related_func_set(sub_80870F8); - sub_808754C(); + SetKeyInterceptCallback(KeyInterCB_DeferToEventScript); + CreateConfirmLeaveTradeRoomPrompt(); } } break; - case 25: - script = sub_80873B4(a3); + case LINK_KEY_CODE_A_BUTTON: + script = TryInteractWithPlayer(trainer); if (script) { - sUnknown_03000E10[a1] = 0x81; - if (a3->b) + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY; + if (trainer->isLocalPlayer) { - c1_link_related_func_set(sub_80870F8); - sub_8087568(script); + SetKeyInterceptCallback(KeyInterCB_DeferToEventScript); + InitMenuBasedScript(script); } } break; - case 27: - if (sub_8087340(a3)) + case LINK_KEY_CODE_HANDLE_RECV_QUEUE: + if (sub_8087340(trainer)) { - sUnknown_03000E10[a1] = 0x81; - if (a3->b) + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY; + if (trainer->isLocalPlayer) { - c1_link_related_func_set(sub_808711C); + SetKeyInterceptCallback(KeyInterCB_DeferToRecvQueue); sub_8087510(); } } break; - case 28: - if (sub_8087340(a3)) + case LINK_KEY_CODE_HANDLE_SEND_QUEUE: + if (sub_8087340(trainer)) { - sUnknown_03000E10[a1] = 0x81; - if (a3->b) + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY; + if (trainer->isLocalPlayer) { - c1_link_related_func_set(sub_8087140); + SetKeyInterceptCallback(KeyInterCB_DeferToSendQueue); sub_8087510(); } } @@ -2362,388 +2410,403 @@ static void sub_8086D18(u32 a1, u16 a2, struct UnkStruct_8054FF8 *a3, u16 *a4) } } - switch (a2) + switch (key) { - case 23: - sUnknown_03000E10[a1] = 0x83; + case LINK_KEY_CODE_EXIT_ROOM: + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_EXITING_ROOM; break; - case 22: - sUnknown_03000E10[a1] = 0x82; + case LINK_KEY_CODE_UNK_2: + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_UNK_2; break; - case 26: - sUnknown_03000E10[a1] = 0x80; - if (a3->b) - c1_link_related_func_set(sub_80870B0); + case LINK_KEY_CODE_UNK_4: + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_IDLE; + if (trainer->isLocalPlayer) + SetKeyInterceptCallback(KeyInterCB_SelfIdle); break; - case 29: - if (sUnknown_03000E10[a1] == 0x82) - sUnknown_03000E10[a1] = 0x81; + case LINK_KEY_CODE_UNK_7: + if (sPlayerTradingStates[playerId] == PLAYER_TRADING_STATE_UNK_2) + sPlayerTradingStates[playerId] = PLAYER_TRADING_STATE_BUSY; break; } } -static void sub_8086F38(u16 *a1, s32 a2) +static void UpdateAllLinkPlayers(u16 *keys, s32 selfId) { - struct UnkStruct_8054FF8 st; + struct TradeRoomPlayer trainer; s32 i; for (i = 0; i < 4; i++) { - u8 v5 = a1[i]; - u16 v8 = 0; - sub_80872D8(i, a2, &st); - sub_8086D18(i, v5, &st, &v8); - if (sUnknown_03000E10[i] == 0x80) - v8 = sub_8087068(v5); - sub_808796C(i, v8); + u8 key = keys[i]; + u16 setFacing = FACING_NONE; + LoadTradeRoomPlayer(i, selfId, &trainer); + HandleLinkPlayerKeyInput(i, key, &trainer, &setFacing); + if (sPlayerTradingStates[i] == PLAYER_TRADING_STATE_IDLE) + setFacing = GetDirectionForDpadKey(key); + SetPlayerFacingDirection(i, setFacing); } } -static void sub_8086FA0(u16 a1) +static void UpdateHeldKeyCode(u16 key) { - if (a1 >= 17 && a1 < 30) - gUnknown_03005DA8 = a1; + if (key >= LINK_KEY_CODE_EMPTY && key < LINK_KEY_CODE_UNK_8) + gHeldKeyCodeToSend = key; else - gUnknown_03005DA8 = 17; + gHeldKeyCodeToSend = LINK_KEY_CODE_EMPTY; if (gWirelessCommType != 0 - && sub_8087690() > 1 - && is_c1_link_related_active() == TRUE - && sub_8009F3C() == TRUE) + && GetLinkSendQueueLength() > 1 + && IsUpdateLinkStateCBActive() == TRUE + && IsSendingKeysToLink() == TRUE) { - switch (a1) + switch (key) { - case 17: - case 18: - case 19: - case 20: - case 21: - case 24: - case 25: - gUnknown_03005DA8 = 0; + case LINK_KEY_CODE_EMPTY: + case LINK_KEY_CODE_DPAD_DOWN: + case LINK_KEY_CODE_DPAD_UP: + case LINK_KEY_CODE_DPAD_LEFT: + case LINK_KEY_CODE_DPAD_RIGHT: + case LINK_KEY_CODE_START_BUTTON: + case LINK_KEY_CODE_A_BUTTON: + gHeldKeyCodeToSend = LINK_KEY_CODE_NULL; break; } } } -static u16 sub_808700C(u32 a1) +static u16 KeyInterCB_ReadButtons(u32 key) { if (gMain.heldKeys & DPAD_UP) - return 19; + return LINK_KEY_CODE_DPAD_UP; else if (gMain.heldKeys & DPAD_DOWN) - return 18; + return LINK_KEY_CODE_DPAD_DOWN; else if (gMain.heldKeys & DPAD_LEFT) - return 20; + return LINK_KEY_CODE_DPAD_LEFT; else if (gMain.heldKeys & DPAD_RIGHT) - return 21; + return LINK_KEY_CODE_DPAD_RIGHT; else if (gMain.newKeys & START_BUTTON) - return 24; + return LINK_KEY_CODE_START_BUTTON; else if (gMain.newKeys & A_BUTTON) - return 25; + return LINK_KEY_CODE_A_BUTTON; else - return 17; + return LINK_KEY_CODE_EMPTY; } -static u16 sub_8087068(u16 a1) +static u16 GetDirectionForDpadKey(u16 a1) { switch (a1) { - case 21: - return 4; - case 20: - return 3; - case 19: - return 1; - case 18: - return 2; + case LINK_KEY_CODE_DPAD_RIGHT: + return FACING_RIGHT; + case LINK_KEY_CODE_DPAD_LEFT: + return FACING_LEFT; + case LINK_KEY_CODE_DPAD_UP: + return FACING_UP; + case LINK_KEY_CODE_DPAD_DOWN: + return FACING_DOWN; default: - return 0; + return FACING_NONE; } } -static void sub_808709C(u16 *a1) +// Overwrites the keys with 0x11 +static void ResetPlayerHeldKeys(u16 *keys) { s32 i; for (i = 0; i < 4; i++) - a1[i] = 17; + keys[i] = LINK_KEY_CODE_EMPTY; } -static u16 sub_80870B0(u32 a1) + +static u16 KeyInterCB_SelfIdle(u32 key) { - if (ScriptContext2_IsEnabled() == 1) - return 17; - if (sub_800B4DC() > 4) - return 27; - if (sub_8087690() <= 4) - return sub_808700C(a1); - return 28; + if (ScriptContext2_IsEnabled() == TRUE) + return LINK_KEY_CODE_EMPTY; + if (GetLinkRecvQueueLength() > 4) + return LINK_KEY_CODE_HANDLE_RECV_QUEUE; + if (GetLinkSendQueueLength() <= 4) + return KeyInterCB_ReadButtons(key); + return LINK_KEY_CODE_HANDLE_SEND_QUEUE; } -static u16 sub_80870EC(u32 a1) +static u16 sub_80870EC(u32 key) { - sub_8086C64(); - return 17; + CheckRfuKeepAliveTimer(); + return LINK_KEY_CODE_EMPTY; } -static u16 sub_80870F8(u32 a1) +// Ignore the player's inputs as long as there is an event script +// in ScriptContext2. +static u16 KeyInterCB_DeferToEventScript(u32 key) { u16 retVal; if (ScriptContext2_IsEnabled() == TRUE) { - retVal = 17; + retVal = LINK_KEY_CODE_EMPTY; } else { - retVal = 26; - c1_link_related_func_set(sub_80870EC); + retVal = LINK_KEY_CODE_UNK_4; + SetKeyInterceptCallback(sub_80870EC); } return retVal; } -static u16 sub_808711C(u32 a1) +// Ignore the player's inputs as long as there are events being recived. +static u16 KeyInterCB_DeferToRecvQueue(u32 key) { u16 retVal; - if (sub_800B4DC() > 2) + if (GetLinkRecvQueueLength() > 2) { - retVal = 17; + retVal = LINK_KEY_CODE_EMPTY; } else { - retVal = 26; + retVal = LINK_KEY_CODE_UNK_4; ScriptContext2_Disable(); - c1_link_related_func_set(sub_80870EC); + SetKeyInterceptCallback(sub_80870EC); } return retVal; } -static u16 sub_8087140(u32 a1) +// Ignore the player's inputs as long as there are events being sent. +static u16 KeyInterCB_DeferToSendQueue(u32 key) { u16 retVal; - if (sub_8087690() > 2) + if (GetLinkSendQueueLength() > 2) { - retVal = 17; + retVal = LINK_KEY_CODE_EMPTY; } else { - retVal = 26; + retVal = LINK_KEY_CODE_UNK_4; ScriptContext2_Disable(); - c1_link_related_func_set(sub_80870EC); + SetKeyInterceptCallback(sub_80870EC); } return retVal; } -static u16 sub_8087164(u32 a1) +static u16 KeyInterCB_DoNothingAndKeepAlive(u32 key) { - sub_8086C64(); - return 17; + CheckRfuKeepAliveTimer(); + return LINK_KEY_CODE_EMPTY; } -static u16 sub_8087170(u32 linkPlayerId) +static u16 sub_8087170(u32 keyOrPlayerId) { - if (sUnknown_03000E10[linkPlayerId] == 0x82) + if (sPlayerTradingStates[keyOrPlayerId] == PLAYER_TRADING_STATE_UNK_2) { if (gMain.newKeys & B_BUTTON) { - c1_link_related_func_set(sub_8087164); - return 29; + SetKeyInterceptCallback(KeyInterCB_DoNothingAndKeepAlive); + return LINK_KEY_CODE_UNK_7; } else { - return 17; + return LINK_KEY_CODE_EMPTY; } } else { - sub_8086C64(); - return 17; + CheckRfuKeepAliveTimer(); + return LINK_KEY_CODE_EMPTY; } } static u16 sub_80871AC(u32 a1) { - c1_link_related_func_set(sub_8087170); - return 22; + SetKeyInterceptCallback(sub_8087170); + return LINK_KEY_CODE_UNK_2; } -static u16 sub_80871C0(u32 a1) +static u16 KeyInterCB_SendNothing(u32 key) { - return 17; + return LINK_KEY_CODE_EMPTY; } -static u16 sub_80871C4(u32 a1) +static u16 KeyInterCB_WaitForPlayersToExit(u32 keyOrPlayerId) { - if (sUnknown_03000E10[a1] != 0x83) - sub_8086C64(); - if (sub_8086CA8(0x83) == TRUE) + // keyOrPlayerId could be any keycode. This callback does no sanity checking + // on the size of the key. It's assuming that it is being called from + // CB1_UpdateLinkState. + if (sPlayerTradingStates[keyOrPlayerId] != PLAYER_TRADING_STATE_EXITING_ROOM) + CheckRfuKeepAliveTimer(); + if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE) { - ScriptContext1_SetupScript(EventScript_277513); - c1_link_related_func_set(sub_80871C0); + ScriptContext1_SetupScript(EventScript_DoLinkRoomExit); + SetKeyInterceptCallback(KeyInterCB_SendNothing); } - return 17; + return LINK_KEY_CODE_EMPTY; } -static u16 sub_80871FC(u32 a1) +static u16 KeyInterCB_SendExitRoomKey(u32 key) { - c1_link_related_func_set(sub_80871C4); - return 23; + SetKeyInterceptCallback(KeyInterCB_WaitForPlayersToExit); + return LINK_KEY_CODE_EXIT_ROOM; } -static u16 sub_8087210(u32 a1) +// Duplicate function. +static u16 KeyInterCB_SendNothing_2(u32 key) { - return 17; + return LINK_KEY_CODE_EMPTY; } u32 sub_8087214(void) { - if (sub_8086CE0(0x83) == TRUE) + if (IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM) == TRUE) return 2; - if (sUnknown_03000E14 == sub_8087170 && sUnknown_03000E10[gUnknown_03005DB4] != 0x82) + if (sPlayerKeyInterceptCallback == sub_8087170 && sPlayerTradingStates[gLocalLinkPlayerId] != PLAYER_TRADING_STATE_UNK_2) return 0; - if (sUnknown_03000E14 == sub_8087164 && sUnknown_03000E10[gUnknown_03005DB4] == 0x81) + if (sPlayerKeyInterceptCallback == KeyInterCB_DoNothingAndKeepAlive && sPlayerTradingStates[gLocalLinkPlayerId] == PLAYER_TRADING_STATE_BUSY) return 2; - if (sub_8086CA8(0x82) != 0) + if (AreAllPlayersInTradingState(PLAYER_TRADING_STATE_UNK_2) != FALSE) return 1; return 0; } bool32 sub_808727C(void) { - return sub_8086CE0(0x83); + return IsAnyPlayerInTradingState(PLAYER_TRADING_STATE_EXITING_ROOM); } u16 sub_8087288(void) { - c1_link_related_func_set(sub_80871AC); + SetKeyInterceptCallback(sub_80871AC); return 0; } u16 sub_808729C(void) { - c1_link_related_func_set(sub_80870F8); + SetKeyInterceptCallback(KeyInterCB_DeferToEventScript); return 0; } -u16 sub_80872B0(void) +// The exit room key will be sent at the next opportunity. +// The return value is meaningless. +u16 QueueExitLinkRoomKey(void) { - c1_link_related_func_set(sub_80871FC); + SetKeyInterceptCallback(KeyInterCB_SendExitRoomKey); return 0; } u16 sub_80872C4(void) { - c1_link_related_func_set(sub_8087210); + SetKeyInterceptCallback(KeyInterCB_SendNothing_2); return 0; } -static void sub_80872D8(s32 linkPlayerId, s32 a2, struct UnkStruct_8054FF8 *a3) +static void LoadTradeRoomPlayer(s32 linkPlayerId, s32 myPlayerId, struct TradeRoomPlayer *trainer) { s16 x, y; - a3->a = linkPlayerId; - a3->b = (linkPlayerId == a2) ? 1 : 0; - a3->c = gLinkPlayerEventObjects[linkPlayerId].mode; - a3->d = sub_80878A0(linkPlayerId); - sub_8087878(linkPlayerId, &x, &y); - a3->sub.x = x; - a3->sub.y = y; - a3->sub.height = sub_80878C0(linkPlayerId); - a3->field_C = MapGridGetMetatileBehaviorAt(x, y); + trainer->playerId = linkPlayerId; + trainer->isLocalPlayer = (linkPlayerId == myPlayerId) ? 1 : 0; + trainer->c = gLinkPlayerEventObjects[linkPlayerId].movementMode; + trainer->facing = GetLinkPlayerFacingDirection(linkPlayerId); + GetLinkPlayerCoords(linkPlayerId, &x, &y); + trainer->pos.x = x; + trainer->pos.y = y; + trainer->pos.height = GetLinkPlayerElevation(linkPlayerId); + trainer->field_C = MapGridGetMetatileBehaviorAt(x, y); } -static bool32 sub_8087340(struct UnkStruct_8054FF8 *a1) +static bool32 sub_8087340(struct TradeRoomPlayer *player) { - u8 v1 = a1->c; - if (v1 == 2 || v1 == 0) + u8 v1 = player->c; + if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE) return TRUE; else return FALSE; } -static bool32 sub_8087358(struct UnkStruct_8054FF8 *a1) +// Duplicate function. +static bool32 sub_8087340_2(struct TradeRoomPlayer *player) { - u8 v1 = a1->c; - if (v1 == 2 || v1 == 0) + u8 v1 = player->c; + if (v1 == MOVEMENT_MODE_SCRIPTED || v1 == MOVEMENT_MODE_FREE) return TRUE; else return FALSE; } -static u8 *sub_8087370(struct UnkStruct_8054FF8 *a1) +static u8 *TryGetTileEventScript(struct TradeRoomPlayer *player) { - if (a1->c != 2) - return 0; - return GetCoordEventScriptAtMapPosition(&a1->sub); + if (player->c != MOVEMENT_MODE_SCRIPTED) + return FACING_NONE; + return GetCoordEventScriptAtMapPosition(&player->pos); } -static bool32 sub_8087388(struct UnkStruct_8054FF8 *a1) +static bool32 PlayerIsAtSouthExit(struct TradeRoomPlayer *player) { - if (a1->c != 2 && a1->c != 0) + if (player->c != MOVEMENT_MODE_SCRIPTED && player->c != MOVEMENT_MODE_FREE) return FALSE; - else if (!MetatileBehavior_IsSouthArrowWarp(a1->field_C)) + else if (!MetatileBehavior_IsSouthArrowWarp(player->field_C)) return FALSE; - else if (a1->d != 1) + else if (player->facing != 1) return FALSE; else return TRUE; } -static const u8 *sub_80873B4(struct UnkStruct_8054FF8 *a1) +static const u8 *TryInteractWithPlayer(struct TradeRoomPlayer *player) { - struct MapPosition unkStruct; + struct MapPosition otherPlayerPos; u8 linkPlayerId; - if (a1->c && a1->c != 2) - return 0; + if (player->c != MOVEMENT_MODE_FREE && player->c != MOVEMENT_MODE_SCRIPTED) + return FACING_NONE; - unkStruct = a1->sub; - unkStruct.x += gDirectionToVectors[a1->d].x; - unkStruct.y += gDirectionToVectors[a1->d].y; - unkStruct.height = 0; - linkPlayerId = GetLinkPlayerIdAt(unkStruct.x, unkStruct.y); + otherPlayerPos = player->pos; + otherPlayerPos.x += gDirectionToVectors[player->facing].x; + otherPlayerPos.y += gDirectionToVectors[player->facing].y; + otherPlayerPos.height = 0; + linkPlayerId = GetLinkPlayerIdAt(otherPlayerPos.x, otherPlayerPos.y); if (linkPlayerId != 4) { - if (!a1->b) - return EventScript_TradeRoom_TooBusyToNotice; - else if (sUnknown_03000E10[linkPlayerId] != 0x80) - return EventScript_TradeRoom_TooBusyToNotice; - else if (!sub_80B39D4(linkPlayerId)) - return EventScript_TradeRoom_ReadTrainerCard1; + if (!player->isLocalPlayer) + return gEventScript_TradeRoom_TooBusyToNotice; + else if (sPlayerTradingStates[linkPlayerId] != PLAYER_TRADING_STATE_IDLE) + return gEventScript_TradeRoom_TooBusyToNotice; + else if (!GetLinkTrainerCardColor(linkPlayerId)) + return gEventScript_TradeRoom_ReadTrainerCard_NoColor; else - return EventScript_TradeRoom_ReadTrainerCard2; - } - - return GetInteractedLinkPlayerScript(&unkStruct, a1->field_C, a1->d); -} - -static u16 sub_8087480(const u8 *script) -{ - if (script == gUnknown_08277388) - return 10; - else if (script == gUnknown_082773A3) - return 9; - else if (script == gUnknown_082773BE) - return 10; - else if (script == gUnknown_082773D9) - return 9; - else if (script == gUnknown_0827741D) - return 10; - else if (script == gUnknown_08277432) - return 9; - else if (script == gUnknown_08277447) - return 10; - else if (script == gUnknown_0827745C) - return 9; - else if (script == gUnknown_08277374) - return 10; - else if (script == gUnknown_0827737E) - return 9; - else if (script == gUnknown_082773F5) - return 10; - else if (script == gUnknown_082773FF) - return 9; + return gEventScript_TradeRoom_ReadTrainerCard_Normal; + } + + return GetInteractedLinkPlayerScript(&otherPlayerPos, player->field_C, player->facing); +} + +// This returns which direction to force the player to look when one of +// these event scripts runs. +static u16 GetDirectionForEventScript(const u8 *script) +{ + if (script == EventScript_DoubleBattleColosseum_PlayerSpot0) + return FACING_FORCED_RIGHT; + else if (script == EventScript_DoubleBattleColosseum_PlayerSpot1) + return FACING_FORCED_LEFT; + else if (script == EventScript_DoubleBattleColosseum_PlayerSpot2) + return FACING_FORCED_RIGHT; + else if (script == EventScript_DoubleBattleColosseum_PlayerSpot3) + return FACING_FORCED_LEFT; + else if (script == EventScript_RecordCenter_Spot0) + return FACING_FORCED_RIGHT; + else if (script == EventScript_RecordCenter_Spot1) + return FACING_FORCED_LEFT; + else if (script == EventScript_RecordCenter_Spot2) + return FACING_FORCED_RIGHT; + else if (script == EventScript_RecordCenter_Spot3) + return FACING_FORCED_LEFT; + else if (script == EventScript_SingleBattleColosseum_PlayerSpot0) + return FACING_FORCED_RIGHT; + else if (script == EventScript_SingleBattleColosseum_PlayerSpot1) + return FACING_FORCED_LEFT; + else if (script == EventScript_TradeCenter_Chair0) + return FACING_FORCED_RIGHT; + else if (script == EventScript_TradeCenter_Chair1) + return FACING_FORCED_LEFT; else - return 0; + return FACING_NONE; } static void sub_8087510(void) @@ -2751,7 +2814,7 @@ static void sub_8087510(void) ScriptContext2_Enable(); } -static void sub_808751C(void) +static void InitLinkRoomStartMenuScript(void) { PlaySE(SE_WIN_OPEN); ShowStartMenu(); @@ -2765,14 +2828,14 @@ static void sub_8087530(const u8 *script) ScriptContext2_Enable(); } -static void sub_808754C(void) +static void CreateConfirmLeaveTradeRoomPrompt(void) { PlaySE(SE_WIN_OPEN); - ScriptContext1_SetupScript(gUnknown_082774EF); + ScriptContext1_SetupScript(EventScript_ConfirmLeaveTradeRoom); ScriptContext2_Enable(); } -static void sub_8087568(const u8 *script) +static void InitMenuBasedScript(const u8 *script) { PlaySE(SE_SELECT); ScriptContext1_SetupScript(script); @@ -2781,18 +2844,18 @@ static void sub_8087568(const u8 *script) static void sub_8087584(void) { - ScriptContext1_SetupScript(gUnknown_08277509); + ScriptContext1_SetupScript(EventScript_TerminateLink); ScriptContext2_Enable(); } bool32 sub_8087598(void) { - if (!is_c1_link_related_active()) - return 0; - if (sub_800B4DC() >= 3) - sUnknown_03000E18 = 1; + if (!IsUpdateLinkStateCBActive()) + return FALSE; + if (GetLinkRecvQueueLength() >= 3) + sUnknown_03000E18 = TRUE; else - sUnknown_03000E18 = 0; + sUnknown_03000E18 = FALSE; return sUnknown_03000E18; } @@ -2800,19 +2863,19 @@ bool32 sub_80875C8(void) { u8 temp; - if (sub_800B4DC() < 2) + if (GetLinkRecvQueueLength() < 2) return FALSE; - else if (is_c1_link_related_active() != TRUE) + else if (IsUpdateLinkStateCBActive() != TRUE) return FALSE; - else if (sub_8009F3C() != TRUE) + else if (IsSendingKeysToLink() != TRUE) return FALSE; - else if (sUnknown_03000E14 == sub_808711C) + else if (sPlayerKeyInterceptCallback == KeyInterCB_DeferToRecvQueue) return TRUE; - else if (sUnknown_03000E14 != sub_80870F8) + else if (sPlayerKeyInterceptCallback != KeyInterCB_DeferToEventScript) return FALSE; temp = sUnknown_03000E18; - sUnknown_03000E18 = 0; + sUnknown_03000E18 = FALSE; if (temp == TRUE) return TRUE; @@ -2824,13 +2887,13 @@ bool32 sub_80875C8(void) bool32 sub_8087634(void) { - if (sub_8087690() < 2) + if (GetLinkSendQueueLength() < 2) return FALSE; - else if (is_c1_link_related_active() != TRUE) + else if (IsUpdateLinkStateCBActive() != TRUE) return FALSE; - else if (sub_8009F3C() != TRUE) + else if (IsSendingKeysToLink() != TRUE) return FALSE; - else if (sUnknown_03000E14 == sub_8087140) + else if (sPlayerKeyInterceptCallback == KeyInterCB_DeferToSendQueue) return TRUE; else return FALSE; @@ -2840,13 +2903,13 @@ bool32 sub_808766C(void) { if (gWirelessCommType != 0) return FALSE; - else if (!sub_8009F3C()) + else if (!IsSendingKeysToLink()) return FALSE; else return TRUE; } -static u32 sub_8087690(void) +static u32 GetLinkSendQueueLength(void) { if (gWirelessCommType != 0) return gUnknown_03005000.unk_9e8.unk_232; @@ -2881,7 +2944,7 @@ static void SpawnLinkPlayerEventObject(u8 linkPlayerId, s16 x, s16 y, u8 a4) linkPlayerEventObj->active = 1; linkPlayerEventObj->linkPlayerId = linkPlayerId; linkPlayerEventObj->eventObjId = eventObjId; - linkPlayerEventObj->mode = 0; + linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE; eventObj->active = 1; eventObj->singleMovementActive = a4; @@ -2923,14 +2986,15 @@ static void sub_808780C(u8 linkPlayerId) eventObj->active = 0; } -static u8 sub_8087858(u8 linkPlayerId) +// Returns the spriteId corresponding to this player. +static u8 GetSpriteForLinkedPlayer(u8 linkPlayerId) { u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId; struct EventObject *eventObj = &gEventObjects[eventObjId]; return eventObj->spriteId; } -static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y) +static void GetLinkPlayerCoords(u8 linkPlayerId, u16 *x, u16 *y) { u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId; struct EventObject *eventObj = &gEventObjects[eventObjId]; @@ -2938,14 +3002,14 @@ static void sub_8087878(u8 linkPlayerId, u16 *x, u16 *y) *y = eventObj->currentCoords.y; } -static u8 sub_80878A0(u8 linkPlayerId) +static u8 GetLinkPlayerFacingDirection(u8 linkPlayerId) { u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId; struct EventObject *eventObj = &gEventObjects[eventObjId]; return eventObj->range.as_byte; } -static u8 sub_80878C0(u8 linkPlayerId) +static u8 GetLinkPlayerElevation(u8 linkPlayerId) { u8 eventObjId = gLinkPlayerEventObjects[linkPlayerId].eventObjId; struct EventObject *eventObj = &gEventObjects[eventObjId]; @@ -2965,7 +3029,7 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y) for (i = 0; i < 4; i++) { if (gLinkPlayerEventObjects[i].active - && (gLinkPlayerEventObjects[i].mode == 0 || gLinkPlayerEventObjects[i].mode == 2)) + && (gLinkPlayerEventObjects[i].movementMode == 0 || gLinkPlayerEventObjects[i].movementMode == 2)) { struct EventObject *eventObj = &gEventObjects[gLinkPlayerEventObjects[i].eventObjId]; if (eventObj->currentCoords.x == x && eventObj->currentCoords.y == y) @@ -2975,7 +3039,7 @@ static u8 GetLinkPlayerIdAt(s16 x, s16 y) return 4; } -static void sub_808796C(u8 linkPlayerId, u8 a2) +static void SetPlayerFacingDirection(u8 linkPlayerId, u8 facing) { struct LinkPlayerEventObject *linkPlayerEventObj = &gLinkPlayerEventObjects[linkPlayerId]; u8 eventObjId = linkPlayerEventObj->eventObjId; @@ -2983,94 +3047,111 @@ static void sub_808796C(u8 linkPlayerId, u8 a2) if (linkPlayerEventObj->active) { - if (a2 > 10) + if (facing > FACING_FORCED_RIGHT) + { eventObj->triggerGroundEffectsOnMove = 1; + } else - gUnknown_08339E00[gUnknown_08339DC8[linkPlayerEventObj->mode](linkPlayerEventObj, eventObj, a2)](linkPlayerEventObj, eventObj); + { + // This is a hack to split this code onto two separate lines, without declaring a local variable. + // C++ style inline variables would be nice here. + #define TEMP gLinkPlayerMovementModes[linkPlayerEventObj->movementMode](linkPlayerEventObj, eventObj, facing) + + gMovementStatusHandler[TEMP](linkPlayerEventObj, eventObj); + + // Clean up the hack. + #undef TEMP + } } } -static u8 sub_80879D8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) + +static u8 MovementEventModeCB_Normal(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) { - return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3); + return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3); } -static u8 sub_80879F8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) +static u8 MovementEventModeCB_Ignored(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) { - return 1; + return FACING_UP; } -static u8 sub_80879FC(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) +// Duplicate Function +static u8 MovementEventModeCB_Normal_2(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) { - return gUnknown_08339DD4[a3](linkPlayerEventObj, eventObj, a3); + return gLinkPlayerFacingHandlers[a3](linkPlayerEventObj, eventObj, a3); } -static u8 sub_8087A1C(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) +static bool8 FacingHandler_DoNothing(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) { - return 0; + return FALSE; } -static u8 sub_8087A20(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) +static bool8 FacingHandler_DpadMovement(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) { s16 x, y; - eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte); + eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte); EventObjectMoveDestCoords(eventObj, eventObj->range.as_byte, &x, &y); if (LinkPlayerDetectCollision(linkPlayerEventObj->eventObjId, eventObj->range.as_byte, x, y)) { - return 0; + return FALSE; } else { eventObj->directionSequenceIndex = 16; ShiftEventObjectCoords(eventObj, x, y); EventObjectUpdateZCoord(eventObj); - return 1; + return TRUE; } } -static u8 sub_8087A88(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) +static bool8 FacingHandler_ForcedFacingChange(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj, u8 a3) { - eventObj->range.as_byte = npc_something3(a3, eventObj->range.as_byte); - return 0; + eventObj->range.as_byte = FlipVerticalAndClearForced(a3, eventObj->range.as_byte); + return FALSE; } -static void sub_8087AA0(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj) +// This is called every time a free movement happens. Most of the time it's a No-Op. +static void MovementStatusHandler_EnterFreeMode(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj) { - linkPlayerEventObj->mode = 0; + linkPlayerEventObj->movementMode = MOVEMENT_MODE_FREE; } -static void sub_8087AA8(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj) +static void MovementStatusHandler_TryAdvanceScript(struct LinkPlayerEventObject *linkPlayerEventObj, struct EventObject *eventObj) { eventObj->directionSequenceIndex--; - linkPlayerEventObj->mode = 1; + linkPlayerEventObj->movementMode = MOVEMENT_MODE_FROZEN; MoveCoords(eventObj->range.as_byte, &eventObj->initialCoords.x, &eventObj->initialCoords.y); if (!eventObj->directionSequenceIndex) { ShiftStillEventObjectCoords(eventObj); - linkPlayerEventObj->mode = 2; + linkPlayerEventObj->movementMode = MOVEMENT_MODE_SCRIPTED; } } -static u8 npc_something3(u8 a1, u8 a2) +// Flip Up/Down facing codes. If newFacing doesn't specify a direction, default +// to oldFacing. Note that this clears also the "FORCED" part of the facing code, +// even for Left/Right codes. +static u8 FlipVerticalAndClearForced(u8 newFacing, u8 oldFacing) { - switch (a1 - 1) + switch (newFacing) { - case 0: - case 6: - return 2; - case 1: - case 7: - return 1; - case 2: - case 8: - return 3; - case 3: - case 9: - return 4; + case FACING_UP: + case FACING_FORCED_UP: + return DIR_NORTH; + case FACING_DOWN: + case FACING_FORCED_DOWN: + return DIR_SOUTH; + case FACING_LEFT: + case FACING_FORCED_LEFT: + return DIR_WEST; + case FACING_RIGHT: + case FACING_FORCED_RIGHT: + return DIR_EAST; } - return a2; + return oldFacing; } static u8 LinkPlayerDetectCollision(u8 selfEventObjId, u8 a2, s16 x, s16 y) @@ -3130,7 +3211,7 @@ static void SpriteCB_LinkPlayer(struct Sprite *sprite) SetObjectSubpriorityByZCoord(eventObj->previousElevation, sprite, 1); sprite->oam.priority = ZCoordToPriority(eventObj->previousElevation); - if (!linkPlayerEventObj->mode) + if (!linkPlayerEventObj->movementMode != MOVEMENT_MODE_FREE) StartSpriteAnim(sprite, GetFaceDirectionAnimNum(eventObj->range.as_byte)); else StartSpriteAnimIfDifferent(sprite, GetMoveDirectionAnimNum(eventObj->range.as_byte)); diff --git a/src/party_menu.c b/src/party_menu.c index 15b5d24d8..ec35fc068 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -63,6 +63,7 @@ #include "window.h" #include "constants/battle.h" #include "constants/battle_frontier.h" +#include "constants/easy_chat.h" #include "constants/field_effects.h" #include "constants/flags.h" #include "constants/items.h" @@ -2753,7 +2754,7 @@ static void sub_81B1B8C(u8 taskId) { if (gTasks[taskId].data[0] == 0) { - sub_8198070(6, 0); + ClearStdWindowAndFrameToTransparent(6, 0); ClearWindowTilemap(6); } DestroyTask(taskId); @@ -2778,7 +2779,7 @@ static void sub_81B1C1C(u8 taskId) { if (sub_81B1BD4() != TRUE) { - sub_8198070(6, 0); + ClearStdWindowAndFrameToTransparent(6, 0); ClearWindowTilemap(6); if (sub_81221AC() == TRUE) { @@ -2935,7 +2936,7 @@ u8 pokemon_ailments_get_primary(u32 status) return AILMENT_NONE; } -u8 sub_81B205C(struct Pokemon *mon) +u8 GetMonAilment(struct Pokemon *mon) { u8 ailment; @@ -3108,7 +3109,7 @@ static void sub_81B239C(u8 a) } DeactivateAllTextPrinters(); for (i = 0; i < PARTY_SIZE; i++) - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); LoadUserWindowBorderGfx(0, 0x4F, 0xD0); LoadPalette(GetOverworldTextboxPalettePtr(), 0xE0, 0x20); LoadPalette(gUnknown_0860F074, 0xF0, 0x20); @@ -3126,7 +3127,7 @@ static void sub_81B2428(bool8 a) if (a == TRUE) { firstWindowId = AddWindow(&gUnknown_08615918); - FillWindowPixelBuffer(firstWindowId, 0); + FillWindowPixelBuffer(firstWindowId, PIXEL_FILL(0)); mainOffset = GetStringCenterAlignXOffset(0, gMenuText_Confirm, 48); AddTextPrinterParameterized4(firstWindowId, 0, mainOffset, 1, 0, 0, gUnknown_086157FC[0], -1, gMenuText_Confirm); PutWindowTilemap(firstWindowId); @@ -3139,7 +3140,7 @@ static void sub_81B2428(bool8 a) windowId = AddWindow(&gUnknown_08615908); offset = 3; } - FillWindowPixelBuffer(windowId, 0); + FillWindowPixelBuffer(windowId, PIXEL_FILL(0)); if (gUnknown_0203CEC8.unk8_0 != 10) { mainOffset = GetStringCenterAlignXOffset(0, gText_Cancel, 48); @@ -3354,7 +3355,7 @@ static void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct Struct203C { if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) { - u8 ailment = sub_81B205C(mon); + u8 ailment = GetMonAilment(mon); if (ailment == AILMENT_NONE || ailment == AILMENT_PKRS) { if (c != 0) @@ -3479,8 +3480,9 @@ static void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct Struct203CEDC *pt FillWindowPixelRect(ptr->windowId, gUnknown_08615AB8[0], ptr->unk0->unk4[20], ptr->unk0->unk4[21] + 1, hpFraction, 2); if (hpFraction != ptr->unk0->unk4[22]) { - FillWindowPixelRect(ptr->windowId, 13, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21], ptr->unk0->unk4[22] - hpFraction, 1); - FillWindowPixelRect(ptr->windowId, 2, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21] + 1, ptr->unk0->unk4[22] - hpFraction, 2); + // This appears to be an alternating fill + FillWindowPixelRect(ptr->windowId, 0x0D, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21], ptr->unk0->unk4[22] - hpFraction, 1); + FillWindowPixelRect(ptr->windowId, 0x02, ptr->unk0->unk4[20] + hpFraction, ptr->unk0->unk4[21] + 1, ptr->unk0->unk4[22] - hpFraction, 2); } CopyWindowToVram(ptr->windowId, 2); } @@ -3501,7 +3503,7 @@ static void sub_81B302C(u8 *ptr) { if (*ptr != 0xFF) { - sub_8198070(*ptr, 0); + ClearStdWindowAndFrameToTransparent(*ptr, 0); RemoveWindow(*ptr); *ptr = 0xFF; schedule_bg_copy_tilemap_to_vram(2); @@ -3546,7 +3548,7 @@ void display_pokemon_menu_message(u32 stringID) else if (sub_81B314C() == FALSE) stringID = 1; } - SetWindowBorderStyle(*windowPtr, FALSE, 0x4F, 0xD); + DrawStdFrameWithCustomTileAndPalette(*windowPtr, FALSE, 0x4F, 0xD); StringExpandPlaceholders(gStringVar4, gUnknown_08615AF4[stringID]); AddTextPrinterParameterized(*windowPtr, 1, gStringVar4, 0, 1, 0, 0); schedule_bg_copy_tilemap_to_vram(2); @@ -3596,7 +3598,7 @@ static u8 sub_81B31B0(u8 a) } gUnknown_0203CEC4->unkC[0] = AddWindow(&window); - SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13); + DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13); if (a == 3) return gUnknown_0203CEC4->unkC[0]; cursorDimension = GetMenuCursorDimensionByFont(1, 0); @@ -3616,7 +3618,7 @@ static u8 sub_81B31B0(u8 a) static void sub_81B3300(const u8 *text) { - SetWindowBorderStyle(6, FALSE, 0x4F, 13); + DrawStdFrameWithCustomTileAndPalette(6, FALSE, 0x4F, 13); gTextFlags.canABSpeedUpPrint = TRUE; AddTextPrinterParameterized2(6, 1, text, GetPlayerTextSpeedDelay(), 0, 2, 1, 3); } @@ -3629,7 +3631,7 @@ static void sub_81B334C(void) static u8 sub_81B3364(void) { gUnknown_0203CEC4->unkC[0] = AddWindow(&gUnknown_08615970); - SetWindowBorderStyle(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13); + DrawStdFrameWithCustomTileAndPalette(gUnknown_0203CEC4->unkC[0], FALSE, 0x4F, 13); return gUnknown_0203CEC4->unkC[0]; } @@ -3833,7 +3835,7 @@ static void sub_81B3828(void) static void sub_81B3894(void) { gPaletteFade.bufferTransferDisabled = TRUE; - gUnknown_0203CEC8.unk9 = gUnknown_0203CF20; + gUnknown_0203CEC8.unk9 = gLastViewedMonIndex; InitPartyMenu(gUnknown_0203CEC8.unk8_0, 0xFF, gUnknown_0203CEC8.unkB, 1, 21, sub_81B36FC, gUnknown_0203CEC8.exitCallback); } @@ -4211,7 +4213,11 @@ static void sub_81B452C(void) { u8 mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL); - sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B4578, 3); + DoEasyChatScreen( + EASY_CHAT_TYPE_MAIL, + gSaveBlock1Ptr->mail[mail].words, + sub_81B4578, + EASY_CHAT_PERSON_DISPLAY_NONE); } static void sub_81B4578(void) @@ -5178,7 +5184,7 @@ static void party_menu_link_mon_status_condition_object(u16 species, u8 status, static void party_menu_get_status_condition_and_update_object(struct Pokemon *mon, struct Struct203CEDC *ptr) { - party_menu_update_status_condition_object(sub_81B205C(mon), ptr); + party_menu_update_status_condition_object(GetMonAilment(mon), ptr); } static void party_menu_update_status_condition_object(u8 status, struct Struct203CEDC *ptr) @@ -6385,7 +6391,11 @@ static void sub_81B814C(void) sub_81B1DB8(&gPlayerParty[gUnknown_0203CEC8.unk9], gUnknown_0203CEC8.unkC); mail = GetMonData(&gPlayerParty[gUnknown_0203CEC8.unk9], MON_DATA_MAIL); - sub_811A20C(4, gSaveBlock1Ptr->mail[mail].words, sub_81B81A8, 3); + DoEasyChatScreen( + EASY_CHAT_TYPE_MAIL, + gSaveBlock1Ptr->mail[mail].words, + sub_81B81A8, + EASY_CHAT_PERSON_DISPLAY_NONE); } static void sub_81B81A8(void) @@ -6513,7 +6523,7 @@ static void sub_81B8474(u8 taskId) gTasks[taskId].func = sub_81B8104; } -void sub_81B8518(u8 unused) +void InitChooseHalfPartyForBattle(u8 unused) { sub_81B8558(); InitPartyMenu(4, 0, 0, 0, 0, sub_81B1370, gMain.savedCallback); @@ -7319,9 +7329,9 @@ static void sub_81B97DC(struct Pokemon *mon, u8 slotTo, u8 slotFrom) u8 pp1 = GetMonData(mon, MON_DATA_PP1 + slotTo); u8 pp0 = GetMonData(mon, MON_DATA_PP1 + slotFrom); u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); - u8 ppBonusMask1 = gUnknown_08329D22[slotTo]; + u8 ppBonusMask1 = gPPUpGetMask[slotTo]; u8 ppBonusMove1 = (ppBonuses & ppBonusMask1) >> (slotTo * 2); - u8 ppBonusMask2 = gUnknown_08329D22[slotFrom]; + u8 ppBonusMask2 = gPPUpGetMask[slotFrom]; u8 ppBonusMove2 = (ppBonuses & ppBonusMask2) >> (slotFrom * 2); ppBonuses &= ~ppBonusMask1; ppBonuses &= ~ppBonusMask2; diff --git a/src/player_pc.c b/src/player_pc.c index 0d08a5e7b..6e78533e7 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -361,14 +361,14 @@ static void PlayerPCProcessMenuInput(u8 taskId) break; case MENU_B_PRESSED: PlaySE(SE_SELECT); - sub_8198070(data[4], FALSE); + ClearStdWindowAndFrameToTransparent(data[4], FALSE); ClearWindowTilemap(data[4]); RemoveWindow(data[4]); schedule_bg_copy_tilemap_to_vram(0); gTasks[taskId].func = PlayerPC_TurnOff; break; default: - sub_8198070(data[4], FALSE); + ClearStdWindowAndFrameToTransparent(data[4], FALSE); ClearWindowTilemap(data[4]); RemoveWindow(data[4]); schedule_bg_copy_tilemap_to_vram(0); @@ -403,7 +403,7 @@ static void PlayerPC_Mailbox(u8 taskId) ItemStorage_SetItemAndMailCount(taskId); if (sub_81D1C44(playerPCItemPageInfo.count) == TRUE) { - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); Mailbox_DrawMailboxMenu(taskId); gTasks[taskId].func = Mailbox_ProcessInput; } @@ -451,7 +451,7 @@ static void InitItemStorageMenu(u8 taskId, u8 var) static void ItemStorageMenuPrint(const u8 *textPtr) { - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, 1, textPtr, 0, 1, 0, 0); } @@ -506,7 +506,7 @@ void sub_816B31C(void) void Mailbox_DoRedrawMailboxMenuAfterReturn(void) { sub_81973A4(); - NewMenuHelpers_DrawDialogueFrame(0, 1); + DrawDialogueFrame(0, 1); InitItemStorageMenu(CreateTask(ItemStorage_HandleReturnToProcessInput, 0), 1); pal_fill_black(); } @@ -560,7 +560,7 @@ static void ItemStorage_WithdrawToss_Helper(u8 taskId, bool8 toss) FreeAndReserveObjectSpritePalettes(); LoadListMenuArrowsGfx(); sub_8122344(gUnknown_0203BCC4->spriteIds, 7); - sub_8197434(0,0); + ClearDialogWindowAndFrame(0,0); gTasks[taskId].func = ItemStorage_ProcessWithdrawTossInput; } @@ -583,7 +583,7 @@ static void sub_816B4DC(u8 taskId) { u16 *data = gTasks[taskId].data; - sub_8198070(data[4], FALSE); + ClearStdWindowAndFrameToTransparent(data[4], FALSE); ClearWindowTilemap(data[4]); RemoveWindow(data[4]); schedule_bg_copy_tilemap_to_vram(0); @@ -761,7 +761,7 @@ static void Mailbox_MoveToBag(u8 taskId) static void Mailbox_DrawYesNoBeforeMove(u8 taskId) { - DisplayYesNoMenu(); + DisplayYesNoMenuDefaultYes(); gTasks[taskId].func = Mailbox_MoveToBagYesNoPrompt; } @@ -863,7 +863,7 @@ static void Mailbox_NoPokemonForMail(u8 taskId) static void Mailbox_Cancel(u8 taskId) { sub_81D1D04(2); - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); Mailbox_DrawMailboxMenu(taskId); schedule_bg_copy_tilemap_to_vram(0); gTasks[taskId].func = Mailbox_ProcessInput; @@ -892,7 +892,7 @@ static u8 sub_816BC7C(u8 a) if (*windowIdLoc == 0xFF) { *windowIdLoc = AddWindow(&gUnknown_085DFF5C[a]); - SetWindowBorderStyle(*windowIdLoc, FALSE, 0x214, 0xE); + DrawStdFrameWithCustomTileAndPalette(*windowIdLoc, FALSE, 0x214, 0xE); schedule_bg_copy_tilemap_to_vram(0); } return *windowIdLoc; @@ -903,7 +903,7 @@ static void sub_816BCC4(u8 a) u8 *windowIdLoc = &(gUnknown_0203BCC4->windowIds[a]); if (*windowIdLoc != 0xFF) { - sub_8198070(*windowIdLoc, FALSE); + ClearStdWindowAndFrameToTransparent(*windowIdLoc, FALSE); ClearWindowTilemap(*windowIdLoc); schedule_bg_copy_tilemap_to_vram(0); RemoveWindow(*windowIdLoc); @@ -977,7 +977,7 @@ static void sub_816BEF0(s32 id) description = (u8 *)ItemId_GetDescription(gSaveBlock1Ptr->pcItems[id].itemId); else description = ItemStorage_GetItemPcResponse(ITEMPC_GO_BACK_TO_PREV); - FillWindowPixelBuffer(windowId, 17); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); AddTextPrinterParameterized(windowId, 1, description, 0, 1, 0, NULL); } @@ -1005,7 +1005,7 @@ static void sub_816BFE0(u8 y, u8 b, u8 speed) { u8 windowId = gUnknown_0203BCC4->windowIds[0]; if (b == 0xFF) - FillWindowPixelRect(windowId, 17, 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1)); + FillWindowPixelRect(windowId, PIXEL_FILL(1), 0, y, GetMenuCursorDimensionByFont(1, 0), GetMenuCursorDimensionByFont(1, 1)); else AddTextPrinterParameterized4(windowId, 1, 0, y, 0, 0, gUnknown_085DFF8C, speed, gText_SelectorArrow2); } @@ -1123,7 +1123,7 @@ static const u8* ItemStorage_GetItemPcResponse(u16 itemId) static void ItemStorage_PrintItemPcResponse(const u8 *string) { u8 windowId = gUnknown_0203BCC4->windowIds[1]; - FillWindowPixelBuffer(windowId, 0x11); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); StringExpandPlaceholders(gStringVar4, string); AddTextPrinterParameterized(windowId, 1, gStringVar4, 0, 1, 0, NULL); } @@ -1170,7 +1170,7 @@ static void ItemStorage_GoBackToPlayerPCMenu_InitStorage(u8 taskId) data = gTasks[taskId].data; if (!IsDma3ManagerBusyWithBgCopy()) { - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); if (!data[3]) InitItemStorageMenu(taskId, ITEMPC_MENU_WITHDRAW); else diff --git a/src/poison.c b/src/poison.c index c86ec2cd8..9af981694 100644 --- a/src/poison.c +++ b/src/poison.c @@ -3,8 +3,6 @@ #include "trig.h" #include "constants/rgb.h" -extern void sub_80A77C8(struct Sprite *); - void sub_810DBAC(struct Sprite *); void sub_810DC2C(struct Sprite *); void sub_810DCD0(struct Sprite *); diff --git a/src/pokeblock.c b/src/pokeblock.c index 3fd4f34df..2682754aa 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -665,7 +665,7 @@ static void HandleInitWindows(void) for (i = 0; i < ARRAY_COUNT(sWindowTemplatesForPokeblockMenu) - 1; i++) { - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); } schedule_bg_copy_tilemap_to_vram(0); @@ -749,7 +749,7 @@ static void sub_8135FCC(s32 pkblId) struct Pokeblock *pokeblock; u16 rectTilemapSrc[2]; - FillWindowPixelBuffer(7, 0); + FillWindowPixelBuffer(7, PIXEL_FILL(0)); if (pkblId != LIST_B_PRESSED) { @@ -1120,7 +1120,7 @@ static void PutPokeblockOptionsWindow(u8 taskId) data[1] = 9; sub_8136418(); - SetWindowBorderStyle(data[1], 0, 1, 0xE); + DrawStdFrameWithCustomTileAndPalette(data[1], 0, 1, 0xE); sub_81995E4(data[1], sPokeblockMenu->optionsNo, sPokeblockMenuActions, sPokeblockMenu->pokeblockOptionsIds); InitMenuInUpperLeftCornerPlaySoundWhenAPressed(data[1], sPokeblockMenu->optionsNo, 0); PutWindowTilemap(data[1]); @@ -1173,7 +1173,7 @@ static void PokeblockAction_Toss(u8 taskId) { s16 *data = gTasks[taskId].data; - sub_8198070(data[1], FALSE); + ClearStdWindowAndFrameToTransparent(data[1], FALSE); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1Ptr->pokeblocks[gSpecialVar_ItemId].color]); StringExpandPlaceholders(gStringVar4, gText_ThrowAwayVar1); DisplayMessageAndContinueTask(taskId, 10, 10, 13, 1, GetPlayerTextSpeedDelay(), gStringVar4, CreateTossPokeblockYesNoMenu); @@ -1219,7 +1219,7 @@ static void HandleErasePokeblock(u8 taskId) static void TossPokeblockChoice_No(u8 taskId) { - sub_8197DF8(10, FALSE); + ClearDialogWindowAndFrameToTransparent(10, FALSE); schedule_bg_copy_tilemap_to_vram(1); sub_81363BC(); gTasks[taskId].func = Task_HandlePokeblockMenuInput; @@ -1266,7 +1266,7 @@ static void PokeblockAction_Cancel(u8 taskId) { s16 *data = gTasks[taskId].data; - sub_8198070(data[1], FALSE); + ClearStdWindowAndFrameToTransparent(data[1], FALSE); schedule_bg_copy_tilemap_to_vram(1); sub_81363BC(); gTasks[taskId].func = Task_HandlePokeblockMenuInput; diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index b1f182b66..da803f454 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -55,8 +55,6 @@ extern struct MusicPlayerInfo gMPlayInfo_BGM; extern const struct CompressedSpriteSheet gMonFrontPicTable[]; extern const u16 gUnknown_0860F074[]; -extern bool8 sub_81221EC(void); - // this file's functions static void HandleInitBackgrounds(void); static void HandleInitWindows(void); @@ -581,7 +579,7 @@ static bool8 TransitionToPokeblockFeedScene(void) gMain.state++; break; case 10: - SetWindowBorderStyle(0, 1, 1, 14); + DrawStdFrameWithCustomTileAndPalette(0, 1, 1, 14); gMain.state++; break; case 11: @@ -704,7 +702,7 @@ static void HandleInitWindows(void) DeactivateAllTextPrinters(); LoadUserWindowBorderGfx(0, 1, 0xE0); LoadPalette(gUnknown_0860F074, 0xF0, 0x20); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); schedule_bg_copy_tilemap_to_vram(0); } diff --git a/src/pokedex.c b/src/pokedex.c index 805412c85..4bf8dff6d 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -2152,7 +2152,7 @@ static void CreateCaughtBall(u16 a, u8 x, u8 y, u16 unused) if (a) BlitBitmapToWindow(0, gUnknown_0855D2BE, x * 8, y * 8, 8, 16); else - FillWindowPixelRect(0, 0, x * 8, y * 8, 8, 16); + FillWindowPixelRect(0, PIXEL_FILL(0), x * 8, y * 8, 8, 16); } static u8 CreateMonName(u16 num, u8 left, u8 top) @@ -2170,7 +2170,7 @@ static u8 CreateMonName(u16 num, u8 left, u8 top) void sub_80BD28C(u8 x, u8 y, u16 unused) { - FillWindowPixelRect(0, 0, x * 8, y * 8, 0x60, 16); + FillWindowPixelRect(0, PIXEL_FILL(0), x * 8, y * 8, 0x60, 16); } static void CreateInitialPokemonSprites(u16 selectedMon, u16 b) @@ -2927,7 +2927,7 @@ void sub_80BEA24(u8 taskId) case 1: DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0); CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); PutWindowTilemap(1); sub_80C0D30(1, sPokedexListItem->dexNum); @@ -3222,7 +3222,7 @@ void sub_80BF250(u8 taskId) case 1: DecompressAndLoadBgGfxUsingHeap(3, &gPokedexMenu_Gfx, 0x2000, 0, 0); CopyToBgTilemapBuffer(3, &gPokedexTilemap_CryScreen, 0, 0); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); PutWindowTilemap(3); PutWindowTilemap(2); @@ -3416,7 +3416,7 @@ void sub_80BF82C(u8 taskId) case 1: DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0); CopyToBgTilemapBuffer(3, gPokedexTilemap_SizeScreen, 0, 0); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); gMain.state++; break; @@ -3766,7 +3766,7 @@ void sub_80BFE38(u8 taskId) case 1: DecompressAndLoadBgGfxUsingHeap(3, gPokedexMenu_Gfx, 0x2000, 0, 0); CopyToBgTilemapBuffer(3, gPokedexTilemap_DescriptionScreen, 0, 0); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); PutWindowTilemap(0); PutWindowTilemap(1); sub_80C0D30(1, gTasks[taskId].data[1]); @@ -4784,7 +4784,7 @@ void sub_80C1270(const u8 *str, u32 left, u32 top) void sub_80C12B0(u32 x, u32 y, u32 width, u32 height) { - FillWindowPixelRect(0, 0, x, y, width, height); + FillWindowPixelRect(0, PIXEL_FILL(0), x, y, width, height); } void sub_80C12E0(u8 taskId) diff --git a/src/pokemon.c b/src/pokemon.c index 9553fdf17..a984abbb9 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -10,6 +10,7 @@ #include "battle_tower.h" #include "event_data.h" #include "evolution_scene.h" +#include "field_specials.h" #include "item.h" #include "link.h" #include "main.h" @@ -72,10 +73,6 @@ extern const struct CompressedSpritePalette gMonPaletteTable[]; extern const struct CompressedSpritePalette gMonShinyPaletteTable[]; extern const u8 gTrainerClassNames[][13]; -extern u16 get_unknown_box_id(void); -extern void set_unknown_box_id(u8); -extern bool8 sub_806F104(void); - // this file's functions static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon); static union PokemonSubstruct *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType); @@ -2227,9 +2224,9 @@ static const u8 sMonAnimationDelayTable[] = [SPECIES_CHIMECHO - 1] = 0x00, }; -const u8 gUnknown_08329D22[] = {0x03, 0x0c, 0x30, 0xc0}; // Masks for getting PP Up count, also PP Max values -const u8 gUnknown_08329D26[] = {0xfc, 0xf3, 0xcf, 0x3f}; // Masks for setting PP Up count -const u8 gUnknown_08329D2A[] = {0x01, 0x04, 0x10, 0x40}; // Values added to PP Up count +const u8 gPPUpGetMask[] = {0x03, 0x0c, 0x30, 0xc0}; // Masks for getting PP Up count, also PP Max values +const u8 gPPUpSetMask[] = {0xfc, 0xf3, 0xcf, 0x3f}; // Masks for setting PP Up count +const u8 gPPUpAddMask[] = {0x01, 0x04, 0x10, 0x40}; // Values added to PP Up count const u8 gStatStageRatios[][2] = { @@ -4914,19 +4911,19 @@ void GetSpeciesName(u8 *name, u16 species) u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex) { u8 basePP = gBattleMoves[move].pp; - return basePP + ((basePP * 20 * ((gUnknown_08329D22[moveIndex] & ppBonuses) >> (2 * moveIndex))) / 100); + return basePP + ((basePP * 20 * ((gPPUpGetMask[moveIndex] & ppBonuses) >> (2 * moveIndex))) / 100); } void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex) { u8 ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); - ppBonuses &= gUnknown_08329D26[moveIndex]; + ppBonuses &= gPPUpSetMask[moveIndex]; SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonuses); } void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex) { - mon->ppBonuses &= gUnknown_08329D26[moveIndex]; + mon->ppBonuses &= gPPUpSetMask[moveIndex]; } void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex) @@ -5169,11 +5166,11 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (r10 & 0x20) { r10 &= ~0x20; - dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gUnknown_08329D22[moveIndex]) >> (moveIndex * 2); + dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); var_38 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); if (dataUnsigned <= 2 && var_38 > 4) { - dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL) + gUnknown_08329D2A[moveIndex]; + dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL) + gPPUpAddMask[moveIndex]; SetMonData(mon, MON_DATA_PP_BONUSES, &dataUnsigned); dataUnsigned = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), dataUnsigned, moveIndex) - var_38; @@ -5429,13 +5426,13 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov var_3C++; break; case 4: - dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gUnknown_08329D22[moveIndex]) >> (moveIndex * 2); + dataUnsigned = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & gPPUpGetMask[moveIndex]) >> (moveIndex * 2); r5 = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), GetMonData(mon, MON_DATA_PP_BONUSES, NULL), moveIndex); if (dataUnsigned < 3 && r5 > 4) { dataUnsigned = GetMonData(mon, MON_DATA_PP_BONUSES, NULL); - dataUnsigned &= gUnknown_08329D26[moveIndex]; - dataUnsigned += gUnknown_08329D2A[moveIndex] * 3; + dataUnsigned &= gPPUpSetMask[moveIndex]; + dataUnsigned += gPPUpAddMask[moveIndex] * 3; SetMonData(mon, MON_DATA_PP_BONUSES, &dataUnsigned); dataUnsigned = CalculatePPWithBonus(GetMonData(mon, MON_DATA_MOVE1 + moveIndex, NULL), dataUnsigned, moveIndex) - r5; @@ -7025,7 +7022,7 @@ void PokemonSummaryDoMonAnimation(struct Sprite* sprite, u16 species, bool8 oneF } } -void sub_806EE98(void) +void StopPokemonAnimationDelayTask(void) { u8 delayTaskId = FindTaskIdByFunc(Task_PokemonSummaryAnimateAfterDelay); if (delayTaskId != 0xFF) diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index b0e14d2b1..98d83d8ce 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -1,5 +1,6 @@ #include "global.h" #include "event_data.h" +#include "pokedex.h" #include "pokemon.h" #include "pokemon_size_record.h" #include "string_util.h" @@ -15,9 +16,6 @@ struct UnknownStruct u16 unk4; }; -extern u16 GetPokedexHeightWeight(u16 dexNo, bool8 height); -extern u16 SpeciesToNationalPokedexNum(u16 species); - static const struct UnknownStruct sBigMonSizeTable[] = { { 290, 1, 0 }, diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index c1ebe91b4..c5d40877b 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -1218,7 +1218,7 @@ static const u16 gWallpaperPalettes_Plain[][16] = static const u32 gWallpaperTiles_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.4bpp.lz"); static const u32 gWallpaperTilemap_Plain[] = INCBIN_U32("graphics/pokemon_storage/plain.bin.lz"); -// 12×18 tilemap +// 12x18 tilemap static const u32 gUnknown_085773C4[] = INCBIN_U32("graphics/unused/tilemap_5773C4.bin"); static const u16 gUnknown_08577574[][2] = @@ -1552,7 +1552,7 @@ void sub_80C6D80(const u8 *string, void *dst, u8 arg2, u8 arg3, s32 arg4) winTemplate.width = 24; winTemplate.height = 2; windowId = AddWindow(&winTemplate); - FillWindowPixelBuffer(windowId, (arg3 << 4) | arg3); + FillWindowPixelBuffer(windowId, PIXEL_FILL(arg3)); tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA); tileData2 = (winTemplate.width * 32) + tileData1; @@ -1599,7 +1599,7 @@ void sub_80C6EAC(const u8 *string, void *dst, u16 arg2, u8 arg3, u8 clr2, u8 clr winTemplate.height = 2; var = winTemplate.width * 32; windowId = AddWindow(&winTemplate); - FillWindowPixelBuffer(windowId, (arg3 << 4) | arg3); + FillWindowPixelBuffer(windowId, PIXEL_FILL(arg3)); tileData1 = (u8*) GetWindowAttribute(windowId, WINDOW_TILE_DATA); tileData2 = (winTemplate.width * 32) + tileData1; txtColor[0] = arg3; @@ -1736,8 +1736,8 @@ static void Task_PokemonStorageSystemPC(u8 taskId) case 0: CreatePCMenu(task->data[1], &task->data[15]); sub_81973A4(); - NewMenuHelpers_DrawDialogueFrame(0, 0); - FillWindowPixelBuffer(0, 0x11); + DrawDialogueFrame(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, TEXT_SPEED_FF, NULL, 2, 1, 3); CopyWindowToVram(0, 3); CopyWindowToVram(task->data[15], 3); @@ -1763,13 +1763,13 @@ static void Task_PokemonStorageSystemPC(u8 taskId) if (task->data[1] != task->data[3]) { task->data[1] = task->data[3]; - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3); } break; case MENU_B_PRESSED: case 4: - sub_819746C(task->data[15], TRUE); + ClearStdWindowAndFrame(task->data[15], TRUE); ScriptContext2_Disable(); EnableBothScriptContexts(); RemoveWindow(task->data[15]); @@ -1778,13 +1778,13 @@ static void Task_PokemonStorageSystemPC(u8 taskId) default: if (task->data[2] == 0 && CountPartyMons() == PARTY_SIZE) { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gText_PartyFull, 0, NULL, 2, 1, 3); task->data[0] = 3; } else if (task->data[2] == 1 && CountPartyMons() == 1) { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gText_JustOnePkmn, 0, NULL, 2, 1, 3); task->data[0] = 3; } @@ -1799,7 +1799,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId) case 3: if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3); task->data[0] = 2; } @@ -1809,7 +1809,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId) task->data[1] = 4; Menu_MoveCursor(-1); task->data[1] = Menu_GetCursorPos(); - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3); task->data[0] = 2; } @@ -1819,7 +1819,7 @@ static void Task_PokemonStorageSystemPC(u8 taskId) task->data[1] = 0; Menu_MoveCursor(1); task->data[1] = Menu_GetCursorPos(); - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_085716C0[task->data[1]].desc, 0, NULL, 2, 1, 3); task->data[0] = 2; } @@ -1865,7 +1865,7 @@ static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr) winTemplate.width = GetMaxWidthInMenuTable((void *)gUnknown_085716C0, ARRAY_COUNT(gUnknown_085716C0)); windowId = AddWindow(&winTemplate); - NewMenuHelpers_DrawStdWindowFrame(windowId, FALSE); + DrawStdWindowFrame(windowId, FALSE); PrintMenuTable(windowId, ARRAY_COUNT(gUnknown_085716C0), (void *)gUnknown_085716C0); InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, ARRAY_COUNT(gUnknown_085716C0), whichMenu); *windowIdPtr = windowId; @@ -2103,7 +2103,7 @@ static void sub_80C7BE4(void) winTemplate.height = 4; windowId = AddWindow(&winTemplate); - FillWindowPixelBuffer(windowId, 0x44); + FillWindowPixelBuffer(windowId, PIXEL_FILL(4)); center = GetStringCenterAlignXOffset(1, boxName, 64); AddTextPrinterParameterized3(windowId, 1, center, 1, gUnknown_08571734, TEXT_SPEED_FF, boxName); @@ -4107,7 +4107,7 @@ static void LoadCursorMonGfx(u16 species, u32 pid) static void PrintCursorMonInfo(void) { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS) { AddTextPrinterParameterized(0, 1, sPSSData->cursorMonNickText, 6, 0, TEXT_SPEED_FF, NULL); @@ -4416,7 +4416,7 @@ static void PrintStorageActionText(u8 id) } DynamicPlaceholderTextUtil_ExpandPlaceholders(sPSSData->field_2190, gPCStorageActionTexts[id].text); - FillWindowPixelBuffer(1, 0x11); + FillWindowPixelBuffer(1, PIXEL_FILL(1)); AddTextPrinterParameterized(1, 1, sPSSData->field_2190, 0, 1, TEXT_SPEED_FF, NULL); sub_8098858(1, 2, 14); PutWindowTilemap(1); @@ -4432,7 +4432,7 @@ static void ShowYesNoWindow(s8 cursorPos) static void ClearBottomWindow(void) { - sub_8198070(1, FALSE); + ClearStdWindowAndFrameToTransparent(1, FALSE); schedule_bg_copy_tilemap_to_vram(0); } @@ -6501,7 +6501,7 @@ static void InitCanRelaseMonVars(void) } sub_80CE350(sPSSData->field_2176); - sPSSData->field_2174 = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, sPSSData->field_2176); + sPSSData->field_2174 = GetMonData(&sPSSData->field_2108, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176); if (sPSSData->field_2174 != 0) { sPSSData->field_216D = 0; @@ -6559,7 +6559,7 @@ static s8 RunCanReleaseMon(void) { if (sPSSData->field_2170 != TOTAL_BOXES_COUNT || sPSSData->field_2171 != i) { - knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, sPSSData->field_2176); + knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176); sPSSData->field_2174 &= ~(knownMoves); } } @@ -6578,7 +6578,7 @@ static s8 RunCanReleaseMon(void) case 1: for (i = 0; i < IN_BOX_COUNT; i++) { - knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, sPSSData->field_2176); + knownMoves = GetAndCopyBoxMonDataAt(sPSSData->field_216E, sPSSData->field_216F, MON_DATA_KNOWN_MOVES, (u8*)sPSSData->field_2176); if (knownMoves != 0 && !(sPSSData->field_2170 == sPSSData->field_216E && sPSSData->field_2171 == sPSSData->field_216F)) { @@ -6654,7 +6654,7 @@ static void sub_80CE8E4(void) if (sIsMonBeingMoved) sub_80CE790(); else - sBoxCursorPosition = gUnknown_0203CF20; + sBoxCursorPosition = gLastViewedMonIndex; } s16 CompactPartySlots(void) @@ -8733,7 +8733,7 @@ static void AddMenu(void) sPSSData->menuWindow.tilemapTop = 15 - sPSSData->menuWindow.height; sPSSData->field_CB0 = AddWindow(&sPSSData->menuWindow); ClearWindowTilemap(sPSSData->field_CB0); - SetWindowBorderStyle(sPSSData->field_CB0, FALSE, 11, 14); + DrawStdFrameWithCustomTileAndPalette(sPSSData->field_CB0, FALSE, 11, 14); PrintMenuTable(sPSSData->field_CB0, sPSSData->menuItemsCount, (void*)sPSSData->menuItems); InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sPSSData->field_CB0, sPSSData->menuItemsCount, 0); schedule_bg_copy_tilemap_to_vram(0); @@ -8787,7 +8787,7 @@ static s16 sub_80D00AC(void) static void sub_80D013C(void) { - sub_8198070(sPSSData->field_CB0, TRUE); + ClearStdWindowAndFrameToTransparent(sPSSData->field_CB0, TRUE); RemoveWindow(sPSSData->field_CB0); } @@ -8835,7 +8835,7 @@ static bool8 sub_80D0164(void) sPSSData->field_2200 = AddWindow8Bit(&gUnknown_0857BB1C); if (sPSSData->field_2200 != 0xFF) { - FillWindowPixelBuffer(sPSSData->field_2200, 0); + FillWindowPixelBuffer(sPSSData->field_2200, PIXEL_FILL(0)); return TRUE; } } @@ -8892,7 +8892,7 @@ static bool8 sub_80D024C(void) ChangeBgX(0, -1024, 0); ChangeBgY(0, -1024, 0); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); - FillWindowPixelBuffer8Bit(sPSSData->field_2200, 0); + FillWindowPixelBuffer8Bit(sPSSData->field_2200, PIXEL_FILL(0)); sub_80D07B0(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn); SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); PutWindowTilemap(sPSSData->field_2200); @@ -9194,7 +9194,7 @@ static void sub_80D0834(u8 arg0, u8 arg1) if (species != SPECIES_NONE) { FillWindowPixelRect8Bit(sPSSData->field_2200, - 0, + PIXEL_FILL(0), 24 * arg0, 24 * arg1, 32, @@ -9911,7 +9911,7 @@ static void PrintItemDescription(void) else description = ItemId_GetDescription(sPSSData->cursorMonItem); - FillWindowPixelBuffer(2, 0x11); + FillWindowPixelBuffer(2, PIXEL_FILL(1)); AddTextPrinterParameterized5(2, 1, description, 4, 0, 0, NULL, 0, 1); } @@ -10357,7 +10357,7 @@ bool32 AnyStorageMonWithMove(u16 moveId) { if (GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_HAS_SPECIES) && !GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_IS_EGG) - && GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_KNOWN_MOVES, moves)) + && GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_KNOWN_MOVES, (u8*)moves)) return TRUE; } } diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 46bdc9ef3..3bbc832a0 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -47,7 +47,58 @@ #include "constants/songs.h" #include "constants/species.h" -static EWRAM_DATA struct PssData +// 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; @@ -63,7 +114,7 @@ static EWRAM_DATA struct PssData u8 isEgg; // 0x4 u8 level; // 0x5 u8 ribbonCount; // 0x6 - u8 unk7; // 0x7 + u8 ailment; // 0x7 u8 altAbility; // 0x8 u8 metLocation; // 0x9 u8 metLevel; // 0xA @@ -97,25 +148,22 @@ static EWRAM_DATA struct PssData 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 @@ -138,17 +186,17 @@ static bool8 ExtractMonDataToSummaryStruct(struct Pokemon* a); static void sub_81C0348(void); static void CloseSummaryScreen(u8 taskId); static void HandleInput(u8 taskId); -static void ChangePokemon(u8 taskId, s8 a); +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 ChangePage(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 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 HandleInput_MoveSelect(u8 taskId); static bool8 sub_81C1040(void); @@ -160,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); @@ -172,10 +220,10 @@ 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 DrawContestMoveHearts(u16 move); -static void sub_81C2524(void); +static void LimitEggSummaryPageDisplay(void); static void ResetWindows(void); static void sub_81C25E8(void); static void sub_81C2628(void); @@ -237,7 +285,7 @@ static void sub_81C4568(u8 a, u8 b); static u8 CreatePokemonSprite(struct Pokemon *a, s16 *b); static u8 sub_81C47B4(struct Pokemon *unused); static void SpriteCB_Pokemon(struct Sprite *); -static void sub_81C48F0(void); +static void StopPokemonAnimations(void); static void CreateMonMarkingsSprite(struct Pokemon *mon); static void RemoveAndCreateMonMarkingsSprite(struct Pokemon *mon); static void CreateCaughtBallSprite(struct Pokemon *mon); @@ -252,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, @@ -292,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, @@ -321,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, @@ -330,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, @@ -339,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, @@ -348,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, @@ -357,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, @@ -366,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, @@ -375,7 +423,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 7, .baseBlock = 121, }, - {//Unknown + [PSS_LABEL_WINDOW_UNUSED1] = { .bg = 0, .tilemapLeft = 11, .tilemapTop = 4, @@ -384,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, @@ -393,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, @@ -402,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, @@ -411,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, @@ -420,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, @@ -429,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, @@ -438,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, @@ -447,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, @@ -456,7 +504,7 @@ static const struct WindowTemplate gUnknown_0861CC24[] = .paletteNum = 6, .baseBlock = 367, }, - {//Unknown + [PSS_LABEL_WINDOW_UNUSED2] = { .bg = 0, .tilemapLeft = 22, .tilemapTop = 4, @@ -465,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, @@ -474,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, @@ -483,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, @@ -492,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, @@ -505,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, @@ -514,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, @@ -523,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, @@ -533,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, @@ -544,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, @@ -553,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, @@ -562,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, @@ -571,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, @@ -581,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, @@ -592,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, @@ -601,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, @@ -628,8 +676,8 @@ static const u8 sTextColors_861CD2C[][3] = {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 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) = { @@ -647,11 +695,11 @@ static void (*const sTextPrinterTasks[])(u8 taskId) = 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 @@ -847,61 +895,61 @@ static const struct OamData gOamData_861CFF4 = .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 }; @@ -915,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 @@ -994,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) @@ -1042,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) @@ -1101,7 +1149,7 @@ static bool8 SummaryScreen_LoadGraphics(void) break; case 5: InitBGs(); - pssData->unk40F0 = 0; + sMonSummaryScreen->switchCounter = 0; gMain.state++; break; case 6: @@ -1113,16 +1161,16 @@ static bool8 SummaryScreen_LoadGraphics(void) 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: @@ -1134,7 +1182,7 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 13: - PrintPageSpecificText(pssData->currPageIndex); + PrintPageSpecificText(sMonSummaryScreen->currPageIndex); gMain.state++; break; case 14: @@ -1142,29 +1190,29 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 15: - CreatePageWindowTilemaps(pssData->currPageIndex); + CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex); gMain.state++; break; case 16: ResetSpriteIds(); CreateMoveTypeIcons(); - pssData->unk40F0 = 0; + sMonSummaryScreen->switchCounter = 0; gMain.state++; break; case 17: - pssData->spriteIds[0] = CreatePokemonSprite(&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: @@ -1176,7 +1224,7 @@ static bool8 SummaryScreen_LoadGraphics(void) gMain.state++; break; case 22: - if (pssData->mode != PSS_MODE_SELECT_MOVE) + if (sMonSummaryScreen->mode != PSS_MODE_SELECT_MOVE) CreateTask(HandleInput, 0); else CreateTask(sub_81C171C, 0); @@ -1202,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); @@ -1220,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(&sStatusIconsSpriteSheet); - pssData->unk40F0++; + sMonSummaryScreen->switchCounter++; break; case 10: LoadCompressedSpritePalette(&sStatusIconsSpritePalette); - pssData->unk40F0++; + 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; @@ -1285,126 +1333,127 @@ 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 { - DrawContestMoveHearts(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 BeginCloseSummaryScreen(u8 taskId) @@ -1417,8 +1466,8 @@ 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(); @@ -1437,11 +1486,11 @@ static void HandleInput(u8 taskId) { if (gMain.newKeys & DPAD_UP) { - ChangePokemon(taskId, -1); + ChangeSummaryPokemon(taskId, -1); } else if (gMain.newKeys & DPAD_DOWN) { - ChangePokemon(taskId, 1); + ChangeSummaryPokemon(taskId, 1); } else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1) { @@ -1453,11 +1502,11 @@ static void HandleInput(u8 taskId) } 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); BeginCloseSummaryScreen(taskId); } @@ -1470,57 +1519,59 @@ static void HandleInput(u8 taskId) } else if (gMain.newKeys & B_BUTTON) { - sub_81C48F0(); + StopPokemonAnimations(); PlaySE(SE_SELECT); BeginCloseSummaryScreen(taskId); } } } -static void ChangePokemon(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) { SetSpriteInvisibility(2, 1); - ClearWindowTilemap(13); + 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; } @@ -1538,37 +1589,37 @@ 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] = CreatePokemonSprite(&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: @@ -1578,11 +1629,11 @@ static void sub_81C0704(u8 taskId) sub_81C25E8(); break; case 11: - PrintPageSpecificText(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) @@ -1597,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; @@ -1624,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; @@ -1655,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 ChangePage(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); - ClearPageWindowTilemaps(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); - CreateTextPrinterTask(pssData->currPageIndex); + 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); @@ -1705,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(); - CreatePageWindowTilemaps(pssData->currPageIndex); + DrawPagination(); + CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex); SetTypeIcons(); - sub_81C0E24(); + 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; @@ -1742,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); @@ -1760,46 +1811,46 @@ 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(); - CreatePageWindowTilemaps(pssData->currPageIndex); + DrawPagination(); + CreatePageWindowTilemaps(sMonSummaryScreen->currPageIndex); SetTypeIcons(); - sub_81C0E24(); + 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(); SetNewMoveTypeIcon(); @@ -1820,17 +1871,17 @@ static void HandleInput_MoveSelect(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); @@ -1858,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; @@ -1881,10 +1932,10 @@ 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; } @@ -1892,25 +1943,25 @@ static void sub_81C1070(s16 *a, s8 b, u8 *c) 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); @@ -1919,16 +1970,16 @@ 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); } @@ -1940,7 +1991,7 @@ static void sub_81C11F4(u8 taskId) 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; @@ -1955,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); } @@ -1990,23 +2041,23 @@ 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); DrawContestMoveHearts(move); schedule_bg_copy_tilemap_to_vram(1); @@ -2016,7 +2067,7 @@ static void sub_81C13B0(u8 taskId, bool8 b) 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]; @@ -2025,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; @@ -2051,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]; @@ -2060,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; @@ -2088,26 +2139,26 @@ static void sub_81C171C(u8 taskId) { 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) { @@ -2119,26 +2170,26 @@ static void sub_81C174C(u8 taskId) } 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; + 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; BeginCloseSummaryScreen(taskId); } @@ -2146,26 +2197,27 @@ static void sub_81C174C(u8 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; @@ -2175,27 +2227,27 @@ 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; + 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); @@ -2203,13 +2255,13 @@ static void sub_81C1940(u8 taskId) } 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; + 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); @@ -2217,25 +2269,25 @@ static void sub_81C1940(u8 taskId) } 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; @@ -2244,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; @@ -2282,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; @@ -2333,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 { @@ -2359,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); @@ -2386,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); @@ -2409,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); + 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); @@ -2439,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 { @@ -2460,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); @@ -2505,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); } @@ -2532,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; @@ -2553,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) @@ -2565,7 +2617,7 @@ 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); @@ -2573,7 +2625,7 @@ static void DrawExperienceProgressBar(struct Pokemon *unused) 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; @@ -2615,9 +2667,9 @@ static void DrawContestMoveHearts(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); @@ -2626,16 +2678,16 @@ static void sub_81C2524(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 < ARRAY_COUNT(pssData->windowIds); i++) + for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++) { - pssData->windowIds[i] = 0xFF; + sMonSummaryScreen->windowIds[i] = 0xFF; } } @@ -2646,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(); @@ -2659,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) { @@ -2669,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 @@ -2690,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) @@ -2718,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; } } @@ -2729,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) @@ -2738,108 +2791,108 @@ 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 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 (page) { case PSS_PAGE_INFO: - PutWindowTilemap(0); - PutWindowTilemap(4); - if (InBattleFactory() == TRUE || sub_81B9E94() == TRUE) - PutWindowTilemap(8); - PutWindowTilemap(9); + 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 PSS_PAGE_SKILLS: - PutWindowTilemap(1); - PutWindowTilemap(10); - PutWindowTilemap(11); - PutWindowTilemap(12); + 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 PSS_PAGE_BATTLE_MOVES: - PutWindowTilemap(2); - if (pssData->mode == PSS_MODE_SELECT_MOVE) + 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 PSS_PAGE_CONTEST_MOVES: - PutWindowTilemap(3); - if (pssData->mode == PSS_MODE_SELECT_MOVE) + 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 < ARRAY_COUNT(pssData->windowIds); 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); @@ -2851,41 +2904,41 @@ static void ClearPageWindowTilemaps(u8 page) switch (page) { case PSS_PAGE_INFO: - ClearWindowTilemap(4); - if (InBattleFactory() == TRUE || sub_81B9E94() == TRUE) - ClearWindowTilemap(8); - ClearWindowTilemap(9); + 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 PSS_PAGE_SKILLS: - ClearWindowTilemap(10); - ClearWindowTilemap(11); - ClearWindowTilemap(12); + 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 PSS_PAGE_BATTLE_MOVES: - if (pssData->mode == PSS_MODE_SELECT_MOVE) + 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 PSS_PAGE_CONTEST_MOVES: - if (pssData->mode == PSS_MODE_SELECT_MOVE) + 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 < ARRAY_COUNT(pssData->windowIds); i++) + for (i = 0; i < ARRAY_COUNT(sMonSummaryScreen->windowIds); i++) { SummaryScreen_RemoveWindowByIndex(i); } @@ -2895,18 +2948,18 @@ static void ClearPageWindowTilemaps(u8 page) 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); @@ -2918,10 +2971,10 @@ static void SummaryScreen_RemoveWindowByIndex(u8 windowIndex) static void PrintPageSpecificText(u8 pageIndex) { u16 i; - for (i = 0; i < ARRAY_COUNT(pssData->windowIds); 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)); } sTextPrinterFunctions[pageIndex](); } @@ -2933,7 +2986,7 @@ static void CreateTextPrinterTask(u8 pageIndex) static void PrintInfoPageText(void) { - if (pssData->summary.isEgg) + if (sMonSummaryScreen->summary.isEgg) { PrintEggOTName(); PrintEggOTID(); @@ -2985,52 +3038,52 @@ static void PrintMonOTName(void) { u8 windowId; int x; - if (InBattleFactory() != 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 (InBattleFactory() != 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 (InBattleFactory() == TRUE || sub_81B9E94() == TRUE || IsInGamePartnerMon() == TRUE) + if (InBattleFactory() == TRUE || InSlateportBattleTent() == TRUE || IsInGamePartnerMon() == TRUE) { DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gText_XNature); } @@ -3074,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 PssData *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); @@ -3095,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; @@ -3121,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; @@ -3129,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; @@ -3139,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; @@ -3147,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); @@ -3159,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; @@ -3178,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; @@ -3202,7 +3255,7 @@ 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 PrintSkillsPageText(void) @@ -3255,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) @@ -3278,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) @@ -3300,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); @@ -3320,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; @@ -3369,17 +3422,17 @@ static void PrintBattleMoves(void) 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]); } } } @@ -3403,22 +3456,22 @@ static void Task_PrintBattleMoves(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; @@ -3435,9 +3488,9 @@ static void PrintMoveNameAndPP(u8 moveIndex) u32 ppState; const u8 *text; u32 offset; - struct PssData *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) @@ -3449,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); @@ -3470,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) { @@ -3482,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) { @@ -3494,7 +3547,7 @@ 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); } } @@ -3505,10 +3558,10 @@ static void PrintContestMoves(void) 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); } } @@ -3532,14 +3585,14 @@ static void Task_PrintContestMoves(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: @@ -3554,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); @@ -3592,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); @@ -3612,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); @@ -3641,8 +3694,8 @@ 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); } @@ -3650,24 +3703,24 @@ static void ResetSpriteIds(void) { u8 i; - for (i = 0; i < ARRAY_COUNT(pssData->spriteIds); 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 SetSpriteInvisibility(u8 spriteArrayId, bool8 invisible) { - gSprites[pssData->spriteIds[spriteArrayId]].invisible = invisible; + gSprites[sMonSummaryScreen->spriteIds[spriteArrayId]].invisible = invisible; } static void HidePageSpecificSprites(void) @@ -3675,16 +3728,16 @@ static void HidePageSpecificSprites(void) // Keeps Pokémon, caught ball and status sprites visible. u8 i; - for (i = 3; i < ARRAY_COUNT(pssData->spriteIds); i++) + for (i = 3; i < ARRAY_COUNT(sMonSummaryScreen->spriteIds); i++) { - if (pssData->spriteIds[i] != 0xFF) + if (sMonSummaryScreen->spriteIds[i] != 0xFF) SetSpriteInvisibility(i, TRUE); } } static void SetTypeIcons(void) { - switch (pssData->currPageIndex) + switch (sMonSummaryScreen->currPageIndex) { case PSS_PAGE_INFO: SetMonTypeIcons(); @@ -3706,8 +3759,8 @@ static void CreateMoveTypeIcons(void) 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); SetSpriteInvisibility(i, TRUE); } @@ -3715,7 +3768,7 @@ static void CreateMoveTypeIcons(void) 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; @@ -3725,7 +3778,7 @@ static void SetMoveTypeSpritePosAndType(u8 typeId, u8 x, u8 y, u8 spriteArrayId) static void SetMonTypeIcons(void) { - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; if (summary->isEgg) { SetMoveTypeSpritePosAndType(TYPE_MYSTERY, 120, 48, 3); @@ -3749,7 +3802,7 @@ static void SetMonTypeIcons(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) @@ -3762,7 +3815,7 @@ static void SetMoveTypeIcons(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) @@ -3774,23 +3827,23 @@ static void SetContestMoveTypeIcons(void) static void SetNewMoveTypeIcon(void) { - if (pssData->newMove == MOVE_NONE) + if (sMonSummaryScreen->newMove == MOVE_NONE) { 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; @@ -3809,7 +3862,7 @@ static void sub_81C4568(u8 a0, u8 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) { @@ -3818,7 +3871,7 @@ static u8 CreatePokemonSprite(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); } @@ -3831,7 +3884,7 @@ static u8 CreatePokemonSprite(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); } @@ -3842,7 +3895,7 @@ static u8 CreatePokemonSprite(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); } @@ -3865,10 +3918,10 @@ static u8 CreatePokemonSprite(struct Pokemon *mon, s16 *a1) 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); } @@ -3881,7 +3934,7 @@ static void PlayMonCry(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]; @@ -3906,7 +3959,7 @@ static u8 sub_81C47B4(struct Pokemon *unused) static void SpriteCB_Pokemon(struct Sprite *sprite) { - struct PokeSummary *summary = &pssData->summary; + struct PokeSummary *summary = &sMonSummaryScreen->summary; if (!gPaletteFade.active && sprite->data[2] != 1) { @@ -3932,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; } @@ -3942,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++) { @@ -3961,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); } @@ -3986,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) @@ -4001,7 +4054,7 @@ static void CreateSetStatusSprite(void) *spriteId = CreateSprite(&sSpriteTemplate_StatusCondition, 64, 152, 0); } - anim = sub_81B205C(&pssData->currentMon); + anim = GetMonAilment(&sMonSummaryScreen->currentMon); if (anim != 0) { @@ -4017,9 +4070,9 @@ static void CreateSetStatusSprite(void) 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) @@ -4071,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; } } @@ -4091,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++) @@ -4114,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++) { diff --git a/src/pokenav.c b/src/pokenav.c index 9b315dc9a..1912e7e57 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -209,7 +209,7 @@ void sub_81C7710(void); static void InitKeys_(void); static void FreeVars(void); static void VblankCb_Pokenav(void); -static void Cb2_Pokenav(void); +static void CB2_Pokenav(void); void sub_81C7C28(void); void sub_81C72BC(void); void sub_81C7B74(void); @@ -456,7 +456,7 @@ u32 sub_81C7078(u32 (*func)(s32), u32 priority) { u16 taskId; - if (!is_c1_link_related_active()) + if (!IsUpdateLinkStateCBActive()) taskId = CreateTask(sub_81C7170, priority); else taskId = CreateTask(sub_81C71E4, priority); @@ -553,7 +553,7 @@ void sub_81C71E4(u8 taskId) } } -void CB2_PokeNav(void) +void CB2_InitPokeNav(void) { gUnknown_0203CF40 = Alloc(sizeof(*gUnknown_0203CF40)); if (gUnknown_0203CF40 == NULL) @@ -566,7 +566,7 @@ void CB2_PokeNav(void) ResetTasks(); SetVBlankCallback(NULL); CreateTask(sub_81C742C, 0); - SetMainCallback2(Cb2_Pokenav); + SetMainCallback2(CB2_Pokenav); SetVBlankCallback(VblankCb_Pokenav); } } @@ -597,7 +597,7 @@ void sub_81C72BC(void) FreeAllSpritePalettes(); SetVBlankCallback(NULL); CreateTask(sub_81C742C, 0); - SetMainCallback2(Cb2_Pokenav); + SetMainCallback2(CB2_Pokenav); SetVBlankCallback(VblankCb_Pokenav); } } @@ -656,7 +656,7 @@ static bool32 AnyMonHasRibbon(void) return FALSE; } -static void Cb2_Pokenav(void) +static void CB2_Pokenav(void) { RunTasks(); AnimateSprites(); @@ -1208,8 +1208,8 @@ bool32 IsDma3ManagerBusyWithBgCopy_(void) void sub_81C7BF8(u32 windowId) { - FillWindowPixelBuffer(windowId, 0x44); - FillWindowPixelRect(windowId, 0x55, 0, 0, 0x80, 1); + FillWindowPixelBuffer(windowId, PIXEL_FILL(4)); + FillWindowPixelRect(windowId, PIXEL_FILL(5), 0, 0, 0x80, 1); } void sub_81C7C28(void) diff --git a/src/pokenav_match_call.c b/src/pokenav_match_call.c index 53f9f0548..b775ed10e 100644 --- a/src/pokenav_match_call.c +++ b/src/pokenav_match_call.c @@ -1,13 +1,11 @@ - -// Includes #include "global.h" #include "battle_setup.h" #include "event_data.h" #include "string_util.h" #include "battle.h" #include "gym_leader_rematch.h" +#include "match_call.h" -extern void sub_8197080(u8 *dest); extern const u8 gTrainerClassNames[][13]; // Static type declarations diff --git a/src/record_mixing.c b/src/record_mixing.c index c0ca5f19c..3a16f817e 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -34,9 +34,8 @@ #include "daycare.h" #include "international_string_util.h" #include "constants/battle_frontier.h" +#include "dewford_trend.h" -extern void ReceiveSecretBasesData(struct SecretBaseRecord *, size_t, u8); -extern void ReceiveEasyChatPairsData(struct EasyChatPair *, size_t, u8); // Static type declarations @@ -106,7 +105,7 @@ static EWRAM_DATA union PlayerRecords *sSentRecord = NULL; // Static ROM declarations static void Task_RecordMixing_Main(u8 taskId); -static void sub_80E7324(u8 taskId); +static void Task_MixingRecordsRecv(u8 taskId); static void Task_SendPacket(u8 taskId); static void Task_CopyReceiveBuffer(u8 taskId); static void Task_SendPacket_SwitchToReceive(u8 taskId); @@ -120,7 +119,7 @@ static void ReceiveLilycoveLadyData(LilycoveLady *, size_t, u8); static void sub_80E7B2C(const u8 *); static void ReceiveDaycareMailData(struct RecordMixingDayCareMail *, size_t, u8, TVShow *); static void ReceiveGiftItem(u16 *item, u8 which); -static void sub_80E7FF8(u8 taskId); +static void Task_DoRecordMixing(u8 taskId); static void sub_80E8110(struct Apprentice *arg0, struct Apprentice *arg1); static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2); static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2); @@ -170,7 +169,8 @@ static const u8 gUnknown_0858CFBE[3][4] = #define BUFFER_CHUNK_SIZE 200 -void sub_80E6BE8(void) +// Note: VAR_0x8005 contains the spotId. +void RecordMixingPlayerSpotTriggered(void) { sub_80B37D4(Task_RecordMixing_Main); } @@ -292,7 +292,7 @@ static void ReceiveExchangePacket(u32 which) static void PrintTextOnRecordMixing(const u8 *src) { - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, 1, src, 0, 1, 0, NULL); CopyWindowToVram(0, 3); } @@ -313,6 +313,7 @@ static void Task_RecordMixing_SoundEffect(u8 taskId) #define tState data[0] #define tSndEffTaskId data[15] +// Note: Currently, special var 8005 contains the player's spot id. static void Task_RecordMixing_Main(u8 taskId) { s16 *data = gTasks[taskId].data; @@ -322,16 +323,16 @@ static void Task_RecordMixing_Main(u8 taskId) case 0: // init sSentRecord = malloc(sizeof(union PlayerRecords)); sReceivedRecords = malloc(sizeof(union PlayerRecords) * 4); - sub_8009628(gSpecialVar_0x8005); + SetLocalLinkPlayerId(gSpecialVar_0x8005); VarSet(VAR_TEMP_0, 1); gUnknown_03001130 = FALSE; PrepareExchangePacket(); CreateRecordMixingSprite(); tState = 1; - data[10] = CreateTask(sub_80E7324, 80); + data[10] = CreateTask(Task_MixingRecordsRecv, 80); tSndEffTaskId = CreateTask(Task_RecordMixing_SoundEffect, 81); break; - case 1: // wait for sub_80E7324 + case 1: // wait for Task_MixingRecordsRecv if (!gTasks[data[10]].isActive) { tState = 2; @@ -341,11 +342,11 @@ static void Task_RecordMixing_Main(u8 taskId) } break; case 2: - data[10] = CreateTask(sub_80E7FF8, 10); + data[10] = CreateTask(Task_DoRecordMixing, 10); tState = 3; PlaySE(SE_W226); break; - case 3: // wait for sub_80E7FF8 + case 3: // wait for Task_DoRecordMixing if (!gTasks[data[10]].isActive) { tState = 4; @@ -370,7 +371,7 @@ static void Task_RecordMixing_Main(u8 taskId) { CreateTask(sub_80AF2B4, 10); } - sub_8197434(0, 1); + ClearDialogWindowAndFrame(0, 1); DestroyTask(taskId); EnableBothScriptContexts(); } @@ -381,7 +382,7 @@ static void Task_RecordMixing_Main(u8 taskId) #undef tState #undef tSndEffTaskId -static void sub_80E7324(u8 taskId) +static void Task_MixingRecordsRecv(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -405,7 +406,7 @@ static void sub_80E7324(u8 taskId) u8 players = GetLinkPlayerCount_2(); if (IsLinkMaster() == TRUE) { - if (players == sub_800AA48()) + if (players == GetSavedPlayerCount()) { PlaySE(SE_PIN); task->data[0] = 201; @@ -420,14 +421,15 @@ static void sub_80E7324(u8 taskId) } break; case 201: - if (sub_800AA48() == GetLinkPlayerCount_2() && ++task->data[12] > (GetLinkPlayerCount_2() * 30)) + // We're the link master. Delay for 30 frames per connected player. + if (GetSavedPlayerCount() == GetLinkPlayerCount_2() && ++task->data[12] > (GetLinkPlayerCount_2() * 30)) { - sub_800A620(); + CheckShouldAdvanceLinkState(); task->data[0] = 1; } break; case 301: - if (sub_800AA48() == GetLinkPlayerCount_2()) + if (GetSavedPlayerCount() == GetLinkPlayerCount_2()) task->data[0] = 1; break; case 400: // wait 20 frames @@ -470,6 +472,7 @@ static void sub_80E7324(u8 taskId) StorePtrInTaskData(sReceivedRecords, (u16 *)&gTasks[subTaskId].data[5]); sRecordStructSize = sizeof(struct PlayerRecordsEmerald); } + // Note: This task is destroyed by Task_CopyReceiveBuffer when it's done. } break; case 5: // wait 60 frames @@ -938,7 +941,7 @@ static void ReceiveGiftItem(u16 *item, u8 which) } } -static void sub_80E7FF8(u8 taskId) +static void Task_DoRecordMixing(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -953,20 +956,22 @@ static void sub_80E7FF8(u8 taskId) else task->data[0] = 6; break; + + // Mixing Ruby/Sapphire records. case 2: SetContinueGameWarpStatusToDynamicWarp(); - sub_8153430(); + FullSaveGame(); task->data[0] ++; break; case 3: - if (sub_8153474()) + if (CheckSaveFile()) { ClearContinueGameWarpStatus2(); task->data[0] = 4; task->data[1] = 0; } break; - case 4: + case 4: // Wait 10 frames if (++task->data[1] > 10) { sub_800AC34(); @@ -974,22 +979,24 @@ static void sub_80E7FF8(u8 taskId) } break; case 5: - if (gReceivedRemoteLinkPlayers == 0) + if (gReceivedRemoteLinkPlayers == FALSE) DestroyTask(taskId); break; + + // Mixing Emerald records. case 6: - if (!sub_801048C(0)) + if (!sub_801048C(FALSE)) { CreateTask(sub_8153688, 5); task->data[0] ++; } break; - case 7: + case 7: // wait for sub_8153688 to finish. if (!FuncIsActiveTask(sub_8153688)) { if (gWirelessCommType) { - sub_801048C(1); + sub_801048C(TRUE); task->data[0] = 8; } else diff --git a/src/region_map.c b/src/region_map.c index ff0c19167..8dadc78a7 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -883,7 +883,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) case MAP_TYPE_CITY: case MAP_TYPE_ROUTE: case MAP_TYPE_UNDERWATER: - case MAP_TYPE_6: + case MAP_TYPE_OCEAN_ROUTE: gRegionMap->mapSecId = gMapHeader.regionMapSectionId; gRegionMap->playerIsInCave = FALSE; mapWidth = gMapHeader.mapLayout->width; @@ -896,7 +896,7 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void) } break; case MAP_TYPE_UNDERGROUND: - case MAP_TYPE_7: + case MAP_TYPE_UNUSED_2: if (gMapHeader.flags & 0x02) { mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum); @@ -1159,7 +1159,7 @@ static u16 RegionMap_GetTerraCaveMapSecId(void) { s16 idx; - idx = VarGet(VAR_0x4037) - 1; + idx = VarGet(VAR_UNUSUAL_WEATHER_LOCATION) - 1; if (idx < 0 || idx > 15) { idx = 0; @@ -1171,7 +1171,7 @@ static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y) { u16 idx; - idx = VarGet(VAR_0x4037); + idx = VarGet(VAR_UNUSUAL_WEATHER_LOCATION); if (idx < 9 || idx > 16) { idx = 9; @@ -1622,7 +1622,7 @@ void MCB2_FlyMap(void) case 7: LoadPalette(sRegionMapFramePal, 0x10, 0x20); PutWindowTilemap(2); - FillWindowPixelBuffer(2, 0x00); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); AddTextPrinterParameterized(2, 1, gText_FlyToWhere, 0, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); gMain.state++; @@ -1687,8 +1687,8 @@ static void sub_8124904(void) { StringLength(gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec]); flag = TRUE; - sub_8198070(0, FALSE); - SetWindowBorderStyle(1, FALSE, 0x65, 0x0d); + ClearStdWindowAndFrameToTransparent(0, FALSE); + DrawStdFrameWithCustomTileAndPalette(1, FALSE, 0x65, 0x0d); AddTextPrinterParameterized(1, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL); name = gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec]; AddTextPrinterParameterized(1, 1, name, GetStringRightAlignXOffset(1, name, 0x60), 0x11, 0, NULL); @@ -1702,12 +1702,12 @@ static void sub_8124904(void) { if (gUnknown_03001180 == TRUE) { - sub_8198070(1, FALSE); - SetWindowBorderStyle(0, FALSE, 0x65, 0x0d); + ClearStdWindowAndFrameToTransparent(1, FALSE); + DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x65, 0x0d); } else { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); } AddTextPrinterParameterized(0, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); @@ -1718,10 +1718,10 @@ static void sub_8124904(void) { if (gUnknown_03001180 == TRUE) { - sub_8198070(1, FALSE); - SetWindowBorderStyle(0, FALSE, 0x65, 0x0d); + ClearStdWindowAndFrameToTransparent(1, FALSE); + DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x65, 0x0d); } - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); CopyWindowToVram(0, 2); schedule_bg_copy_tilemap_to_vram(0); gUnknown_03001180 = FALSE; diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c index 34444cbf4..ce9f5b98b 100644 --- a/src/reset_rtc_screen.c +++ b/src/reset_rtc_screen.c @@ -290,7 +290,7 @@ static void FreeCursorPalette(void) static void HideChooseTimeWindow(u8 windowId) { - sub_8198070(windowId, FALSE); + ClearStdWindowAndFrameToTransparent(windowId, FALSE); RemoveWindow(windowId); schedule_bg_copy_tilemap_to_vram(0); } @@ -319,7 +319,7 @@ static void PrintTime(u8 windowId, u8 x, u8 y, u16 days, u8 hours, u8 minutes, u static void ShowChooseTimeWindow(u8 windowId, u16 days, u8 hours, u8 minutes, u8 seconds) { - SetWindowBorderStyle(windowId, FALSE, 0x214, 0xE); + DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x214, 0xE); PrintTime(windowId, 0, 1, days, hours, minutes, seconds); AddTextPrinterParameterized(windowId, 1, gText_Confirm2, 126, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); @@ -495,7 +495,7 @@ static void VBlankCB(void) static void ShowMessage(const u8 *str) { - sub_8197B1C(1, FALSE, 0x200, 0xF); + DrawDialogFrameWithCustomTileAndPalette(1, FALSE, 0x200, 0xF); AddTextPrinterParameterized(1, 1, str, 0, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); } @@ -507,7 +507,7 @@ static void Task_ShowResetRtcPrompt(u8 taskId) switch (data[0]) { case 0: - SetWindowBorderStyle(0, FALSE, 0x214, 0xE); + DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x214, 0xE); AddTextPrinterParameterized(0, 1, gText_PresentTime, 0, 1, TEXT_SPEED_FF, 0); PrintTime( 0, @@ -574,7 +574,7 @@ static void Task_ResetRtcScreen(u8 taskId) case 2: if (gTasks[data[1]].isActive != TRUE) { - sub_8198070(0, FALSE); + ClearStdWindowAndFrameToTransparent(0, FALSE); ShowMessage(gText_PleaseResetTime); gLocalTime = gSaveBlock2Ptr->lastBerryTreeUpdate; data[1] = CreateTask(Task_ResetRtc_0, 80); diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c index 0926d4569..dd177f884 100644 --- a/src/reshow_battle_screen.c +++ b/src/reshow_battle_screen.c @@ -2,6 +2,7 @@ #include "reshow_battle_screen.h" #include "battle.h" #include "palette.h" +#include "pokemon.h" #include "main.h" #include "scanline_effect.h" #include "text.h" @@ -18,8 +19,6 @@ extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[]; -extern void SetMultiuseSpriteTemplateToTrainerBack(u16 backPicId, u8 battlerPosition); - // this file's functions static void CB2_ReshowBattleScreenAfterMenu(void); static bool8 LoadBattlerSpriteGfx(u8 battlerId); diff --git a/src/rock.c b/src/rock.c index 14ffc63e0..814b1d88b 100644 --- a/src/rock.c +++ b/src/rock.c @@ -12,8 +12,6 @@ extern const union AnimCmd *const gUnknown_085950E0[]; extern const union AnimCmd *const gUnknown_085954D0[]; -extern void AnimMoveTwisterParticle(struct Sprite *); - void sub_81109F0(struct Sprite *); void sub_8110AB4(struct Sprite *); void AnimDirtParticleAcrossScreen(struct Sprite *); diff --git a/src/rom_8011DC0.c b/src/rom_8011DC0.c index baed26cf8..3d9eab8d7 100644 --- a/src/rom_8011DC0.c +++ b/src/rom_8011DC0.c @@ -33,8 +33,7 @@ #include "start_menu.h" #include "data2.h" #include "field_screen_effect.h" - -extern void HealPlayerParty(void); +#include "script_pokemon_util_80F87D8.h" struct UnkStruct_Shared { @@ -188,7 +187,7 @@ extern u8 gUnknown_02022C3E; extern u16 gUnknown_02022C3C; extern u8 gUnknown_02022C20[]; extern u8 gFieldLinkPlayerCount; -extern u8 gUnknown_03005DB4; +extern u8 gLocalLinkPlayerId; // IWRAM vars IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0; @@ -387,7 +386,7 @@ void nullsub_89(void) void sub_80124EC(u8 windowId, u8 arg1, u8 stringId) { - FillWindowPixelBuffer(windowId, 0x11); + FillWindowPixelBuffer(windowId, PIXEL_FILL(1)); switch (arg1 << 8) { case 0x200: @@ -506,17 +505,17 @@ void sub_8012780(u8 taskId) } data->field_11 = AddWindow(&gUnknown_082F012C); - FillWindowPixelBuffer(data->field_10, 0x22); + FillWindowPixelBuffer(data->field_10, PIXEL_FILL(2)); sub_80173E0(data->field_10, 0, gUnknown_082EDBC4, 8, 1, 4); PutWindowTilemap(data->field_10); CopyWindowToVram(data->field_10, 2); - NewMenuHelpers_DrawStdWindowFrame(data->listWindowId, FALSE); + DrawStdWindowFrame(data->listWindowId, FALSE); gMultiuseListMenuTemplate = gUnknown_082F015C; gMultiuseListMenuTemplate.windowId = data->listWindowId; data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); - NewMenuHelpers_DrawStdWindowFrame(data->field_11, FALSE); + DrawStdWindowFrame(data->field_11, FALSE); PutWindowTilemap(data->field_11); CopyWindowToVram(data->field_11, 2); @@ -786,10 +785,10 @@ void sub_8012780(u8 taskId) void sub_8012F64(struct UnkStruct_Leader *data) { ClearWindowTilemap(data->field_11); - sub_819746C(data->field_11, FALSE); + ClearStdWindowAndFrame(data->field_11, FALSE); DestroyListMenuTask(data->listTaskId, 0, 0); ClearWindowTilemap(data->field_10); - sub_819746C(data->listWindowId, FALSE); + ClearStdWindowAndFrame(data->listWindowId, FALSE); CopyBgTilemapBufferToVram(0); RemoveWindow(data->field_11); RemoveWindow(data->listWindowId); @@ -1075,17 +1074,17 @@ void sub_80134E8(u8 taskId) data->listWindowId = AddWindow(&gUnknown_082F0174); data->field_D = AddWindow(&gUnknown_082F017C); - FillWindowPixelBuffer(data->field_C, 0x22); + FillWindowPixelBuffer(data->field_C, PIXEL_FILL(2)); sub_80173E0(data->field_C, 0, gUnknown_082EF7DC, 8, 1, 4); PutWindowTilemap(data->field_C); CopyWindowToVram(data->field_C, 2); - NewMenuHelpers_DrawStdWindowFrame(data->listWindowId, FALSE); + DrawStdWindowFrame(data->listWindowId, FALSE); gMultiuseListMenuTemplate = gUnknown_082F0204; gMultiuseListMenuTemplate.windowId = data->listWindowId; data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); - NewMenuHelpers_DrawStdWindowFrame(data->field_D, FALSE); + DrawStdWindowFrame(data->field_D, FALSE); PutWindowTilemap(data->field_D); sub_80125BC(data->field_D); CopyWindowToVram(data->field_D, 2); @@ -1254,10 +1253,10 @@ void sub_80134E8(u8 taskId) case 18: case 20: ClearWindowTilemap(data->field_D); - sub_819746C(data->field_D, FALSE); + ClearStdWindowAndFrame(data->field_D, FALSE); DestroyListMenuTask(data->listTaskId, 0, 0); ClearWindowTilemap(data->field_C); - sub_819746C(data->listWindowId, FALSE); + ClearStdWindowAndFrame(data->listWindowId, FALSE); CopyBgTilemapBufferToVram(0); RemoveWindow(data->field_D); RemoveWindow(data->listWindowId); @@ -1630,7 +1629,7 @@ void sub_8014210(u16 battleFlags) void sub_8014290(u16 arg0, u16 x, u16 y) { - VarSet(VAR_0x4087, arg0); + VarSet(VAR_CABLE_CLUB_STATE, arg0); SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y); SetDynamicWarpWithCoords(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, x, y); WarpIntoMap(); @@ -1639,9 +1638,9 @@ void sub_8014290(u16 arg0, u16 x, u16 y) void sub_8014304(s8 mapGroup, s8 mapNum, s32 x, s32 y, u16 arg4) { gSpecialVar_0x8004 = arg4; - VarSet(VAR_0x4087, arg4); + VarSet(VAR_CABLE_CLUB_STATE, arg4); gFieldLinkPlayerCount = GetLinkPlayerCount(); - gUnknown_03005DB4 = GetMultiplayerId(); + gLocalLinkPlayerId = GetMultiplayerId(); SetCableClubWarp(); SetWarpDestination(mapGroup, mapNum, -1, x, y); WarpIntoMap(); @@ -1697,7 +1696,7 @@ void sub_801440C(u8 taskId) case 81: CleanupOverworldWindowsAndTilemaps(); gMain.savedCallback = sub_801AC54; - sub_81B8518(3); + InitChooseHalfPartyForBattle(3); break; case 1: CleanupOverworldWindowsAndTilemaps(); @@ -2155,7 +2154,7 @@ void sub_8014F48(u8 taskId) data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); sub_8018784(data->field_D); - FillWindowPixelBuffer(data->field_D, 0x11); + FillWindowPixelBuffer(data->field_D, PIXEL_FILL(1)); PutWindowTilemap(data->field_D); sub_80125BC(data->field_D); CopyWindowToVram(data->field_D, 2); diff --git a/src/roulette.c b/src/roulette.c index a6a020f39..05d5006f0 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -973,7 +973,7 @@ static void sub_81405CC(void) sub_814372C(6); sub_81436D0(0); sub_81424FC(0); - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); + DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5B89, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_0203AB8C, 3); gSpriteCoordOffsetX = -60; @@ -996,7 +996,7 @@ static void sub_81405CC(void) taskId = gUnknown_0203AB88->varA4 = CreateTask(sub_81408A8, 0); gTasks[taskId].data[6] = 6; gTasks[taskId].data[13] = GetCoins(); - sub_80EDE84(GetCoins()); + AlertTVThatPlayerPlayedRoulette(GetCoins()); gUnknown_0203AB88->varA5 = CreateTask(sub_8140814, 1); SetMainCallback2(sub_8140238); return; @@ -1043,8 +1043,8 @@ static void sub_81408A8(u8 taskId) static void sub_8140914(u8 taskId) { - DisplayYesNoMenu(); - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, 0); + DisplayYesNoMenuDefaultYes(); + DrawStdWindowFrame(gUnknown_0203AB8C, 0); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C13, 0, 1, TEXT_SPEED_FF, 0); CopyWindowToVram(gUnknown_0203AB8C, 3); DoYesNoFuncWithChoice(taskId, &gUnknown_085B6410); @@ -1052,7 +1052,7 @@ static void sub_8140914(u8 taskId) static void sub_8140968(u8 taskId) { - sub_819746C(0, TRUE); + ClearStdWindowAndFrame(0, TRUE); gTasks[taskId].func = sub_8140BD0; } @@ -1808,14 +1808,14 @@ static void sub_814189C(u8 taskId) if (gTasks[taskId].data[2] == 12) { PlayFanfare(MUS_ME_B_BIG); - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); + DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5BD7, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_0203AB8C, 3); } else { PlayFanfare(MUS_ME_B_SMALL); - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); + DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5BCB, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_0203AB8C, 3); } @@ -1823,7 +1823,7 @@ static void sub_814189C(u8 taskId) case 0: default: m4aSongNumStart(SE_HAZURE); - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); + DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5BE0, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_0203AB8C, 3); break; @@ -1867,7 +1867,7 @@ static void sub_8141A18(u8 taskId) { ConvertIntToDecimalStringN(gStringVar1, (gUnknown_0203AB88->var19 * gTasks[taskId].data[2]), STR_CONV_MODE_LEFT_ALIGN, 2); StringExpandPlaceholders(gStringVar4, gUnknown_082A5BEF); - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); + DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_0203AB8C, 3); gTasks[taskId].data[1] = (gUnknown_0203AB88->var19 * gTasks[taskId].data[2]); @@ -1900,14 +1900,14 @@ static void sub_8141B58(u8 taskId) { if (gTasks[taskId].data[6] == 6) { - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); + DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C21, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_0203AB8C, 3); sub_8141F7C(taskId, dp01t_12_3_battle_menu, 0xFFFF, 3); } else if (gTasks[taskId].data[13] == 9999) { - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); + DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C61, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_0203AB8C, 3); sub_8141F7C(taskId, sub_8140914, 0xFFFF, 0x3); @@ -1919,7 +1919,7 @@ static void sub_8141B58(u8 taskId) } else { - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); + DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C04, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_0203AB8C, 3); sub_8141F7C(taskId, sub_8140994, 0x3C, 0x3); @@ -1944,7 +1944,7 @@ static void dp01t_12_3_battle_menu(u8 taskId) if (gTasks[taskId].data[13] == 9999) { - NewMenuHelpers_DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); + DrawStdWindowFrame(gUnknown_0203AB8C, FALSE); AddTextPrinterParameterized(gUnknown_0203AB8C, 1, gUnknown_082A5C61, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_0203AB8C, 3); sub_8141F7C(taskId, sub_8140914, 0xFFFF, 3); @@ -1964,7 +1964,7 @@ static void sub_8141DE4(u8 taskId) gSpecialVar_0x8004 = TRUE; else gSpecialVar_0x8004 = FALSE; - sub_80EDD78(GetCoins()); + AlertTVOfNewCoinTotal(GetCoins()); BeginHardwarePaletteFade(0xFF, 0, 0, 16, 0); gTasks[taskId].func = sub_8141E7C; } @@ -3256,7 +3256,7 @@ static const struct SpriteTemplate gUnknown_085B7AEC = static void sub_81428C4(u8 r0) { - DisplayYesNoMenu(); + DisplayYesNoMenuDefaultYes(); DoYesNoFuncWithChoice(r0, &gUnknown_085B6408); } @@ -3272,7 +3272,7 @@ static void sub_81428E4(u8 taskId) static void sub_8142918(u8 taskId) { - sub_819746C(0, TRUE); + ClearStdWindowAndFrame(0, TRUE); HideCoinsWindow(); FreeAllWindowBuffers(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); @@ -3283,7 +3283,7 @@ static void sub_8142918(u8 taskId) static void sub_814297C(u8 taskId) { - sub_819746C(0, FALSE); + ClearStdWindowAndFrame(0, FALSE); HideCoinsWindow(); ScriptContext2_Disable(); DestroyTask(taskId); @@ -3296,7 +3296,7 @@ static void sub_81429A0(u8 taskId) { gSpecialVar_0x8004 = 1; HideCoinsWindow(); - sub_819746C(0, TRUE); + ClearStdWindowAndFrame(0, TRUE); ScriptContext2_Disable(); DestroyTask(taskId); } @@ -3309,7 +3309,7 @@ static void sub_81429F0(u8 taskId) u32 temp = gUnknown_085B6344[(gSpecialVar_0x8004 & 1) + (gSpecialVar_0x8004 >> 7 << 1)]; ConvertIntToDecimalStringN(gStringVar1, temp, STR_CONV_MODE_LEADING_ZEROS, 1); StringExpandPlaceholders(gStringVar4, gUnknown_082A5B12); - NewMenuHelpers_DrawStdWindowFrame(0, FALSE); + DrawStdWindowFrame(0, FALSE); AddTextPrinterParameterized(0, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(0, 3); gTasks[taskId].func = sub_81428C4; @@ -3326,7 +3326,7 @@ static void Task_Roulette_0(u8 taskId) { if ((gSpecialVar_0x8004 & 0x80) && (gSpecialVar_0x8004 & 1)) { - NewMenuHelpers_DrawStdWindowFrame(0, FALSE); + DrawStdWindowFrame(0, FALSE); AddTextPrinterParameterized(0, 1, gUnknown_082A5B6B, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(0, 3); gTasks[taskId].func = sub_81429F0; @@ -3334,7 +3334,7 @@ static void Task_Roulette_0(u8 taskId) else { StringExpandPlaceholders(gStringVar4, gUnknown_082A5B12); - NewMenuHelpers_DrawStdWindowFrame(0, FALSE); + DrawStdWindowFrame(0, FALSE); AddTextPrinterParameterized(0, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(0, 3); gTasks[taskId].func = sub_81428C4; @@ -3343,7 +3343,7 @@ static void Task_Roulette_0(u8 taskId) else { StringExpandPlaceholders(gStringVar4, gUnknown_082A5B4E); - NewMenuHelpers_DrawStdWindowFrame(0, FALSE); + DrawStdWindowFrame(0, FALSE); AddTextPrinterParameterized(0, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(0, 3); gTasks[taskId].func = sub_81429A0; diff --git a/src/safari_zone.c b/src/safari_zone.c index accf94981..703c3d0cd 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -10,6 +10,7 @@ #include "string_util.h" #include "tv.h" #include "constants/game_stat.h" +#include "field_screen_effect.h" struct PokeblockFeeder { @@ -27,8 +28,6 @@ extern const u8 EventScript_2A4B6F[]; extern const u8 EventScript_2A4B4C[]; extern const u8 EventScript_2A4B9B[]; -extern void sub_80AF6F0(void); - EWRAM_DATA u8 gNumSafariBalls = 0; EWRAM_DATA static u16 sSafariZoneStepCounter = 0; EWRAM_DATA static u8 sSafariZoneCaughtMons = 0; diff --git a/src/save.c b/src/save.c index a22e20f0b..361a88e1e 100644 --- a/src/save.c +++ b/src/save.c @@ -1,5 +1,7 @@ #include "global.h" +#include "agb_flash.h" #include "gba/flash_internal.h" +#include "fieldmap.h" #include "save.h" #include "task.h" #include "decompress.h" @@ -8,6 +10,7 @@ #include "pokemon_storage_system.h" #include "main.h" #include "trainer_hill.h" +#include "link.h" #include "constants/game_stat.h" static u16 CalculateChecksum(void *data, u16 size); @@ -70,12 +73,6 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] = SAVEBLOCK_CHUNK(gPokemonStorage, 8), }; -extern void DoSaveFailedScreen(u8); // save_failed_screen -extern bool32 ProgramFlashSectorAndVerify(u8 sector, u8 *data); -extern void save_serialize_map(void); -extern void sub_800ADF8(void); -extern bool8 IsLinkTaskFinished(void); - // iwram common u16 gLastWrittenSector; u32 gLastSaveCounter; @@ -659,10 +656,10 @@ static void UpdateSaveAddresses(void) u8 HandleSavingData(u8 saveType) { u8 i; - u32 *backupVar = gUnknown_0203CF5C; + u32 *backupVar = gTrainerHillVBlankCounter; u8 *tempAddr; - gUnknown_0203CF5C = NULL; + gTrainerHillVBlankCounter = NULL; UpdateSaveAddresses(); switch (saveType) { @@ -705,7 +702,7 @@ u8 HandleSavingData(u8 saveType) save_write_to_flash(0xFFFF, gRamSaveSectionLocations); break; } - gUnknown_0203CF5C = backupVar; + gTrainerHillVBlankCounter = backupVar; return 0; } @@ -768,7 +765,7 @@ u8 sub_8153408(void) // trade.s save return 0; } -u8 sub_8153430(void) +u8 FullSaveGame(void) { if (gFlashMemoryPresent != TRUE) return 1; @@ -780,7 +777,7 @@ u8 sub_8153430(void) return 0; } -bool8 sub_8153474(void) +bool8 CheckSaveFile(void) { u8 retVal = FALSE; u16 val = ++gUnknown_03006208; diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 2478ebbec..08f193890 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -229,10 +229,10 @@ static void CB2_SaveFailedScreen(void) LoadPalette(sSaveFailedClockPal, 0x100, 0x20); LoadPalette(gTextWindowFrame1_Pal, 0xE0, 0x20); LoadPalette(gUnknown_0860F074, 0xF0, 0x20); - SetWindowBorderStyle(gSaveFailedWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE); - SetWindowBorderStyle(gSaveFailedWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE); - FillWindowPixelBuffer(gSaveFailedWindowIds[CLOCK_WIN_ID], 0x11); // backwards? - FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); + DrawStdFrameWithCustomTileAndPalette(gSaveFailedWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE); + DrawStdFrameWithCustomTileAndPalette(gSaveFailedWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE); + FillWindowPixelBuffer(gSaveFailedWindowIds[CLOCK_WIN_ID], PIXEL_FILL(1)); // backwards? + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1)); CopyWindowToVram(gSaveFailedWindowIds[CLOCK_WIN_ID], 2); // again? CopyWindowToVram(gSaveFailedWindowIds[TEXT_WIN_ID], 1); SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0); @@ -265,19 +265,19 @@ static void CB2_WipeSave(void) { if (WipeSectors(gDamagedSaveSectors) != FALSE) { - FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1)); SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0); SetMainCallback2(CB2_GameplayCannotBeContinued); return; } - FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1)); SaveFailedScreenTextPrint(gText_CheckCompleted, 1, 0); HandleSavingData(gSaveFailedType); if (gDamagedSaveSectors != 0) { - FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1)); SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0); } @@ -286,12 +286,12 @@ static void CB2_WipeSave(void) if (wipeTries == 3) { - FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1)); SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0); } else { - FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1)); if (gGameContinueCallback == NULL) SaveFailedScreenTextPrint(gText_SaveCompleteGameCannotContinue, 1, 0); @@ -308,7 +308,7 @@ static void CB2_GameplayCannotBeContinued(void) if (gMain.newKeys & A_BUTTON) { - FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11); + FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], PIXEL_FILL(1)); SaveFailedScreenTextPrint(gText_GamePlayCannotBeContinued, 1, 0); SetVBlankCallback(VBlankCB); SetMainCallback2(CB2_FadeAndReturnToTitleScreen); diff --git a/src/scrcmd.c b/src/scrcmd.c index 51d96ff2e..314504600 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1203,7 +1203,7 @@ bool8 ScrCmd_turnvobject(struct ScriptContext *ctx) bool8 ScrCmd_lockall(struct ScriptContext *ctx) { - if (is_c1_link_related_active()) + if (IsUpdateLinkStateCBActive()) { return FALSE; } @@ -1217,7 +1217,7 @@ bool8 ScrCmd_lockall(struct ScriptContext *ctx) bool8 ScrCmd_lock(struct ScriptContext *ctx) { - if (is_c1_link_related_active()) + if (IsUpdateLinkStateCBActive()) { return FALSE; } @@ -1302,7 +1302,7 @@ bool8 ScrCmd_cmdDB(struct ScriptContext *ctx) if (msg == NULL) msg = (const u8 *)ctx->data[0]; sub_81973A4(); - NewMenuHelpers_DrawDialogueFrame(0, 1); + DrawDialogueFrame(0, 1); AddTextPrinterParameterized(0, 1, msg, 0, 1, 0, 0); return FALSE; } @@ -1517,9 +1517,9 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) winTemplate = CreateWindowTemplate(0, xWindow, yWindow + 1, width, height, 0xF, 0x1); gUnknown_03000F30 = AddWindow(&winTemplate); LoadUserWindowBorderGfx(gUnknown_03000F30, 0x214, 0xE0); - NewMenuHelpers_DrawStdWindowFrame(gUnknown_03000F30, 0); + DrawStdWindowFrame(gUnknown_03000F30, 0); PutWindowTilemap(gUnknown_03000F30); - FillWindowPixelBuffer(gUnknown_03000F30, 0x11); + FillWindowPixelBuffer(gUnknown_03000F30, PIXEL_FILL(1)); AddTextPrinterParameterized(gUnknown_03000F30, 6, gStringVar4, xText, yText, 0xFF, 0x0); CopyWindowToVram(gUnknown_03000F30, 3); return FALSE; @@ -2028,14 +2028,14 @@ bool8 ScrCmd_setmetatile(struct ScriptContext *ctx) u16 x = VarGet(ScriptReadHalfword(ctx)); u16 y = VarGet(ScriptReadHalfword(ctx)); u16 tileId = VarGet(ScriptReadHalfword(ctx)); - u16 v8 = VarGet(ScriptReadHalfword(ctx)); + u16 isImpassable = VarGet(ScriptReadHalfword(ctx)); x += 7; y += 7; - if (!v8) + if (!isImpassable) MapGridSetMetatileIdAt(x, y, tileId); else - MapGridSetMetatileIdAt(x, y, tileId | 0xC00); + MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK); return FALSE; } @@ -2182,7 +2182,7 @@ bool8 ScrCmd_cmdD8(struct ScriptContext *ctx) bool8 ScrCmd_cmdD9(struct ScriptContext *ctx) { - if (is_c1_link_related_active()) + if (IsUpdateLinkStateCBActive()) { return FALSE; } @@ -2254,7 +2254,7 @@ bool8 ScrCmd_setmonmetlocation(struct ScriptContext *ctx) void sub_809BDB4(void) { - sub_819746C(gUnknown_03000F30, 1); + ClearStdWindowAndFrame(gUnknown_03000F30, 1); RemoveWindow(gUnknown_03000F30); } diff --git a/src/script.c b/src/script.c index c61ae7183..c95a1141f 100644 --- a/src/script.c +++ b/src/script.c @@ -2,6 +2,7 @@ #include "script.h" #include "event_data.h" #include "util.h" +#include "constants/map_scripts.h" #define RAM_SCRIPT_MAGIC 51 @@ -241,7 +242,7 @@ void ScriptContext2_RunNewScript(const u8 *ptr) while (RunScriptCommand(&sScriptContext2) == TRUE); } -u8 *mapheader_get_tagged_pointer(u8 tag) +u8 *MapHeaderGetScriptTable(u8 tag) { const u8 *mapScripts = gMapHeader.mapScripts; @@ -261,16 +262,16 @@ u8 *mapheader_get_tagged_pointer(u8 tag) } } -void mapheader_run_script_by_tag(u8 tag) +void MapHeaderRunScriptType(u8 tag) { - u8 *ptr = mapheader_get_tagged_pointer(tag); + u8 *ptr = MapHeaderGetScriptTable(tag); if (ptr) ScriptContext2_RunNewScript(ptr); } -u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) +u8 *MapHeaderCheckScriptTable(u8 tag) { - u8 *ptr = mapheader_get_tagged_pointer(tag); + u8 *ptr = MapHeaderGetScriptTable(tag); if (!ptr) return NULL; @@ -291,45 +292,45 @@ u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) } } -void mapheader_run_script_with_tag_x1(void) +void RunOnLoadMapScript(void) { - mapheader_run_script_by_tag(1); + MapHeaderRunScriptType(MAP_SCRIPT_ON_LOAD); } -void mapheader_run_script_with_tag_x3(void) +void RunOnTransitionMapScript(void) { - mapheader_run_script_by_tag(3); + MapHeaderRunScriptType(MAP_SCRIPT_ON_TRANSITION); } -void mapheader_run_script_with_tag_x5(void) +void RunOnResumeMapScript(void) { - mapheader_run_script_by_tag(5); + MapHeaderRunScriptType(MAP_SCRIPT_ON_RESUME); } -void mapheader_run_script_with_tag_x7(void) +void RunOnReturnToFieldMapScript(void) { - mapheader_run_script_by_tag(7); + MapHeaderRunScriptType(MAP_SCRIPT_ON_RETURN_TO_FIELD); } -void mapheader_run_script_with_tag_x6(void) +void RunOnDiveWarpMapScript(void) { - mapheader_run_script_by_tag(6); + MapHeaderRunScriptType(MAP_SCRIPT_ON_DIVE_WARP); } -bool8 mapheader_run_first_tag2_script_list_match(void) +bool8 TryRunOnFrameMapScript(void) { - u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(2); + u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_FRAME_TABLE); if (!ptr) - return 0; + return FALSE; ScriptContext1_SetupScript(ptr); - return 1; + return TRUE; } -void mapheader_run_first_tag4_script_list_match(void) +void TryRunOnWarpIntoMapScript(void) { - u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(4); + u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE); if (ptr) ScriptContext2_RunNewScript(ptr); } diff --git a/src/script_menu.c b/src/script_menu.c index 7180bfc60..c7523a370 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -1202,7 +1202,7 @@ bool8 ScriptMenu_YesNo(u8 left, u8 top) else { gSpecialVar_Result = 0xFF; - DisplayYesNoMenu(); + DisplayYesNoMenuDefaultYes(); taskId = CreateTask(Task_HandleYesNoInput, 0x50); return TRUE; } @@ -1312,7 +1312,7 @@ static void Task_HandleMultichoiceGridInput(u8 taskId) #undef tWindowId -bool8 ScrSpecial_CreatePCMenu(void) +bool16 ScrSpecial_CreatePCMenu(void) { if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE) { @@ -1630,7 +1630,7 @@ u8 CreateWindowFromRect(u8 x, u8 y, u8 width, u8 height) void sub_80E2A78(u8 windowId) { - sub_8198070(windowId, TRUE); + ClearStdWindowAndFrameToTransparent(windowId, TRUE); RemoveWindow(windowId); } @@ -1639,27 +1639,27 @@ static void sub_80E2A94(u8 multichoiceId) switch (multichoiceId) { case 77: - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_0858BBAC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3); break; case 76: - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_0858BB9C[Menu_GetCursorPos()], 0, NULL, 2, 1, 3); break; case 78: - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_0858BBBC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3); break; case 79: - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_0858BBCC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3); break; case 75: - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_0858BBEC[Menu_GetCursorPos()], 0, NULL, 2, 1, 3); break; case 74: - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gUnknown_0858BBE0[Menu_GetCursorPos()], 0, NULL, 2, 1, 3); break; } diff --git a/src/script_pokemon_util_80F87D8.c b/src/script_pokemon_util_80F87D8.c index cade00b50..7d6020c7a 100755 --- a/src/script_pokemon_util_80F87D8.c +++ b/src/script_pokemon_util_80F87D8.c @@ -29,6 +29,7 @@ #include "constants/items.h" #include "constants/species.h" #include "constants/vars.h" +#include "constants/battle_frontier.h" extern const u16 gEventObjectPalette8[]; extern const u16 gEventObjectPalette17[]; @@ -40,7 +41,7 @@ static const u8 gUnknown_0858D8EC[] = { 3, 4, 5, 14 }; static void sub_80F8EE8(u8 taskId); static void sub_80F9088(u8 taskId); -static void sub_80F9460(void); +static void CB2_ReturnFromChooseHalfParty(void); static void sub_80F94B8(void); void SetContestTrainerGfxIds(void) @@ -640,22 +641,24 @@ void ScriptSetMonMoveSlot(u8 monIndex, u16 move, u8 slot) SetMonMoveSlot(&gPlayerParty[monIndex], move, slot); } -void sub_80F9438(void) +// Note: When control returns to the event script, gSpecialVar_Result will be +// TRUE if the party selection was successful. +void ChooseHalfPartyForBattle(void) { - gMain.savedCallback = sub_80F9460; - VarSet(VAR_FRONTIER_FACILITY, 9); // this isn't a valid frontier facility id (??) - sub_81B8518(0); + gMain.savedCallback = CB2_ReturnFromChooseHalfParty; + VarSet(VAR_FRONTIER_FACILITY, FRONTIER_FACILITY_DOUBLE_COLOSSEUM); + InitChooseHalfPartyForBattle(0); } -static void sub_80F9460(void) +static void CB2_ReturnFromChooseHalfParty(void) { switch (gSelectedOrderFromParty[0]) { case 0: - gSpecialVar_Result = 0; + gSpecialVar_Result = FALSE; break; default: - gSpecialVar_Result = 1; + gSpecialVar_Result = TRUE; break; } @@ -665,7 +668,7 @@ static void sub_80F9460(void) void sub_80F9490(void) { gMain.savedCallback = sub_80F94B8; - sub_81B8518(gSpecialVar_0x8004 + 1); + InitChooseHalfPartyForBattle(gSpecialVar_0x8004 + 1); } static void sub_80F94B8(void) diff --git a/src/secret_base.c b/src/secret_base.c index adcab9cbc..4b270e424 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -43,8 +43,6 @@ #include "constants/species.h" #include "constants/trainers.h" -extern void mapldr_default(void); - // Static type declarations struct SecretBaseListMenuBuffer { @@ -60,7 +58,7 @@ struct SecretBaseRecordMixer { // Static RAM declarations EWRAM_DATA u8 sCurSecretBaseId = 0; -EWRAM_DATA u8 gUnknown_0203A01D = 0; +EWRAM_DATA bool8 gInFriendSecretBase = FALSE; EWRAM_DATA struct SecretBaseListMenuBuffer *gUnknown_0203A020 = NULL; // Static ROM declarations @@ -259,7 +257,7 @@ void sub_80E8CB0(s16 *xPtr, s16 *yPtr, u16 tile) { for (x = 0; x < mapLayout->width; x ++) { - if ((mapLayout->map[y * mapLayout->width + x] & 0x3ff) == tile) + if ((mapLayout->map[y * mapLayout->width + x] & METATILE_ID_MASK) == tile) { *xPtr = x; *yPtr = y; @@ -282,7 +280,7 @@ void sub_80E8D4C(void) { if (gUnknown_0858CFCC[i].tile1 == tile) { - MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xC00); + MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); return; } @@ -291,7 +289,7 @@ void sub_80E8D4C(void) { if (gUnknown_0858CFCC[i].tile2 == tile) { - MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | 0xC00); + MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile1 | METATILE_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); return; } @@ -352,7 +350,7 @@ void sub_80E8EE0(struct MapEvents const *events) { if (gUnknown_0858CFCC[i].tile1 == tile_id) { - MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | 0xc00); + MapGridSetMetatileIdAt(x, y, gUnknown_0858CFCC[i].tile2 | METATILE_COLLISION_MASK); break; } } @@ -407,7 +405,7 @@ void sub_80E9068(void) bool8 sub_80E909C(void) { - if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0) + if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_INIT_SECRET_BASE) == 0) { return FALSE; } @@ -434,7 +432,7 @@ void sub_80E9108(void) sub_80E8CB0(&x, &y, 0x220); x += 7; y += 7; - MapGridSetMetatileIdAt(x, y, 0x220 | 0xC00); + MapGridSetMetatileIdAt(x, y, 0x220 | METATILE_COLLISION_MASK); CurrentMapDrawMetatileAt(x, y); pal_fill_black(); CreateTask(sub_80E90C8, 0); @@ -492,12 +490,12 @@ void sub_80E9238(u8 flagIn) if (curBaseId != 0) { sub_80E8CB0(&x, &y, 0x220); - MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | 0xc00); + MapGridSetMetatileIdAt(x + 7, y + 7, 0x221 | METATILE_COLLISION_MASK); } - else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) + else if (flagIn == 1 && VarGet(VAR_SECRET_BASE_INITIALIZED) == 1) { sub_80E8CB0(&x, &y, 0x220); - MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | 0xc00); + MapGridSetMetatileIdAt(x + 7, y + 7, 0x20a | METATILE_COLLISION_MASK); } } } @@ -552,7 +550,7 @@ void sub_80E933C(void) metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); if (MetatileBehavior_IsSecretBaseLargeMatEdge(metatile) == TRUE || MetatileBehavior_IsLargeMatCenter(metatile) == TRUE) { - gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + VAR_0x3F20; + gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].graphicsId + UNKNOWN_VAR_OFFSET_3F20; VarSet(gSpecialVar_Result, gDecorations[roomDecor[decorIdx]].tiles[0]); gSpecialVar_Result = gMapHeader.events->eventObjects[objIdx].localId; FlagClear(gSpecialVar_0x8004 + 0xAE); @@ -791,7 +789,7 @@ void sub_80E9AD0(void) { if (gUnknown_0858CFCC[j].tile2 == tile) { - MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | 0xc00); + MapGridSetMetatileIdAt(events->bgEvents[i].x + 7, events->bgEvents[i].y + 7, gUnknown_0858CFCC[j].tile1 | METATILE_COLLISION_MASK); break; } } @@ -871,7 +869,7 @@ void sub_80E9C9C(u8 taskId) { data[1] = 0; data[2] = 0; - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); gUnknown_0203A020 = calloc(1, sizeof(struct SecretBaseListMenuBuffer)); data[6] = AddWindow(&gUnknown_0858D06C[0]); game_continue(taskId); @@ -963,7 +961,7 @@ void sub_80E9E90(u8 taskId) PlaySE(SE_SELECT); DestroyListMenuTask(data[5], NULL, NULL); RemoveScrollIndicatorArrowPair(data[8]); - sub_819746C(data[6], 0); + ClearStdWindowAndFrame(data[6], 0); ClearWindowTilemap(data[6]); RemoveWindow(data[6]); schedule_bg_copy_tilemap_to_vram(0); @@ -1020,8 +1018,8 @@ void sub_80E9FFC(u8 taskId) s16 *data; data = gTasks[taskId].data; - sub_819746C(data[6], FALSE); - sub_819746C(data[7], FALSE); + ClearStdWindowAndFrame(data[6], FALSE); + ClearStdWindowAndFrame(data[7], FALSE); ClearWindowTilemap(data[6]); ClearWindowTilemap(data[7]); RemoveWindow(data[7]); @@ -1033,7 +1031,7 @@ void sub_80E9FFC(u8 taskId) void sub_80EA06C(u8 taskId) { - DisplayYesNoMenu(); + DisplayYesNoMenuDefaultYes(); DoYesNoFuncWithChoice(taskId, &gUnknown_0858D058); } @@ -1042,7 +1040,7 @@ void sub_80EA08C(u8 taskId) s16 *data; data = gTasks[taskId].data; - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); DestroyListMenuTask(data[5], &data[2], &data[1]); gSaveBlock1Ptr->secretBases[data[4]].sbr_field_1_6 = 0; game_continue(taskId); @@ -1061,7 +1059,7 @@ void sub_80EA13C(u8 taskId) s16 *data; data = gTasks[taskId].data; - sub_8197434(0, 0); + ClearDialogWindowAndFrame(0, 0); DestroyListMenuTask(data[5], &data[2], &data[1]); sub_80E9E00(taskId); gTasks[taskId].func = sub_80E9E90; @@ -1073,7 +1071,7 @@ void sub_80EA18C(u8 taskId) data = gTasks[taskId].data; sub_80E9E44(taskId); - sub_819746C(data[7], 0); + ClearStdWindowAndFrame(data[7], 0); ClearWindowTilemap(data[7]); RemoveWindow(data[7]); schedule_bg_copy_tilemap_to_vram(0); @@ -1186,11 +1184,11 @@ void SecretBasePerStepCallback(u8 taskId) case 0: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - gUnknown_0203A01D = TRUE; + gInFriendSecretBase = TRUE; } else { - gUnknown_0203A01D = FALSE; + gInFriendSecretBase = FALSE; } PlayerGetDestCoords(&data[2], &data[3]); data[1] = 1; @@ -1201,103 +1199,103 @@ void SecretBasePerStepCallback(u8 taskId) { data[2] = x; data[3] = y; - VarSet(VAR_0x40EC, VarGet(VAR_0x40EC) + 1); + VarSet(VAR_SECRET_BASE_STEP_COUNTER, VarGet(VAR_SECRET_BASE_STEP_COUNTER) + 1); behavior = MapGridGetMetatileBehaviorAt(x, y); tileId = MapGridGetMetatileIdAt(x, y); if (tileId == 0x234 || tileId == 0x23C) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x20); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x20); } } else if (tileId == 0x2b8 || tileId == 0x2b9 || tileId == 0x2ba || tileId == 0x2c0 || tileId == 0x2c1 || tileId == 0x2c2 || tileId == 0x2c8 || tileId == 0x2c9 || tileId == 0x2ca) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x01); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x01); } } else if (tileId == 0x239 || tileId == 0x241 || tileId == 0x251 || tileId == 0x259) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x04); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x04); } } else if ((behavior == 0x34 && tileId == 0x26d) || (behavior == 0x35 && MapGridGetMetatileIdAt(x, y) == 0x26a)) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x200); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x200); } } else if (behavior == 0xc1 && tileId == 0x23d) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x1000); - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x2000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x1000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x2000); } } else if (behavior == 0x47 && tileId == 0x23e) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x1000); - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) ^ 0x2000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x1000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) ^ 0x2000); } } else if (MetatileBehavior_IsSecretBaseGlitterMat(behavior) == TRUE) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x80); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x80); } } else if (MetatileBehavior_IsSecretBaseBalloon(behavior) == TRUE) { PopSecretBaseBalloon(MapGridGetMetatileIdAt(x, y), x, y); - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { switch ((int)MapGridGetMetatileIdAt(x, y)) { case 0x338: case 0x33c: case 0x340: - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x02); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x02); break; case 0x228: - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x100); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x100); break; } } } else if (MetatileBehavior_IsSecretBaseBreakableDoor(behavior) == TRUE) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x400); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x400); } ShatterSecretBaseBreakableDoor(x, y); } else if (MetatileBehavior_IsSecretBaseSoundMat(behavior) == TRUE){ - if (gUnknown_0203A01D == TRUE) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8000); + if (gInFriendSecretBase == TRUE) { + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8000); } } else if (MetatileBehavior_IsSecretBaseJumpMat(behavior) == TRUE) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4000); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4000); } } else if (MetatileBehavior_IsSecretBaseSpinMat(behavior) == TRUE) { - if (gUnknown_0203A01D == TRUE) + if (gInFriendSecretBase == TRUE) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x02); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x02); } } } @@ -1780,33 +1778,33 @@ void sub_80EB18C(struct SecretBaseRecord *bases) void sub_80EB1AC(void) { - VarSet(VAR_0x40EC, 0); - VarSet(VAR_0x40ED, 0); - VarSet(VAR_0x40EE, 0); - VarSet(VAR_0x40EF, 0); + VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0); + VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, 0); if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40F0, TRUE); + VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, TRUE); } else { - VarSet(VAR_0x40F0, FALSE); + VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE); } - gUnknown_0203A01D = FALSE; + gInFriendSecretBase = FALSE; } void sub_80EB218(void) { - if (VarGet(VAR_0x40F0) && gUnknown_0203A01D == TRUE && !CurrentMapIsSecretBase()) + if (VarGet(VAR_SECRET_BASE_IS_NOT_LOCAL) && gInFriendSecretBase == TRUE && !CurrentMapIsSecretBase()) { - VarSet(VAR_0x40F0, FALSE); - gUnknown_0203A01D = FALSE; + VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE); + gInFriendSecretBase = FALSE; sub_80EEA70(); - VarSet(VAR_0x40EC, 0); - VarSet(VAR_0x40ED, 0); - VarSet(VAR_0x40EE, 0); - VarSet(VAR_0x40EF, 0); - VarSet(VAR_0x40F0, FALSE); + VarSet(VAR_SECRET_BASE_STEP_COUNTER, 0); + VarSet(VAR_SECRET_BASE_LAST_ITEM_USED, 0); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, 0); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, 0); + VarSet(VAR_SECRET_BASE_IS_NOT_LOCAL, FALSE); } } @@ -1814,7 +1812,7 @@ void sub_80EB290(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x800); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x800); } } @@ -1822,7 +1820,7 @@ void sub_80EB2C8(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x400); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x400); } } @@ -1830,9 +1828,9 @@ void sub_80EB300(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800); - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001); - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x2000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x2000); } } @@ -1840,9 +1838,9 @@ void sub_80EB368(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800); - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001); - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x800); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x800); } } @@ -1850,9 +1848,9 @@ void sub_80EB3D0(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800); - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001); - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x1000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x1000); } } @@ -1860,9 +1858,9 @@ void sub_80EB438(void) { if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) & ~0x3800); - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) & ~0x001); - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x001); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) & ~0x3800); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) & ~0x001); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x001); } } @@ -1891,7 +1889,7 @@ void sub_80EB498(void) case 0x334: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x4000); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x4000); } break; } @@ -1909,7 +1907,7 @@ void sub_80EB56C(void) case 0x28b: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x40); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x40); } break; case 0x2d8: @@ -1932,21 +1930,21 @@ void sub_80EB56C(void) case 0x2fb: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EE, VarGet(VAR_0x40EE) | 0x8); + VarSet(VAR_SECRET_BASE_LOW_TV_FLAGS, VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) | 0x8); } break; case 0x22c: case 0x233: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x40); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x40); } break; case 0x288: case 0x289: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100); } break; case 0x22d: @@ -1954,7 +1952,7 @@ void sub_80EB56C(void) case 0x22f: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10); } break; case 0x287: @@ -1982,7 +1980,7 @@ void sub_80EB56C(void) case 0x2cf: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8); } break; } @@ -2009,7 +2007,7 @@ void sub_80EB9E0(void) case 0x2c6: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8); } break; } @@ -2047,14 +2045,14 @@ void sub_80EBB28(void) case 0x2c7: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x8); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x8); } break; case 0x280: case 0x281: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x100); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x100); } break; case 0x225: @@ -2062,7 +2060,7 @@ void sub_80EBB28(void) case 0x227: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x10); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x10); } break; } @@ -2080,7 +2078,7 @@ void sub_80EBE7C(void) case 0x28e: if (VarGet(VAR_CURRENT_SECRET_BASE) != 0) { - VarSet(VAR_0x40EF, VarGet(VAR_0x40EF) | 0x4); + VarSet(VAR_SECRET_BASE_HIGH_TV_FLAGS, VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) | 0x4); } break; } diff --git a/src/shop.c b/src/shop.c index 8eefd5e97..e03e2ab0c 100755 --- a/src/shop.c +++ b/src/shop.c @@ -366,7 +366,7 @@ void CB2_ExitSellMenu(void) static void Task_HandleShopMenuQuit(u8 taskId) { - sub_8198070(gMartInfo.windowId, 2); + ClearStdWindowAndFrameToTransparent(gMartInfo.windowId, 2); RemoveWindow(gMartInfo.windowId); SaveRecordedItemPurchasesForTVShow(); ScriptContext2_Disable(); @@ -545,7 +545,7 @@ static void BuyMenuPrintItemDescriptionAndShowItemIcon(int item, bool8 onInit, s description = gText_QuitShopping; } - FillWindowPixelBuffer(2, 0); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); BuyMenuPrint(2, description, 3, 1, 0, 0); } @@ -981,12 +981,12 @@ static void Task_BuyHowManyDialogueInit(u8 taskId) u16 quantityInBag = CountTotalItemQuantityInBag(tItemId); u16 maxQuantity; - SetWindowBorderStyle(3, FALSE, 1, 13); + DrawStdFrameWithCustomTileAndPalette(3, FALSE, 1, 13); ConvertIntToDecimalStringN(gStringVar1, quantityInBag, STR_CONV_MODE_RIGHT_ALIGN, 4); StringExpandPlaceholders(gStringVar4, gText_InBagVar1); BuyMenuPrint(3, gStringVar4, 0, 1, 0, 0); tItemCount = 1; - SetWindowBorderStyle(4, FALSE, 1, 13); + DrawStdFrameWithCustomTileAndPalette(4, FALSE, 1, 13); BuyMenuPrintItemQuantityAndPrice(taskId); schedule_bg_copy_tilemap_to_vram(0); @@ -1018,8 +1018,8 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId) if (gMain.newKeys & A_BUTTON) { PlaySE(SE_SELECT); - sub_8198070(4, 0); - sub_8198070(3, 0); + ClearStdWindowAndFrameToTransparent(4, 0); + ClearStdWindowAndFrameToTransparent(3, 0); ClearWindowTilemap(4); ClearWindowTilemap(3); PutWindowTilemap(1); @@ -1031,8 +1031,8 @@ static void Task_BuyHowManyDialogueHandleInput(u8 taskId) else if (gMain.newKeys & B_BUTTON) { PlaySE(SE_SELECT); - sub_8198070(4, 0); - sub_8198070(3, 0); + ClearStdWindowAndFrameToTransparent(4, 0); + ClearStdWindowAndFrameToTransparent(3, 0); ClearWindowTilemap(4); ClearWindowTilemap(3); BuyMenuReturnToItemList(taskId); @@ -1131,7 +1131,7 @@ static void BuyMenuReturnToItemList(u8 taskId) { s16 *data = gTasks[taskId].data; - sub_8197DF8(5, 0); + ClearDialogWindowAndFrameToTransparent(5, 0); BuyMenuPrintCursor(tListTaskId, 1); PutWindowTilemap(1); PutWindowTilemap(2); @@ -1144,7 +1144,7 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId) { s16 *data = gTasks[taskId].data; - FillWindowPixelBuffer(4, 0x11); + FillWindowPixelBuffer(4, PIXEL_FILL(1)); PrintMoneyAmount(4, 38, 1, gShopDataPtr->totalCost, TEXT_SPEED_FF); ConvertIntToDecimalStringN(gStringVar1, tItemCount, 2, 2); StringExpandPlaceholders(gStringVar4, gText_xVar1); diff --git a/src/siirtc.c b/src/siirtc.c index f7e85ef4f..5c153a841 100644 --- a/src/siirtc.c +++ b/src/siirtc.c @@ -76,19 +76,19 @@ static void DisableGpioPortRead(); static const char AgbLibRtcVersion[] = "SIIRTC_V001"; -void SiiRtcUnprotect() +void SiiRtcUnprotect(void) { EnableGpioPortRead(); sLocked = FALSE; } -void SiiRtcProtect() +void SiiRtcProtect(void) { DisableGpioPortRead(); sLocked = TRUE; } -u8 SiiRtcProbe() +u8 SiiRtcProbe(void) { u8 errorCode; struct SiiRtcInfo rtc; @@ -129,7 +129,7 @@ u8 SiiRtcProbe() return (errorCode << 4) | 1; } -bool8 SiiRtcReset() +bool8 SiiRtcReset(void) { u8 result; struct SiiRtcInfo rtc; diff --git a/src/slot_machine.c b/src/slot_machine.c index 0871506cd..a2e1f1554 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -60,33 +60,33 @@ enum struct SlotMachineEwramStruct { /*0x00*/ u8 state; - /*0x01*/ u8 unk01; + /*0x01*/ u8 machineId; /*0x02*/ u8 pikaPower; - /*0x03*/ u8 unk03; - /*0x04*/ u8 unk04; - /*0x05*/ u8 unk05; - /*0x06*/ u8 unk06; - /*0x07*/ u8 unk07; + /*0x03*/ u8 luckyGame; + /*0x04*/ u8 luckyFlags; + /*0x05*/ u8 reelTimeDraw; + /*0x06*/ u8 luckySpinsLeft; // tentative + /*0x07*/ u8 biasTag; /*0x08*/ u16 matchedSymbols; - /*0x0A*/ u8 unk0A; - /*0x0B*/ u8 unk0B; + /*0x0A*/ u8 fairRollsLeft; // only happens if you win reeltime + /*0x0B*/ u8 fairRollsUsed; /*0x0C*/ s16 coins; /*0x0E*/ s16 payout; - /*0x10*/ s16 unk10; + /*0x10*/ s16 netCoinLoss; // coins lost to machine (but never goes below 0) /*0x12*/ s16 bet; - /*0x14*/ s16 unk14; - /*0x16*/ s16 unk16; - /*0x18*/ s16 unk18; - /*0x1A*/ s16 unk1A; - /*0x1C*/ s16 unk1C[3]; - /*0x22*/ u16 unk22[3]; - /*0x28*/ s16 reelPositions[3]; - /*0x2E*/ s16 unk2E[3]; - /*0x34*/ s16 unk34[3]; - /*0x3A*/ u8 reelTasks[3]; - /*0x3D*/ u8 unk3D; - /*0x3E*/ u8 unk3E; - /*0x3F*/ u8 unk3F; + /*0x14*/ s16 reeltimePixelOffset; + /*0x16*/ s16 reeltimePosition; + /*0x18*/ s16 currReel; + /*0x1A*/ s16 reelIncrement; // speed of reel + /*0x1C*/ s16 reelPixelOffsets[3]; + /*0x22*/ u16 reelPixelOffsetsWhileStopping[3]; + /*0x28*/ s16 reelTagOffsets[3]; + /*0x2E*/ s16 reelExtraTurns[3]; + /*0x34*/ s16 winnerRows[3]; + /*0x3A*/ u8 slotReelTasks[3]; + /*0x3D*/ u8 unkTaskPointer3D; + /*0x3E*/ u8 unkTaskPointer3E; + /*0x3F*/ u8 reelTimeSprite3F; /*0x40*/ u8 unk40; /*0x41*/ u8 unk41; /*0x42*/ u8 unk42; @@ -95,8 +95,8 @@ struct SlotMachineEwramStruct /*0x49*/ u8 unk49[2]; /*0x49*/ u8 unk4B[3]; /*0x4E*/ u8 unk4E[2]; - /*0x50*/ u8 unk50[2]; - /*0x52*/ u8 unk52[2]; + /*0x50*/ u8 reelTimeSprites1[2]; + /*0x52*/ u8 reelTimeSprites2[2]; /*0x54*/ u8 unk54[4]; /*0x58*/ u16 win0h; /*0x5a*/ u16 win0v; @@ -115,238 +115,238 @@ struct UnkStruct1 #define SLOTMACHINE_GFX_TILES 233 -/*static */void CB2_SlotMachineSetup(void); -/*static */void CB2_SlotMachineLoop(void); -/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb); -/*static */void SlotMachineDummyTask(u8 taskId); -/*static */void SlotMachineSetup_0_0(void); -/*static */void SlotMachineSetup_6_2(void); -/*static */void SlotMachineSetup_1_0(void); -/*static */void SlotMachineSetup_2_0(void); -/*static */void SlotMachineSetup_2_1(void); -/*static */void SlotMachineSetup_0_1(void); -/*static */void SlotMachineSetup_3_0(void); -/*static */void SlotMachineSetup_4_0(void); -/*static */void SlotMachineSetup_5_0(void); -/*static */void SlotMachineSetup_6_0(void); -/*static */void SlotMachineSetup_6_1(void); -/*static */void SlotMachineSetup_8_0(void); -/*static */void SlotMachineSetup_9_0(void); -/*static */void SlotMachineSetup_10_0(void); -/*static */void SlotMachineSetup_10_1(void); -/*static */void sub_8101D04(void); -/*static */void sub_8104DA4(void); -/*static */void sub_8101D24(u8 taskId); -/*static */bool8 sub_8101D5C(struct Task *task); -/*static */bool8 sub_8101D8C(struct Task *task); -/*static */bool8 sub_8101DB0(struct Task *task); -/*static */bool8 sub_8101DF4(struct Task *task); -/*static */bool8 sub_8101E10(struct Task *task); -/*static */bool8 sub_8101E3C(struct Task *task); -/*static */bool8 sub_8101F44(struct Task *task); -/*static */bool8 sub_8101F60(struct Task *task); -/*static */bool8 sub_8101F88(struct Task *task); -/*static */bool8 sub_8101FA4(struct Task *task); -/*static */bool8 sub_8102008(struct Task *task); -/*static */bool8 sub_8102034(struct Task *task); -/*static */bool8 sub_8102058(struct Task *task); -/*static */bool8 sub_8102090(struct Task *task); -/*static */bool8 sub_81020C8(struct Task *task); -/*static */bool8 sub_81021E0(struct Task *task); -/*static */bool8 sub_81021FC(struct Task *task); -/*static */bool8 sub_8102264(struct Task *task); -/*static */bool8 sub_81022A0(struct Task *task); -/*static */bool8 sub_81022CC(struct Task *task); -/*static */bool8 sub_81022F0(struct Task *task); -/*static */bool8 sub_8102318(struct Task *task); -/*static */bool8 sub_8102344(struct Task *task); -/*static */bool8 sub_810239C(struct Task *task); -/*static */bool8 sub_81023B8(struct Task *task); -/*static */bool8 sub_81023E0_(struct Task *task); -/*static */bool8 sub_81023FC(struct Task *task); -/*static */bool8 sub_8102424(struct Task *task); -/*static */bool8 sub_8102460(struct Task *task); -/*static */void sub_8102484(void); -/*static */void sub_81024F0(void); -/*static */bool8 sub_8102540_(void); -/*static */u8 sub_8102578(void); -/*static */u16 dp15_jump_random_unknown(void); -/*static */u8 sub_81025BC(void); -/*static */void CheckMatch(void); -/*static */void CheckMatch_CenterRow(void); -/*static */void CheckMatch_TopAndBottom(void); -/*static */void CheckMatch_Diagonals(void); -/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3); -/*static */void sub_8102A24(void); -/*static */void sub_8102A64(u8 taskId); -/*static */bool8 sub_8102A44(void); -/*static */bool8 sub_8102A9C(struct Task *task); -/*static */bool8 sub_8102AD0(struct Task *task); -/*static */bool8 sub_8102B80(struct Task *task); -/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y); -/*static */void sub_8102DA8(void); -/*static */void sub_8102DEC(u8 a0); -/*static */void sub_8102E1C(u8 a0); -/*static */bool8 sub_8102E40(u8 a0); -/*static */void sub_8102E68(u8 taskId); -/*static */bool8 sub_8102EA0(struct Task *task); -/*static */bool8 sub_8102EA4(struct Task *task); -/*static */bool8 sub_8102EC0(struct Task *task); -/*static */bool8 sub_8102F4C(struct Task *task); -/*static */bool8 sub_8103008(struct Task *task); -/*static */bool8 sub_810305C(void); -/*static */bool8 sub_8103154(u8 a0, u8 a1); -/*static */bool8 sub_81031B4(u8 a0, u8 a1); -/*static */bool8 sub_81032C0(void); -/*static */bool8 sub_81032E8(void); -/*static */bool8 sub_810333C(void); -/*static */bool8 sub_81033DC(void); -/*static */bool8 sub_810341C(u8 a0); -/*static */bool8 sub_810347C(u8 a0); -/*static */void sub_81034F4(void); -/*static */void sub_8103540(void); -/*static */void sub_8103564(void); -/*static */void j5_08111E84(void); -/*static */void sub_8103668(void); -/*static */void sub_810380C(void); -/*static */void sub_8103830(void); -/*static */void sub_8103910(void); -/*static */void sub_8103A78(void); -/*static */void sub_8103C14(u8 a0); -/*static */void sub_8103C48(u8 taskId); -/*static */void sub_8103D50(u8 a0); -/*static */void sub_8103C78(struct Task *task, u8 taskId); -/*static */void sub_8103CAC(struct Task *task, u8 taskId); -/*static */void sub_8103CC8(struct Task *task, u8 taskId); -/*static */void sub_8103D8C(u8 a0); -/*static */void sub_8103DC8(void); -/*static */void sub_8103E04(u8 a0); -/*static */bool8 sub_8103E38(void); -/*static */bool8 sub_8103E7C(void); -/*static */bool8 sub_8103EAC(u8 spriteId); -/*static */void sub_8103EE4(struct Sprite *sprite); -/*static */void sub_8103F70(void); -/*static */bool8 sub_8103FA0(void); -/*static */void sub_8103FE8_(u8 taskId); -/*static */void sub_8104048(void); -/*static */void sub_8104064(u8 pikaPower); -/*static */bool8 sub_81040C8(void); -/*static */void sub_81040E8(u8 taskId); -/*static */void nullsub_68(struct Task *task); -/*static */void sub_810411C(struct Task *task); -/*static */void sub_8104144(struct Task *task); -/*static */void sub_81041AC(struct Task *task); -/*static */void sub_812D394(struct Task *task); -/*static */void sub_810423C(u8 pikaPower); -/*static */void sub_810430C(void); -/*static */bool8 sub_810432C(void); -/*static */void sub_810434C(u8 taskId); -/*static */void sub_810437C(struct Task *task); -/*static */void sub_81043EC(struct Task *task); -/*static */void sub_8104468(struct Task *task); -/*static */void sub_8104498(struct Task *task); -/*static */void sub_8104548(struct Task *task); -/*static */void sub_8104598(struct Task *task); -/*static */void sub_81045CC(struct Task *task); -/*static */void sub_810463C(struct Task *task); -/*static */void sub_81046C0(struct Task *task); -/*static */void sub_8104764(struct Task *task); -/*static */void sub_8104794(struct Task *task); -/*static */void sub_81047EC(struct Task *task); -/*static */void sub_8104860(struct Task *task); -/*static */void sub_81048A8(struct Task *task); -/*static */void sub_81048CC(struct Task *task); -/*static */void sub_8104940(struct Task *task); -/*static */void sub_81049C8(struct Task *task); -/*static */void sub_81049F8(struct Task *task); -/*static */void sub_8104A40(s16 a0, s16 a1); -/*static */void sub_8104A88(s16 a0); -/*static */void sub_8104AB8(u8 a0); -/*static */bool8 sub_8104AEC(void); -/*static */void sub_8104B0C(u8 taskId); -/*static */void sub_8104B3C(struct Task *task); -/*static */void sub_8104B60(struct Task *task); -/*static */void sub_8104B80(struct Task *task); -/*static */void sub_8104BC8(struct Task *task); -/*static */void sub_812DD78(struct Task *task); -/*static */void sub_8104BFC(struct Task *task); -/*static */void sub_812DE14(struct Task *task); -/*static */void sub_812DE30(struct Task *task); -/*static */void sub_8104C44(struct Task *task); -/*static */void sub_8104C5C(void); -/*static */void sub_8104CAC(u8 arg0); -/*static */bool8 sub_8104E18(void); -/*static */void nullsub_69(struct Task *task); -/*static */void sub_8104E74_(u8 taskId); -/*static */void sub_8104EA8(void); -/*static */void sub_8104F8C(void); -/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3); -/*static */void sub_81050C4(void); -/*static */void sub_8105100(void); -/*static */void sub_810514C(void); -/*static */void sub_81051C0(void); -/*static */void sub_8105284_(void); -/*static */void sub_81052EC(void); -/*static */void sub_81053A0(void); -/*static */void sub_810545C(void); -/*static */void sub_81054B8(void); -/*static */void sub_8105524(void); -/*static */void sub_8105554(void); -/*static */void sub_8105578(void); -/*static */void sub_8105688(s16 a0); -/*static */void sub_81056C0(void); -/*static */void sub_81056F0(void); -/*static */void sub_81057E8(s16 a0); -/*static */void sub_8105804(void); -/*static */void sub_8105854(void); -/*static */void sub_81058A0(void); -/*static */void sub_81058C4(void); -/*static */void sub_81059B8(void); -/*static */void sub_81059E8(void); -/*static */bool8 sub_8105ACC(void); -/*static */void sub_8105AEC(void); -/*static */u8 sub_8105B1C(s16 x, s16 y); -/*static */void sub_8105B88(u8 spriteId); -/*static */u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4); -/*static */void sub_81063C0(void); -/*static */void sub_8106404(void); -/*static */void sub_8106448(void); -/*static */void sub_81064B8(void); -/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); -/*static */void sub_81065DC(void); -/*static */void sub_812F958(void); -/*static */void sub_812F968(void); -/*static */void LoadSlotMachineWheelOverlay(void); -/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2); +static void CB2_SlotMachineSetup(void); +static void CB2_SlotMachineLoop(void); +static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb); +static void SlotMachineDummyTask(u8 taskId); +static void SlotMachineSetup_0_0(void); +static void SlotMachineSetup_6_2(void); +static void SlotMachineSetup_1_0(void); +static void SlotMachineSetup_2_0(void); +static void SlotMachineSetup_2_1(void); +static void SlotMachineSetup_0_1(void); +static void SlotMachineSetup_3_0(void); +static void SlotMachineSetup_4_0(void); +static void SlotMachineSetup_5_0(void); +static void SlotMachineSetup_6_0(void); +static void SlotMachineSetup_6_1(void); +static void SlotMachineSetup_8_0(void); +static void SlotMachineSetup_9_0(void); +static void SlotMachineSetup_10_0(void); +static void SlotMachineSetupGameplayTasks(void); +static void GameplayTasks_Slots(void); +static void sub_8104DA4(void); +static void RunSlotActions(u8 taskId); +static bool8 SlotAction_UnfadeScreen(struct Task *task); +static bool8 SlotAction_WaitForUnfade(struct Task *task); +static bool8 SlotAction_SetSlotMachineVars(struct Task *task); +static bool8 SlotAction3(struct Task *task); +static bool8 SlotAction4(struct Task *task); +static bool8 SlotAction_AwaitPlayerInput(struct Task *task); +static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task); +static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task); +static bool8 SlotAction_GivingInformation(struct Task *task); +static bool8 SlotAction9(struct Task *task); +static bool8 SlotAction10(struct Task *task); +static bool8 SlotAction_SetLuckySpins(struct Task *task); +static bool8 SlotAction_AwaitReelStop(struct Task *task); +static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task); +static bool8 SlotAction_CheckMatches(struct Task *task); +static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task); +static bool8 SlotAction_EndOfRoll(struct Task *task); +static bool8 SlotAction_MatchedPower(struct Task *task); +static bool8 SlotAction18(struct Task *task); +static bool8 SlotAction_Loop(struct Task *task); +static bool8 SlotAction_NoMatches(struct Task *task); +static bool8 SlotAction_PrintQuitTheGame(struct Task *task); +static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task); +static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task); +static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task); +static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task); +static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task); +static bool8 SlotAction_EndGame(struct Task *task); +static bool8 SlotAction_FreeDataStructures(struct Task *task); +static void DrawLuckyFlags(void); +static void SetLuckySpins(void); +static bool8 IsThisRoundLucky(void); +static u8 AttemptsAtLuckyFlags_Top3(void); +static u16 SlowReelSpeed(void); +static u8 AttemptsAtLuckyFlags_NotTop3(void); +static void CheckMatch(void); +static void CheckMatch_CenterRow(void); +static void CheckMatch_TopAndBottom(void); +static void CheckMatch_Diagonals(void); +static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3); +static void AwardPayout(void); +static void RunAwardPayoutActions(u8 taskId); +static bool8 IsFinalTask_RunAwardPayoutActions(void); +static bool8 AwardPayoutAction0(struct Task *task); +static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task); +static bool8 AwardPayoutAction_FreeTask(struct Task *task); +static u8 GetNearbyTag_Quantized(u8 x, s16 y); +static void GameplayTask_StopSlotReel(void); +static void ReelTasks_SetUnkTaskData(u8 a0); +static void sub_8102E1C(u8 a0); +static bool8 IsSlotReelMoving(u8 a0); +static void RunSlotReelActions(u8 taskId); +static bool8 SlotReelAction_StayStill(struct Task *task); +static bool8 SlotReelAction_Spin(struct Task *task); +static bool8 SlotReelAction_DecideWhereToStop(struct Task *task); +static bool8 SlotReelAction_MoveToStop(struct Task *task); +static bool8 SlotReelAction_OscillatingStop(struct Task *task); +static bool8 DecideReelTurns_BiasTag_Reel1(void); +static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 a0, u8 a1); +static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 a0, u8 a1); +static bool8 DecideReelTurns_BiasTag_Reel2(void); +static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void); +static bool8 DecideReelTurns_BiasTag_Reel2_Bet3(void); +static bool8 DecideReelTurns_BiasTag_Reel3(void); +static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 a0); +static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8 a0); +static void DecideReelTurns_NoBiasTag_Reel1(void); +static void DecideReelTurns_NoBiasTag_Reel2(void); +static void DecideReelTurns_NoBiasTag_Reel2_Bet1(void); +static void DecideReelTurns_NoBiasTag_Reel2_Bet2(void); +static void DecideReelTurns_NoBiasTag_Reel2_Bet3(void); +static void DecideReelTurns_NoBiasTag_Reel3(void); +static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void); +static void DecideReelTurns_NoBiasTag_Reel3_Bet2(void); +static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void); +static void sub_8103C14(u8 a0); +static void sub_8103C48(u8 taskId); +static void LoadBetTiles(u8 a0); +static void sub_8103C78(struct Task *task, u8 taskId); +static void sub_8103CAC(struct Task *task, u8 taskId); +static void sub_8103CC8(struct Task *task, u8 taskId); +static void sub_8103D8C(u8 a0); +static void sub_8103DC8(void); +static void sub_8103E04(u8 a0); +static bool8 sub_8103E38(void); +static bool8 sub_8103E7C(void); +static bool8 sub_8103EAC(u8 spriteId); +static void sub_8103EE4(struct Sprite *sprite); +static void sub_8103F70(void); +static bool8 sub_8103FA0(void); +static void sub_8103FE8_(u8 taskId); +static void GameplayTask_PikaPower(void); +static void DisplayPikaPower(u8 pikaPower); +static bool8 sub_81040C8(void); +static void sub_81040E8(u8 taskId); +static void nullsub_68(struct Task *task); +static void sub_810411C(struct Task *task); +static void sub_8104144(struct Task *task); +static void sub_81041AC(struct Task *task); +static void ClearTaskDataFields_2orHigher(struct Task *task); +static void sub_810423C(u8 pikaPower); +static void BeginReeltime(void); +static bool8 IsFinalTask_RunReelTimeActions(void); +static void RunReeltimeActions(u8 taskId); +static void ReeltimeAction0(struct Task *task); +static void ReeltimeAction1(struct Task *task); +static void ReeltimeAction2(struct Task *task); +static void ReeltimeAction3(struct Task *task); +static void ReeltimeAction4(struct Task *task); +static void ReeltimeAction5(struct Task *task); +static void ReeltimeAction6(struct Task *task); +static void ReelTimeAction_LandOnOutcome(struct Task *task); +static void ReeltimeAction8(struct Task *task); +static void ReeltimeAction9(struct Task *task); +static void ReeltimeAction10(struct Task *task); +static void ReeltimeAction11(struct Task *task); +static void ReeltimeAction12(struct Task *task); +static void ReeltimeAction13(struct Task *task); +static void ReeltimeAction14(struct Task *task); +static void ReeltimeAction15(struct Task *task); +static void ReeltimeAction16(struct Task *task); +static void ReeltimeAction17(struct Task *task); +static void sub_8104A40(s16 a0, s16 a1); +static void sub_8104A88(s16 a0); +static void OpenInfoBox(u8 a0); +static bool8 IsInfoBoxClosed(void); +static void RunInfoBoxActions(u8 taskId); +static void InfoBox_FadeIn(struct Task *task); +static void InfoBox_WaitForFade(struct Task *task); +static void InfoBox_8104B80(struct Task *task); +static void InfoBox_AwaitPlayerInput(struct Task *task); +static void InfoBox_AddText(struct Task *task); +static void InfoBox_8104BFC(struct Task *task); +static void InfoBox_812DE14(struct Task *task); +static void InfoBox_812DE30(struct Task *task); +static void InfoBox_FreeTask(struct Task *task); +static void sub_8104C5C(void); +static void sub_8104CAC(u8 arg0); +static bool8 sub_8104E18(void); +static void nullsub_69(struct Task *task); +static void sub_8104E74_(u8 taskId); +static void sub_8104EA8(void); +static void sub_8104F8C(void); +static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3); +static void sub_81050C4(void); +static void sub_8105100(void); +static void sub_810514C(void); +static void sub_81051C0(void); +static void sub_8105284_(void); +static void sub_81052EC(void); +static void sub_81053A0(void); +static void sub_810545C(void); +static void sub_81054B8(void); +static void sub_8105524(void); +static void sub_8105554(void); +static void CreateReelTimeSprites1(void); +static void sub_8105688(s16 a0); +static void sub_81056C0(void); +static void CreateReelTimeSprite2(void); +static void sub_81057E8(s16 a0); +static void sub_8105804(void); +static void sub_8105854(void); +static void sub_81058A0(void); +static void sub_81058C4(void); +static void sub_81059B8(void); +static void sub_81059E8(void); +static bool8 sub_8105ACC(void); +static void sub_8105AEC(void); +static u8 sub_8105B1C(s16 x, s16 y); +static void sub_8105B88(u8 spriteId); +static u8 sub_8105BF8(u8 templateIdx, void (*callback)(struct Sprite*), s16 x, s16 y, s16 a4); +static void sub_81063C0(void); +static void sub_8106404(void); +static void sub_8106448(void); +static void sub_81064B8(void); +static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); +static void sub_81065DC(void); +static void sub_812F958(void); +static void sub_812F968(void); +static void LoadSlotMachineWheelOverlay(void); +static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2); // Ewram variables -static EWRAM_DATA u16 *gUnknown_0203AAC8 = NULL; -static EWRAM_DATA u16 *gUnknown_0203AACC = NULL; -static EWRAM_DATA u16 *gUnknown_0203AAD0 = NULL; -static EWRAM_DATA u8 *gUnknown_0203AAD4 = NULL; -static EWRAM_DATA u8 *gUnknown_0203AAD8 = NULL; -static EWRAM_DATA u16 *gUnknown_0203AADC = NULL; -static EWRAM_DATA u8 *gUnknown_0203AAE0 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE4 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAE8 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAEC = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF0 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF4 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAF8 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AAFC = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB00 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB04 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB08 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB0C = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB10 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB14 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB18 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB1C = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB20 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB24 = NULL; -static EWRAM_DATA struct SpriteFrameImage *gUnknown_0203AB28 = NULL; -static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB2C = NULL; -static EWRAM_DATA struct SpriteSheet *gUnknown_0203AB30 = NULL; +static EWRAM_DATA u16 *sUnknown_0203AAC8 = NULL; +static EWRAM_DATA u16 *sSelectedPikaPowerTile = NULL; +static EWRAM_DATA u16 *sUnknown_0203AAD0 = NULL; +static EWRAM_DATA u8 *sUnknown_0203AAD4 = NULL; +static EWRAM_DATA u8 *sUnknown_0203AAD8 = NULL; +static EWRAM_DATA u16 *sUnknown_0203AADC = NULL; +static EWRAM_DATA u8 *sUnknown_0203AAE0 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE4 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAE8 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAEC = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF0 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF4 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAF8 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AAFC = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB00 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB04 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB08 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB0C = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB10 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB14 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB18 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB1C = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB20 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB24 = NULL; +static EWRAM_DATA struct SpriteFrameImage *sUnknown_0203AB28 = NULL; +static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB2C = NULL; +static EWRAM_DATA struct SpriteSheet *sUnknown_0203AB30 = NULL; static EWRAM_DATA struct SlotMachineEwramStruct *sSlotMachine = NULL; // IWRAM bss @@ -355,10 +355,10 @@ static IWRAM_DATA struct SpriteFrameImage *gUnknown_03001188[26]; // Const rom data. extern const struct UnkStruct1 *const gUnknown_083ED048[]; extern const u16 gPalette_83EDE24[]; -extern const u8 gUnknown_083ECD04[][3]; -extern const u8 gUnknown_083ECE3A[]; -extern const u16 gUnknown_083ECE42[]; -extern const u16 gUnknown_083ECE48[]; +extern const u8 gLuckyRoundProbabilities[][3]; +extern const u8 gBiasTags[]; +extern const u16 gLuckyFlagSettings_Top3[]; +extern const u16 gLuckyFlagSettings_NotTop3[]; extern const s16 gUnknown_083ECE7E[][2]; extern const SpriteCallback gUnknown_083ECF0C[]; extern const struct SpriteTemplate *const gUnknown_083EDB5C[]; @@ -369,36 +369,36 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED54C; extern const struct SpriteTemplate gSpriteTemplate_83ED534; extern const u8 gUnknown_083ECC58[2]; extern const struct SpriteTemplate gSpriteTemplate_83ED51C; -extern const u16 gUnknown_083ECE12[]; +extern const u16 gProbabilityTable_SkipToReeltimeAction14[]; extern const u16 *const gUnknown_083EDE10[]; -extern const u16 gUnknown_083ECE1C[][2]; -extern const u16 gUnknown_083ECE30[]; -extern const u16 sSlotMatchFlags[]; -extern const u16 sSlotPayouts[]; +extern const u16 gReelIncrementTable[][2]; +extern const u16 gReelTimeBonusIncrementTable[]; +extern const u16 gSlotMatchFlags[]; +extern const u16 gSlotPayouts[]; extern const u8 *const gUnknown_083EDCE4; extern const u8 *const gUnknown_083EDCDC; -extern const u32 sReelTimeGfx[]; -extern const struct SpriteSheet sSlotMachineSpriteSheets[]; +extern const u32 gReelTimeGfx[]; +extern const struct SpriteSheet gSlotMachineSpriteSheets[]; extern const struct SpritePalette gSlotMachineSpritePalettes[]; extern const u16 *const gUnknown_083EDE20; -extern const s16 gUnknown_083ECCF8[][2]; +extern const s16 gInitialReelPositions[][2]; extern const struct BgTemplate gUnknown_085A7424[4]; extern const struct WindowTemplate gUnknown_085A7434[]; -extern const u8 gUnknown_083ECD16[][6]; -extern const u8 gUnknown_083ECD28[][6]; -extern const u8 gUnknown_083ECD46[][17]; -extern const u8 gUnknown_083ECDAC[][17]; -extern const u8 sSym2Match[]; -extern const u8 gUnknown_083ECCF1[]; -extern const u8 sReelSymbols[][21]; +extern const u8 gLuckyFlagProbabilities_Top3[][6]; +extern const u8 gLuckyFlagProbabilities_NotTop3[][6]; +extern const u8 gReeltimeProbabilities_UnluckyGame[][17]; +extern const u8 gReelTimeProbabilities_LuckyGame[][17]; +extern const u8 gSym2Match[]; +extern const u8 gReelTimeTags[]; +extern const u8 gReelSymbols[][REEL_NUM_TAGS]; extern const u16 *const gUnknown_083EDD08[]; extern const u16 *const gUnknown_083EDD1C[]; extern const u8 gUnknown_083EDD30[]; -extern const u8 gUnknown_083EDD35[][2]; -extern const u8 gUnknown_083EDD3B[]; +extern const u8 gBettingTilesId[][2]; +extern const u8 gNumberBettingTiles[]; extern const u16 *const gUnknown_083EDDA0[]; extern const u16 *const gUnknown_083EDDAC; -extern const u16 sReelTimeWindowTilemap[]; +extern const u16 gReelTimeWindowTilemap[]; extern const u16 gUnknown_085A9898[]; extern void (*const gUnknown_083ED064[])(void); @@ -453,106 +453,108 @@ const struct WindowTemplate gUnknown_085A7444 = 0, 1, 3, 20, 13, 13, 1 }; -const u8 gUnknown_085A744C[] = {3, 1, 2, 0}; - -bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = -{ - sub_8101D5C, - sub_8101D8C, - sub_8101DB0, - sub_8101DF4, - sub_8101E10, - sub_8101E3C, - sub_8101F44, - sub_8101F60, - sub_8101F88, - sub_8101FA4, - sub_8102008, - sub_8102034, - sub_8102058, - sub_8102090, - sub_81020C8, - sub_81021E0, - sub_81021FC, - sub_8102264, - sub_81022A0, - sub_81022CC, - sub_81022F0, - sub_8102318, - sub_8102344, - sub_810239C, - sub_81023B8, - sub_81023E0_, - sub_81023FC, - sub_8102424, - sub_8102460, +const u8 gColors_ReeltimeHelp[] = {3, 1, 2, 0}; + +bool8 (*const SlotActions[])(struct Task *task) = +{ + SlotAction_UnfadeScreen, // 0 + SlotAction_WaitForUnfade, // 1 + SlotAction_SetSlotMachineVars, // 2 + SlotAction3, // 3 + SlotAction4, // 4 + SlotAction_AwaitPlayerInput, // 5 + SlotAction_PrintYouDontHaveThreeCoins, // 6 + SlotAction_ExitYouDontHaveThreeCoinsMessage, // 7 + SlotAction_GivingInformation, // 8 + SlotAction9, // 9 + SlotAction10, // 10 + SlotAction_SetLuckySpins, // 11 + SlotAction_AwaitReelStop, // 12 + SlotAction_WaitForAllReelsToStop, // 13 + SlotAction_CheckMatches, // 14 + SlotAction_WaitForPayoutToBeAwarded, // 15 + SlotAction_EndOfRoll, // 16 + SlotAction_MatchedPower, // 17 + SlotAction18, // 18 + SlotAction_Loop, // 19 + SlotAction_NoMatches, // 20 + SlotAction_PrintQuitTheGame, // 21 + SlotAction_SeeIfPlayerQuits, // 22 + SlotAction_PrintMessage_9999Coins, // 23 + SlotAction_ExitMessage_9999Coins, // 24 + SlotAction_PrintMessage_NoMoreCoins, // 25 + SlotAction_ExitMessage_NoMoreCoins, // 26 + SlotAction_EndGame, // 27 + SlotAction_FreeDataStructures, // 28 }; -bool8 (*const gUnknown_083ECB20[])(struct Task *task) = +bool8 (*const AwardPayoutActions[])(struct Task *task) = { - sub_8102A9C, - sub_8102AD0, - sub_8102B80 + AwardPayoutAction0, + AwardPayoutAction_GivePayoutToPlayer, + AwardPayoutAction_FreeTask }; -bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = +bool8 (*const SlotReelActions[])(struct Task *task) = { - sub_8102EA0, - sub_8102EA4, - sub_8102EC0, - sub_8102F4C, - sub_8103008 + SlotReelAction_StayStill, + SlotReelAction_Spin, + SlotReelAction_DecideWhereToStop, + SlotReelAction_MoveToStop, + SlotReelAction_OscillatingStop }; -bool8 (*const gUnknown_083ECB40[])(void) = +// returns True if a match with the biasTag is possible in that reel +// also modifies data in sSlotMachine reel arrays to indicate how to get to the matching state +bool8 (*const DecideReelTurns_BiasTag[])(void) = { - sub_810305C, - sub_81032C0, - sub_81033DC + DecideReelTurns_BiasTag_Reel1, + DecideReelTurns_BiasTag_Reel2, + DecideReelTurns_BiasTag_Reel3 }; -void (*const gUnknown_083ECB4C[])(void) = +void (*const DecideReelTurns_NoBiasTag[])(void) = { - sub_81034F4, - sub_8103540, - sub_810380C + DecideReelTurns_NoBiasTag_Reel1, + DecideReelTurns_NoBiasTag_Reel2, + DecideReelTurns_NoBiasTag_Reel3 }; -const u16 gUnknown_085A74FC[] = {2, 4, 4, 4, 8}; +const u16 ReelStopShocks[] = {2, 4, 4, 4, 8}; -bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = +bool8 (*const DecideReelTurns_BiasTag_Reel1_Bets[])(u8 tag1, u8 tag2) = { - sub_8103154, - sub_81031B4, - sub_81031B4 + DecideReelTurns_BiasTag_Reel1_Bet1, + DecideReelTurns_BiasTag_Reel1_Bet2or3, + DecideReelTurns_BiasTag_Reel1_Bet2or3 }; -bool8 (*const gUnknown_083ECB70[])(void) = +bool8 (*const DecideReelTurns_BiasTag_Reel2_Bets[])(void) = { - sub_81032E8, - sub_81032E8, - sub_810333C + DecideReelTurns_BiasTag_Reel2_Bet1or2, + DecideReelTurns_BiasTag_Reel2_Bet1or2, + DecideReelTurns_BiasTag_Reel2_Bet3 }; -bool8 (*const gUnknown_083ECB7C[])(u8 a0) = +bool8 (*const DecideReelTurns_BiasTag_Reel3_Bets[])(u8 biasTag) = { - sub_810341C, - sub_810341C, - sub_810347C + DecideReelTurns_BiasTag_Reel3_Bet1or2, + DecideReelTurns_BiasTag_Reel3_Bet1or2, + DecideReelTurns_BiasTag_Reel3_Bet3 }; -void (*const gUnknown_083ECB88[])(void) = +void (*const DecideReelTurns_NoBiasTag_Reel2_Bets[])(void) = { - sub_8103564, - j5_08111E84, - sub_8103668 + DecideReelTurns_NoBiasTag_Reel2_Bet1, + DecideReelTurns_NoBiasTag_Reel2_Bet2, + DecideReelTurns_NoBiasTag_Reel2_Bet3 }; -void (*const gUnknown_083ECB94[])(void) = +void (*const DecideReelTurns_NoBiasTag_Reel3_Bets[])(void) = { - sub_8103830, - sub_8103910, - sub_8103A78 + DecideReelTurns_NoBiasTag_Reel3_Bet1, + DecideReelTurns_NoBiasTag_Reel3_Bet2, + DecideReelTurns_NoBiasTag_Reel3_Bet3 }; void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = @@ -572,57 +574,57 @@ void (*const gUnknown_083ECBB4[])(struct Task *task) = sub_81041AC }; -const u16 gUnknown_083ECBC4[][2] = +const u16 pikaPowerTileTable[][2] = { {0x9e, 0x6e}, {0x9f, 0x6f}, {0xaf, 0x7f}, }; -void (*const gUnknown_083ECBD0[])(struct Task *task) = -{ - sub_810437C, - sub_81043EC, - sub_8104468, - sub_8104498, - sub_8104548, - sub_8104598, - sub_81045CC, - sub_810463C, - sub_81046C0, - sub_8104764, - sub_8104794, - sub_81047EC, - sub_8104860, - sub_81048A8, - sub_81048CC, - sub_8104940, - sub_81049C8, - sub_8104794, - sub_81049F8 +void (*const ReeltimeActions[])(struct Task *task) = +{ + ReeltimeAction0, + ReeltimeAction1, + ReeltimeAction2, + ReeltimeAction3, + ReeltimeAction4, + ReeltimeAction5, + ReeltimeAction6, + ReelTimeAction_LandOnOutcome, + ReeltimeAction8, + ReeltimeAction9, + ReeltimeAction10, + ReeltimeAction11, + ReeltimeAction12, + ReeltimeAction13, + ReeltimeAction14, + ReeltimeAction15, + ReeltimeAction16, + ReeltimeAction10, + ReeltimeAction17 }; const u8 gUnknown_085A75C0[] = {1, 1, 2, 2}; const s16 gUnknown_085A75C4[] = {0x40, 0x30, 0x18, 0x08}; const s16 gUnknown_085A75CC[] = {10, 8, 6, 4}; -void (*const gUnknown_083ECC30[])(struct Task *task) = -{ - sub_8104B3C, - sub_8104B60, - sub_8104B80, - sub_8104B60, - sub_812DD78, - sub_8104B60, - sub_8104BC8, - sub_8104B60, - sub_812DE14, - sub_8104B60, - sub_812DE30, - sub_8104B60, - sub_8104BFC, - sub_8104B60, - sub_8104C44, +void (*const InfoBoxActions[])(struct Task *task) = +{ + InfoBox_FadeIn, + InfoBox_WaitForFade, + InfoBox_8104B80, + InfoBox_WaitForFade, + InfoBox_AddText, + InfoBox_WaitForFade, + InfoBox_AwaitPlayerInput, + InfoBox_WaitForFade, + InfoBox_812DE14, + InfoBox_WaitForFade, + InfoBox_812DE30, + InfoBox_WaitForFade, + InfoBox_8104BFC, + InfoBox_WaitForFade, + InfoBox_FreeTask, }; void (*const gUnknown_083ECC54[])(struct Task *task) = @@ -651,7 +653,7 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED45C; // code #define tState data[0] -/*static */void Task_FadeToSlotMachine(u8 taskId) +static void Task_FadeToSlotMachine(u8 taskId) { switch (gTasks[taskId].tState) { @@ -669,19 +671,19 @@ extern const struct SpriteTemplate gSpriteTemplate_83ED45C; } } -void PlaySlotMachine(u8 arg0, MainCallback cb) +void PlaySlotMachine(u8 slotMachineIndex, MainCallback cb) { u8 taskId; sSlotMachine = AllocZeroed(sizeof(*sSlotMachine)); - PlaySlotMachine_Internal(arg0, cb); + PlaySlotMachine_Internal(slotMachineIndex, cb); taskId = CreateTask(Task_FadeToSlotMachine, 0); gTasks[taskId].tState = 0; } #undef tState -/*static */void CB2_SlotMachineSetup(void) +static void CB2_SlotMachineSetup(void) { switch (gMain.state) { @@ -733,7 +735,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) break; case 10: SlotMachineSetup_10_0(); - SlotMachineSetup_10_1(); + SlotMachineSetupGameplayTasks(); gMain.state++; break; case 11: @@ -742,7 +744,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) } } -/*static */void CB2_SlotMachineLoop(void) +static void CB2_SlotMachineLoop(void) { RunTasks(); AnimateSprites(); @@ -750,7 +752,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) UpdatePaletteFade(); } -/*static */void SlotMachine_VBlankCallback(void) +static void SlotMachine_VBlankCallback(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -761,25 +763,26 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) SetGpuReg(REG_OFFSET_WINOUT, sSlotMachine->winOut); } -/*static */void PlaySlotMachine_Internal(u8 arg0, MainCallback cb) +static void PlaySlotMachine_Internal(u8 slotMachineIndex, MainCallback cb) { - struct Task *task = gTasks + CreateTask(SlotMachineDummyTask, 0xFF); - task->data[0] = arg0; + struct Task *task = &gTasks[CreateTask(SlotMachineDummyTask, 0xFF)]; + task->data[0] = slotMachineIndex; StoreWordInTwoHalfwords(task->data + 1, (intptr_t)cb); } -/*static */void sub_81019EC(void) + +static void sub_81019EC(void) { - struct Task *task = gTasks + FindTaskIdByFunc(SlotMachineDummyTask); - sSlotMachine->unk01 = task->data[0]; + struct Task *task = &gTasks[FindTaskIdByFunc(SlotMachineDummyTask)]; + sSlotMachine->machineId = task->data[0]; LoadWordFromTwoHalfwords((u16 *)(task->data + 1), (u32 *)&sSlotMachine->prevMainCb); } -/*static */void SlotMachineDummyTask(u8 taskId) +static void SlotMachineDummyTask(u8 taskId) { } -/*static */void SlotMachineSetup_0_0(void) +static void SlotMachineSetup_0_0(void) { SetVBlankCallback(NULL); SetHBlankCallback(NULL); @@ -790,24 +793,24 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) DeactivateAllTextPrinters(); } -/*static */void SlotMachineSetup_6_0(void) +static void SlotMachineSetup_6_0(void) { SetVBlankCallback(SlotMachine_VBlankCallback); EnableInterrupts(INTR_FLAG_VBLANK); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON); } -/*static */void SlotMachineSetup_1_0(void) +static void SlotMachineSetup_1_0(void) { DmaClearLarge16(3, (u16 *)(BG_VRAM), BG_VRAM_SIZE, 0x1000); } -/*static */void SlotMachineSetup_2_0(void) +static void SlotMachineSetup_2_0(void) { DmaClear16(3, (u16 *)OAM, OAM_SIZE); } -/*static */void SlotMachineSetup_2_1(void) +static void SlotMachineSetup_2_1(void) { SetGpuReg(REG_OFFSET_BG0CNT, 0); SetGpuReg(REG_OFFSET_BG1CNT, 0); @@ -827,40 +830,42 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(9, 8)); } -/*static */void SlotMachineSetup_0_1(void) +// set up initial state of slot machine +static void SlotMachineSetup_0_1(void) { u8 i; - sub_81019EC(); + sub_81019EC(); // assigns sSlotMachine->machineId, etc. sSlotMachine->state = 0; sSlotMachine->pikaPower = 0; - sSlotMachine->unk03 = Random() & 1; - sSlotMachine->unk04 = 0; + sSlotMachine->luckyGame = Random() & 1; + sSlotMachine->luckyFlags = 0; sSlotMachine->matchedSymbols = 0; - sSlotMachine->unk0A = 0; - sSlotMachine->unk0B = 0; + sSlotMachine->fairRollsLeft = 0; + sSlotMachine->fairRollsUsed = 0; sSlotMachine->coins = GetCoins(); sSlotMachine->payout = 0; - sSlotMachine->unk10 = 0; + sSlotMachine->netCoinLoss = 0; sSlotMachine->bet = 0; - sSlotMachine->unk18 = 0; - sSlotMachine->unk1A = 8; + sSlotMachine->currReel = 0; + sSlotMachine->reelIncrement = 8; sSlotMachine->win0h = 0xf0; sSlotMachine->win0v = 0xa0; sSlotMachine->winIn = 0x3f; sSlotMachine->winOut = 0x3f; sSlotMachine->backupMapMusic = GetCurrentMapMusic(); - for (i = 0; i < 3; i++) + + for (i = 0; i < NUM_REELS; i++) { - sSlotMachine->unk22[i] = 0; - sSlotMachine->reelPositions[i] = gUnknown_083ECCF8[i][sSlotMachine->unk03] % 21; - sSlotMachine->unk1C[i] = 0x1f8 - sSlotMachine->reelPositions[i] * 24; - sSlotMachine->unk1C[i] %= 0x1f8; + sSlotMachine->reelPixelOffsetsWhileStopping[i] = 0; + sSlotMachine->reelTagOffsets[i] = gInitialReelPositions[i][sSlotMachine->luckyGame] % REEL_NUM_TAGS; + sSlotMachine->reelPixelOffsets[i] = REEL_NUM_TAGS * REEL_TAG_HEIGHT - sSlotMachine->reelTagOffsets[i] * REEL_TAG_HEIGHT; + sSlotMachine->reelPixelOffsets[i] %= REEL_NUM_TAGS * REEL_TAG_HEIGHT; } - sub_80EDE70(GetCoins()); + AlertTVThatPlayerPlayedSlotMachine(GetCoins()); } -/*static */void SlotMachineSetup_3_0(void) +static void SlotMachineSetup_3_0(void) { ResetPaletteFade(); ResetSpriteData(); @@ -869,22 +874,23 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) ResetTasks(); } -/*static */void SlotMachineSetup_4_0(void) +static void SlotMachineSetup_4_0(void) { - gUnknown_0203AACC = Alloc(8); - gUnknown_0203AAD0 = AllocZeroed(0xE); - gUnknown_0203AADC = AllocZeroed(8); + sSelectedPikaPowerTile = Alloc(8); + sUnknown_0203AAD0 = AllocZeroed(0xE); + sUnknown_0203AADC = AllocZeroed(8); - gUnknown_0203AAD0[0] = 0x2051; - gUnknown_0203AAD0[1] = 0x2851; - gUnknown_0203AAD0[2] = 0x2061; - gUnknown_0203AAD0[3] = 0x2861; - gUnknown_0203AAD0[4] = 0x20BE; - gUnknown_0203AAD0[5] = 0x28BE; - gUnknown_0203AAD0[6] = 0x20BF; + // several of these are 1 bit off from each other + sUnknown_0203AAD0[0] = 0x2051; + sUnknown_0203AAD0[1] = 0x2851; + sUnknown_0203AAD0[2] = 0x2061; + sUnknown_0203AAD0[3] = 0x2861; + sUnknown_0203AAD0[4] = 0x20BE; + sUnknown_0203AAD0[5] = 0x28BE; + sUnknown_0203AAD0[6] = 0x20BF; } -/*static */void SlotMachineSetup_5_0(void) +static void SlotMachineSetup_5_0(void) { sub_8106448(); sub_81064B8(); @@ -894,7 +900,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) PutWindowTilemap(0); } -/*static */void SlotMachineSetup_10_0(void) +static void SlotMachineSetup_10_0(void) { sub_8104EA8(); sub_8104F8C(); @@ -902,26 +908,28 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) sub_81050C4(); } -/*static */void SlotMachineSetup_10_1(void) +// create gameplay tasks +static void SlotMachineSetupGameplayTasks(void) { - sub_8104048(); - sub_8102DA8(); + GameplayTask_PikaPower(); + GameplayTask_StopSlotReel(); sub_8104C5C(); - sub_8101D04(); + GameplayTasks_Slots(); } -/*static */void sub_8101D04(void) +static void GameplayTasks_Slots(void) { - sub_8101D24(CreateTask(sub_8101D24, 0)); + RunSlotActions(CreateTask(RunSlotActions, 0)); } -/*static */void sub_8101D24(u8 taskId) +// task->data[0] is a timer +static void RunSlotActions(u8 taskId) { - while (gUnknown_083ECAAC[sSlotMachine->state](gTasks + taskId)) + while (SlotActions[sSlotMachine->state](&gTasks[taskId])) ; } -/*static */bool8 sub_8101D5C(struct Task *task) +static bool8 SlotAction_UnfadeScreen(struct Task *task) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); sub_810423C(sSlotMachine->pikaPower); @@ -929,25 +937,25 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return FALSE; } -/*static */bool8 sub_8101D8C(struct Task *task) +static bool8 SlotAction_WaitForUnfade(struct Task *task) { if (!gPaletteFade.active) sSlotMachine->state++; return FALSE; } -/*static */bool8 sub_8101DB0(struct Task *task) +static bool8 SlotAction_SetSlotMachineVars(struct Task *task) { sSlotMachine->payout = 0; sSlotMachine->bet = 0; - sSlotMachine->unk18 = 0; - sSlotMachine->unk04 &= 0xc0; + sSlotMachine->currReel = 0; + sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777); sSlotMachine->state = 4; if (sSlotMachine->coins <= 0) { sSlotMachine->state = 25; } - else if (sSlotMachine->unk0A) + else if (sSlotMachine->fairRollsLeft) { sSlotMachine->state = 3; sub_8104CAC(4); @@ -955,14 +963,14 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return TRUE; } -/*static */bool8 sub_8101DF4(struct Task *task) +static bool8 SlotAction3(struct Task *task) { if (sub_8104E18()) sSlotMachine->state = 4; return FALSE; } -/*static */bool8 sub_8101E10(struct Task *task) +static bool8 SlotAction4(struct Task *task) { sub_8104CAC(0); sSlotMachine->state = 5; @@ -971,27 +979,27 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return TRUE; } -/*static */bool8 sub_8101E3C(struct Task *task) +static bool8 SlotAction_AwaitPlayerInput(struct Task *task) { s16 i; if (gMain.newKeys & SELECT_BUTTON) { - sub_8104AB8(0); + OpenInfoBox(0); sSlotMachine->state = 8; } - else if (gMain.newKeys & R_BUTTON) + else if (gMain.newKeys & R_BUTTON) // bet the max amount { if (sSlotMachine->coins - (3 - sSlotMachine->bet) >= 0) { for (i = sSlotMachine->bet; i < 3; i++) - sub_8103D50(i); + LoadBetTiles(i); sSlotMachine->coins -= (3 - sSlotMachine->bet); sSlotMachine->bet = 3; sSlotMachine->state = 9; PlaySE(SE_REGI); } - else + else // you didn't have enough coins to bet the max { sSlotMachine->state = 6; } @@ -1001,56 +1009,63 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) if (gMain.newKeys & DPAD_DOWN && sSlotMachine->coins != 0) { PlaySE(SE_REGI); - sub_8103D50(sSlotMachine->bet); + LoadBetTiles(sSlotMachine->bet); sSlotMachine->coins--; sSlotMachine->bet++; } + // player maxed out or finished betting if (sSlotMachine->bet >= 3 || (sSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON)) sSlotMachine->state = 9; + // player wants to quit if (gMain.newKeys & B_BUTTON) sSlotMachine->state = 21; } return FALSE; } -/*static */bool8 sub_8101F44(struct Task *task) +static bool8 SlotAction_PrintYouDontHaveThreeCoins(struct Task *task) { - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, 1, gText_YouDontHaveThreeCoins, 0, 1, 0, 0); CopyWindowToVram(0, 3); sSlotMachine->state = 7; return FALSE; } -/*static */bool8 sub_8101F60(struct Task *task) +static bool8 SlotAction_ExitYouDontHaveThreeCoinsMessage(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - sub_8197434(0, TRUE); + ClearDialogWindowAndFrame(0, TRUE); sSlotMachine->state = 5; } return FALSE; } -/*static */bool8 sub_8101F88(struct Task *task) +static bool8 SlotAction_GivingInformation(struct Task *task) { - if (sub_8104AEC()) + if (IsInfoBoxClosed()) sSlotMachine->state = 5; return FALSE; } -/*static */bool8 sub_8101FA4(struct Task *task) +// probably make all the slots roll +static bool8 SlotAction9(struct Task *task) { - sub_8102484(); + DrawLuckyFlags(); sub_8104DA4(); - sub_8102DEC(0); - sub_8102DEC(1); - sub_8102DEC(2); - sub_80EEC80(); + + // for each reel... + ReelTasks_SetUnkTaskData(0); + ReelTasks_SetUnkTaskData(1); + ReelTasks_SetUnkTaskData(2); + + sub_80EEC80(); // something with daily slot variable + task->data[0] = 0; - if (sSlotMachine->unk04 & 0x20) + if (sSlotMachine->luckyFlags & LUCKY_BIAS_REELTIME) { - sub_810430C(); + BeginReeltime(); sSlotMachine->state = 10; } else @@ -1058,52 +1073,52 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) sub_8104CAC(1); sSlotMachine->state = 11; } - sSlotMachine->unk1A = 8; - if (sSlotMachine->unk0A) - sSlotMachine->unk1A = dp15_jump_random_unknown(); + sSlotMachine->reelIncrement = 8; + if (sSlotMachine->fairRollsLeft) + sSlotMachine->reelIncrement = SlowReelSpeed(); return FALSE; } -/*static */bool8 sub_8102008(struct Task *task) +static bool8 SlotAction10(struct Task *task) { - if (sub_810432C()) + if (IsFinalTask_RunReelTimeActions()) { sub_8104CAC(1); - sSlotMachine->unk04 &= 0xDF; + sSlotMachine->luckyFlags &= ~LUCKY_BIAS_REELTIME; sSlotMachine->state = 11; } return FALSE; } -/*static */bool8 sub_8102034(struct Task *task) +static bool8 SlotAction_SetLuckySpins(struct Task *task) { if (++task->data[0] >= 30) { - sub_81024F0(); + SetLuckySpins(); sSlotMachine->state = 12; } return FALSE; } -/*static */bool8 sub_8102058(struct Task *task) +static bool8 SlotAction_AwaitReelStop(struct Task *task) { if (gMain.newKeys & A_BUTTON) { PlaySE(SE_JYUNI); - sub_8102E1C(sSlotMachine->unk18); - sub_8103C14(sSlotMachine->unk18); + sub_8102E1C(sSlotMachine->currReel); + sub_8103C14(sSlotMachine->currReel); sSlotMachine->state = 13; } return FALSE; } -/*static */bool8 sub_8102090(struct Task *task) +static bool8 SlotAction_WaitForAllReelsToStop(struct Task *task) { - if (!sub_8102E40(sSlotMachine->unk18)) + if (!IsSlotReelMoving(sSlotMachine->currReel)) { - sSlotMachine->unk18++; + sSlotMachine->currReel++; sSlotMachine->state = 12; - if (sSlotMachine->unk18 > 2) + if (sSlotMachine->currReel > 2) { sSlotMachine->state = 14; } @@ -1112,24 +1127,25 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return FALSE; } -/*static */bool8 sub_81020C8(struct Task *task) +// once all reels have stopped +static bool8 SlotAction_CheckMatches(struct Task *task) { - sSlotMachine->unk04 &= 0xc0; + sSlotMachine->luckyFlags &= (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777); CheckMatch(); - if (sSlotMachine->unk0A) + if (sSlotMachine->fairRollsLeft) { - sSlotMachine->unk0A--; - sSlotMachine->unk0B++; + sSlotMachine->fairRollsLeft--; + sSlotMachine->fairRollsUsed++; } if (sSlotMachine->matchedSymbols) { sSlotMachine->state = 15; - sub_8102A24(); + AwardPayout(); sub_8103F70(); - if ((sSlotMachine->unk10 -= sSlotMachine->payout) < 0) + if ((sSlotMachine->netCoinLoss -= sSlotMachine->payout) < 0) { - sSlotMachine->unk10 = 0; + sSlotMachine->netCoinLoss = 0; } if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED))) { @@ -1146,42 +1162,44 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) PlayFanfare(MUS_ME_B_SMALL); sub_8104CAC(2); } + // if you matched 777... if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_MIXED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED))) { - sSlotMachine->unk04 &= 0x3f; + sSlotMachine->luckyFlags &= ~(LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777); if (sSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_BLUE) | (1 << SLOT_MACHINE_MATCHED_777_RED))) { - sSlotMachine->unk0A = 0; - sSlotMachine->unk0B = 0; - sSlotMachine->unk03 = 0; + sSlotMachine->fairRollsLeft = 0; + sSlotMachine->fairRollsUsed = 0; + sSlotMachine->luckyGame = FALSE; if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE)) - sSlotMachine->unk03 = 1; + // this may be an error, but if you get blue 777, the game becomes lucky + sSlotMachine->luckyGame = TRUE; } } if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && sSlotMachine->pikaPower < 16) { sSlotMachine->pikaPower++; - sub_8104064(sSlotMachine->pikaPower); + DisplayPikaPower(sSlotMachine->pikaPower); } } else { sub_8104CAC(3); sSlotMachine->state = 20; - if ((sSlotMachine->unk10 += sSlotMachine->bet) > 9999) - sSlotMachine->unk10 = 9999; + if ((sSlotMachine->netCoinLoss += sSlotMachine->bet) > 9999) + sSlotMachine->netCoinLoss = 9999; } return FALSE; } -/*static */bool8 sub_81021E0(struct Task *task) +static bool8 SlotAction_WaitForPayoutToBeAwarded(struct Task *task) { - if (sub_8102A44()) + if (IsFinalTask_RunAwardPayoutActions()) sSlotMachine->state = 16; return FALSE; } -/*static */bool8 sub_81021FC(struct Task *task) +static bool8 SlotAction_EndOfRoll(struct Task *task) { if (sub_8103FA0()) { @@ -1190,12 +1208,12 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) IncrementGameStat(GAME_STAT_SLOT_JACKPOTS); if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) { - sSlotMachine->unk18 = 0; + sSlotMachine->currReel = 0; sSlotMachine->state = 9; } if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER)) sSlotMachine->state = 17; - if (sSlotMachine->unk0A && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) + if (sSlotMachine->fairRollsLeft && sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) { sub_8104CAC(4); sSlotMachine->state = 18; @@ -1204,7 +1222,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return FALSE; } -/*static */bool8 sub_8102264(struct Task *task) +static bool8 SlotAction_MatchedPower(struct Task *task) { if (!sub_81040C8()) { @@ -1212,7 +1230,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) if (sSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY)) { sSlotMachine->state = 9; - if (sSlotMachine->unk0A) + if (sSlotMachine->fairRollsLeft) { sub_8104CAC(4); sSlotMachine->state = 18; @@ -1222,7 +1240,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return FALSE; } -/*static */bool8 sub_81022A0(struct Task *task) +static bool8 SlotAction18(struct Task *task) { if (sub_8104E18()) { @@ -1235,7 +1253,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return FALSE; } -/*static */bool8 sub_81022CC(struct Task *task) +static bool8 SlotAction_Loop(struct Task *task) { sub_8103D8C(0); sub_8103D8C(1); @@ -1244,7 +1262,7 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return FALSE; } -/*static */bool8 sub_81022F0(struct Task *task) +static bool8 SlotAction_NoMatches(struct Task *task) { if (++task->data[1] > 64) { @@ -1254,9 +1272,9 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return FALSE; } -/*static */bool8 sub_8102318(struct Task *task) +static bool8 SlotAction_PrintQuitTheGame(struct Task *task) { - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, 1, gText_QuitTheGame, 0, 1, 0, 0); CopyWindowToVram(0, 3); CreateYesNoMenuParameterized(0x15, 7, 0x214, 0x180, 0xE, 0xF); @@ -1264,272 +1282,277 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return FALSE; } -/*static */bool8 sub_8102344(struct Task *task) +static bool8 SlotAction_SeeIfPlayerQuits(struct Task *task) { s8 input = Menu_ProcessInputNoWrapClearOnChoose(); - if (input == 0) + if (input == 0) // player chooses to quit { - sub_8197434(0, TRUE); + ClearDialogWindowAndFrame(0, TRUE); sub_8103D8C(0); sub_8103D8C(1); sub_8103D8C(2); sSlotMachine->coins += sSlotMachine->bet; sSlotMachine->state = 27; } - else if (input == 1 || input == -1) + else if (input == 1 || input == -1) // player chooses not to quit { - sub_8197434(0, TRUE); + ClearDialogWindowAndFrame(0, TRUE); sSlotMachine->state = 5; } return FALSE; } -/*static */bool8 sub_810239C(struct Task *task) +static bool8 SlotAction_PrintMessage_9999Coins(struct Task *task) { - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, 1, gText_YouveGot9999Coins, 0, 1, 0, 0); CopyWindowToVram(0, 3); sSlotMachine->state = 24; return FALSE; } -/*static */bool8 sub_81023B8(struct Task *task) +static bool8 SlotAction_ExitMessage_9999Coins(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - sub_8197434(0, TRUE); + ClearDialogWindowAndFrame(0, TRUE); sSlotMachine->state = 5; } return FALSE; } -/*static */bool8 sub_81023E0_(struct Task *task) +static bool8 SlotAction_PrintMessage_NoMoreCoins(struct Task *task) { - NewMenuHelpers_DrawDialogueFrame(0, 0); + DrawDialogueFrame(0, 0); AddTextPrinterParameterized(0, 1, gText_YouveRunOutOfCoins, 0, 1, 0, 0); CopyWindowToVram(0, 3); sSlotMachine->state = 26; return FALSE; } -/*static */bool8 sub_81023FC(struct Task *task) +static bool8 SlotAction_ExitMessage_NoMoreCoins(struct Task *task) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - sub_8197434(0, TRUE); + ClearDialogWindowAndFrame(0, TRUE); sSlotMachine->state = 27; } return FALSE; } -/*static */bool8 sub_8102424(struct Task *task) +static bool8 SlotAction_EndGame(struct Task *task) { SetCoins(sSlotMachine->coins); - sub_80EDD78(GetCoins()); + AlertTVOfNewCoinTotal(GetCoins()); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); sSlotMachine->state++; return FALSE; } -/*static */bool8 sub_8102460(struct Task *task) +static bool8 SlotAction_FreeDataStructures(struct Task *task) { if (!gPaletteFade.active) { SetMainCallback2(sSlotMachine->prevMainCb); - FREE_AND_SET_NULL(gUnknown_0203AAF4); - FREE_AND_SET_NULL(gUnknown_0203AAF8); - FREE_AND_SET_NULL(gUnknown_0203AAFC); - FREE_AND_SET_NULL(gUnknown_0203AB00); - FREE_AND_SET_NULL(gUnknown_0203AB04); - FREE_AND_SET_NULL(gUnknown_0203AB08); - FREE_AND_SET_NULL(gUnknown_0203AB0C); - FREE_AND_SET_NULL(gUnknown_0203AB10); - FREE_AND_SET_NULL(gUnknown_0203AB14); - FREE_AND_SET_NULL(gUnknown_0203AB18); - FREE_AND_SET_NULL(gUnknown_0203AB1C); - FREE_AND_SET_NULL(gUnknown_0203AB20); - FREE_AND_SET_NULL(gUnknown_0203AB24); - FREE_AND_SET_NULL(gUnknown_0203AB28); - if (gUnknown_0203AAE4 != NULL) - FREE_AND_SET_NULL(gUnknown_0203AAE4); - if (gUnknown_0203AAE8 != NULL) - FREE_AND_SET_NULL(gUnknown_0203AAE8); - if (gUnknown_0203AAEC != NULL) - FREE_AND_SET_NULL(gUnknown_0203AAEC); - if (gUnknown_0203AAF0 != NULL) - FREE_AND_SET_NULL(gUnknown_0203AAF0); - FREE_AND_SET_NULL(gUnknown_0203AAC8); - FREE_AND_SET_NULL(gUnknown_0203AACC); - FREE_AND_SET_NULL(gUnknown_0203AAD0); - FREE_AND_SET_NULL(gUnknown_0203AAD4); - FREE_AND_SET_NULL(gUnknown_0203AAD8); - FREE_AND_SET_NULL(gUnknown_0203AADC); - FREE_AND_SET_NULL(gUnknown_0203AAE0); - FREE_AND_SET_NULL(gUnknown_0203AB2C); - FREE_AND_SET_NULL(gUnknown_0203AB30); + FREE_AND_SET_NULL(sUnknown_0203AAF4); + FREE_AND_SET_NULL(sUnknown_0203AAF8); + FREE_AND_SET_NULL(sUnknown_0203AAFC); + FREE_AND_SET_NULL(sUnknown_0203AB00); + FREE_AND_SET_NULL(sUnknown_0203AB04); + FREE_AND_SET_NULL(sUnknown_0203AB08); + FREE_AND_SET_NULL(sUnknown_0203AB0C); + FREE_AND_SET_NULL(sUnknown_0203AB10); + FREE_AND_SET_NULL(sUnknown_0203AB14); + FREE_AND_SET_NULL(sUnknown_0203AB18); + FREE_AND_SET_NULL(sUnknown_0203AB1C); + FREE_AND_SET_NULL(sUnknown_0203AB20); + FREE_AND_SET_NULL(sUnknown_0203AB24); + FREE_AND_SET_NULL(sUnknown_0203AB28); + if (sUnknown_0203AAE4 != NULL) + FREE_AND_SET_NULL(sUnknown_0203AAE4); + if (sUnknown_0203AAE8 != NULL) + FREE_AND_SET_NULL(sUnknown_0203AAE8); + if (sUnknown_0203AAEC != NULL) + FREE_AND_SET_NULL(sUnknown_0203AAEC); + if (sUnknown_0203AAF0 != NULL) + FREE_AND_SET_NULL(sUnknown_0203AAF0); + FREE_AND_SET_NULL(sUnknown_0203AAC8); + FREE_AND_SET_NULL(sSelectedPikaPowerTile); + FREE_AND_SET_NULL(sUnknown_0203AAD0); + FREE_AND_SET_NULL(sUnknown_0203AAD4); + FREE_AND_SET_NULL(sUnknown_0203AAD8); + FREE_AND_SET_NULL(sUnknown_0203AADC); + FREE_AND_SET_NULL(sUnknown_0203AAE0); + FREE_AND_SET_NULL(sUnknown_0203AB2C); + FREE_AND_SET_NULL(sUnknown_0203AB30); FREE_AND_SET_NULL(sSlotMachine); } return FALSE; } -/*static */void sub_8102484(void) +static void DrawLuckyFlags(void) { - u8 r3; + u8 attempts; - if (sSlotMachine->unk0A == 0) + if (sSlotMachine->fairRollsLeft == 0) { - if (!(sSlotMachine->unk04 & 0xc0)) + if (!(sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777))) { - if (sub_8102540_()) + if (IsThisRoundLucky()) { - r3 = sub_8102578(); - if (r3 != 3) + attempts = AttemptsAtLuckyFlags_Top3(); + if (attempts != 3) // if you found a lucky number { - sSlotMachine->unk04 |= gUnknown_083ECE42[r3]; - if (r3 != 1) + // attempts == 1: reelTime flag set + sSlotMachine->luckyFlags |= gLuckyFlagSettings_Top3[attempts]; + if (attempts != 1) { return; } } } - r3 = sub_81025BC(); - if (r3 != 5) + // if it's not a lucky round or you got reel time, roll for the lower lucky flags + attempts = AttemptsAtLuckyFlags_NotTop3(); + if (attempts != 5) // if you found a lucky number { - sSlotMachine->unk04 |= gUnknown_083ECE48[r3]; + sSlotMachine->luckyFlags |= gLuckyFlagSettings_NotTop3[attempts]; } } } } -/*static */void sub_81024F0(void) +static void SetLuckySpins(void) { - sSlotMachine->unk06 = 0; - if (sSlotMachine->unk04) - sSlotMachine->unk06 = 1; + sSlotMachine->luckySpinsLeft = 0; + if (sSlotMachine->luckyFlags) + sSlotMachine->luckySpinsLeft = 1; } -/*static */u8 sub_810250C(u8 a0) +static u8 GetBiasTag(u8 luckyFlags) { u8 i; for (i = 0; i < 8; i++) { - if (a0 & 1) - return gUnknown_083ECE3A[i]; - a0 >>= 1; + if (luckyFlags & 1) + return gBiasTags[i]; + luckyFlags >>= 1; } return 0; } -/*static */bool8 sub_8102540_(void) +// you have way more luck betting 3 coins than anything lower +static bool8 IsThisRoundLucky(void) { u8 rval = Random(); - if (gUnknown_083ECD04[sSlotMachine->unk01][sSlotMachine->bet - 1] > rval) + if (gLuckyRoundProbabilities[sSlotMachine->machineId][sSlotMachine->bet - 1] > rval) return TRUE; return FALSE; } -/*static */u8 sub_8102578(void) +static u8 AttemptsAtLuckyFlags_Top3(void) { - s16 i; + s16 count; - for (i = 0; i < 3; i++) + for (count = 0; count < 3; count++) { s16 rval = Random() & 0xff; - s16 value = gUnknown_083ECD16[i][sSlotMachine->unk01]; + s16 value = gLuckyFlagProbabilities_Top3[count][sSlotMachine->machineId]; if (value > rval) break; } - return i; + return count; } -/*static */u8 sub_81025BC(void) +static u8 AttemptsAtLuckyFlags_NotTop3(void) { - s16 i; + s16 count; - for (i = 0; i < 5; i++) + for (count = 0; count < 5; count++) { - s16 rval = Random() & 0xff; - s16 r3 = gUnknown_083ECD28[i][sSlotMachine->unk01]; - if (i == 0 && sSlotMachine->unk03 == 1) + s16 rval = Random() & 0xff; // random byte + s16 value = gLuckyFlagProbabilities_NotTop3[count][sSlotMachine->machineId]; + // make first attempt easier if it's a lucky game + if (count == 0 && sSlotMachine->luckyGame == TRUE) { - r3 += 10; - if (r3 > 0x100) - r3 = 0x100; + value += 10; + if (value > 0x100) + value = 0x100; } - else if (i == 4 && sSlotMachine->unk03 == 1) + // make last attempt harder if it's a lucky game + else if (count == 4 && sSlotMachine->luckyGame == TRUE) { - r3 -= 10; - if (r3 < 0) - r3 = 0; + value -= 10; + if (value < 0) + value = 0; } - if (r3 > rval) + if (value > rval) break; } - return i; + return count; } -/*static */u8 sub_810264C(u8 a0) +static u8 GetReelTimeProbability(u8 reelTimeDraw) { - if (sSlotMachine->unk03 == 0) - return gUnknown_083ECD46[a0][sSlotMachine->pikaPower]; + if (sSlotMachine->luckyGame == FALSE) + return gReeltimeProbabilities_UnluckyGame[reelTimeDraw][sSlotMachine->pikaPower]; else - return gUnknown_083ECDAC[a0][sSlotMachine->pikaPower]; + return gReelTimeProbabilities_LuckyGame[reelTimeDraw][sSlotMachine->pikaPower]; } -/*static */void sub_8102680(void) +static void GetReeltimeDraw(void) { u8 rval; - s16 i; + s16 reelTimeDraw; - sSlotMachine->unk05 = 0; + sSlotMachine->reelTimeDraw = 0; rval = Random(); - if (rval < sub_810264C(0)) + if (rval < GetReelTimeProbability(0)) return; - for (i = 5; i > 0; i--) + for (reelTimeDraw = 5; reelTimeDraw > 0; reelTimeDraw--) { rval = Random(); - if (rval < sub_810264C(i)) + if (rval < GetReelTimeProbability(reelTimeDraw)) break; } - sSlotMachine->unk05 = i; + sSlotMachine->reelTimeDraw = reelTimeDraw; } -/*static */bool8 sub_81026DC(u16 a0) +static bool8 SkipToReeltimeAction14(u16 i) { u16 rval = Random() & 0xff; - if (rval < gUnknown_083ECE12[a0]) + if (rval < gProbabilityTable_SkipToReeltimeAction14[i]) return TRUE; else return FALSE; } -/*static */u16 dp15_jump_random_unknown(void) +static u16 SlowReelSpeed(void) { - u8 r4 = 0; + u8 i = 0; u8 rval; u8 value; - if (sSlotMachine->unk10 >= 300) - r4 = 4; - else if (sSlotMachine->unk10 >= 250) - r4 = 3; - else if (sSlotMachine->unk10 >= 200) - r4 = 2; - else if (sSlotMachine->unk10 >= 150) - r4 = 1; + if (sSlotMachine->netCoinLoss >= 300) + i = 4; + else if (sSlotMachine->netCoinLoss >= 250) + i = 3; + else if (sSlotMachine->netCoinLoss >= 200) + i = 2; + else if (sSlotMachine->netCoinLoss >= 150) + i = 1; rval = Random() % 100; - value = gUnknown_083ECE1C[r4][0]; + value = gReelIncrementTable[i][0]; if (rval < value) return 4; rval = Random() % 100; - value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[sSlotMachine->unk0B]; + value = gReelIncrementTable[i][1] + gReelTimeBonusIncrementTable[sSlotMachine->fairRollsUsed]; if (rval < value) return 2; return 8; } -/*static */void CheckMatch(void) +static void CheckMatch(void) { sSlotMachine->matchedSymbols = 0; CheckMatch_CenterRow(); @@ -1539,88 +1562,88 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) CheckMatch_Diagonals(); } -/*static */void CheckMatch_CenterRow(void) +static void CheckMatch_CenterRow(void) { u8 c1, c2, c3, match; - c1 = GetTagOfReelSymbolOnScreenAtPos(0, 2); - c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); - c3 = GetTagOfReelSymbolOnScreenAtPos(2, 2); + c1 = GetNearbyTag_Quantized(0, 2); + c2 = GetNearbyTag_Quantized(1, 2); + c3 = GetNearbyTag_Quantized(2, 2); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { - sSlotMachine->payout += sSlotPayouts[match]; - sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + sSlotMachine->payout += gSlotPayouts[match]; + sSlotMachine->matchedSymbols |= gSlotMatchFlags[match]; sub_8103E04(0); } } -/*static */void CheckMatch_TopAndBottom(void) +static void CheckMatch_TopAndBottom(void) { u8 c1, c2, c3, match; - c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1); - c2 = GetTagOfReelSymbolOnScreenAtPos(1, 1); - c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1); + c1 = GetNearbyTag_Quantized(0, 1); + c2 = GetNearbyTag_Quantized(1, 1); + c3 = GetNearbyTag_Quantized(2, 1); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { if (match == SLOT_MACHINE_MATCHED_1CHERRY) match = SLOT_MACHINE_MATCHED_2CHERRY; - sSlotMachine->payout += sSlotPayouts[match]; - sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + sSlotMachine->payout += gSlotPayouts[match]; + sSlotMachine->matchedSymbols |= gSlotMatchFlags[match]; sub_8103E04(1); } - c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3); - c2 = GetTagOfReelSymbolOnScreenAtPos(1, 3); - c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3); + c1 = GetNearbyTag_Quantized(0, 3); + c2 = GetNearbyTag_Quantized(1, 3); + c3 = GetNearbyTag_Quantized(2, 3); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { if (match == SLOT_MACHINE_MATCHED_1CHERRY) match = SLOT_MACHINE_MATCHED_2CHERRY; - sSlotMachine->payout += sSlotPayouts[match]; - sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + sSlotMachine->payout += gSlotPayouts[match]; + sSlotMachine->matchedSymbols |= gSlotMatchFlags[match]; sub_8103E04(2); } } -/*static */void CheckMatch_Diagonals(void) +static void CheckMatch_Diagonals(void) { u8 c1, c2, c3, match; - c1 = GetTagOfReelSymbolOnScreenAtPos(0, 1); - c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); - c3 = GetTagOfReelSymbolOnScreenAtPos(2, 3); + c1 = GetNearbyTag_Quantized(0, 1); + c2 = GetNearbyTag_Quantized(1, 2); + c3 = GetNearbyTag_Quantized(2, 3); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { if (match != SLOT_MACHINE_MATCHED_1CHERRY) { - sSlotMachine->payout += sSlotPayouts[match]; - sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + sSlotMachine->payout += gSlotPayouts[match]; + sSlotMachine->matchedSymbols |= gSlotMatchFlags[match]; } sub_8103E04(3); } - c1 = GetTagOfReelSymbolOnScreenAtPos(0, 3); - c2 = GetTagOfReelSymbolOnScreenAtPos(1, 2); - c3 = GetTagOfReelSymbolOnScreenAtPos(2, 1); + c1 = GetNearbyTag_Quantized(0, 3); + c2 = GetNearbyTag_Quantized(1, 2); + c3 = GetNearbyTag_Quantized(2, 1); match = GetMatchFromSymbolsInRow(c1, c2, c3); if (match != SLOT_MACHINE_MATCHED_NONE) { if (match != SLOT_MACHINE_MATCHED_1CHERRY) { - sSlotMachine->payout += sSlotPayouts[match]; - sSlotMachine->matchedSymbols |= sSlotMatchFlags[match]; + sSlotMachine->payout += gSlotPayouts[match]; + sSlotMachine->matchedSymbols |= gSlotMatchFlags[match]; } sub_8103E04(4); } } -/*static */u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3) +static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3) { if (c1 == c2 && c1 == c3) - return sSym2Match[c1]; + return gSym2Match[c1]; if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE) return SLOT_MACHINE_MATCHED_777_MIXED; if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED) @@ -1630,26 +1653,26 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return SLOT_MACHINE_MATCHED_NONE; } -/*static */void sub_8102A24(void) +static void AwardPayout(void) { - sub_8102A64(CreateTask(sub_8102A64, 4)); + RunAwardPayoutActions(CreateTask(RunAwardPayoutActions, 4)); } -/*static */bool8 sub_8102A44(void) +static bool8 IsFinalTask_RunAwardPayoutActions(void) { - if (FindTaskIdByFunc(sub_8102A64) == 0xFF) + if (FindTaskIdByFunc(RunAwardPayoutActions) == TAIL_SENTINEL) return TRUE; else return FALSE; } -/*static */void sub_8102A64(u8 taskId) +static void RunAwardPayoutActions(u8 taskId) { - while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId)) + while (AwardPayoutActions[gTasks[taskId].data[0]](&gTasks[taskId])) ; } -/*static */bool8 sub_8102A9C(struct Task *task) +static bool8 AwardPayoutAction0(struct Task *task) { if (sub_8103E38()) { @@ -1662,8 +1685,8 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) } return FALSE; } - -/*static */bool8 sub_8102AD0(struct Task *task) +// task->data[1]: timer +static bool8 AwardPayoutAction_GivePayoutToPlayer(struct Task *task) { if (!task->data[1]--) { @@ -1689,165 +1712,175 @@ void PlaySlotMachine(u8 arg0, MainCallback cb) return FALSE; } -/*static */bool8 sub_8102B80(struct Task *task) +static bool8 AwardPayoutAction_FreeTask(struct Task *task) { if (sub_8103E7C()) - DestroyTask(FindTaskIdByFunc(sub_8102A64)); + DestroyTask(FindTaskIdByFunc(RunAwardPayoutActions)); return FALSE; } -/*static */u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y) + +// Returns the tag that is posOffset below the tag at the top of reelIndex's tape +static u8 GetNearbyTag_Quantized(u8 reelIndex, s16 posOffset) { - s16 offset = (sSlotMachine->reelPositions[x] + y) % 21; - if (offset < 0) - offset += 21; - return sReelSymbols[x][offset]; + s16 tagIndex = (sSlotMachine->reelTagOffsets[reelIndex] + posOffset) % REEL_NUM_TAGS; + if (tagIndex < 0) + tagIndex += REEL_NUM_TAGS; + return gReelSymbols[reelIndex][tagIndex]; } -/*static */u8 GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(u8 x, s16 y) + +// Calculates GetNearbyTag_Quantized as if the reel was snapped downwards into place +static u8 GetNearbyTag(u8 reelIndex, s16 posOffset) { - s16 r6 = 0; - s16 result = sSlotMachine->unk1C[x] % 24; + s16 tagOffset = 0; + s16 result = sSlotMachine->reelPixelOffsets[reelIndex] % 24; if (result != 0) - r6 = -1; - return GetTagOfReelSymbolOnScreenAtPos(x, y + r6); + tagOffset = -1; + return GetNearbyTag_Quantized(reelIndex, posOffset + tagOffset); } -/*static */u8 sub_8102C48(s16 a0) +static u8 GetNearbyReelTimeTag(s16 n) { - s16 r1 = (sSlotMachine->unk16 + a0) % 6; - if (r1 < 0) - r1 += 6; - return gUnknown_083ECCF1[r1]; + s16 newPosition = (sSlotMachine->reeltimePosition + n) % 6; + if (newPosition < 0) + newPosition += 6; + return gReelTimeTags[newPosition]; } -/*static */void sub_8102C84(u8 a0, s16 a1) +static void AdvanceSlotReel(u8 reelIndex, s16 value) { - sSlotMachine->unk1C[a0] += a1; - sSlotMachine->unk1C[a0] %= 504; - sSlotMachine->reelPositions[a0] = 21 - sSlotMachine->unk1C[a0] / 24; + sSlotMachine->reelPixelOffsets[reelIndex] += value; + sSlotMachine->reelPixelOffsets[reelIndex] %= 504; + sSlotMachine->reelTagOffsets[reelIndex] = REEL_NUM_TAGS - sSlotMachine->reelPixelOffsets[reelIndex] / 24; } -s16 sub_8102CCC(u8 a0, s16 a1) +s16 AdvanceSlotReelToNextTag(u8 reelIndex, s16 value) { - s16 r1 = sSlotMachine->unk1C[a0] % 24; - if (r1 != 0) + s16 offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24; + if (offset != 0) { - if (r1 < a1) - a1 = r1; - sub_8102C84(a0, a1); - r1 = sSlotMachine->unk1C[a0] % 24; + if (offset < value) + value = offset; + AdvanceSlotReel(reelIndex, value); + offset = sSlotMachine->reelPixelOffsets[reelIndex] % 24; } - return r1; + return offset; } -/*static */void sub_8102D28(s16 a0) +static void AdvanceReeltimeReel(s16 value) { - sSlotMachine->unk14 += a0; - sSlotMachine->unk14 %= 120; - sSlotMachine->unk16 = 6 - sSlotMachine->unk14 / 20; + sSlotMachine->reeltimePixelOffset += value; + sSlotMachine->reeltimePixelOffset %= 120; + sSlotMachine->reeltimePosition = 6 - sSlotMachine->reeltimePixelOffset / 20; } -s16 sub_8102D5C(s16 a0) +s16 AdvanceReeltimeReelToNextTag(s16 value) { - s16 r1 = sSlotMachine->unk14 % 20; - if (r1 != 0) + s16 offset = sSlotMachine->reeltimePixelOffset % 20; + if (offset != 0) { - if (r1 < a0) - a0 = r1; - sub_8102D28(a0); - r1 = sSlotMachine->unk14 % 20; + if (offset < value) + value = offset; + AdvanceReeltimeReel(value); + offset = sSlotMachine->reeltimePixelOffset % 20; } - return r1; + return offset; } -/*static */void sub_8102DA8(void) +static void GameplayTask_StopSlotReel(void) { u8 i; for (i = 0; i < 3; i++) { - u8 taskId = CreateTask(sub_8102E68, 2); + u8 taskId = CreateTask(RunSlotReelActions, 2); gTasks[taskId].data[15] = i; - sSlotMachine->reelTasks[i] = taskId; - sub_8102E68(taskId); + sSlotMachine->slotReelTasks[i] = taskId; + RunSlotReelActions(taskId); } } -/*static */void sub_8102DEC(u8 a0) +static void ReelTasks_SetUnkTaskData(u8 reelIndex) { - gTasks[sSlotMachine->reelTasks[a0]].data[0] = 1; - gTasks[sSlotMachine->reelTasks[a0]].data[14] = 1; + gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 1; + gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14] = 1; } -/*static */void sub_8102E1C(u8 a0) +static void sub_8102E1C(u8 reelIndex) { - gTasks[sSlotMachine->reelTasks[a0]].data[0] = 2; + gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[0] = 2; } -/*static */bool8 sub_8102E40(u8 a0) +static bool8 IsSlotReelMoving(u8 reelIndex) { - return gTasks[sSlotMachine->reelTasks[a0]].data[14]; + return gTasks[sSlotMachine->slotReelTasks[reelIndex]].data[14]; } -/*static */void sub_8102E68(u8 taskId) +static void RunSlotReelActions(u8 taskId) { - while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId)) + while (SlotReelActions[gTasks[taskId].data[0]](&gTasks[taskId])) ; } -/*static */bool8 sub_8102EA0(struct Task *task) +// task->data[1] reel turns +// task->data[15] reelIndex +static bool8 SlotReelAction_StayStill(struct Task *task) { return FALSE; } -/*static */bool8 sub_8102EA4(struct Task *task) +static bool8 SlotReelAction_Spin(struct Task *task) { - sub_8102C84(task->data[15], sSlotMachine->unk1A); + AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement); return FALSE; } - -/*static */bool8 sub_8102EC0(struct Task *task) +// As in previous generations, the slot machine often doesn't stop exactly when you press stop +static bool8 SlotReelAction_DecideWhereToStop(struct Task *task) { task->data[0]++; - sSlotMachine->unk34[task->data[15]] = 0; - sSlotMachine->unk2E[task->data[15]] = 0; - if (sSlotMachine->unk0A == 0 && (sSlotMachine->unk04 == 0 || sSlotMachine->unk06 == 0 || !gUnknown_083ECB40[task->data[15]]())) + // initialize data for that reel --> these will be changed if gBiasTags can be lined up + sSlotMachine->winnerRows[task->data[15]] = 0; + sSlotMachine->reelExtraTurns[task->data[15]] = 0; + + if (sSlotMachine->fairRollsLeft == 0 && (sSlotMachine->luckyFlags == 0 || sSlotMachine->luckySpinsLeft == 0 || !DecideReelTurns_BiasTag[task->data[15]]())) { - sSlotMachine->unk06 = 0; - gUnknown_083ECB4C[task->data[15]](); + sSlotMachine->luckySpinsLeft = 0; + DecideReelTurns_NoBiasTag[task->data[15]](); } - task->data[1] = sSlotMachine->unk2E[task->data[15]]; + task->data[1] = sSlotMachine->reelExtraTurns[task->data[15]]; return TRUE; } -/*static */bool8 sub_8102F4C(struct Task *task) +// go to next tag and then do any additional turns +static bool8 SlotReelAction_MoveToStop(struct Task *task) { - u16 sp[ARRAY_COUNT(gUnknown_085A74FC)]; - s16 r2; + u16 reelStopShocks[ARRAY_COUNT(ReelStopShocks)]; + s16 reelPixelPos; - memcpy(sp, gUnknown_085A74FC, sizeof(gUnknown_085A74FC)); - r2 = sSlotMachine->unk1C[task->data[15]] % 24; - if (r2 != 0) - r2 = sub_8102CCC(task->data[15], sSlotMachine->unk1A); - else if (sSlotMachine->unk2E[task->data[15]]) + memcpy(reelStopShocks, ReelStopShocks, sizeof(ReelStopShocks)); + reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24; + if (reelPixelPos != 0) + reelPixelPos = AdvanceSlotReelToNextTag(task->data[15], sSlotMachine->reelIncrement); + else if (sSlotMachine->reelExtraTurns[task->data[15]]) { - sSlotMachine->unk2E[task->data[15]]--; - sub_8102C84(task->data[15], sSlotMachine->unk1A); - r2 = sSlotMachine->unk1C[task->data[15]] % 24; + sSlotMachine->reelExtraTurns[task->data[15]]--; + AdvanceSlotReel(task->data[15], sSlotMachine->reelIncrement); + reelPixelPos = sSlotMachine->reelPixelOffsets[task->data[15]] % 24; } - if (r2 == 0 && sSlotMachine->unk2E[task->data[15]] == 0) + if (reelPixelPos == 0 && sSlotMachine->reelExtraTurns[task->data[15]] == 0) { task->data[0]++; - task->data[1] = sp[task->data[1]]; + task->data[1] = reelStopShocks[task->data[1]]; task->data[2] = 0; } return FALSE; } -/*static */bool8 sub_8103008(struct Task *task) +// make selected tag oscillate before it becomes still +static bool8 SlotReelAction_OscillatingStop(struct Task *task) { - sSlotMachine->unk22[task->data[15]] = task->data[1]; + sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = task->data[1]; task->data[1] = -task->data[1]; task->data[2]++; if ((task->data[2] & 0x3) == 0) @@ -1856,103 +1889,111 @@ s16 sub_8102D5C(s16 a0) { task->data[0] = 0; task->data[14] = 0; - sSlotMachine->unk22[task->data[15]] = 0; + sSlotMachine->reelPixelOffsetsWhileStopping[task->data[15]] = 0; } return FALSE; } -/*static */bool8 sub_810305C(void) +static bool8 DecideReelTurns_BiasTag_Reel1(void) { - u8 r3 = sub_810250C(sSlotMachine->unk04); - u8 r5 = r3; - if (sSlotMachine->unk04 & 0xc0) + u8 tag2 = GetBiasTag(sSlotMachine->luckyFlags); + u8 tag1 = tag2; + if (sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777)) { - r5 = 0; - r3 = 1; + tag1 = SLOT_MACHINE_TAG_7_RED; + tag2 = SLOT_MACHINE_TAG_7_BLUE; } - return gUnknown_083ECB64[sSlotMachine->bet - 1](r5, r3); + return DecideReelTurns_BiasTag_Reel1_Bets[sSlotMachine->bet - 1](tag1, tag2); } -/*static */bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2) +static bool8 AreTagsAtPosition_Reel1(s16 pos, u8 tag1, u8 tag2) { - u8 tag = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, y); + u8 tag = GetNearbyTag(0, pos); if (tag == tag1 || tag == tag2) { - sSlotMachine->unk07 = tag; + sSlotMachine->biasTag = tag; return TRUE; } return FALSE; } -/*static */bool8 sub_81030E0(s16 y) +static bool8 AreCherriesOnScreen_Reel1(s16 offsetFromCenter) { - if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4) + if (GetNearbyTag(0, 1 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetNearbyTag(0, 2 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY || GetNearbyTag(0, 3 - offsetFromCenter) == SLOT_MACHINE_TAG_CHERRY) return TRUE; else return FALSE; } -/*static */bool8 sub_8103134(void) +static bool8 IsBiasTowardsCherryOr7s(void) { - if (sSlotMachine->unk04 & 0xc2) + if (sSlotMachine->luckyFlags & (LUCKY_BIAS_777 | LUCKY_BIAS_MIXED_777 | LUCKY_BIAS_CHERRY)) return TRUE; else return FALSE; } -/*static */bool8 sub_8103154(u8 a0, u8 a1) +static bool8 DecideReelTurns_BiasTag_Reel1_Bet1(u8 tag1, u8 tag2) { s16 i; for (i = 0; i < 5; i++) { - if (sub_81030A4(2 - i, a0, a1)) + // if a lucky tag appears in the center row within 4 turns + if (AreTagsAtPosition_Reel1(2 - i, tag1, tag2)) { - sSlotMachine->unk34[0] = 2; - sSlotMachine->unk2E[0] = i; + sSlotMachine->winnerRows[0] = 2; + sSlotMachine->reelExtraTurns[0] = i; return TRUE; } } return FALSE; } -/*static */bool8 sub_81031B4(u8 tag1, u8 tag2) +static bool8 DecideReelTurns_BiasTag_Reel1_Bet2or3(u8 tag1, u8 tag2) { s16 i; - bool8 r6 = sub_8103134(); - if (r6 || !sub_81030E0(0)) + bool8 biased = IsBiasTowardsCherryOr7s(); + // if lucky numbers or no cherries are currently on screen in reel 1... + if (biased || !AreCherriesOnScreen_Reel1(0)) { for (i = 1; i < 4; i++) { - if (sub_81030A4(i, tag1, tag2)) + // if a bias tag is currently on the screen + if (AreTagsAtPosition_Reel1(i, tag1, tag2)) { - sSlotMachine->unk34[0] = i; - sSlotMachine->unk2E[0] = 0; + sSlotMachine->winnerRows[0] = i; + sSlotMachine->reelExtraTurns[0] = 0; return TRUE; } } } for (i = 1; i < 5; i++) { - bool8 r7 = r6; - if (r7 || !sub_81030E0(i)) + bool8 biasedCopy = biased; // redundant + // if biased or if in the next 4 turns there is a screen with no cherries... + if (biasedCopy || !AreCherriesOnScreen_Reel1(i)) { - if (sub_81030A4(1 - i, tag1, tag2)) + //...and if a bias tag is in top row of that screen + if (AreTagsAtPosition_Reel1(1 - i, tag1, tag2)) { - if (i == 1 && (r7 || !sub_81030E0(3))) + //...and if it only took 1 turn and the lucky tag could also be the bottom row of a screen with no cherries... + if (i == 1 && (biasedCopy || !AreCherriesOnScreen_Reel1(3))) { - sSlotMachine->unk34[0] = 3; - sSlotMachine->unk2E[0] = 3; + sSlotMachine->winnerRows[0] = 3; + sSlotMachine->reelExtraTurns[0] = 3; return TRUE; } - if (i < 4 && (r7 || !sub_81030E0(i + 1))) + //...or if it isn't the last turn and the lucky tag could be in the center row of a screen with no cherries... + if (i < 4 && (biasedCopy || !AreCherriesOnScreen_Reel1(i + 1))) { - sSlotMachine->unk34[0] = 2; - sSlotMachine->unk2E[0] = i + 1; + sSlotMachine->winnerRows[0] = 2; + sSlotMachine->reelExtraTurns[0] = i + 1; return TRUE; } - sSlotMachine->unk34[0] = 1; - sSlotMachine->unk2E[0] = i; + //...else + sSlotMachine->winnerRows[0] = 1; + sSlotMachine->reelExtraTurns[0] = i; return TRUE; } } @@ -1960,55 +2001,61 @@ s16 sub_8102D5C(s16 a0) return FALSE; } -/*static */bool8 sub_81032C0(void) +static bool8 DecideReelTurns_BiasTag_Reel2(void) { - return gUnknown_083ECB70[sSlotMachine->bet - 1](); + return DecideReelTurns_BiasTag_Reel2_Bets[sSlotMachine->bet - 1](); } -/*static */bool8 sub_81032E8(void) +static bool8 DecideReelTurns_BiasTag_Reel2_Bet1or2(void) { s16 i; - s16 unk34_0 = sSlotMachine->unk34[0]; + s16 biasTagLocation_Reel1 = sSlotMachine->winnerRows[0]; for (i = 0; i < 5; i++) { - if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, unk34_0 - i) == sSlotMachine->unk07) + // if biasTag appears in the same row within 4 turns + if (GetNearbyTag(1, biasTagLocation_Reel1 - i) == sSlotMachine->biasTag) { - sSlotMachine->unk34[1] = unk34_0; - sSlotMachine->unk2E[1] = i; + sSlotMachine->winnerRows[1] = biasTagLocation_Reel1; + sSlotMachine->reelExtraTurns[1] = i; return TRUE; } } return FALSE; } -/*static */bool8 sub_810333C(void) +static bool8 DecideReelTurns_BiasTag_Reel2_Bet3(void) { s16 i; - if (sub_81032E8()) + // if biasTag appears in the same row within 4 turns... + if (DecideReelTurns_BiasTag_Reel2_Bet1or2()) { - if (sSlotMachine->unk34[0] != 2 && sSlotMachine->unk2E[1] > 1 && sSlotMachine->unk2E[1] != 4) + //...and if the biasTag is not in middle row of reel 1 and if biasTag appears in middle row of reel 2 in 2 or 3 turns... + if (sSlotMachine->winnerRows[0] != 2 && sSlotMachine->reelExtraTurns[1] > 1 && sSlotMachine->reelExtraTurns[1] != 4) { for (i = 0; i < 5; i++) { - if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07) + //...and if the bias tag will appear in the middle row within 4 turns + if (GetNearbyTag(1, 2 - i) == sSlotMachine->biasTag) { - sSlotMachine->unk34[1] = 2; - sSlotMachine->unk2E[1] = i; + sSlotMachine->winnerRows[1] = 2; + sSlotMachine->reelExtraTurns[1] = i; break; } } } return TRUE; } - if (sSlotMachine->unk34[0] != 2) + // else if the biasTag is not in middle row of reel 1... + if (sSlotMachine->winnerRows[0] != 2) { for (i = 0; i < 5; i++) { - if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i) == sSlotMachine->unk07) + //...and if the biasTag will appear in the center row of reel 2 within 4 turns + if (GetNearbyTag(1, 2 - i) == sSlotMachine->biasTag) { - sSlotMachine->unk34[1] = 2; - sSlotMachine->unk2E[1] = i; + sSlotMachine->winnerRows[1] = 2; + sSlotMachine->reelExtraTurns[1] = i; return TRUE; } } @@ -2016,102 +2063,113 @@ s16 sub_8102D5C(s16 a0) return FALSE; } -/*static */bool8 sub_81033DC(void) +static bool8 DecideReelTurns_BiasTag_Reel3(void) { - u8 r3 = sSlotMachine->unk07; - if (sSlotMachine->unk04 & 0x40) + u8 biasTag = sSlotMachine->biasTag; + if (sSlotMachine->luckyFlags & LUCKY_BIAS_MIXED_777) { - r3 = 0; - if (sSlotMachine->unk07 == 0) + biasTag = SLOT_MACHINE_TAG_7_RED; + if (sSlotMachine->biasTag == SLOT_MACHINE_TAG_7_RED) { - r3 = 1; + biasTag = SLOT_MACHINE_TAG_7_BLUE; } } - return gUnknown_083ECB7C[sSlotMachine->bet - 1](r3); + return DecideReelTurns_BiasTag_Reel3_Bets[sSlotMachine->bet - 1](biasTag); } -/*static */bool8 sub_810341C(u8 a0) +static bool8 DecideReelTurns_BiasTag_Reel3_Bet1or2(u8 biasTag) { s16 i; - s16 unk34_1 = sSlotMachine->unk34[1]; + s16 biasTagLocation_Reel2 = sSlotMachine->winnerRows[1]; for (i = 0; i < 5; i++) { - if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, unk34_1 - i) == a0) + // if the biasTag appears in the same row as in reel 2 within 4 turns + if (GetNearbyTag(2, biasTagLocation_Reel2 - i) == biasTag) { - sSlotMachine->unk34[2] = unk34_1; - sSlotMachine->unk2E[2] = i; + sSlotMachine->winnerRows[2] = biasTagLocation_Reel2; + sSlotMachine->reelExtraTurns[2] = i; return TRUE; } } return FALSE; } -/*static */bool8 sub_810347C(u8 a0) +static bool8 DecideReelTurns_BiasTag_Reel3_Bet3(u8 biasTag) { s16 i; - s16 r8; - if (sSlotMachine->unk34[0] == sSlotMachine->unk34[1]) - return sub_810341C(a0); - if (sSlotMachine->unk34[0] == 1) - r8 = 3; + s16 biasTagFinalPos; + // if the final position of the biasTag matches in reel 1 and reel 2... + if (sSlotMachine->winnerRows[0] == sSlotMachine->winnerRows[1]) + //...then try to line it up in reel 3 + return DecideReelTurns_BiasTag_Reel3_Bet1or2(biasTag); + // else place it in the row opposite reel 1's + if (sSlotMachine->winnerRows[0] == 1) + biasTagFinalPos = 3; else - r8 = 1; + biasTagFinalPos = 1; for (i = 0; i < 5; i++) { - if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0) + // if the biasTag lands in that position within 4 turns + if (GetNearbyTag(2, biasTagFinalPos - i) == biasTag) { - sSlotMachine->unk2E[2] = i; - sSlotMachine->unk34[2] = r8; + sSlotMachine->reelExtraTurns[2] = i; + sSlotMachine->winnerRows[2] = biasTagFinalPos; return TRUE; } } return FALSE; } -/*static */void sub_81034F4(void) +// Advance until there are no cherries on screen in reel 1 + +static void DecideReelTurns_NoBiasTag_Reel1(void) { s16 i = 0; - while (sub_81030E0(i) != 0) + while (AreCherriesOnScreen_Reel1(i) != 0) i++; - sSlotMachine->unk2E[0] = i; + sSlotMachine->reelExtraTurns[0] = i; } -/*static */bool8 sub_8103520(u8 *a0) +static bool8 IsBiasTag777_SwitchColor(u8 *biasTagPtr) { - if (*a0 == 0) + if (*biasTagPtr == SLOT_MACHINE_TAG_7_RED) { - *a0 = 1; + *biasTagPtr = SLOT_MACHINE_TAG_7_BLUE; return TRUE; } - if (*a0 == 1) + if (*biasTagPtr == SLOT_MACHINE_TAG_7_BLUE) { - *a0 = 0; + *biasTagPtr = SLOT_MACHINE_TAG_7_RED; return TRUE; } return FALSE; } -/*static */void sub_8103540(void) +static void DecideReelTurns_NoBiasTag_Reel2(void) { - gUnknown_083ECB88[sSlotMachine->bet - 1](); + DecideReelTurns_NoBiasTag_Reel2_Bets[sSlotMachine->bet - 1](); } -/*static */void sub_8103564(void) +// only does stuff if the biasTag is one of the 7's, plus other conditions +static void DecideReelTurns_NoBiasTag_Reel2_Bet1(void) { - if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80) + if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777) { - u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]); - if (sub_8103520(&sp0)) + u8 biasTag = GetNearbyTag(0, 2 - sSlotMachine->reelExtraTurns[0]); + //...and if biasTag is one of the 7's... + if (IsBiasTag777_SwitchColor(&biasTag)) + //...swap color of biasTag... { s16 i; for (i = 0; i < 5; i++) { - if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - i)) + //...and if the biasTag appears within 4 turns + if (biasTag == GetNearbyTag(1, 2 - i)) { - sSlotMachine->unk34[1] = 2; - sSlotMachine->unk2E[1] = i; + sSlotMachine->winnerRows[1] = 2; + sSlotMachine->reelExtraTurns[1] = i; break; } } @@ -2119,20 +2177,23 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void j5_08111E84(void) +static void DecideReelTurns_NoBiasTag_Reel2_Bet2(void) { - if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80) + if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777) { - u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]); - if (sub_8103520(&sp0)) + u8 biasTag = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]); + //...and if biasTag is one of the 7's... + if (IsBiasTag777_SwitchColor(&biasTag)) + //...swap color of biasTag... { s16 i; for (i = 0; i < 5; i++) { - if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - i)) + //...and if the biasTag appears in same row in reel 2 within 4 turns + if (biasTag == GetNearbyTag(1, sSlotMachine->winnerRows[0] - i)) { - sSlotMachine->unk34[1] = sSlotMachine->unk34[0]; - sSlotMachine->unk2E[1] = i; + sSlotMachine->winnerRows[1] = sSlotMachine->winnerRows[0]; + sSlotMachine->reelExtraTurns[1] = i; break; } } @@ -2140,61 +2201,65 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8103668(void) +static void DecideReelTurns_NoBiasTag_Reel2_Bet3(void) { s16 i; s16 j; - if (sSlotMachine->unk34[0] != 0 && sSlotMachine->unk04 & 0x80) + // if reel 1 has a biasTag and bit 7 is set in luckyFlags... + if (sSlotMachine->winnerRows[0] != 0 && sSlotMachine->luckyFlags & LUCKY_BIAS_777) { - if (sSlotMachine->unk34[0] == 2) + //...and if biasTag appeared in the center row of reel 1 + if (sSlotMachine->winnerRows[0] == 2) { - j5_08111E84(); + DecideReelTurns_NoBiasTag_Reel2_Bet2(); } else { - u8 sp0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]); - if (sub_8103520(&sp0)) + u8 biasTag = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]); + //...and if biasTag is one of the 7's... + if (IsBiasTag777_SwitchColor(&biasTag)) + //...swap the color of the 7... { j = 2; - if (sSlotMachine->unk34[0] == 3) + if (sSlotMachine->winnerRows[0] == 3) j = 3; for (i = 0; i < 2; i++, j--) { - if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, j)) + if (biasTag == GetNearbyTag(1, j)) { - sSlotMachine->unk34[1] = j; - sSlotMachine->unk2E[1] = 0; + sSlotMachine->winnerRows[1] = j; + sSlotMachine->reelExtraTurns[1] = 0; return; } } for (j = 1; j < 5; j++) { - if (sp0 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[0] - j)) + if (biasTag == GetNearbyTag(1, sSlotMachine->winnerRows[0] - j)) { - if (sSlotMachine->unk34[0] == 1) + if (sSlotMachine->winnerRows[0] == 1) { if (j < 3) { - sSlotMachine->unk34[1] = 2; - sSlotMachine->unk2E[1] = j + 1; + sSlotMachine->winnerRows[1] = 2; + sSlotMachine->reelExtraTurns[1] = j + 1; } else { - sSlotMachine->unk34[1] = 1; - sSlotMachine->unk2E[1] = j; + sSlotMachine->winnerRows[1] = 1; + sSlotMachine->reelExtraTurns[1] = j; } } else { if (j < 3) { - sSlotMachine->unk34[1] = 3; - sSlotMachine->unk2E[1] = j; + sSlotMachine->winnerRows[1] = 3; + sSlotMachine->reelExtraTurns[1] = j; } else { - sSlotMachine->unk34[1] = 2; - sSlotMachine->unk2E[1] = j - 1; + sSlotMachine->winnerRows[1] = 2; + sSlotMachine->reelExtraTurns[1] = j - 1; } } return; @@ -2205,149 +2270,159 @@ s16 sub_8102D5C(s16 a0) } } -/*static */bool8 sub_8103764(u8 a0, u8 a1) +static bool8 AreTagsMixed77(u8 tag1, u8 tag2) { - if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0)) + if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED)) return TRUE; else return FALSE; } -/*static */bool8 sub_810378C(u8 a0, u8 a1, u8 a2) +static bool8 AreTagsMixed777(u8 tag1, u8 tag2, u8 tag3) { - if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1)) + if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) || + (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE)) return TRUE; else return FALSE; } -/*static */bool8 sub_81037BC(u8 a0, u8 a1, u8 a2) +static bool8 TagsDontMatchOrHaveAny7s(u8 tag1, u8 tag2, u8 tag3) { - if ((a0 == 0 && a1 == 1 && a2 == 0) || - (a0 == 1 && a1 == 0 && a2 == 1) || - (a0 == 0 && a1 == 0 && a2 == 1) || - (a0 == 1 && a1 == 1 && a2 == 0) || - (a0 == a1 && a0 == a2)) + if ((tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) || + (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) || + (tag1 == SLOT_MACHINE_TAG_7_RED && tag2 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) || + (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag2 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED) || + (tag1 == tag2 && tag1 == tag3)) { return FALSE; } return TRUE; } -/*static */void sub_810380C(void) +static void DecideReelTurns_NoBiasTag_Reel3(void) { - gUnknown_083ECB94[sSlotMachine->bet - 1](); + DecideReelTurns_NoBiasTag_Reel3_Bets[sSlotMachine->bet - 1](); } -/*static */void sub_8103830(void) +static void DecideReelTurns_NoBiasTag_Reel3_Bet1(void) { s16 i = 0; - u8 r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - sSlotMachine->unk2E[0]); - u8 r1 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]); - if (r5 == r1) + u8 tag1 = GetNearbyTag(0, 2 - sSlotMachine->reelExtraTurns[0]); + u8 tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]); + // if tags match in first 2 reels... + if (tag1 == tag2) { + //...spin until you get non-matching tag while (1) { - u8 r0; - if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0))) + u8 tag3; + if (!(tag1 == (tag3 = GetNearbyTag(2, 2 - i)) || (tag1 == SLOT_MACHINE_TAG_7_RED && tag3 == SLOT_MACHINE_TAG_7_BLUE) || (tag1 == SLOT_MACHINE_TAG_7_BLUE && tag3 == SLOT_MACHINE_TAG_7_RED))) break; i++; } } - else if (sub_8103764(r5, r1)) + else if (AreTagsMixed77(tag1, tag2)) { - if (sSlotMachine->unk04 & 0x80) + if (sSlotMachine->luckyFlags & LUCKY_BIAS_777) { + //...see if you can match with reel 1 within 4 turns for (i = 0; i < 5; i++) { - if (r5 == GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) + if (tag1 == GetNearbyTag(2, 2 - i)) { - sSlotMachine->unk2E[2] = i; + sSlotMachine->reelExtraTurns[2] = i; return; } } } + // turn until you aren't matching with reel 1 i = 0; while (1) { - if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) + if (tag1 != GetNearbyTag(2, 2 - i)) break; i++; } } - sSlotMachine->unk2E[2] = i; + sSlotMachine->reelExtraTurns[2] = i; } -/*static */void sub_8103910(void) +static void DecideReelTurns_NoBiasTag_Reel3_Bet2(void) { - s16 sp0 = 0; + s16 extraTurns = 0; s16 i; - u8 r7; - u8 r6; - u8 r4; - - if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] == sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80) - { - r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]); - r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]); - if (sub_8103764(r7, r6)) + u8 tag1; + u8 tag2; + u8 tag3; + if (sSlotMachine->winnerRows[1] != 0 && sSlotMachine->winnerRows[0] == sSlotMachine->winnerRows[1] && sSlotMachine->luckyFlags & LUCKY_BIAS_777) + { + tag1 = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]); + tag2 = GetNearbyTag(1, sSlotMachine->winnerRows[1] - sSlotMachine->reelExtraTurns[1]); + //...and if tags are mixed 7s... + if (AreTagsMixed77(tag1, tag2)) { + //...try to match with reel 1 within 4 turns for (i = 0; i < 5; i++) { - r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, sSlotMachine->unk34[1] - i); - if (r7 == r4) + tag3 = GetNearbyTag(2, sSlotMachine->winnerRows[1] - i); + if (tag1 == tag3) { - sp0 = i; + extraTurns = i; break; } } } } + // GUESS: spin until there's no possible match within 4 turns of you stopping while (1) { - s16 r8; - for (i = 1, r8 = 0; i < 4; i++) + s16 loopExit; + for (i = 1, loopExit = 0; i < 4; i++) { - r7 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, i - sSlotMachine->unk2E[0]); - r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, i - sSlotMachine->unk2E[1]); - r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, i - sp0); - if (!sub_81037BC(r7, r6, r4) && (!sub_810378C(r7, r6, r4) || !(sSlotMachine->unk04 & 0x80))) + tag1 = GetNearbyTag(0, i - sSlotMachine->reelExtraTurns[0]); // why does this update with i + tag2 = GetNearbyTag(1, i - sSlotMachine->reelExtraTurns[1]); + tag3 = GetNearbyTag(2, i - extraTurns); + // if bit 7 of luckyFlags is unset... + //...and if all 3 tags match and they're not mixed 7s + if (!TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) && (!AreTagsMixed777(tag1, tag2, tag3) || !(sSlotMachine->luckyFlags & LUCKY_BIAS_777))) { - r8++; + loopExit++; break; } } - if (r8 == 0) + if (loopExit == 0) break; - sp0++; + extraTurns++; } - sSlotMachine->unk2E[2] = sp0; + sSlotMachine->reelExtraTurns[2] = extraTurns; } -/*static */void sub_8103A78(void) +static void DecideReelTurns_NoBiasTag_Reel3_Bet3(void) { - u8 r6; - u8 r5; - u8 r4; - s16 r8; + u8 tag1; + u8 tag2; + u8 tag3; + s16 j; s16 i; - sub_8103910(); - if (sSlotMachine->unk34[1] != 0 && sSlotMachine->unk34[0] != sSlotMachine->unk34[1] && sSlotMachine->unk04 & 0x80) + DecideReelTurns_NoBiasTag_Reel3_Bet2(); + if (sSlotMachine->winnerRows[1] != 0 && sSlotMachine->winnerRows[0] != sSlotMachine->winnerRows[1] && sSlotMachine->luckyFlags & LUCKY_BIAS_777) { - r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, sSlotMachine->unk34[0] - sSlotMachine->unk2E[0]); - r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, sSlotMachine->unk34[1] - sSlotMachine->unk2E[1]); - if (sub_8103764(r6, r5)) + tag1 = GetNearbyTag(0, sSlotMachine->winnerRows[0] - sSlotMachine->reelExtraTurns[0]); + tag2 = GetNearbyTag(1, sSlotMachine->winnerRows[1] - sSlotMachine->reelExtraTurns[1]); + //..and if tags are mixed 7s... + if (AreTagsMixed77(tag1, tag2)) { - r8 = 1; - if (sSlotMachine->unk34[0] == 1) - r8 = 3; + j = 1; + if (sSlotMachine->winnerRows[0] == 1) + j = 3; for (i = 0; i < 5; i++) { - r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - (sSlotMachine->unk2E[2] + i)); - if (r6 == r4) + tag3 = GetNearbyTag(2, j - (sSlotMachine->reelExtraTurns[2] + i)); + if (tag1 == tag3) { - sSlotMachine->unk2E[2] += i; + sSlotMachine->reelExtraTurns[2] += i; break; } } @@ -2355,79 +2430,80 @@ s16 sub_8102D5C(s16 a0) } while (1) { - r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - sSlotMachine->unk2E[0]); - r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]); - r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 3 - sSlotMachine->unk2E[2]); - if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80)) + tag1 = GetNearbyTag(0, 1 - sSlotMachine->reelExtraTurns[0]); + tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]); + tag3 = GetNearbyTag(2, 3 - sSlotMachine->reelExtraTurns[2]); + if (TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) || (AreTagsMixed777(tag1, tag2, tag3) && sSlotMachine->luckyFlags & LUCKY_BIAS_777)) break; - sSlotMachine->unk2E[2]++; + sSlotMachine->reelExtraTurns[2]++; } while (1) { - r6 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - sSlotMachine->unk2E[0]); - r5 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(1, 2 - sSlotMachine->unk2E[1]); - r4 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 1 - sSlotMachine->unk2E[2]); - if (sub_81037BC(r6, r5, r4) || (sub_810378C(r6, r5, r4) && sSlotMachine->unk04 & 0x80)) + tag1 = GetNearbyTag(0, 3 - sSlotMachine->reelExtraTurns[0]); + tag2 = GetNearbyTag(1, 2 - sSlotMachine->reelExtraTurns[1]); + tag3 = GetNearbyTag(2, 1 - sSlotMachine->reelExtraTurns[2]); + if (TagsDontMatchOrHaveAny7s(tag1, tag2, tag3) || (AreTagsMixed777(tag1, tag2, tag3) && sSlotMachine->luckyFlags & LUCKY_BIAS_777)) break; - sSlotMachine->unk2E[2]++; + sSlotMachine->reelExtraTurns[2]++; } } -/*static */void sub_8103C14(u8 a0) +static void sub_8103C14(u8 a0) { u8 taskId = CreateTask(sub_8103C48, 5); gTasks[taskId].data[15] = a0; sub_8103C48(taskId); } -/*static */void sub_8103C48(u8 taskId) +static void sub_8103C48(u8 taskId) { - gUnknown_083ECBA0[gTasks[taskId].data[0]](gTasks + taskId, taskId); + gUnknown_083ECBA0[gTasks[taskId].data[0]](&gTasks[taskId], taskId); } -/*static */void sub_8103C78(struct Task *task, u8 taskId) +static void sub_8103C78(struct Task *task, u8 taskId) { sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x62, 0x63, 0x72, 0x73); task->data[0]++; } -/*static */void sub_8103CAC(struct Task *task, u8 taskId) +static void sub_8103CAC(struct Task *task, u8 taskId) { if (++task->data[1] > 11) task->data[0]++; } -/*static */void sub_8103CC8(struct Task *task, u8 taskId) +static void sub_8103CC8(struct Task *task, u8 taskId) { sub_81065A8(gUnknown_083ECBAC[task->data[15]], 0x42, 0x43, 0x52, 0x53); DestroyTask(taskId); } -/*static */void sub_8103D00(u8 a0) +static void LoadLitTile(u8 tileId) { - LoadPalette(gUnknown_083EDD08[a0], gUnknown_083EDD30[a0], 2); + LoadPalette(gUnknown_083EDD08[tileId], gUnknown_083EDD30[tileId], 2); } -/*static */void sub_8103D28(u8 a0) +static void sub_8103D28(u8 a0) { LoadPalette(gUnknown_083EDD1C[a0], gUnknown_083EDD30[a0], 2); } -/*static */void sub_8103D50(u8 a0) +// light up the value bet by the player +static void LoadBetTiles(u8 betVal) { u8 i; - for (i = 0; i < gUnknown_083EDD3B[a0]; i++) - sub_8103D00(gUnknown_083EDD35[a0][i]); + for (i = 0; i < gNumberBettingTiles[betVal]; i++) + LoadLitTile(gBettingTilesId[betVal][i]); } -/*static */void sub_8103D8C(u8 a0) +static void sub_8103D8C(u8 a0) { u8 i; - for (i = 0; i < gUnknown_083EDD3B[a0]; i++) - sub_8103D28(gUnknown_083EDD35[a0][i]); + for (i = 0; i < gNumberBettingTiles[a0]; i++) + sub_8103D28(gBettingTilesId[a0][i]); } -/*static */void sub_8103DC8(void) +static void sub_8103DC8(void) { u8 i; for (i = 0; i < 5; i++) @@ -2438,7 +2514,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8103E04(u8 a0) +static void sub_8103E04(u8 a0) { struct Sprite *sprite = gSprites + sSlotMachine->unk44[a0]; sprite->data[1] = 1; @@ -2449,7 +2525,8 @@ s16 sub_8102D5C(s16 a0) sprite->data[7] = 0; } -/*static */bool8 sub_8103E38(void) +// something with payout digits +static bool8 sub_8103E38(void) { u8 i; for (i = 0; i < 5; i++) @@ -2461,7 +2538,7 @@ s16 sub_8102D5C(s16 a0) return TRUE; } -/*static */bool8 sub_8103E7C(void) +static bool8 sub_8103E7C(void) { u8 i; for (i = 0; i < 5; i++) @@ -2472,7 +2549,7 @@ s16 sub_8102D5C(s16 a0) return TRUE; } -/*static */bool8 sub_8103EAC(u8 spriteId) +static bool8 sub_8103EAC(u8 spriteId) { struct Sprite *sprite = gSprites + spriteId; if (!sprite->data[1]) @@ -2482,7 +2559,7 @@ s16 sub_8102D5C(s16 a0) return sprite->data[7]; } -/*static */void sub_8103EE4(struct Sprite *sprite) +static void sub_8103EE4(struct Sprite *sprite) { s16 r4; if (sprite->data[1]) @@ -2511,14 +2588,14 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8103F70(void) +static void sub_8103F70(void) { u8 taskId = CreateTask(sub_8103FE8_, 6); gTasks[taskId].data[3] = 1; sub_8103FE8_(taskId); } -/*static */bool8 sub_8103FA0(void) +static bool8 sub_8103FA0(void) { u8 taskId = FindTaskIdByFunc(sub_8103FE8_); if (!gTasks[taskId].data[2]) @@ -2530,9 +2607,9 @@ s16 sub_8102D5C(s16 a0) return FALSE; } -/*static */void sub_8103FE8_(u8 taskId) +static void sub_8103FE8_(u8 taskId) { - struct Task *task = gTasks + taskId; + struct Task *task = &gTasks[taskId]; if (!task->data[1]--) { task->data[1] = 4; @@ -2543,49 +2620,49 @@ s16 sub_8102D5C(s16 a0) LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20); } -/*static */void sub_8104048(void) +static void GameplayTask_PikaPower(void) { - sSlotMachine->unk3E = CreateTask(sub_81040E8, 8); + sSlotMachine->unkTaskPointer3E = CreateTask(sub_81040E8, 8); } -/*static */void sub_8104064(u8 pikaPower) +static void DisplayPikaPower(u8 pikaPower) { - struct Task *task = gTasks + sSlotMachine->unk3E; - sub_812D394(task); + struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E]; + ClearTaskDataFields_2orHigher(task); task->data[0] = 1; task->data[1]++; - task->data[15] = 1; + task->data[15] = 1; // points to a reelIndex } -/*static */void sub_8104098(void) +static void sub_8104098(void) { - struct Task *task = gTasks + sSlotMachine->unk3E; - sub_812D394(task); + struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3E]; + ClearTaskDataFields_2orHigher(task); task->data[0] = 3; - task->data[15] = 1; + task->data[15] = 1; // points to a reelIndex } -/*static */bool8 sub_81040C8(void) +static bool8 sub_81040C8(void) { - return gTasks[sSlotMachine->unk3E].data[15]; + return gTasks[sSlotMachine->unkTaskPointer3E].data[15]; } -/*static */void sub_81040E8(u8 taskId) +static void sub_81040E8(u8 taskId) { - gUnknown_083ECBB4[gTasks[taskId].data[0]](gTasks + taskId); + gUnknown_083ECBB4[gTasks[taskId].data[0]](&gTasks[taskId]); } -/*static */void nullsub_68(struct Task *task) +static void nullsub_68(struct Task *task) { } -/*static */void sub_810411C(struct Task *task) +static void sub_810411C(struct Task *task) { task->data[2] = sub_8105B1C((task->data[1] << 3) + 20, 20); task->data[0]++; } -/*static */void sub_8104144(struct Task *task) +static void sub_8104144(struct Task *task) { if (gSprites[task->data[2]].data[7]) { @@ -2596,15 +2673,15 @@ s16 sub_8102D5C(s16 a0) r3 = 1, r2 = 1; else if (task->data[1] == 16) r3 = 2, r2 = 2; - gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][0]; - LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40); + sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][0]; + LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40); sub_8105B88(task->data[2]); task->data[0] = 0; - task->data[15] = 0; + task->data[15] = 0; // points to a reelIndex } } -/*static */void sub_81041AC(struct Task *task) +static void sub_81041AC(struct Task *task) { s16 r5 = task->data[1] + 2; s16 r3 = 0; @@ -2615,8 +2692,8 @@ s16 sub_8102D5C(s16 a0) r3 = 2, r2 = 2; if (task->data[2] == 0) { - gUnknown_0203AACC[r2] = gUnknown_083ECBC4[r3][1]; - LoadBgTilemap(2, &gUnknown_0203AACC[r2], 2, r5 + 0x40); + sSelectedPikaPowerTile[r2] = pikaPowerTileTable[r3][1]; + LoadBgTilemap(2, &sSelectedPikaPowerTile[r2], 2, r5 + 0x40); task->data[1]--; } if (++task->data[2] >= 20) @@ -2628,7 +2705,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_812D394(struct Task *task) +static void ClearTaskDataFields_2orHigher(struct Task *task) { u8 i; @@ -2636,7 +2713,8 @@ s16 sub_8102D5C(s16 a0) task->data[i] = 0; } -/*static */void sub_810423C(u8 pikaPower) +// possibly load tiles for pika power meter +static void sub_810423C(u8 pikaPower) { s16 i; s16 r3 = 0, r1 = 0; @@ -2646,10 +2724,10 @@ s16 sub_8102D5C(s16 a0) r3 = 0, r1 = 0; if (i == 0) r3 = 1, r1 = 1; - else if (i == 15) + else if (i == 15) // pikaPower meter is full r3 = 2, r1 = 2; - gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][0]; - LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40); + sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][0]; + LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40); } for (; i < 16; i++, r4++) { @@ -2658,39 +2736,43 @@ s16 sub_8102D5C(s16 a0) r3 = 1, r1 = 1; else if (i == 15) r3 = 2, r1 = 2; - gUnknown_0203AACC[r1] = gUnknown_083ECBC4[r3][1]; - LoadBgTilemap(2, &gUnknown_0203AACC[r1], 2, r4 + 0x40); + sSelectedPikaPowerTile[r1] = pikaPowerTileTable[r3][1]; + LoadBgTilemap(2, &sSelectedPikaPowerTile[r1], 2, r4 + 0x40); } - gTasks[sSlotMachine->unk3E].data[1] = pikaPower; + gTasks[sSlotMachine->unkTaskPointer3E].data[1] = pikaPower; } -/*static */void sub_810430C(void) +static void BeginReeltime(void) { - u8 taskId = CreateTask(sub_810434C, 7); - sub_810434C(taskId); + u8 taskId = CreateTask(RunReeltimeActions, 7); + RunReeltimeActions(taskId); } -/*static */bool8 sub_810432C(void) +static bool8 IsFinalTask_RunReelTimeActions(void) { - if (FindTaskIdByFunc(sub_810434C) == 0xFF) + if (FindTaskIdByFunc(RunReeltimeActions) == TAIL_SENTINEL) return TRUE; return FALSE; } -/*static */void sub_810434C(u8 taskId) +static void RunReeltimeActions(u8 taskId) { - gUnknown_083ECBD0[gTasks[taskId].data[0]](gTasks + taskId); + // task.data[0] points to which ReelTimeAction to do, and starts at 0 + // task.data[1] has something to do with the threshold + // task.data[4] says how many pixels to advance the reel + // task.data[5] is a timer + ReeltimeActions[gTasks[taskId].data[0]](&gTasks[taskId]); } -/*static */void sub_810437C(struct Task *task) +static void ReeltimeAction0(struct Task *task) { - sSlotMachine->unk0A = 0; - sSlotMachine->unk14 = 0; - sSlotMachine->unk16 = 0; + sSlotMachine->fairRollsLeft = 0; + sSlotMachine->reeltimePixelOffset = 0; + sSlotMachine->reeltimePosition = 0; task->data[0]++; task->data[1] = 0; task->data[2] = 30; - task->data[4] = 1280; + task->data[4] = 1280; // reel speed gSpriteCoordOffsetX = 0; gSpriteCoordOffsetY = 0; SetGpuReg(REG_OFFSET_BG1HOFS, 0); @@ -2701,12 +2783,12 @@ s16 sub_8102D5C(s16 a0) sub_81052EC(); sub_81053A0(); sub_810545C(); - sub_8102680(); + GetReeltimeDraw(); StopMapMusic(); PlayNewMapMusic(MUS_BD_TIME); } -/*static */void sub_81043EC(struct Task *task) +static void ReeltimeAction1(struct Task *task) { s16 r3; gSpriteCoordOffsetX -= 8; @@ -2724,21 +2806,21 @@ s16 sub_8102D5C(s16 a0) task->data[0]++; task->data[3] = 0; } - sub_8102D28(task->data[4] >> 8); + AdvanceReeltimeReel(task->data[4] >> 8); } -/*static */void sub_8104468(struct Task *task) +static void ReeltimeAction2(struct Task *task) { - sub_8102D28(task->data[4] >> 8); + AdvanceReeltimeReel(task->data[4] >> 8); if (++task->data[5] >= 60) { task->data[0]++; - sub_8105578(); - sub_81056F0(); + CreateReelTimeSprites1(); + CreateReelTimeSprite2(); } } -/*static */void sub_8104498(struct Task *task) +static void ReeltimeAction3(struct Task *task) { int r5; u8 sp0[ARRAY_COUNT(gUnknown_085A75C0)]; @@ -2749,12 +2831,14 @@ s16 sub_8102D5C(s16 a0) memcpy(sp4, gUnknown_085A75C4, sizeof(gUnknown_085A75C4)); memcpy(spC, gUnknown_085A75CC, sizeof(gUnknown_085A75CC)); - sub_8102D28(task->data[4] >> 8); + AdvanceReeltimeReel(task->data[4] >> 8); + // gradually slow down the reel task->data[4] -= 4; r5 = 4 - (task->data[4] >> 8); sub_8105688(sp4[r5]); sub_81057E8(spC[r5]); - StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, sp0[r5]); + StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, sp0[r5]); + // once speed goes below 256, go to next ReelTimeAction and keep the speed level if (task->data[4] <= 0x100) { task->data[0]++; @@ -2763,21 +2847,21 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8104548(struct Task *task) +static void ReeltimeAction4(struct Task *task) { - sub_8102D28(task->data[4] >> 8); + AdvanceReeltimeReel(task->data[4] >> 8); if (++task->data[5] >= 80) { task->data[0]++; task->data[5] = 0; sub_81057E8(2); - StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 3); + StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 3); } } -/*static */void sub_8104598(struct Task *task) +static void ReeltimeAction5(struct Task *task) { - sub_8102D28(task->data[4] >> 8); + AdvanceReeltimeReel(task->data[4] >> 8); task->data[4] = (u8)task->data[4] + 0x80; if (++task->data[5] >= 80) { @@ -2786,23 +2870,23 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_81045CC(struct Task *task) +static void ReeltimeAction6(struct Task *task) { - sub_8102D28(task->data[4] >> 8); + AdvanceReeltimeReel(task->data[4] >> 8); task->data[4] = (u8)task->data[4] + 0x40; if (++task->data[5] >= 40) { task->data[5] = 0; - if (sSlotMachine->unk05) + if (sSlotMachine->reelTimeDraw) { - if (sSlotMachine->unk0A <= task->data[6]) + if (sSlotMachine->fairRollsLeft <= task->data[6]) task->data[0]++; } else if (task->data[6] > 3) { task->data[0]++; } - else if (sub_81026DC(task->data[6])) + else if (SkipToReeltimeAction14(task->data[6])) { task->data[0] = 14; } @@ -2810,28 +2894,28 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_810463C(struct Task *task) +static void ReelTimeAction_LandOnOutcome(struct Task *task) { - s16 r5 = sSlotMachine->unk14 % 20; - if (r5) + s16 reeltimePixelOffset = sSlotMachine->reeltimePixelOffset % 20; + if (reeltimePixelOffset) { - r5 = sub_8102D5C(task->data[4] >> 8); + reeltimePixelOffset = AdvanceReeltimeReelToNextTag(task->data[4] >> 8); task->data[4] = (u8)task->data[4] + 0x40; } - else if (sub_8102C48(1) != sSlotMachine->unk05) + else if (GetNearbyReelTimeTag(1) != sSlotMachine->reelTimeDraw) { - sub_8102D28(task->data[4] >> 8); - r5 = sSlotMachine->unk14 % 20; + AdvanceReeltimeReel(task->data[4] >> 8); + reeltimePixelOffset = sSlotMachine->reeltimePixelOffset % 20; task->data[4] = (u8)task->data[4] + 0x40; } - if (r5 == 0 && sub_8102C48(1) == sSlotMachine->unk05) + if (reeltimePixelOffset == 0 && GetNearbyReelTimeTag(1) == sSlotMachine->reelTimeDraw) { - task->data[4] = 0; + task->data[4] = 0; // stop moving task->data[0]++; } } -/*static */void sub_81046C0(struct Task *task) +static void ReeltimeAction8(struct Task *task) { if (++task->data[4] >= 60) { @@ -2839,17 +2923,17 @@ s16 sub_8102D5C(s16 a0) sub_81056C0(); sub_8105804(); task->data[0]++; - if(sSlotMachine->unk05 == 0) + if(sSlotMachine->reelTimeDraw == 0) { task->data[4] = 0xa0; - StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5); + StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5); PlayFanfare(MUS_ME_ZANNEN); } else { task->data[4] = 0xc0; - StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 4); - gSprites[sSlotMachine->unk3F].animCmdIndex = 0; + StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 4); + gSprites[sSlotMachine->reelTimeSprite3F].animCmdIndex = 0; if (sSlotMachine->pikaPower) { sub_8104098(); @@ -2860,13 +2944,13 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8104764(struct Task *task) +static void ReeltimeAction9(struct Task *task) { if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8()) task->data[0]++; } -/*static */void sub_8104794(struct Task *task) +static void ReeltimeAction10(struct Task *task) { s16 r4; gSpriteCoordOffsetX -= 8; @@ -2880,53 +2964,53 @@ s16 sub_8102D5C(s16 a0) task->data[0]++; } -/*static */void sub_81047EC(struct Task *task) +static void ReeltimeAction11(struct Task *task) { - sSlotMachine->unk0B = 0; - sSlotMachine->unk0A = sSlotMachine->unk05; + sSlotMachine->fairRollsUsed = 0; + sSlotMachine->fairRollsLeft = sSlotMachine->reelTimeDraw; gSpriteCoordOffsetX = 0; SetGpuReg(REG_OFFSET_BG1HOFS, 0); - sSlotMachine->unk1A = 8; + sSlotMachine->reelIncrement = 8; sub_810514C(); sub_81054B8(); sub_8105524(); PlayNewMapMusic(sSlotMachine->backupMapMusic); - if (sSlotMachine->unk0A == 0) + if (sSlotMachine->fairRollsLeft == 0) { - DestroyTask(FindTaskIdByFunc(sub_810434C)); + DestroyTask(FindTaskIdByFunc(RunReeltimeActions)); } else { sub_8104CAC(4); - task->data[1] = dp15_jump_random_unknown(); + task->data[1] = SlowReelSpeed(); task->data[2] = 0; task->data[3] = 0; task->data[0]++; } } -/*static */void sub_8104860(struct Task *task) +static void ReeltimeAction12(struct Task *task) { - if (sSlotMachine->unk1A == task->data[1]) + if (sSlotMachine->reelIncrement == task->data[1]) task->data[0]++; - else if (sSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0) - sSlotMachine->unk1A >>= 1; + else if (sSlotMachine->reelPixelOffsets[0] % 24 == 0 && (++task->data[2]& 0x07) == 0) + sSlotMachine->reelIncrement >>= 1; } -/*static */void sub_81048A8(struct Task *task) +static void ReeltimeAction13(struct Task *task) { if (sub_8104E18()) - DestroyTask(FindTaskIdByFunc(sub_810434C)); + DestroyTask(FindTaskIdByFunc(RunReeltimeActions)); } -/*static */void sub_81048CC(struct Task *task) +static void ReeltimeAction14(struct Task *task) { sub_81054B8(); sub_81056C0(); sub_8105804(); sub_8105854(); gSprites[sSlotMachine->unk4E[0]].invisible = TRUE; - StartSpriteAnimIfDifferent(gSprites + sSlotMachine->unk3F, 5); + StartSpriteAnimIfDifferent(gSprites + sSlotMachine->reelTimeSprite3F, 5); task->data[0]++; task->data[4] = 4; task->data[5] = 0; @@ -2935,7 +3019,7 @@ s16 sub_8102D5C(s16 a0) PlaySE(SE_W153); } -/*static */void sub_8104940(struct Task *task) +static void ReeltimeAction15(struct Task *task) { gSpriteCoordOffsetY = task->data[4]; SetGpuReg(REG_OFFSET_BG1VOFS, task->data[4]); @@ -2955,7 +3039,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_81049C8(struct Task *task) +static void ReeltimeAction16(struct Task *task) { gSpriteCoordOffsetY = 0; SetGpuReg(REG_OFFSET_BG1VOFS, 0); @@ -2966,7 +3050,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_81049F8(struct Task *task) +static void ReeltimeAction17(struct Task *task) { gSpriteCoordOffsetX = 0; SetGpuReg(REG_OFFSET_BG1HOFS, 0); @@ -2975,20 +3059,20 @@ s16 sub_8102D5C(s16 a0) sub_8105554(); sub_8105524(); sub_81059B8(); - DestroyTask(FindTaskIdByFunc(sub_810434C)); + DestroyTask(FindTaskIdByFunc(RunReeltimeActions)); } -/*static */void sub_8104A40(s16 a0, s16 a1) +static void sub_8104A40(s16 a0, s16 a1) { s16 i; for (i = 4; i < 15; i++) { - LoadBgTilemap(1, &sReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0); + LoadBgTilemap(1, &gReelTimeWindowTilemap[a1 + (i - 4) * 20], 2, 32 * i + a0); } } -/*static */void sub_8104A88(s16 a0) +static void sub_8104A88(s16 a0) { u8 i; @@ -2998,61 +3082,61 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8104AB8(u8 a0) +static void OpenInfoBox(u8 seemsUnused) { - u8 taskId = CreateTask(sub_8104B0C, 1); - gTasks[taskId].data[1] = a0; - sub_8104B0C(taskId); + u8 taskId = CreateTask(RunInfoBoxActions, 1); + gTasks[taskId].data[1] = seemsUnused; + RunInfoBoxActions(taskId); } -/*static */bool8 sub_8104AEC(void) +static bool8 IsInfoBoxClosed(void) { - if (FindTaskIdByFunc(sub_8104B0C) == 0xFF) + if (FindTaskIdByFunc(RunInfoBoxActions) == 0xFF) return TRUE; else return FALSE; } -/*static */void sub_8104B0C(u8 taskId) +static void RunInfoBoxActions(u8 taskId) { - gUnknown_083ECC30[gTasks[taskId].data[0]](gTasks + taskId); + InfoBoxActions[gTasks[taskId].data[0]](&gTasks[taskId]); } -/*static */void sub_8104B3C(struct Task *task) +static void InfoBox_FadeIn(struct Task *task) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); task->data[0]++; } -/*static */void sub_8104B60(struct Task *task) +static void InfoBox_WaitForFade(struct Task *task) { if (!gPaletteFade.active) task->data[0]++; } -/*static */void sub_8104B80(struct Task *task) +static void InfoBox_8104B80(struct Task *task) { sub_8104DA4(); sub_81065DC(); AddWindow(&gUnknown_085A7444); PutWindowTilemap(1); - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); task->data[0]++; } -/*static */void sub_812DD78(struct Task *task) +static void InfoBox_AddText(struct Task *task) { - AddTextPrinterParameterized3(1, 1, 2, 5, gUnknown_085A744C, 0, gText_ReelTimeHelp); + AddTextPrinterParameterized3(1, 1, 2, 5, gColors_ReeltimeHelp, 0, gText_ReelTimeHelp); CopyWindowToVram(1, 3); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); task->data[0]++; } -/*static */void sub_8104BC8(struct Task *task) +static void InfoBox_AwaitPlayerInput(struct Task *task) { if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON)) { - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); ClearWindowTilemap(1); CopyWindowToVram(1, 1); RemoveWindow(1); @@ -3061,51 +3145,52 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_812DE14(struct Task *task) +static void InfoBox_812DE14(struct Task *task) { sub_812F968(); ShowBg(3); task->data[0]++; } -/*static */void sub_812DE30(struct Task *task) +static void InfoBox_812DE30(struct Task *task) { sub_8104CAC(task->data[1]); task->data[0]++; } -/*static */void sub_8104BFC(struct Task *task) +static void InfoBox_8104BFC(struct Task *task) { sub_810423C(sSlotMachine->pikaPower); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); task->data[0]++; } -/*static */void sub_8104C44(struct Task *task) +static void InfoBox_FreeTask(struct Task *task) { - DestroyTask(FindTaskIdByFunc(sub_8104B0C)); + DestroyTask(FindTaskIdByFunc(RunInfoBoxActions)); } -/*static */void sub_8104C5C(void) +static void sub_8104C5C(void) { u8 i; struct Task *task; i = CreateTask(sub_8104E74_, 3); - sSlotMachine->unk3D = i; - task = gTasks + i; + sSlotMachine->unkTaskPointer3D = i; + task = &gTasks[i]; task->data[1] = -1; for (i = 4; i < 16; i++) task->data[i] = MAX_SPRITES; } -/*static */void sub_8104CAC(u8 arg0) +// possibly initialize each wheel +static void sub_8104CAC(u8 arg0) { u8 i; struct Task *task; sub_8104DA4(); - task = gTasks + sSlotMachine->unk3D; + task = &gTasks[sSlotMachine->unkTaskPointer3D]; task->data[1] = arg0; for (i = 0; gUnknown_083ED048[arg0][i].unk00 != 0xFF; i++) @@ -3120,10 +3205,10 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4) +static void sub_8104D30(u8 a0, SpriteCallback a1, s16 a2, s16 a3, s16 a4) { u8 i; - struct Task *task = gTasks + sSlotMachine->unk3D; + struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D]; for (i = 4; i < 16; i++) { if (task->data[i] == MAX_SPRITES) @@ -3134,26 +3219,26 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8104DA4(void) +static void sub_8104DA4(void) { u8 i; - struct Task *task = gTasks + sSlotMachine->unk3D; + struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D]; if ((u16)task->data[1] != 0xFFFF) gUnknown_083ED064[task->data[1]](); for (i = 4; i < 16; i++) { if (task->data[i] != MAX_SPRITES) { - DestroySprite(gSprites + task->data[i]); + DestroySprite(&gSprites[task->data[i]]); task->data[i] = MAX_SPRITES; } } } -/*static */bool8 sub_8104E18(void) +static bool8 sub_8104E18(void) { u8 i; - struct Task *task = gTasks + sSlotMachine->unk3D; + struct Task *task = &gTasks[sSlotMachine->unkTaskPointer3D]; for (i = 4; i < 16; i++) { if (task->data[i] != MAX_SPRITES) @@ -3165,16 +3250,16 @@ s16 sub_8102D5C(s16 a0) return TRUE; } -/*static */void sub_8104E74_(u8 taskId) +static void sub_8104E74_(u8 taskId) { - gUnknown_083ECC54[gTasks[taskId].data[0]](gTasks + taskId); + gUnknown_083ECC54[gTasks[taskId].data[0]](&gTasks[taskId]); } -/*static */void nullsub_69(struct Task *task) +static void nullsub_69(struct Task *task) { } -/*static */void sub_8104EA8(void) +static void sub_8104EA8(void) { s16 i; s16 j; @@ -3194,14 +3279,14 @@ s16 sub_8102D5C(s16 a0) /*static */void sub_8104F18(struct Sprite *sprite) { - sprite->data[2] = sSlotMachine->unk1C[sprite->data[0]] + sprite->data[1]; + sprite->data[2] = sSlotMachine->reelPixelOffsets[sprite->data[0]] + sprite->data[1]; sprite->data[2] %= 120; - sprite->pos1.y = sSlotMachine->unk22[sprite->data[0]] + 28 + sprite->data[2]; - sprite->sheetTileStart = GetSpriteTileStartByTag(GetTagOfReelSymbolOnScreenAtPos(sprite->data[0], sprite->data[2] / 24)); + sprite->pos1.y = sSlotMachine->reelPixelOffsetsWhileStopping[sprite->data[0]] + 28 + sprite->data[2]; + sprite->sheetTileStart = GetSpriteTileStartByTag(GetNearbyTag_Quantized(sprite->data[0], sprite->data[2] / 24)); SetSpriteSheetFrameTileNum(sprite); } -/*static */void sub_8104F8C(void) +static void sub_8104F8C(void) { s16 i; s16 x; @@ -3212,7 +3297,7 @@ s16 sub_8102D5C(s16 a0) sub_8104FF4(x, 23, 1, i); } -/*static */void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3) +static void sub_8104FF4(s16 x, s16 y, u8 a2, s16 a3) { struct Sprite *sprite = gSprites + CreateSprite(&gSpriteTemplate_83ED42C, x, y, 13); sprite->oam.priority = 2; @@ -3238,44 +3323,44 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_81050C4(void) +static void sub_81050C4(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED444, 0x58, 0x48, 15); gSprites[spriteId].oam.priority = 3; SetSubspriteTables(gSprites + spriteId, gSubspriteTables_83ED704); } -/*static */void sub_8105100(void) +static void sub_8105100(void) { struct SpriteTemplate spriteTemplate; u8 spriteId; - if (gUnknown_0203AAE4 == NULL) - gUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5); - - gUnknown_0203AAE4[0].data = gUnknown_0203AAD8 + (0 * 0x800); - gUnknown_0203AAE4[0].size = 0x800; - gUnknown_0203AAE4[1].data = gUnknown_0203AAD8 + (1 * 0x800); - gUnknown_0203AAE4[1].size = 0x800; - gUnknown_0203AAE4[2].data = gUnknown_0203AAD8 + (2 * 0x800); - gUnknown_0203AAE4[2].size = 0x800; - gUnknown_0203AAE4[3].data = gUnknown_0203AAD8 + (3 * 0x800); - gUnknown_0203AAE4[3].size = 0x800; - gUnknown_0203AAE4[4].data = gUnknown_0203AAD8 + (4 * 0x800); - gUnknown_0203AAE4[4].size = 0x800; + if (sUnknown_0203AAE4 == NULL) + sUnknown_0203AAE4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5); + + sUnknown_0203AAE4[0].data = sUnknown_0203AAD8 + (0 * 0x800); + sUnknown_0203AAE4[0].size = 0x800; + sUnknown_0203AAE4[1].data = sUnknown_0203AAD8 + (1 * 0x800); + sUnknown_0203AAE4[1].size = 0x800; + sUnknown_0203AAE4[2].data = sUnknown_0203AAD8 + (2 * 0x800); + sUnknown_0203AAE4[2].size = 0x800; + sUnknown_0203AAE4[3].data = sUnknown_0203AAD8 + (3 * 0x800); + sUnknown_0203AAE4[3].size = 0x800; + sUnknown_0203AAE4[4].data = sUnknown_0203AAD8 + (4 * 0x800); + sUnknown_0203AAE4[4].size = 0x800; spriteTemplate = gSpriteTemplate_83ED45C; - spriteTemplate.images = gUnknown_0203AAE4; + spriteTemplate.images = sUnknown_0203AAE4; spriteId = CreateSprite(&spriteTemplate, 280, 80, 1); gSprites[spriteId].oam.priority = 1; gSprites[spriteId].coordOffsetEnabled = TRUE; - sSlotMachine->unk3F = spriteId; + sSlotMachine->reelTimeSprite3F = spriteId; } -/*static */void sub_810514C(void) +static void sub_810514C(void) { - DestroySprite(gSprites + sSlotMachine->unk3F); - if (gUnknown_0203AAE4 != NULL) - FREE_AND_SET_NULL(gUnknown_0203AAE4); + DestroySprite(gSprites + sSlotMachine->reelTimeSprite3F); + if (sUnknown_0203AAE4 != NULL) + FREE_AND_SET_NULL(sUnknown_0203AAE4); } /*static */void sub_8105170(struct Sprite *sprite) @@ -3289,19 +3374,19 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_81051C0(void) +static void sub_81051C0(void) { struct SpriteTemplate spriteTemplate; u8 spriteId; struct Sprite *sprite; - if (gUnknown_0203AAE8 == NULL) - gUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + if (sUnknown_0203AAE8 == NULL) + sUnknown_0203AAE8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AAE8[0].data = gUnknown_0203AAD8 + 0x2800; - gUnknown_0203AAE8[0].size = 0x300; + sUnknown_0203AAE8[0].data = sUnknown_0203AAD8 + 0x2800; + sUnknown_0203AAE8[0].size = 0x300; spriteTemplate = gSpriteTemplate_83ED474; - spriteTemplate.images = gUnknown_0203AAE8; + spriteTemplate.images = sUnknown_0203AAE8; spriteId = CreateSprite(&spriteTemplate, 368, 52, 7); sprite = &gSprites[spriteId]; sprite->oam.priority = 1; @@ -3309,13 +3394,13 @@ s16 sub_8102D5C(s16 a0) SetSubspriteTables(sprite, gSubspriteTables_83ED73C); sSlotMachine->unk49[0] = spriteId; - if (gUnknown_0203AAEC == NULL) - gUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + if (sUnknown_0203AAEC == NULL) + sUnknown_0203AAEC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AAEC[0].data = gUnknown_0203AAD8 + 0x2800 + 0x300; - gUnknown_0203AAEC[0].size = 0x500; + sUnknown_0203AAEC[0].data = sUnknown_0203AAD8 + 0x2800 + 0x300; + sUnknown_0203AAEC[0].size = 0x500; spriteTemplate = gSpriteTemplate_83ED48C; - spriteTemplate.images = gUnknown_0203AAEC; + spriteTemplate.images = sUnknown_0203AAEC; spriteId = CreateSprite(&spriteTemplate, 368, 84, 7); sprite = &gSprites[spriteId]; sprite->oam.priority = 1; @@ -3324,19 +3409,19 @@ s16 sub_8102D5C(s16 a0) sSlotMachine->unk49[1] = spriteId; } -/*static */void sub_8105284_(void) +static void sub_8105284_(void) { struct SpriteTemplate spriteTemplate; u8 spriteId; struct Sprite *sprite; - if (gUnknown_0203AAF0 == NULL) - gUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + if (sUnknown_0203AAF0 == NULL) + sUnknown_0203AAF0 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AAF0[0].data = gUnknown_0203AAD8 + 0x3000; - gUnknown_0203AAF0[0].size = 0x600; + sUnknown_0203AAF0[0].data = sUnknown_0203AAD8 + 0x3000; + sUnknown_0203AAF0[0].size = 0x600; spriteTemplate = gSpriteTemplate_83ED4A4; - spriteTemplate.images = gUnknown_0203AAF0; + spriteTemplate.images = sUnknown_0203AAF0; spriteId = CreateSprite(&spriteTemplate, 0xa8 - gSpriteCoordOffsetX, 0x50, 7); sprite = &gSprites[spriteId]; sprite->oam.priority = 1; @@ -3345,7 +3430,7 @@ s16 sub_8102D5C(s16 a0) sSlotMachine->unk42 = spriteId; } -/*static */void sub_81052EC(void) +static void sub_81052EC(void) { u8 i; s16 r5; @@ -3362,13 +3447,13 @@ s16 sub_8102D5C(s16 a0) /*static */void sub_810535C(struct Sprite *sprite) { - s16 r0 = (u16)(sSlotMachine->unk14 + sprite->data[7]); + s16 r0 = (u16)(sSlotMachine->reeltimePixelOffset + sprite->data[7]); r0 %= 40; sprite->pos1.y = r0 + 59; - StartSpriteAnimIfDifferent(sprite, sub_8102C48(r0 / 20)); + StartSpriteAnimIfDifferent(sprite, GetNearbyReelTimeTag(r0 / 20)); } -/*static */void sub_81053A0(void) +static void sub_81053A0(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9); struct Sprite *sprite = &gSprites[spriteId]; @@ -3385,7 +3470,7 @@ s16 sub_8102D5C(s16 a0) sSlotMachine->unk4E[1] = spriteId; } -/*static */void sub_810545C(void) +static void sub_810545C(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11); struct Sprite *sprite = &gSprites[spriteId]; @@ -3395,7 +3480,7 @@ s16 sub_8102D5C(s16 a0) sSlotMachine->unk40 = spriteId; } -/*static */void sub_81054B8(void) +static void sub_81054B8(void) { u8 i; @@ -3403,16 +3488,16 @@ s16 sub_8102D5C(s16 a0) for (i = 0; i < 2; i++) DestroySprite(&gSprites[sSlotMachine->unk49[i]]); - if (gUnknown_0203AAE8 != NULL) - FREE_AND_SET_NULL(gUnknown_0203AAE8); - if (gUnknown_0203AAEC != NULL) - FREE_AND_SET_NULL(gUnknown_0203AAEC); + if (sUnknown_0203AAE8 != NULL) + FREE_AND_SET_NULL(sUnknown_0203AAE8); + if (sUnknown_0203AAEC != NULL) + FREE_AND_SET_NULL(sUnknown_0203AAEC); for (i = 0; i < 3; i++) DestroySprite(&gSprites[sSlotMachine->unk4B[i]]); } -/*static */void sub_8105524(void) +static void sub_8105524(void) { u8 i; @@ -3420,20 +3505,21 @@ s16 sub_8102D5C(s16 a0) DestroySprite(&gSprites[sSlotMachine->unk4E[i]]); } -/*static */void sub_8105554(void) +static void sub_8105554(void) { DestroySprite(&gSprites[sSlotMachine->unk42]); - if (gUnknown_0203AAF0 != NULL) - FREE_AND_SET_NULL(gUnknown_0203AAF0); + if (sUnknown_0203AAF0 != NULL) + FREE_AND_SET_NULL(sUnknown_0203AAF0); } -/*static */void sub_8105578(void) +// TODO: check if this is true +static void CreateReelTimeSprites1(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5); struct Sprite *sprite = &gSprites[spriteId]; sprite->oam.priority = 1; sprite->hFlip = TRUE; - sSlotMachine->unk50[0] = spriteId; + sSlotMachine->reelTimeSprites1[0] = spriteId; sprite->data[0] = 8; sprite->data[1] = -1; sprite->data[2] = -1; @@ -3442,7 +3528,7 @@ s16 sub_8102D5C(s16 a0) spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5); sprite = &gSprites[spriteId]; sprite->oam.priority = 1; - sSlotMachine->unk50[1] = spriteId; + sSlotMachine->reelTimeSprites1[1] = spriteId; sprite->data[1] = 1; sprite->data[2] = -1; sprite->data[7] = 0x20; @@ -3470,21 +3556,21 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8105688(s16 a0) +static void sub_8105688(s16 a0) { - gSprites[sSlotMachine->unk50[0]].data[7] = a0; - gSprites[sSlotMachine->unk50[1]].data[7] = a0; + gSprites[sSlotMachine->reelTimeSprites1[0]].data[7] = a0; + gSprites[sSlotMachine->reelTimeSprites1[1]].data[7] = a0; } -/*static */void sub_81056C0(void) +static void sub_81056C0(void) { u8 i; for (i = 0; i < 2; i++) - DestroySprite(&gSprites[sSlotMachine->unk50[i]]); + DestroySprite(&gSprites[sSlotMachine->reelTimeSprites1[i]]); } -/*static */void sub_81056F0(void) +static void CreateReelTimeSprite2(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x48, 0x50, 3); gSprites[spriteId].oam.priority = 1; @@ -3492,12 +3578,12 @@ s16 sub_8102D5C(s16 a0) gSprites[spriteId].data[5] = 0; gSprites[spriteId].data[6] = 16; gSprites[spriteId].data[7] = 8; - sSlotMachine->unk52[0] = spriteId; + sSlotMachine->reelTimeSprites2[0] = spriteId; spriteId = CreateSprite(&gSpriteTemplate_83ED51C, 0x68, 0x50, 3); gSprites[spriteId].oam.priority = 1; gSprites[spriteId].hFlip = TRUE; - sSlotMachine->unk52[1] = spriteId; + sSlotMachine->reelTimeSprites2[1] = spriteId; } /*static */void sub_8105784(struct Sprite *sprite) @@ -3512,20 +3598,20 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_81057E8(s16 a0) +static void sub_81057E8(s16 a0) { - gSprites[sSlotMachine->unk52[0]].data[7] = a0; + gSprites[sSlotMachine->reelTimeSprites2[0]].data[7] = a0; } -/*static */void sub_8105804(void) +static void sub_8105804(void) { u8 i; MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0); for (i = 0; i < 2; i++) - DestroySprite(&gSprites[sSlotMachine->unk52[i]]); + DestroySprite(&gSprites[sSlotMachine->reelTimeSprites2[i]]); } -/*static */void sub_8105854(void) +static void sub_8105854(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED534, 0xa8, 0x50, 6); gSprites[spriteId].oam.priority = 1; @@ -3537,12 +3623,12 @@ s16 sub_8102D5C(s16 a0) sprite->pos2.y = gSpriteCoordOffsetY; } -/*static */void sub_81058A0(void) +static void sub_81058A0(void) { DestroySprite(&gSprites[sSlotMachine->unk41]); } -/*static */void sub_81058C4(void) +static void sub_81058C4(void) { u8 i; u16 sp[] = {0x0, 0x40, 0x80, 0xC0}; @@ -3575,7 +3661,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_81059B8(void) +static void sub_81059B8(void) { u8 i; for (i = 0; i < 4; i++) @@ -3584,7 +3670,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_81059E8(void) +static void sub_81059E8(void) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8); struct Sprite *sprite = &gSprites[spriteId]; @@ -3621,19 +3707,19 @@ s16 sub_8102D5C(s16 a0) sprite->pos2.y -= (sprite->data[1] >> 8); } -/*static */u8 sub_8105ACC(void) +static u8 sub_8105ACC(void) { return gSprites[sSlotMachine->unk43].data[7]; } -/*static */void sub_8105AEC(void) +static void sub_8105AEC(void) { struct Sprite *sprite = &gSprites[sSlotMachine->unk43]; FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); } -/*static */u8 sub_8105B1C(s16 x, s16 y) +static u8 sub_8105B1C(s16 x, s16 y) { u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12); struct Sprite *sprite = &gSprites[spriteId]; @@ -3649,19 +3735,19 @@ s16 sub_8102D5C(s16 a0) sprite->data[7] = 1; } -/*static */void sub_8105B88(u8 spriteId) +static void sub_8105B88(u8 spriteId) { struct Sprite *sprite = &gSprites[spriteId]; FreeOamMatrix(sprite->oam.matrixNum); DestroySprite(sprite); } -/*static */u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2) +static u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2) { return sub_8105BF8(templateIdx, gUnknown_083ECF0C[cbAndCoordsIdx], gUnknown_083ECE7E[cbAndCoordsIdx][0], gUnknown_083ECE7E[cbAndCoordsIdx][1], a2); } -/*static */u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4) +static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4) { struct SpriteTemplate spriteTemplate; u8 spriteId; @@ -3680,12 +3766,12 @@ s16 sub_8102D5C(s16 a0) return spriteId; } -/*static */void sub_8105C64(struct Sprite *sprite) +static void sub_8105C64(struct Sprite *sprite) { sprite->data[7] = 0; } -/*static */void sub_8105C6C(struct Sprite *sprite) +static void sub_8105C6C(struct Sprite *sprite) { s16 sp0[] = {4, -4, 4, -4}; s16 sp8[] = {4, 4, -4, -4}; @@ -3704,26 +3790,26 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8105CF0(struct Sprite *sprite) +static void sub_8105CF0(struct Sprite *sprite) { sprite->hFlip = TRUE; sub_8105C6C(sprite); } -/*static */void sub_8105D08(struct Sprite *sprite) +static void sub_8105D08(struct Sprite *sprite) { sprite->vFlip = TRUE; sub_8105C6C(sprite); } -/*static */void sub_8105D20(struct Sprite *sprite) +static void sub_8105D20(struct Sprite *sprite) { sprite->hFlip = TRUE; sprite->vFlip = TRUE; sub_8105C6C(sprite); } -/*static */void sub_8105D3C(struct Sprite *sprite) +static void sub_8105D3C(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3750,7 +3836,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8105DA4(struct Sprite *sprite) +static void sub_8105DA4(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3777,12 +3863,12 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8105E08(struct Sprite *sprite) +static void sub_8105E08(struct Sprite *sprite) { switch (sprite->data[0]) { case 0: - StartSpriteAnim(sprite, sSlotMachine->unk0A - 1); + StartSpriteAnim(sprite, sSlotMachine->fairRollsLeft - 1); sprite->data[0]++; // fallthrough case 1: @@ -3815,7 +3901,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8105EB4(struct Sprite *sprite) +static void sub_8105EB4(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3855,7 +3941,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8105F54(struct Sprite *sprite) +static void sub_8105F54(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3875,7 +3961,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8105F9C(struct Sprite *sprite) +static void sub_8105F9C(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -3909,7 +3995,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_8106058(struct Sprite *sprite) +static void sub_8106058(struct Sprite *sprite) { if (sprite->data[1] < 3) { @@ -3933,7 +4019,7 @@ s16 sub_8102D5C(s16 a0) sprite->data[7] = 0; } -/*static */void sub_81060FC(struct Sprite *sprite) +static void sub_81060FC(struct Sprite *sprite) { s16 sp00[] = {0, -40, 0, 0, 48, 0, 24, 0}; s16 sp10[] = {-32, 0, -32, -48, 0, -48, 0, -48}; @@ -3968,7 +4054,7 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void sub_81061C8(struct Sprite *sprite) +static void sub_81061C8(struct Sprite *sprite) { s16 sp0[] = {160, 192, 224, 104, 80, 64, 48, 24}; @@ -3983,7 +4069,7 @@ s16 sub_8102D5C(s16 a0) sprite->data[1]--; } -/*static */void sub_8106230(struct Sprite *sprite) +static void sub_8106230(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -4037,21 +4123,21 @@ s16 sub_8102D5C(s16 a0) } } -/*static */void nullsub_70(void) +static void nullsub_70(void) { } -/*static */void sub_8106364(void) +static void sub_8106364(void) { SetGpuReg(REG_OFFSET_MOSAIC, 0); } -/*static */void sub_8106370(void) +static void sub_8106370(void) { LoadPalette(gUnknown_083EDE20, (IndexOfSpritePaletteTag(6) << 4) + 0x100, 0x20); } -/*static */void sub_810639C(void) +static void sub_810639C(void) { sSlotMachine->win0h = 0xf0; sSlotMachine->win0v = 0xa0; @@ -4059,47 +4145,47 @@ s16 sub_8102D5C(s16 a0) sSlotMachine->winOut = 0x3f; } -/*static */void sub_81063C0(void) +static void sub_81063C0(void) { u8 i; sub_8106404(); - gUnknown_0203AAD4 = Alloc(0x3200); - LZDecompressWram(gSlotMachineReelTime_Gfx, gUnknown_0203AAD4); - gUnknown_0203AAD8 = Alloc(0x3600); - LZDecompressWram(sReelTimeGfx, gUnknown_0203AAD8); - gUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * 22); + sUnknown_0203AAD4 = Alloc(0x3200); + LZDecompressWram(gSlotMachineReelTime_Gfx, sUnknown_0203AAD4); + sUnknown_0203AAD8 = Alloc(0x3600); + LZDecompressWram(gReelTimeGfx, sUnknown_0203AAD8); + sUnknown_0203AB30 = AllocZeroed(sizeof(struct SpriteSheet) * 22); for (i = 0; i < 22; i++) { - gUnknown_0203AB30[i].data = sSlotMachineSpriteSheets[i].data; - gUnknown_0203AB30[i].size = sSlotMachineSpriteSheets[i].size; - gUnknown_0203AB30[i].tag = sSlotMachineSpriteSheets[i].tag; + sUnknown_0203AB30[i].data = gSlotMachineSpriteSheets[i].data; + sUnknown_0203AB30[i].size = gSlotMachineSpriteSheets[i].size; + sUnknown_0203AB30[i].tag = gSlotMachineSpriteSheets[i].tag; } - gUnknown_0203AB30[17].data = gUnknown_0203AAD4 + 0xA00; - gUnknown_0203AB30[18].data = gUnknown_0203AAD4 + 0x1400; - gUnknown_0203AB30[19].data = gUnknown_0203AAD4 + 0x1600; - gUnknown_0203AB30[20].data = gUnknown_0203AAD4 + 0x1900; - LoadSpriteSheets(gUnknown_0203AB30); + sUnknown_0203AB30[17].data = sUnknown_0203AAD4 + 0xA00; + sUnknown_0203AB30[18].data = sUnknown_0203AAD4 + 0x1400; + sUnknown_0203AB30[19].data = sUnknown_0203AAD4 + 0x1600; + sUnknown_0203AB30[20].data = sUnknown_0203AAD4 + 0x1900; + LoadSpriteSheets(sUnknown_0203AB30); LoadSpritePalettes(gSlotMachineSpritePalettes); } -/*static */void sub_8106404(void) +static void sub_8106404(void) { u8 *dest; u8 i, j; - gUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet)); - gUnknown_0203AAE0 = AllocZeroed(0x2000); - dest = gUnknown_0203AAE0; + sUnknown_0203AB2C = AllocZeroed(sizeof(struct SpriteSheet)); + sUnknown_0203AAE0 = AllocZeroed(0x2000); + dest = sUnknown_0203AAE0; for (i = 0; i < 0x40; i++) { for (j = 0; j < 0x20; j++, dest++) *dest = gUnknown_083EDCDC[j]; } - gUnknown_0203AB2C->data = gUnknown_0203AAE0; - gUnknown_0203AB2C->size = 0x800; - gUnknown_0203AB2C->tag = 0x11; - LoadSpriteSheet(gUnknown_0203AB2C); + sUnknown_0203AB2C->data = sUnknown_0203AAE0; + sUnknown_0203AB2C->size = 0x800; + sUnknown_0203AB2C->tag = 0x11; + LoadSpriteSheet(sUnknown_0203AB2C); } extern const u32 gSlotMachineMenu_Gfx[]; @@ -4107,27 +4193,27 @@ extern const u16 gSlotMachineMenu_Tilemap[]; extern const u16 gUnknown_08DCEC70[]; extern const u16 gSlotMachineMenu_Pal[]; -/*static */void sub_8106448(void) +static void sub_8106448(void) { - gUnknown_0203AAC8 = Alloc(0x2200); - LZDecompressWram(gSlotMachineMenu_Gfx, gUnknown_0203AAC8); - LoadBgTiles(2, gUnknown_0203AAC8, 0x2200, 0); + sUnknown_0203AAC8 = Alloc(0x2200); + LZDecompressWram(gSlotMachineMenu_Gfx, sUnknown_0203AAC8); + LoadBgTiles(2, sUnknown_0203AAC8, 0x2200, 0); LoadPalette(gSlotMachineMenu_Pal, 0, 160); LoadPalette(gPalette_83EDE24, 208, 32); } -/*static */void sub_81064B8(void) +static void sub_81064B8(void) { sub_812F968(); LoadSlotMachineWheelOverlay(); } -/*static */void sub_812F968(void) +static void sub_812F968(void) { LoadBgTilemap(2, gSlotMachineMenu_Tilemap, 0x500, 0); } -/*static */void LoadSlotMachineWheelOverlay(void) +static void LoadSlotMachineWheelOverlay(void) { s16 x, y, dx; @@ -4135,143 +4221,143 @@ extern const u16 gSlotMachineMenu_Pal[]; { for (dx = 0; dx < 4; dx++) { - LoadBgTilemap(3, gUnknown_0203AAD0, 2, x + dx + 5 * 32); - LoadBgTilemap(3, gUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32); - LoadBgTilemap(3, gUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32); - LoadBgTilemap(3, gUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32); + LoadBgTilemap(3, sUnknown_0203AAD0, 2, x + dx + 5 * 32); + LoadBgTilemap(3, sUnknown_0203AAD0 + 1, 2, x + dx + 13 * 32); + LoadBgTilemap(3, sUnknown_0203AAD0 + 2, 2, x + dx + 6 * 32); + LoadBgTilemap(3, sUnknown_0203AAD0 + 3, 2, x + dx + 12 * 32); } - LoadBgTilemap(3, gUnknown_0203AAD0 + 4, 2, x + 6 * 32); - LoadBgTilemap(3, gUnknown_0203AAD0 + 5, 2, x + 12 * 32); + LoadBgTilemap(3, sUnknown_0203AAD0 + 4, 2, x + 6 * 32); + LoadBgTilemap(3, sUnknown_0203AAD0 + 5, 2, x + 12 * 32); for (y = 7; y <= 11; y++) - LoadBgTilemap(3, gUnknown_0203AAD0 + 6, 2, x + y * 32); + LoadBgTilemap(3, sUnknown_0203AAD0 + 6, 2, x + y * 32); } } -/*static */void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) +static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) { - gUnknown_0203AADC[0] = arg1; - gUnknown_0203AADC[1] = arg2; - gUnknown_0203AADC[2] = arg3; - gUnknown_0203AADC[3] = arg4; + sUnknown_0203AADC[0] = arg1; + sUnknown_0203AADC[1] = arg2; + sUnknown_0203AADC[2] = arg3; + sUnknown_0203AADC[3] = arg4; - LoadBgTilemap(2, gUnknown_0203AADC, 2, 15 * 32 + arg0); - LoadBgTilemap(2, gUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0); - LoadBgTilemap(2, gUnknown_0203AADC + 2, 2, 16 * 32 + arg0); - LoadBgTilemap(2, gUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0); + LoadBgTilemap(2, sUnknown_0203AADC, 2, 15 * 32 + arg0); + LoadBgTilemap(2, sUnknown_0203AADC + 1, 2, 15 * 32 + 1 + arg0); + LoadBgTilemap(2, sUnknown_0203AADC + 2, 2, 16 * 32 + arg0); + LoadBgTilemap(2, sUnknown_0203AADC + 3, 2, 16 * 32 + 1 + arg0); } -/*static */void sub_81065DC(void) +static void sub_81065DC(void) { LoadBgTilemap(2, gUnknown_08DCEC70, 0x500, 0); HideBg(3); } -/*static */void SlotMachineSetup_9_0(void) -{ - gUnknown_03001188[0] = gUnknown_0203AAF4; - gUnknown_03001188[1] = gUnknown_0203AAF8; - gUnknown_03001188[2] = gUnknown_0203AAFC; - gUnknown_03001188[3] = gUnknown_0203AB04; - gUnknown_03001188[4] = gUnknown_0203AB08; - gUnknown_03001188[5] = gUnknown_0203AB18; - gUnknown_03001188[6] = gUnknown_0203AB1C; - gUnknown_03001188[7] = gUnknown_0203AB20; - gUnknown_03001188[8] = gUnknown_0203AB24; - gUnknown_03001188[9] = gUnknown_0203AB28; - gUnknown_03001188[10] = gUnknown_0203AB00; - gUnknown_03001188[11] = gUnknown_0203AB00; - gUnknown_03001188[12] = gUnknown_0203AB00; - gUnknown_03001188[13] = gUnknown_0203AB00; - gUnknown_03001188[14] = gUnknown_0203AB0C; - gUnknown_03001188[15] = gUnknown_0203AB0C; - gUnknown_03001188[16] = gUnknown_0203AB0C; - gUnknown_03001188[17] = gUnknown_0203AB0C; - gUnknown_03001188[18] = gUnknown_0203AB0C; - gUnknown_03001188[19] = gUnknown_0203AB10; - gUnknown_03001188[20] = gUnknown_0203AB10; - gUnknown_03001188[21] = gUnknown_0203AB10; - gUnknown_03001188[22] = gUnknown_0203AB14; - gUnknown_03001188[23] = gUnknown_0203AB14; - gUnknown_03001188[24] = gUnknown_0203AB14; +static void SlotMachineSetup_9_0(void) +{ + gUnknown_03001188[0] = sUnknown_0203AAF4; + gUnknown_03001188[1] = sUnknown_0203AAF8; + gUnknown_03001188[2] = sUnknown_0203AAFC; + gUnknown_03001188[3] = sUnknown_0203AB04; + gUnknown_03001188[4] = sUnknown_0203AB08; + gUnknown_03001188[5] = sUnknown_0203AB18; + gUnknown_03001188[6] = sUnknown_0203AB1C; + gUnknown_03001188[7] = sUnknown_0203AB20; + gUnknown_03001188[8] = sUnknown_0203AB24; + gUnknown_03001188[9] = sUnknown_0203AB28; + gUnknown_03001188[10] = sUnknown_0203AB00; + gUnknown_03001188[11] = sUnknown_0203AB00; + gUnknown_03001188[12] = sUnknown_0203AB00; + gUnknown_03001188[13] = sUnknown_0203AB00; + gUnknown_03001188[14] = sUnknown_0203AB0C; + gUnknown_03001188[15] = sUnknown_0203AB0C; + gUnknown_03001188[16] = sUnknown_0203AB0C; + gUnknown_03001188[17] = sUnknown_0203AB0C; + gUnknown_03001188[18] = sUnknown_0203AB0C; + gUnknown_03001188[19] = sUnknown_0203AB10; + gUnknown_03001188[20] = sUnknown_0203AB10; + gUnknown_03001188[21] = sUnknown_0203AB10; + gUnknown_03001188[22] = sUnknown_0203AB14; + gUnknown_03001188[23] = sUnknown_0203AB14; + gUnknown_03001188[24] = sUnknown_0203AB14; gUnknown_03001188[25] = NULL; } -/*static */void SlotMachineSetup_8_0(void) +static void SlotMachineSetup_8_0(void) { - gUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AAF4[0].data = gUnknown_0203AAD4; - gUnknown_0203AAF4[0].size = 0x600; + sUnknown_0203AAF4 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AAF4[0].data = sUnknown_0203AAD4; + sUnknown_0203AAF4[0].size = 0x600; - gUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AAF8[0].data = gUnknown_0203AAD4 + 0x600; - gUnknown_0203AAF8[0].size = 0x200; + sUnknown_0203AAF8 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AAF8[0].data = sUnknown_0203AAD4 + 0x600; + sUnknown_0203AAF8[0].size = 0x200; - gUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AAFC[0].data = gUnknown_0203AAD4 + 0x800; - gUnknown_0203AAFC[0].size = 0x200; + sUnknown_0203AAFC = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AAFC[0].data = sUnknown_0203AAD4 + 0x800; + sUnknown_0203AAFC[0].size = 0x200; - gUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AB00[0].data = gUnknown_0203AAD4 + 0xA00; - gUnknown_0203AB00[0].size = 0x200; + sUnknown_0203AB00 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AB00[0].data = sUnknown_0203AAD4 + 0xA00; + sUnknown_0203AB00[0].size = 0x200; - gUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AB04[0].data = gUnknown_0203AAD4 + 0xC00; - gUnknown_0203AB04[0].size = 0x300; + sUnknown_0203AB04 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AB04[0].data = sUnknown_0203AAD4 + 0xC00; + sUnknown_0203AB04[0].size = 0x300; - gUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AB08[0].data = gUnknown_0203AAD4 + 0x1000; - gUnknown_0203AB08[0].size = 0x400; + sUnknown_0203AB08 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AB08[0].data = sUnknown_0203AAD4 + 0x1000; + sUnknown_0203AB08[0].size = 0x400; - gUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AB0C[0].data = gUnknown_0203AAD4 + 0x1400; - gUnknown_0203AB0C[0].size = 0x200; + sUnknown_0203AB0C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AB0C[0].data = sUnknown_0203AAD4 + 0x1400; + sUnknown_0203AB0C[0].size = 0x200; - gUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AB10[0].data = gUnknown_0203AAD4 + 0x1600; - gUnknown_0203AB10[0].size = 0x300; + sUnknown_0203AB10 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AB10[0].data = sUnknown_0203AAD4 + 0x1600; + sUnknown_0203AB10[0].size = 0x300; - gUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AB14[0].data = gUnknown_0203AAD4 + 0x1900; - gUnknown_0203AB14[0].size = 0x300; + sUnknown_0203AB14 = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AB14[0].data = sUnknown_0203AAD4 + 0x1900; + sUnknown_0203AB14[0].size = 0x300; - gUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2); - gUnknown_0203AB18[0].data = gUnknown_0203AAD4 + 0x1C00; - gUnknown_0203AB18[0].size = 0x200; - gUnknown_0203AB18[1].data = gUnknown_0203AAD4 + 0x1E00; - gUnknown_0203AB18[1].size = 0x200; + sUnknown_0203AB18 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2); + sUnknown_0203AB18[0].data = sUnknown_0203AAD4 + 0x1C00; + sUnknown_0203AB18[0].size = 0x200; + sUnknown_0203AB18[1].data = sUnknown_0203AAD4 + 0x1E00; + sUnknown_0203AB18[1].size = 0x200; - gUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); - gUnknown_0203AB1C[0].data = gUnknown_0203AAD4 + 0x2000; - gUnknown_0203AB1C[0].size = 640; + sUnknown_0203AB1C = AllocZeroed(sizeof(struct SpriteFrameImage) * 1); + sUnknown_0203AB1C[0].data = sUnknown_0203AAD4 + 0x2000; + sUnknown_0203AB1C[0].size = 640; - gUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5); - gUnknown_0203AB20[0].data = gUnknown_0203AAD4 + 0x2280; - gUnknown_0203AB20[0].size = 0x80; - gUnknown_0203AB20[1].data = gUnknown_0203AAD4 + 0x2300; - gUnknown_0203AB20[1].size = 0x80; - gUnknown_0203AB20[2].data = gUnknown_0203AAD4 + 0x2380; - gUnknown_0203AB20[2].size = 0x80; - gUnknown_0203AB20[3].data = gUnknown_0203AAD4 + 0x2400; - gUnknown_0203AB20[3].size = 0x80; - gUnknown_0203AB20[4].data = gUnknown_0203AAD4 + 0x2480; - gUnknown_0203AB20[4].size = 0x80; + sUnknown_0203AB20 = AllocZeroed(sizeof(struct SpriteFrameImage) * 5); + sUnknown_0203AB20[0].data = sUnknown_0203AAD4 + 0x2280; + sUnknown_0203AB20[0].size = 0x80; + sUnknown_0203AB20[1].data = sUnknown_0203AAD4 + 0x2300; + sUnknown_0203AB20[1].size = 0x80; + sUnknown_0203AB20[2].data = sUnknown_0203AAD4 + 0x2380; + sUnknown_0203AB20[2].size = 0x80; + sUnknown_0203AB20[3].data = sUnknown_0203AAD4 + 0x2400; + sUnknown_0203AB20[3].size = 0x80; + sUnknown_0203AB20[4].data = sUnknown_0203AAD4 + 0x2480; + sUnknown_0203AB20[4].size = 0x80; - gUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2); - gUnknown_0203AB24[0].data = gUnknown_0203AAD4 + 0x2600; - gUnknown_0203AB24[0].size = 0x480; - gUnknown_0203AB24[1].data = gUnknown_0203AAD4 + 10880; - gUnknown_0203AB24[1].size = 0x480; + sUnknown_0203AB24 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2); + sUnknown_0203AB24[0].data = sUnknown_0203AAD4 + 0x2600; + sUnknown_0203AB24[0].size = 0x480; + sUnknown_0203AB24[1].data = sUnknown_0203AAD4 + 10880; + sUnknown_0203AB24[1].size = 0x480; - gUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2); - gUnknown_0203AB28[0].data = gUnknown_0203AAD4 + 0x2F00; - gUnknown_0203AB28[0].size = 0x180; - gUnknown_0203AB28[1].data = gUnknown_0203AAD4 + 0x3080; - gUnknown_0203AB28[1].size = 0x180; + sUnknown_0203AB28 = AllocZeroed(sizeof(struct SpriteFrameImage) * 2); + sUnknown_0203AB28[0].data = sUnknown_0203AAD4 + 0x2F00; + sUnknown_0203AB28[0].size = 0x180; + sUnknown_0203AB28[1].data = sUnknown_0203AAD4 + 0x3080; + sUnknown_0203AB28[1].size = 0x180; } -const u8 sReelSymbols[][21] = +const u8 gReelSymbols[][REEL_NUM_TAGS] = { { SLOT_MACHINE_TAG_7_RED, @@ -4344,17 +4430,17 @@ const u8 sReelSymbols[][21] = }, }; -const u8 gUnknown_083ECCF1[] = { +const u8 gReelTimeTags[] = { 1, 0, 5, 4, 3, 2 }; -const s16 gUnknown_083ECCF8[][2] = { +const s16 gInitialReelPositions[][2] = { {0, 6}, {0, 10}, {0, 2} }; -const u8 gUnknown_083ECD04[][3] = { +const u8 gLuckyRoundProbabilities[][3] = { {1, 1, 12}, {1, 1, 14}, {2, 2, 14}, @@ -4363,13 +4449,13 @@ const u8 gUnknown_083ECD04[][3] = { {3, 3, 16} }; -const u8 gUnknown_083ECD16[][6] = { +const u8 gLuckyFlagProbabilities_Top3[][6] = { {25, 25, 30, 40, 40, 50}, {25, 25, 30, 30, 35, 35}, {25, 25, 30, 25, 25, 30} }; -const u8 gUnknown_083ECD28[][6] = { +const u8 gLuckyFlagProbabilities_NotTop3[][6] = { {20, 25, 25, 20, 25, 25}, {12, 15, 15, 18, 19, 22}, {25, 25, 25, 30, 30, 40}, @@ -4377,7 +4463,7 @@ const u8 gUnknown_083ECD28[][6] = { {40, 40, 35, 35, 40, 40} }; -const u8 gUnknown_083ECD46[][17] = { +const u8 gReeltimeProbabilities_UnluckyGame[][17] = { {243, 243, 243, 80, 80, 80, 80, 40, 40, 40, 40, 40, 40, 5, 5, 5, 5}, { 5, 5, 5, 150, 150, 150, 150, 130, 130, 130, 130, 130, 130, 100, 100, 100, 5}, { 4, 4, 4, 20, 20, 20, 20, 80, 80, 80, 80, 80, 80, 100, 100, 100, 40}, @@ -4386,7 +4472,7 @@ const u8 gUnknown_083ECD46[][17] = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6} }; -const u8 gUnknown_083ECDAC[][17] = { +const u8 gReelTimeProbabilities_LuckyGame[][17] = { { 243, 243, 243, 200, 200, 200, 200, 160, 160, 160, 160, 160, 160, 70, 70, 70, 5}, { 5, 5, 5, 25, 25, 25, 25, 5, 5, 5, 5, 5, 5, 2, 2, 2, 6}, { 4, 4, 4, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 40, 40, 40, 35}, @@ -4395,11 +4481,11 @@ const u8 gUnknown_083ECDAC[][17] = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 60} }; -const u16 gUnknown_083ECE12[] = { - 0x80, 0xaf, 0xc8, 0xe1, 0x100 +const u16 gProbabilityTable_SkipToReeltimeAction14[] = { + 128, 175, 200, 225, 256 }; -const u16 gUnknown_083ECE1C[][2] = { +const u16 gReelIncrementTable[][2] = { {10, 5}, {10, 10}, {10, 15}, @@ -4407,23 +4493,24 @@ const u16 gUnknown_083ECE1C[][2] = { {10, 35} }; -const u16 gUnknown_083ECE30[] = { +const u16 gReelTimeBonusIncrementTable[] = { 0, 5, 10, 15, 20 }; -const u8 gUnknown_083ECE3A[] = { - 6, 4, 3, 2, 5, 0, 0, 0 +// tentative name +const u8 gBiasTags[] = { + SLOT_MACHINE_TAG_REPLAY, SLOT_MACHINE_TAG_CHERRY, SLOT_MACHINE_TAG_LOTAD, SLOT_MACHINE_TAG_AZURILL, SLOT_MACHINE_TAG_POWER, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED, SLOT_MACHINE_TAG_7_RED }; -const u16 gUnknown_083ECE42[] = { - 0x80, 0x20, 0x40 +const u16 gLuckyFlagSettings_Top3[] = { + LUCKY_BIAS_777, LUCKY_BIAS_REELTIME, LUCKY_BIAS_MIXED_777 }; -const u16 gUnknown_083ECE48[] = { - 0x10, 0x08, 0x04, 0x02, 0x01 +const u16 gLuckyFlagSettings_NotTop3[] = { + LUCKY_BIAS_POWER, LUCKY_BIAS_AZURILL, LUCKY_BIAS_LOTAD, LUCKY_BIAS_CHERRY, LUCKY_BIAS_REPLAY }; -const u8 sSym2Match[] = { +const u8 gSym2Match[] = { SLOT_MACHINE_MATCHED_777_RED, SLOT_MACHINE_MATCHED_777_BLUE, SLOT_MACHINE_MATCHED_AZURILL, @@ -4433,7 +4520,7 @@ const u8 sSym2Match[] = { SLOT_MACHINE_MATCHED_REPLAY }; -const u16 sSlotMatchFlags[] = { +const u16 gSlotMatchFlags[] = { 1 << SLOT_MACHINE_MATCHED_1CHERRY, 1 << SLOT_MACHINE_MATCHED_2CHERRY, 1 << SLOT_MACHINE_MATCHED_REPLAY, @@ -4445,7 +4532,7 @@ const u16 sSlotMatchFlags[] = { 1 << SLOT_MACHINE_MATCHED_777_BLUE }; -const u16 sSlotPayouts[] = { +const u16 gSlotPayouts[] = { 2, 4, 0, 6, 12, 3, 90, 300, 300 }; diff --git a/src/start_menu.c b/src/start_menu.c index d5eec76d2..4822c12e6 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -1,44 +1,49 @@ #include "global.h" -#include "start_menu.h" -#include "menu.h" -#include "safari_zone.h" -#include "event_data.h" -#include "window.h" -#include "string_util.h" -#include "text.h" -#include "strings.h" +#include "battle_pike.h" +#include "battle_pyramid.h" +#include "battle_pyramid_bag.h" #include "bg.h" +#include "event_data.h" +#include "event_object_movement.h" +#include "event_obj_lock.h" +#include "event_scripts.h" +#include "fieldmap.h" #include "field_effect.h" -#include "party_menu.h" -#include "frontier_pass.h" -#include "task.h" -#include "overworld.h" -#include "link.h" -#include "frontier_util.h" +#include "field_player_avatar.h" #include "field_specials.h" -#include "event_object_movement.h" -#include "script.h" -#include "main.h" -#include "sound.h" -#include "pokedex.h" #include "field_weather.h" -#include "palette.h" +#include "field_screen_effect.h" +#include "frontier_pass.h" +#include "frontier_util.h" +#include "gpu_regs.h" +#include "international_string_util.h" #include "item_menu.h" +#include "link.h" +#include "load_save.h" +#include "main.h" +#include "menu.h" +#include "new_game.h" #include "option_menu.h" -#include "event_scripts.h" +#include "overworld.h" +#include "palette.h" +#include "party_menu.h" +#include "pokedex.h" +#include "pokenav.h" +#include "safari_zone.h" #include "save.h" -#include "gpu_regs.h" #include "scanline_effect.h" +#include "script.h" +#include "sound.h" +#include "start_menu.h" +#include "strings.h" +#include "string_util.h" +#include "task.h" +#include "text.h" #include "text_window.h" -#include "load_save.h" #include "trainer_card.h" -#include "international_string_util.h" +#include "window.h" #include "constants/songs.h" -#include "field_player_avatar.h" -#include "battle_pyramid.h" -#include "battle_pyramid_bag.h" -#include "battle_pike.h" -#include "new_game.h" +#include "rom_8011DC0.h" // Menu actions enum @@ -83,19 +88,6 @@ EWRAM_DATA static u8 sSaveDialogTimer = 0; EWRAM_DATA static bool8 sSavingComplete = FALSE; EWRAM_DATA static u8 sSaveInfoWindowId = 0; -// Extern variables. -extern u8 gUnknown_03005DB4; - -// Extern functions in not decompiled files. -extern void sub_80AF688(void); -extern void var_800D_set_xB(void); -extern void sub_808B864(void); -extern void CB2_Pokedex(void); -extern void PlayRainSoundEffect(void); -extern void CB2_PokeNav(void); -extern void ScriptUnfreezeEventObjects(void); -extern void save_serialize_map(void); - // Menu action callbacks static bool8 StartMenuPokedexCallback(void); static bool8 StartMenuPokemonCallback(void); @@ -123,7 +115,7 @@ static u8 SaveConfirmSaveCallback(void); static u8 SaveYesNoCallback(void); static u8 SaveConfirmInputCallback(void); static u8 SaveFileExistsCallback(void); -static u8 SaveConfirmOverwriteNoCallback(void); +static u8 SaveConfirmOverwriteDefaultNoCallback(void); static u8 SaveConfirmOverwriteCallback(void); static u8 SaveOverwriteInputCallback(void); static u8 SaveSavingMessageCallback(void); @@ -244,7 +236,7 @@ static void BuildStartMenuActions(void) { sNumStartMenuActions = 0; - if (is_c1_link_related_active() == TRUE) + if (IsUpdateLinkStateCBActive() == TRUE) { BuildLinkModeStartMenu(); } @@ -376,7 +368,7 @@ static void ShowSafariBallsWindow(void) { sSafariBallsWindowId = AddWindow(&sSafariBallsWindowTemplate); PutWindowTilemap(sSafariBallsWindowId); - NewMenuHelpers_DrawStdWindowFrame(sSafariBallsWindowId, FALSE); + DrawStdWindowFrame(sSafariBallsWindowId, FALSE); ConvertIntToDecimalStringN(gStringVar1, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2); StringExpandPlaceholders(gStringVar4, gText_SafariBallStock); AddTextPrinterParameterized(sSafariBallsWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL); @@ -391,7 +383,7 @@ static void ShowPyramidFloorWindow(void) sBattlePyramidFloorWindowId = AddWindow(&sPyramidFloorWindowTemplate_2); PutWindowTilemap(sBattlePyramidFloorWindowId); - NewMenuHelpers_DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE); + DrawStdWindowFrame(sBattlePyramidFloorWindowId, FALSE); StringCopy(gStringVar1, sPyramindFloorNames[gSaveBlock2Ptr->frontier.curChallengeBattleNum]); StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor); AddTextPrinterParameterized(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL); @@ -402,13 +394,13 @@ static void RemoveExtraStartMenuWindows(void) { if (GetSafariZoneFlag()) { - sub_8198070(sSafariBallsWindowId, FALSE); + ClearStdWindowAndFrameToTransparent(sSafariBallsWindowId, FALSE); CopyWindowToVram(sSafariBallsWindowId, 2); RemoveWindow(sSafariBallsWindowId); } if (InBattlePyramid()) { - sub_8198070(sBattlePyramidFloorWindowId, FALSE); + ClearStdWindowAndFrameToTransparent(sBattlePyramidFloorWindowId, FALSE); RemoveWindow(sBattlePyramidFloorWindowId); } } @@ -459,7 +451,7 @@ static bool32 InitStartMenuStep(void) break; case 2: sub_81973A4(); - NewMenuHelpers_DrawStdWindowFrame(sub_81979C4(sNumStartMenuActions), FALSE); + DrawStdWindowFrame(sub_81979C4(sNumStartMenuActions), FALSE); sUnknown_02037619[1] = 0; sUnknown_02037619[0]++; break; @@ -547,7 +539,7 @@ void sub_809FA34(u8 taskId) // Referenced in field_screen.s and rom_8011DC0.s void ShowStartMenu(void) // Called from overworld.c and field_control_avatar.s { - if (!is_c1_link_related_active()) + if (!IsUpdateLinkStateCBActive()) { FreezeEventObjects(); sub_808B864(); @@ -608,7 +600,7 @@ static bool8 StartMenuPokedexCallback(void) if (!gPaletteFade.active) { IncrementGameStat(GAME_STAT_CHECKED_POKEDEX); - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); RemoveExtraStartMenuWindows(); CleanupOverworldWindowsAndTilemaps(); SetMainCallback2(CB2_Pokedex); @@ -623,7 +615,7 @@ static bool8 StartMenuPokemonCallback(void) { if (!gPaletteFade.active) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); RemoveExtraStartMenuWindows(); CleanupOverworldWindowsAndTilemaps(); SetMainCallback2(CB2_PartyMenuFromStartMenu); // Display party menu @@ -638,7 +630,7 @@ static bool8 StartMenuBagCallback(void) { if (!gPaletteFade.active) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); RemoveExtraStartMenuWindows(); CleanupOverworldWindowsAndTilemaps(); SetMainCallback2(CB2_BagMenuFromStartMenu); // Display bag menu @@ -653,10 +645,10 @@ static bool8 StartMenuPokeNavCallback(void) { if (!gPaletteFade.active) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); RemoveExtraStartMenuWindows(); CleanupOverworldWindowsAndTilemaps(); - SetMainCallback2(CB2_PokeNav); // Display PokeNav + SetMainCallback2(CB2_InitPokeNav); // Display PokeNav return TRUE; } @@ -668,11 +660,11 @@ static bool8 StartMenuPlayerNameCallback(void) { if (!gPaletteFade.active) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); RemoveExtraStartMenuWindows(); CleanupOverworldWindowsAndTilemaps(); - if (is_c1_link_related_active() || InUnionRoom()) + if (IsUpdateLinkStateCBActive() || InUnionRoom()) ShowPlayerTrainerCard(CB2_ReturnToFieldWithOpenMenu); // Display trainer card else if (FlagGet(FLAG_SYS_FRONTIER_PASS)) ShowFrontierPass(CB2_ReturnToFieldWithOpenMenu); // Display frontier pass @@ -699,7 +691,7 @@ static bool8 StartMenuOptionCallback(void) { if (!gPaletteFade.active) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); RemoveExtraStartMenuWindows(); CleanupOverworldWindowsAndTilemaps(); SetMainCallback2(CB2_InitOptionMenu); // Display option menu @@ -732,9 +724,9 @@ static bool8 StartMenuLinkModePlayerNameCallback(void) { if (!gPaletteFade.active) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); CleanupOverworldWindowsAndTilemaps(); - ShowTrainerCardInLink(gUnknown_03005DB4, CB2_ReturnToFieldWithOpenMenu); + ShowTrainerCardInLink(gLocalLinkPlayerId, CB2_ReturnToFieldWithOpenMenu); return TRUE; } @@ -751,7 +743,7 @@ static bool8 StartMenuBattlePyramidRetireCallback(void) void sub_809FDD4(void) { - sub_8197DF8(0, FALSE); + ClearDialogWindowAndFrameToTransparent(0, FALSE); ScriptUnfreezeEventObjects(); CreateStartMenuTask(sub_809FA34); ScriptContext2_Enable(); @@ -761,7 +753,7 @@ static bool8 StartMenuBattlePyramidBagCallback(void) { if (!gPaletteFade.active) { - PlayRainSoundEffect(); + PlayRainStoppingSoundEffect(); RemoveExtraStartMenuWindows(); CleanupOverworldWindowsAndTilemaps(); SetMainCallback2(CB2_PyramidBagMenuFromStartMenu); @@ -787,13 +779,13 @@ static bool8 SaveCallback(void) case SAVE_IN_PROGRESS: return FALSE; case SAVE_CANCELED: // Back to start menu - sub_8197DF8(0, FALSE); + ClearDialogWindowAndFrameToTransparent(0, FALSE); InitStartMenu(); gMenuCallback = HandleStartMenuInput; return FALSE; case SAVE_SUCCESS: case SAVE_ERROR: // Close start menu - sub_8197DF8(0, TRUE); + ClearDialogWindowAndFrameToTransparent(0, TRUE); ScriptUnfreezeEventObjects(); ScriptContext2_Disable(); SoftResetInBattlePyramid(); @@ -830,7 +822,7 @@ static bool8 BattlePyramidRetireCallback(void) case SAVE_IN_PROGRESS: return FALSE; case SAVE_CANCELED: // Yes (Retire from battle pyramid) - sub_8197DF8(0, TRUE); + ClearDialogWindowAndFrameToTransparent(0, TRUE); ScriptUnfreezeEventObjects(); ScriptContext2_Disable(); ScriptContext1_SetupScript(BattleFrontier_BattlePyramidEmptySquare_EventScript_252C88); @@ -897,7 +889,7 @@ static void SaveGameTask(u8 taskId) static void sub_80A0014(void) { - sub_8197434(0, TRUE); + ClearDialogWindowAndFrame(0, TRUE); } static void HideSaveInfoWindow(void) @@ -943,7 +935,7 @@ static bool8 SaveErrorTimer(void) static u8 SaveConfirmSaveCallback(void) { - sub_819746C(GetStartMenuWindowId(), FALSE); + ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE); RemoveStartMenuWindow(); ShowSaveInfoWindow(); @@ -961,7 +953,7 @@ static u8 SaveConfirmSaveCallback(void) static u8 SaveYesNoCallback(void) { - DisplayYesNoMenu(); // Show Yes/No menu + DisplayYesNoMenuDefaultYes(); // Show Yes/No menu sSaveDialogCallback = SaveConfirmInputCallback; return SAVE_IN_PROGRESS; } @@ -1002,7 +994,7 @@ static u8 SaveFileExistsCallback(void) { if (gDifferentSaveFile == TRUE) { - ShowSaveMessage(gText_DifferentSaveFile, SaveConfirmOverwriteNoCallback); + ShowSaveMessage(gText_DifferentSaveFile, SaveConfirmOverwriteDefaultNoCallback); } else { @@ -1012,16 +1004,16 @@ static u8 SaveFileExistsCallback(void) return SAVE_IN_PROGRESS; } -static u8 SaveConfirmOverwriteNoCallback(void) +static u8 SaveConfirmOverwriteDefaultNoCallback(void) { - sub_8197948(1); // Show Yes/No menu (No selected as default) + DisplayYesNoMenuWithDefault(1); // Show Yes/No menu (No selected as default) sSaveDialogCallback = SaveOverwriteInputCallback; return SAVE_IN_PROGRESS; } static u8 SaveConfirmOverwriteCallback(void) { - DisplayYesNoMenu(); // Show Yes/No menu + DisplayYesNoMenuDefaultYes(); // Show Yes/No menu sSaveDialogCallback = SaveOverwriteInputCallback; return SAVE_IN_PROGRESS; } @@ -1135,7 +1127,7 @@ static void InitBattlePyramidRetire(void) static u8 BattlePyramidConfirmRetireCallback(void) { - sub_819746C(GetStartMenuWindowId(), FALSE); + ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE); RemoveStartMenuWindow(); ShowSaveMessage(gText_BattlePyramidConfirmRetire, BattlePyramidRetireYesNoCallback); @@ -1144,7 +1136,7 @@ static u8 BattlePyramidConfirmRetireCallback(void) static u8 BattlePyramidRetireYesNoCallback(void) { - sub_8197948(1); // Show Yes/No menu (No selected as default) + DisplayYesNoMenuWithDefault(1); // Show Yes/No menu (No selected as default) sSaveDialogCallback = BattlePyramidRetireInputCallback; return SAVE_IN_PROGRESS; @@ -1232,7 +1224,7 @@ static void sub_80A0550(u8 taskId) switch (*step) { case 0: - FillWindowPixelBuffer(0, 17); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, 1, gText_SavingDontTurnOffPower, @@ -1265,11 +1257,11 @@ static void sub_80A0550(u8 taskId) break; case 1: SetContinueGameWarpStatusToDynamicWarp(); - sub_8153430(); + FullSaveGame(); *step = 2; break; case 2: - if (sub_8153474()) + if (CheckSaveFile()) { ClearContinueGameWarpStatus2(); *step = 3; @@ -1313,7 +1305,7 @@ static void ShowSaveInfoWindow(void) } sSaveInfoWindowId = AddWindow(&saveInfoWindow); - NewMenuHelpers_DrawStdWindowFrame(sSaveInfoWindowId, FALSE); + DrawStdWindowFrame(sSaveInfoWindowId, FALSE); gender = gSaveBlock2Ptr->playerGender; color = TEXT_COLOR_RED; // Red when female, blue when male. @@ -1364,7 +1356,7 @@ static void ShowSaveInfoWindow(void) static void RemoveSaveInfoWindow(void) { - sub_819746C(sSaveInfoWindowId, FALSE); + ClearStdWindowAndFrame(sSaveInfoWindowId, FALSE); RemoveWindow(sSaveInfoWindowId); } @@ -1386,7 +1378,7 @@ void sub_80A08CC(void) // Referenced in data/specials.inc and data/scripts/maps/ static void HideStartMenuWindow(void) { - sub_819746C(GetStartMenuWindowId(), TRUE); + ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE); RemoveStartMenuWindow(); ScriptUnfreezeEventObjects(); ScriptContext2_Disable(); diff --git a/src/starter_choose.c b/src/starter_choose.c index 5a8de3b4a..4ed53539f 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -469,7 +469,7 @@ static void MainCallback2_StarterChoose(void) static void Task_StarterChoose1(u8 taskId) { CreateStarterPokemonLabel(gTasks[taskId].tStarterSelection); - SetWindowBorderStyle(0, FALSE, 0x2A8, 0xD); + DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x2A8, 0xD); AddTextPrinterParameterized(0, 1, gText_BirchInTrouble, 0, 1, 0, NULL); PutWindowTilemap(0); schedule_bg_copy_tilemap_to_vram(0); @@ -523,7 +523,7 @@ static void Task_StarterChoose3(u8 taskId) static void Task_StarterChoose4(u8 taskId) { PlayCry1(GetStarterPokemon(gTasks[taskId].tStarterSelection), 0); - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized(0, 1, gText_ConfirmStarterChoice, 0, 1, 0, NULL); schedule_bg_copy_tilemap_to_vram(0); CreateYesNoMenu(&gUnknown_085B1DDC, 0x2A8, 0xD, 0); @@ -579,7 +579,7 @@ static void CreateStarterPokemonLabel(u8 selection) winTemplate.tilemapTop = gStarterChoose_LabelCoords[selection][1]; sStarterChooseWindowId = AddWindow(&winTemplate); - FillWindowPixelBuffer(sStarterChooseWindowId, 0); + FillWindowPixelBuffer(sStarterChooseWindowId, PIXEL_FILL(0)); width = GetStringCenterAlignXOffset(7, text, 0x68); AddTextPrinterParameterized3(sStarterChooseWindowId, 7, width, 1, gUnknown_085B1E0C, 0, text); @@ -600,7 +600,7 @@ static void CreateStarterPokemonLabel(u8 selection) static void sub_8134604(void) { - FillWindowPixelBuffer(sStarterChooseWindowId, 0); + FillWindowPixelBuffer(sStarterChooseWindowId, PIXEL_FILL(0)); ClearWindowTilemap(sStarterChooseWindowId); RemoveWindow(sStarterChooseWindowId); sStarterChooseWindowId = 0xFF; diff --git a/src/task.c b/src/task.c index 14b97a361..a2df66de8 100644 --- a/src/task.c +++ b/src/task.c @@ -1,9 +1,6 @@ #include "global.h" #include "task.h" -#define HEAD_SENTINEL 0xFE -#define TAIL_SENTINEL 0xFF - struct Task gTasks[NUM_TASKS]; static void InsertTask(u8 newTaskId); diff --git a/src/text.c b/src/text.c index a439d3ced..be4bf2697 100644 --- a/src/text.c +++ b/src/text.c @@ -12,10 +12,6 @@ #include "menu.h" #include "dynamic_placeholder_text_util.h" -extern u8 GetKeypadIconWidth(u8 keypadIconId); -extern u16 Font6Func(struct TextPrinter *textPrinter); -extern u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese); - EWRAM_DATA struct TextPrinter gTempTextPrinter = {0}; EWRAM_DATA struct TextPrinter gTextPrinters[NUM_TEXT_PRINTERS] = {0}; @@ -1581,7 +1577,7 @@ u16 RenderText(struct TextPrinter *textPrinter) textPrinter->printerTemplate.currentChar++; return 2; case 15: - FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | textPrinter->printerTemplate.bgColor << 4); + FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x; textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y; return 2; @@ -1702,7 +1698,7 @@ u16 RenderText(struct TextPrinter *textPrinter) case 2: if (TextPrinterWaitWithDownArrow(textPrinter)) { - FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, (textPrinter->printerTemplate.bgColor << 4) | textPrinter->printerTemplate.bgColor); + FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x; textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y; textPrinter->state = 0; @@ -1724,12 +1720,12 @@ u16 RenderText(struct TextPrinter *textPrinter) int speed = gWindowVerticalScrollSpeeds[scrollSpeed]; if (textPrinter->scrollDistance < speed) { - ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor); + ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->scrollDistance = 0; } else { - ScrollWindow(textPrinter->printerTemplate.windowId, 0, speed, textPrinter->printerTemplate.bgColor << 4 | textPrinter->printerTemplate.bgColor); + ScrollWindow(textPrinter->printerTemplate.windowId, 0, speed, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->scrollDistance -= speed; } CopyWindowToVram(textPrinter->printerTemplate.windowId, 2); diff --git a/src/time_events.c b/src/time_events.c index 9702d321f..bd51f0c2d 100644 --- a/src/time_events.c +++ b/src/time_events.c @@ -81,7 +81,7 @@ void UpdateShoalTideFlag(void) 1, // 23 }; - if (is_map_type_1_2_3_5_or_6(GetLastUsedWarpMapType())) + if (IsMapTypeOutdoors(GetLastUsedWarpMapType())) { RtcCalcLocalTime(); if (tide[gLocalTime.hours]) diff --git a/src/trade.c b/src/trade.c index 70b57fbc7..9a9828f34 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1418,7 +1418,7 @@ static void sub_80772A4(void) for (i = 0; i < 18; i++) { ClearWindowTilemap(i); - FillWindowPixelBuffer(i, 0); + FillWindowPixelBuffer(i, PIXEL_FILL(0)); } FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 15); @@ -1507,13 +1507,13 @@ static void sub_80773D0(void) } break; case 3: - if (GetLinkPlayerCount_2() >= sub_800AA48()) + if (GetLinkPlayerCount_2() >= GetSavedPlayerCount()) { if (IsLinkMaster()) { if (++gUnknown_0203229C->unk_A8 > 30) { - sub_800A620(); + CheckShouldAdvanceLinkState(); gMain.state++; } } @@ -1834,9 +1834,9 @@ static void sub_8077B74(void) } if (gUnknown_0203229C->tradeMenuCursorPosition < PARTY_SIZE) - gUnknown_0203229C->tradeMenuCursorPosition = gUnknown_0203CF20; + gUnknown_0203229C->tradeMenuCursorPosition = gLastViewedMonIndex; else - gUnknown_0203229C->tradeMenuCursorPosition = gUnknown_0203CF20 + PARTY_SIZE; + gUnknown_0203229C->tradeMenuCursorPosition = gLastViewedMonIndex + PARTY_SIZE; gUnknown_0203229C->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_832DC94, gTradeMonSpriteCoords[gUnknown_0203229C->tradeMenuCursorPosition][0] * 8 + 32, gTradeMonSpriteCoords[gUnknown_0203229C->tradeMenuCursorPosition][1] * 8, 2); gMain.state = 16; @@ -2461,7 +2461,7 @@ static void sub_8078DBC(void) if (gUnknown_0203229C->tradeMenuCursorPosition < 6) { sub_8098858(1, 1, 14); - FillWindowPixelBuffer(1, 0x11); + FillWindowPixelBuffer(1, PIXEL_FILL(1)); PrintMenuTable(1, 2, gUnknown_0832DEAC); InitMenuInUpperLeftCornerPlaySoundWhenAPressed(1, 2, 0); PutWindowTilemap(1); @@ -2724,7 +2724,7 @@ static void sub_8079408(void) for (i = 0; i < 4; i++) { - FillWindowPixelBuffer(i + 14, 0); + FillWindowPixelBuffer(i + 14, PIXEL_FILL(0)); rbox_fill_rectangle(i + 14); } @@ -2762,7 +2762,7 @@ static void sub_80794CC(void) Free(gUnknown_0203229C); FreeAllWindowBuffers(); sub_800E084(); - SetMainCallback2(c2_8056854); + SetMainCallback2(CB2_ReturnToFieldFromMultiplayer); } } else @@ -2772,7 +2772,7 @@ static void sub_80794CC(void) Free(gUnknown_02032184); Free(gUnknown_0203229C); FreeAllWindowBuffers(); - SetMainCallback2(c2_8056854); + SetMainCallback2(CB2_ReturnToFieldFromMultiplayer); } } } @@ -3256,7 +3256,7 @@ static void sub_807A0C4(void) static void sub_807A19C(u8 a0) { - FillWindowPixelBuffer(0, 0x11); + FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized(0, 1, gUnknown_0832DEBC[a0], 0, 1, TEXT_SPEED_FF, NULL); sub_8098858(0, 20, 12); PutWindowTilemap(0); @@ -4099,11 +4099,11 @@ void sub_807AE50(void) case 3: if (IsLinkMaster()) { - if (GetLinkPlayerCount_2() >= sub_800AA48()) + if (GetLinkPlayerCount_2() >= GetSavedPlayerCount()) { if (++gUnknown_020322A0->timer > 30) { - sub_800A620(); + CheckShouldAdvanceLinkState(); gMain.state++; } } @@ -4185,7 +4185,7 @@ void sub_807B140(void) void sub_807B154(void) { - FillWindowPixelBuffer(0, 0xFF); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); PutWindowTilemap(0); CopyWindowToVram(0, 3); } @@ -4263,7 +4263,7 @@ static void sub_807B270(void) break; case 8: sub_807ACFC(1, 1); - FillWindowPixelBuffer(0, 0xFF); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); PutWindowTilemap(0); CopyWindowToVram(0, 3); gMain.state++; @@ -4654,7 +4654,7 @@ static bool8 sub_807BBEC(void) if (!gPaletteFade.active) { sub_807B62C(4); - FillWindowPixelBuffer(0, 0xFF); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); CopyWindowToVram(0, 3); gUnknown_020322A0->state++; } @@ -5146,7 +5146,7 @@ static bool8 sub_807CFC8(void) if (!gPaletteFade.active) { sub_807B62C(4); - FillWindowPixelBuffer(0, 0xFF); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); CopyWindowToVram(0, 3); gUnknown_020322A0->state++; } @@ -6085,7 +6085,7 @@ void sub_807F19C(void) void sub_807F1A8(u8 windowId, const u8 *str, u8 speed) { - FillWindowPixelBuffer(windowId, 0xFF); + FillWindowPixelBuffer(windowId, PIXEL_FILL(15)); gUnknown_020322A0->unk_F6[0] = 15; gUnknown_020322A0->unk_F6[1] = 1; gUnknown_020322A0->unk_F6[2] = 6; diff --git a/src/trader.c b/src/trader.c index b5c159fb9..97bc4626f 100644 --- a/src/trader.c +++ b/src/trader.c @@ -73,7 +73,7 @@ void CreateAvailableDecorationsMenu(u8 taskId) } windowTemplate.width = convert_pixel_width_to_tile_width(windowWidth); data[3] = AddWindow(&windowTemplate); - SetWindowBorderStyle(data[3], FALSE, 0x214, 14); + DrawStdFrameWithCustomTileAndPalette(data[3], FALSE, 0x214, 14); for (i = 0; i < 4; i++) { if (trader->decorIds[i] > NUM_DECORATIONS) @@ -98,7 +98,7 @@ void sub_8133BE4(u8 taskId, u8 decorationId) gSpecialVar_0x8004 = decorationId; } - sub_8198070(data[3], FALSE); + ClearStdWindowAndFrameToTransparent(data[3], FALSE); ClearWindowTilemap(data[3]); RemoveWindow(data[3]); schedule_bg_copy_tilemap_to_vram(0); diff --git a/src/trainer_card.c b/src/trainer_card.c index 49a62284f..01839d598 100755 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -21,6 +21,7 @@ #include "gpu_regs.h" #include "international_string_util.h" #include "pokedex.h" +#include "pokemon_icon.h" #include "graphics.h" #include "pokemon_icon.h" #include "trainer_pokemon_sprites.h" @@ -89,9 +90,6 @@ struct TrainerCardData u8 language; }; -//external functions -extern u8 sub_80D30A0(u16); - // EWRAM EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0}; EWRAM_DATA static struct TrainerCardData *sData = NULL; @@ -350,7 +348,7 @@ static void sub_80C2760(u8 taskId) case 0: if (!IsDma3ManagerBusyWithBgCopy()) { - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); sData->var_0++; } break; @@ -363,7 +361,7 @@ static void sub_80C2760(u8 taskId) sData->var_0++; break; case 3: - FillWindowPixelBuffer(2, 0); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); sub_80C4FF0(); sub_80C438C(2); sData->var_0++; @@ -469,7 +467,7 @@ static void sub_80C2760(u8 taskId) break; case 15: sub_800AC34(); - NewMenuHelpers_DrawDialogueFrame(0, 1); + DrawDialogueFrame(0, 1); AddTextPrinterParameterized(0, 1, gText_WaitingTrainerFinishReading, 0, 1, 255, 0); CopyWindowToVram(0, 3); sData->var_0 = 16; @@ -695,7 +693,7 @@ static void SetPlayerCardData(struct TrainerCard *trainerCard, u8 cardType) trainerCard->money = GetMoney(&gSaveBlock1Ptr->money); for (i = 0; i < 4; i++) - trainerCard->var_28[i] = gSaveBlock1Ptr->unk2BB0[i]; + trainerCard->var_28[i] = gSaveBlock1Ptr->easyChatProfile[i]; StringCopy(trainerCard->playerName, gSaveBlock2Ptr->playerName); @@ -1103,7 +1101,7 @@ static void PrintTimeOnCard(void) r10 = width + 30; r7 -= r10; - FillWindowPixelRect(1, 0, r7, r4, r10, 15); + FillWindowPixelRect(1, PIXEL_FILL(0), r7, r4, r10, 15); ConvertIntToDecimalStringN(gStringVar4, hours, 1, 3); AddTextPrinterParameterized3(1, 1, r7, r4, gUnknown_0856FB0C, TEXT_SPEED_FF, gStringVar4); r7 += 18; @@ -1536,7 +1534,7 @@ static void sub_80C48C8(void) } } -u8 sub_80C4904(u8 cardId) +u8 GetTrainerCardStars(u8 cardId) { struct TrainerCard* trainerCards = gTrainerCards; return trainerCards[cardId].stars; @@ -1634,7 +1632,7 @@ static bool8 sub_80C4B08(struct Task* task) switch (sData->var_4) { case 0: - FillWindowPixelBuffer(1, 0); + FillWindowPixelBuffer(1, PIXEL_FILL(0)); FillBgTilemapBufferRect_Palette0(3, 0, 0, 0, 0x20, 0x20); break; case 1: @@ -1659,7 +1657,7 @@ static bool8 sub_80C4B08(struct Task* task) if (!sData->var_8) sub_80C474C(); else - FillWindowPixelBuffer(2, 0); + FillWindowPixelBuffer(2, PIXEL_FILL(0)); break; case 4: if (sData->var_8) diff --git a/src/trainer_hill.c b/src/trainer_hill.c index efe11b0c7..43b29e26e 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -30,6 +30,7 @@ #include "constants/species.h" #include "constants/trainers.h" #include "constants/easy_chat.h" +#include "constants/trainer_hill.h" extern bool32 sub_81D3B34(void); @@ -92,16 +93,16 @@ struct TrHillStruct2 // EWRAM static EWRAM_DATA struct TrHillStruct2 *sHillData = NULL; static EWRAM_DATA struct TrHillRoomTrainers *sRoomTrainers = NULL; -EWRAM_DATA u32 *gUnknown_0203CF5C = NULL; +EWRAM_DATA u32 *gTrainerHillVBlankCounter = NULL; // This file's functions. -static void sub_81D581C(void); +static void TrainerHillStartChallenge(void); static void sub_81D58D8(void); static void sub_81D5924(void); static void sub_81D59D0(void); -static void sub_81D5A70(void); -static void sub_81D5AB4(void); -static void sub_81D5AD0(void); +static void TrainerHillResumeTimer(void); +static void TrainerHillSetPlayerLost(void); +static void TrainerHillGetChallengeStatus(void); static void sub_81D5B2C(void); static void sub_81D5BBC(void); static void sub_81D5C00(void); @@ -112,7 +113,7 @@ static void sub_81D64DC(void); static void sub_81D64FC(void); static void sub_81D6518(void); static void sub_81D6568(void); -static void sub_81D65A0(void); +static void TrainerHillSetTag(void); static void SetUpDataStruct(void); static void FreeDataStruct(void); static void nullsub_2(void); @@ -263,13 +264,13 @@ static const u8 *const sFloorStrings[] = static void (* const sHillFunctions[])(void) = { - sub_81D581C, + TrainerHillStartChallenge, sub_81D58D8, sub_81D5924, sub_81D59D0, - sub_81D5A70, - sub_81D5AB4, - sub_81D5AD0, + TrainerHillResumeTimer, + TrainerHillSetPlayerLost, + TrainerHillGetChallengeStatus, sub_81D5B2C, sub_81D5BBC, sub_81D5C00, @@ -280,7 +281,7 @@ static void (* const sHillFunctions[])(void) = sub_81D64FC, sub_81D6518, sub_81D6568, - sub_81D65A0, + TrainerHillSetTag, }; static const u8 *const sTagMatchStrings[] = @@ -318,7 +319,7 @@ void ResetTrainerHillResults(void) gSaveBlock2Ptr->frontier.field_EF9_1 = 0; gSaveBlock2Ptr->frontier.field_EF9_0 = 0; - gSaveBlock1Ptr->trainerHill.field_3D68 = 0; + gSaveBlock1Ptr->trainerHill.bestTime = 0; for (i = 0; i < 4; i++) SetTimerValue(&gSaveBlock1Ptr->trainerHillTimes[i], HILL_MAX_TIME); } @@ -371,7 +372,7 @@ void InitTrainerHillBattleStruct(void) } sRoomTrainers->facilityClass[i] = sHillData->tag.floors[sHillData->floorId].trainers[i].facilityClass; } - sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64); + SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer); FreeDataStruct(); } @@ -425,7 +426,7 @@ void CopyTrainerHillTrainerText(u8 which, u16 trainerId) FreeDataStruct(); } -static void sub_81D581C(void) +static void TrainerHillStartChallenge(void) { nullsub_2(); if (!sub_81D3B34()) @@ -434,11 +435,11 @@ static void sub_81D581C(void) gSaveBlock1Ptr->trainerHill.field_3D6E_0f = 0; gSaveBlock1Ptr->trainerHill.field_3D6C = 0; - sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64); - gSaveBlock1Ptr->trainerHill.field_3D64 = 0; + SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer); + gSaveBlock1Ptr->trainerHill.timer = 0; gSaveBlock1Ptr->trainerHill.field_3D6E_0c = 0; gSaveBlock1Ptr->trainerHill.field_3D6E_0b = 0; - gSaveBlock1Ptr->trainerHill.field_3D6E_0e = 0; + gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge = 0; gSaveBlock2Ptr->frontier.field_EE0 = 0; gBattleOutcome = 0; gSaveBlock1Ptr->trainerHill.field_3D6E_0a = 0; @@ -446,7 +447,7 @@ static void sub_81D581C(void) static void sub_81D58D8(void) { - sub_80008E8(); + ClearTrainerHillVBlankCounter(); gSpecialVar_Result = 0; if (gSaveBlock1Ptr->trainerHill.field_3D6E_0c) gSpecialVar_Result++; @@ -483,10 +484,10 @@ static void sub_81D59D0(void) { gSpecialVar_Result = 2; } - else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.field_3D68) > gSaveBlock1Ptr->trainerHill.field_3D64) + else if (GetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime) > gSaveBlock1Ptr->trainerHill.timer) { - SetTimerValue(&gSaveBlock1Ptr->trainerHill.field_3D68, gSaveBlock1Ptr->trainerHill.field_3D64); - gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.field_3D68; + SetTimerValue(&gSaveBlock1Ptr->trainerHill.bestTime, gSaveBlock1Ptr->trainerHill.timer); + gSaveBlock1Ptr->trainerHillTimes[gSaveBlock1Ptr->trainerHill.tag] = gSaveBlock1Ptr->trainerHill.bestTime; gSpecialVar_Result = 0; } else @@ -497,37 +498,40 @@ static void sub_81D59D0(void) gSaveBlock1Ptr->trainerHill.field_3D6E_0b = 1; } -static void sub_81D5A70(void) +static void TrainerHillResumeTimer(void) { if (!gSaveBlock1Ptr->trainerHill.field_3D6E_0c) { - if (gSaveBlock1Ptr->trainerHill.field_3D64 >= HILL_MAX_TIME) - gSaveBlock1Ptr->trainerHill.field_3D64 = HILL_MAX_TIME; + if (gSaveBlock1Ptr->trainerHill.timer >= HILL_MAX_TIME) + gSaveBlock1Ptr->trainerHill.timer = HILL_MAX_TIME; else - sub_80008DC(&gSaveBlock1Ptr->trainerHill.field_3D64); + SetTrainerHillVBlankCounter(&gSaveBlock1Ptr->trainerHill.timer); } } -static void sub_81D5AB4(void) +static void TrainerHillSetPlayerLost(void) { - gSaveBlock1Ptr->trainerHill.field_3D6E_0d = 1; + gSaveBlock1Ptr->trainerHill.hasLost = 1; } -static void sub_81D5AD0(void) +static void TrainerHillGetChallengeStatus(void) { - if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d) + if (gSaveBlock1Ptr->trainerHill.hasLost) { - gSaveBlock1Ptr->trainerHill.field_3D6E_0d = 0; - gSpecialVar_Result = 0; + // The player lost their last match. + gSaveBlock1Ptr->trainerHill.hasLost = 0; + gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_LOST; } - else if (gSaveBlock1Ptr->trainerHill.field_3D6E_0e) + else if (gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge) { - gSaveBlock1Ptr->trainerHill.field_3D6E_0e = 0; - gSpecialVar_Result = 1; + // Unreachable code. Something relating to eCards? + gSaveBlock1Ptr->trainerHill.maybeECardScanDuringChallenge = 0; + gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_ECARD_SCANNED; } else { - gSpecialVar_Result = 2; + // Continue playing. + gSpecialVar_Result = TRAINER_HILL_PLAYER_STATUS_NORMAL; } } @@ -535,7 +539,7 @@ static void sub_81D5B2C(void) { s32 total, minutes, secondsWhole, secondsFraction; - total = gSaveBlock1Ptr->trainerHill.field_3D64; + total = gSaveBlock1Ptr->trainerHill.timer; if (total >= HILL_MAX_TIME) total = HILL_MAX_TIME; @@ -575,7 +579,7 @@ static void sub_81D5C00(void) bool8 sub_81D5C18(void) { - if (VarGet(VAR_0x40D6) == 0) + if (VarGet(VAR_TRAINER_HILL_IS_ACTIVE) == 0) return FALSE; else if (gSaveBlock1Ptr->trainerHill.field_3D6E_0c) return FALSE; @@ -609,7 +613,7 @@ void PrintOnTrainerHillRecordsWindow(void) u32 total, minutes, secondsWhole, secondsFraction; SetUpDataStruct(); - FillWindowPixelBuffer(0, 0); + FillWindowPixelBuffer(0, PIXEL_FILL(0)); x = GetStringCenterAlignXOffset(1, gText_TimeBoard, 0xD0); AddTextPrinterParameterized3(0, 1, x, 2, sRecordWinColors, TEXT_SPEED_FF, gText_TimeBoard); @@ -796,7 +800,7 @@ void sub_81D5FB4(u16 *mapArg) dst += 31; } - mapheader_run_script_with_tag_x1(); + RunOnLoadMapScript(); FreeDataStruct(); } @@ -1048,16 +1052,16 @@ bool32 sub_81D6534(void) static void sub_81D6568(void) { - if (gSaveBlock1Ptr->trainerHill.field_3D6E_0d) + if (gSaveBlock1Ptr->trainerHill.hasLost) gSpecialVar_Result = 0; else gSpecialVar_Result = 1; } -static void sub_81D65A0(void) +static void TrainerHillSetTag(void) { gSaveBlock1Ptr->trainerHill.tag = gSpecialVar_0x8005; - gSaveBlock1Ptr->trainerHill.field_3D68 = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005]; + gSaveBlock1Ptr->trainerHill.bestTime = gSaveBlock1Ptr->trainerHillTimes[gSpecialVar_0x8005]; } static u8 sub_81D65E8(u8 arg0) @@ -1103,7 +1107,7 @@ static u16 sub_81D6640(void) i = (i + 1) % 10; ptr = gUnknown_0862A5CC[var2][i]; - minutes = (signed)(gSaveBlock1Ptr->trainerHill.field_3D64) / (60 * 60); + minutes = (signed)(gSaveBlock1Ptr->trainerHill.timer) / (60 * 60); if (minutes < 12) id = 0; else if (minutes < 13) diff --git a/src/trainer_see.c b/src/trainer_see.c index bc5d9cbc3..16ea88a45 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -17,8 +17,6 @@ #include "constants/event_object_movement_constants.h" #include "constants/field_effects.h" -extern void sub_809BE48(u16 npcId); - // this file's functions static u8 CheckTrainer(u8 eventObjectId); static u8 GetTrainerApproachDistance(struct EventObject *trainerObj); @@ -39,6 +39,7 @@ #include "tv.h" #include "data2.h" #include "constants/layouts.h" +#include "constants/metatile_behaviors.h" // Static type declarations @@ -62,7 +63,7 @@ IWRAM_DATA s8 sTVShowMixingCurSlot; EWRAM_DATA u16 sPokemonAnglerSpecies = 0; EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0; EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0; -EWRAM_DATA bool8 sFindThatGamerWhichGame = FALSE; +EWRAM_DATA u8 sFindThatGamerWhichGame = SLOT_MACHINE; EWRAM_DATA ALIGNED(4) u8 sRecordMixingPartnersWithoutShowsToShare = 0; EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0; EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {}; @@ -853,9 +854,9 @@ void SetTVMetatilesOnMap(int width, int height, u16 tileId) { for (x = 0; x < width; x ++) { - if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) // is this tile a TV? + if (MapGridGetMetatileBehaviorAt(x, y) == MB_TELEVISION) { - MapGridSetMetatileIdAt(x, y, tileId | 0xc00); + MapGridSetMetatileIdAt(x, y, tileId | METATILE_COLLISION_MASK); } } } @@ -2019,7 +2020,7 @@ void sub_80EDCE8(void) } } -void sub_80EDD78(u16 nCoinsPaidOut) +void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut) { TVShow *show; bool8 flag; @@ -2031,7 +2032,7 @@ void sub_80EDD78(u16 nCoinsPaidOut) flag = FALSE; switch (sFindThatGamerWhichGame) { - case FALSE: + case SLOT_MACHINE: if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 200) { flag = TRUE; @@ -2044,7 +2045,7 @@ void sub_80EDD78(u16 nCoinsPaidOut) break; } return; - case TRUE: + case ROULETTE: if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 50) { flag = TRUE; @@ -2072,15 +2073,15 @@ void sub_80EDD78(u16 nCoinsPaidOut) } } -void sub_80EDE70(u16 nCoinsSpent) +void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent) { - sFindThatGamerWhichGame = FALSE; + sFindThatGamerWhichGame = SLOT_MACHINE; sFindThatGamerCoinsSpent = nCoinsSpent; } -void sub_80EDE84(u16 nCoinsSpent) +void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent) { - sFindThatGamerWhichGame = TRUE; + sFindThatGamerWhichGame = ROULETTE; sFindThatGamerCoinsSpent = nCoinsSpent; } @@ -2448,8 +2449,8 @@ void sub_80EE72C(void) show->trainerFanClub.kind = TVSHOW_TRAINER_FAN_CLUB; show->trainerFanClub.active = FALSE; StringCopy(show->trainerFanClub.playerName, gSaveBlock2Ptr->playerName); - show->trainerFanClub.words[0] = gSaveBlock1Ptr->unk2BB0[0]; - show->trainerFanClub.words[1] = gSaveBlock1Ptr->unk2BB0[1]; + show->trainerFanClub.words[0] = gSaveBlock1Ptr->easyChatProfile[0]; + show->trainerFanClub.words[1] = gSaveBlock1Ptr->easyChatProfile[1]; tv_store_id_3x(show); show->trainerFanClub.language = gGameLanguage; } @@ -2565,13 +2566,13 @@ void sub_80EEA70(void) show->secretBaseSecrets.kind = TVSHOW_SECRET_BASE_SECRETS; show->secretBaseSecrets.active = FALSE; StringCopy(show->secretBaseSecrets.playerName, gSaveBlock2Ptr->playerName); - show->secretBaseSecrets.stepsInBase = VarGet(VAR_0x40EC); + show->secretBaseSecrets.stepsInBase = VarGet(VAR_SECRET_BASE_STEP_COUNTER); sub_80E980C(); StringCopy(strbuf, gStringVar1); StripExtCtrlCodes(strbuf); StringCopy(show->secretBaseSecrets.baseOwnersName, strbuf); - show->secretBaseSecrets.item = VarGet(VAR_0x40ED); - show->secretBaseSecrets.flags = VarGet(VAR_0x40EE) + (VarGet(VAR_0x40EF) << 16); + show->secretBaseSecrets.item = VarGet(VAR_SECRET_BASE_LAST_ITEM_USED); + show->secretBaseSecrets.flags = VarGet(VAR_SECRET_BASE_LOW_TV_FLAGS) + (VarGet(VAR_SECRET_BASE_HIGH_TV_FLAGS) << 16); tv_store_id_3x(show); show->secretBaseSecrets.language = gGameLanguage; if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].language == LANGUAGE_JAPANESE) @@ -3603,7 +3604,7 @@ void GetMomOrDadStringForTVMessage(void) void sub_80F01B8(void) { - VarSet(VAR_0x40BC, 0); + VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0); RemoveEventObjectByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup); FlagSet(FLAG_HIDE_BATTLE_TOWER_REPORTER); } @@ -7350,7 +7351,7 @@ static void DoTVShowWhatsNo1InHoennToday(void) ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]); } -u8 sub_80F5180(TVShow *show) +u8 TVShowGetFlagCount(TVShow *show) { u8 i; u8 tot; @@ -7365,7 +7366,7 @@ u8 sub_80F5180(TVShow *show) return tot; } -u8 sub_80F51AC(TVShow *show, u8 a1) +u8 TVShowGetStateForFlagNumber(TVShow *show, u8 a1) { u8 i; u8 tot; @@ -7399,7 +7400,7 @@ static void DoTVShowSecretBaseSecrets(void) case 0: TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage); TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - bitCount = sub_80F5180(show); + bitCount = TVShowGetFlagCount(show); if (bitCount == 0) { sTVShowState = 8; @@ -7408,12 +7409,12 @@ static void DoTVShowSecretBaseSecrets(void) { show->secretBaseSecrets.savedState = 1; sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount; - sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[0]); + sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[0]); } break; case 1: TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - bitCount = sub_80F5180(show); + bitCount = TVShowGetFlagCount(show); switch (bitCount) { case 1: @@ -7423,11 +7424,11 @@ static void DoTVShowSecretBaseSecrets(void) show->secretBaseSecrets.savedState = 2; if (sTVSecretBaseSecretsRandomValues[0] == 0) { - sTVShowState = sub_80F51AC(show, 1); + sTVShowState = TVShowGetStateForFlagNumber(show, 1); } else { - sTVShowState = sub_80F51AC(show, 0); + sTVShowState = TVShowGetStateForFlagNumber(show, 0); } break; default: @@ -7440,13 +7441,13 @@ static void DoTVShowSecretBaseSecrets(void) } } show->secretBaseSecrets.savedState = 2; - sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[1]); + sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[1]); break; } break; case 2: TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language); - bitCount = sub_80F5180(show); + bitCount = TVShowGetFlagCount(show); if (bitCount == 2) { sTVShowState = 9; @@ -7462,7 +7463,7 @@ static void DoTVShowSecretBaseSecrets(void) } } show->secretBaseSecrets.savedState = 3; - sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[2]); + sTVShowState = TVShowGetStateForFlagNumber(show, sTVSecretBaseSecretsRandomValues[2]); } break; case 3: diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c index bbc256915..02648bf93 100644 --- a/src/unk_text_util_2.c +++ b/src/unk_text_util_2.c @@ -114,7 +114,7 @@ u16 Font6Func(struct TextPrinter *textPrinter) textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y + *textPrinter->printerTemplate.currentChar++; return 2; case 15: - FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4)); + FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); return 2; } break; @@ -146,7 +146,7 @@ u16 Font6Func(struct TextPrinter *textPrinter) case 2: if (TextPrinterWaitWithDownArrow(textPrinter)) { - FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4)); + FillWindowPixelBuffer(textPrinter->printerTemplate.windowId, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x; textPrinter->printerTemplate.currentY = textPrinter->printerTemplate.y; textPrinter->state = 0; @@ -166,12 +166,12 @@ u16 Font6Func(struct TextPrinter *textPrinter) { if (textPrinter->scrollDistance < sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed]) { - ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4)); + ScrollWindow(textPrinter->printerTemplate.windowId, 0, textPrinter->scrollDistance, PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->scrollDistance = 0; } else { - ScrollWindow(textPrinter->printerTemplate.windowId, 0, sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], textPrinter->printerTemplate.bgColor | (textPrinter->printerTemplate.bgColor << 4)); + ScrollWindow(textPrinter->printerTemplate.windowId, 0, sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], PIXEL_FILL(textPrinter->printerTemplate.bgColor)); textPrinter->scrollDistance -= sUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed]; } CopyWindowToVram(textPrinter->printerTemplate.windowId, 2); @@ -214,7 +214,7 @@ static void DecompressGlyphFont6(u16 glyph) gUnknown_03002F90.unk81 = 0x10; } -u8 GetGlyphWidthFont6(void) +u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese) { return 0x10; } diff --git a/src/wallclock.c b/src/wallclock.c index 546750ba6..d3bbcf7a2 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -793,7 +793,7 @@ static void Task_SetClock2(u8 taskId) static void Task_SetClock3(u8 taskId) { - SetWindowBorderStyle(0, FALSE, 0x250, 0x0d); + DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x250, 0x0d); AddTextPrinterParameterized(0, 1, gText_IsThisTheCorrectTime, 0, 1, 0, NULL); PutWindowTilemap(0); schedule_bg_copy_tilemap_to_vram(0); @@ -812,7 +812,7 @@ static void Task_SetClock4(u8 taskId) case 1: //B button case -1: //NO PlaySE(SE_SELECT); - sub_8198070(0, FALSE); + ClearStdWindowAndFrameToTransparent(0, FALSE); ClearWindowTilemap(0); gTasks[taskId].func = Task_SetClock2; break; diff --git a/src/water.c b/src/water.c index d13b1378e..20bf2542d 100644 --- a/src/water.c +++ b/src/water.c @@ -13,35 +13,33 @@ #include "constants/battle.h" #include "constants/rgb.h" -extern void sub_810721C(struct Sprite *); -extern void sub_8107228(struct Sprite *); -extern void sub_8107260(struct Sprite *); -extern void sub_8107380(struct Sprite *); -extern void sub_8107408(struct Sprite *); -extern void sub_8107430(struct Sprite *); -extern void sub_810744C(struct Sprite *); -extern void sub_81074E4(struct Sprite *); -extern void sub_81075EC(struct Sprite *); -extern void sub_8107674(struct Sprite *); -extern void sub_8107730(struct Sprite *); -extern void sub_81077A4(struct Sprite *); -extern void sub_81077C0(struct Sprite *); -extern void sub_80A78AC(struct Sprite *); -extern void sub_8107894(struct Sprite *); -extern void sub_81078D0(struct Sprite *); -extern void sub_810790C(struct Sprite *); -extern void sub_8108034(struct Sprite *); -extern void sub_8108098(struct Sprite *); -extern void sub_810851C(struct Sprite *); -extern void sub_81087C0(struct Sprite *); -extern void sub_810886C(struct Sprite *); -extern void sub_8108B2C(struct Sprite *); -extern void sub_8108B94(struct Sprite *); -extern void sub_8108BE0(struct Sprite *); -extern void sub_8108C08(struct Sprite *); -extern void sub_8108C54(struct Sprite *); -extern void sub_8108CDC(struct Sprite *); -extern void sub_80A8EE4(struct Sprite *); +void sub_810721C(struct Sprite *); +void sub_8107228(struct Sprite *); +void sub_8107260(struct Sprite *); +void sub_8107380(struct Sprite *); +void sub_8107408(struct Sprite *); +void sub_8107430(struct Sprite *); +void sub_810744C(struct Sprite *); +void sub_81074E4(struct Sprite *); +void sub_81075EC(struct Sprite *); +void sub_8107674(struct Sprite *); +void sub_8107730(struct Sprite *); +void sub_81077A4(struct Sprite *); +void sub_81077C0(struct Sprite *); +void sub_8107894(struct Sprite *); +void sub_81078D0(struct Sprite *); +void sub_810790C(struct Sprite *); +void sub_8108034(struct Sprite *); +void sub_8108098(struct Sprite *); +void sub_810851C(struct Sprite *); +void sub_81087C0(struct Sprite *); +void sub_810886C(struct Sprite *); +void sub_8108B2C(struct Sprite *); +void sub_8108B94(struct Sprite *); +void sub_8108BE0(struct Sprite *); +void sub_8108C08(struct Sprite *); +void sub_8108C54(struct Sprite *); +void sub_8108CDC(struct Sprite *); void sub_810756C(u8); void sub_81076F4(u8); void sub_8107B84(u8); diff --git a/src/window.c b/src/window.c index 3da529178..fbce57743 100644 --- a/src/window.c +++ b/src/window.c @@ -6,7 +6,8 @@ u32 filler_03002F58; u32 filler_03002F5C; -u8 gUnknown_03002F60; +// This global is set to 0 and never changed. +u8 gTransparentTileNumber; u32 filler_03002F64; void *gUnknown_03002F70[4]; extern u32 gUnneededFireRedVariable; @@ -106,7 +107,7 @@ bool16 InitWindows(const struct WindowTemplate *templates) } } - gUnknown_03002F60 = 0; + gTransparentTileNumber = 0; return TRUE; } @@ -359,13 +360,14 @@ void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 h } } +// Fills a window with transparent tiles. void ClearWindowTilemap(u8 windowId) { struct Window windowLocal = gWindows[windowId]; FillBgTilemapBufferRect( windowLocal.window.bg, - gUnknown_03002F60, + gTransparentTileNumber, windowLocal.window.tilemapLeft, windowLocal.window.tilemapTop, windowLocal.window.width, @@ -451,6 +453,7 @@ void CopyToWindowPixelBuffer(u8 windowId, const void *src, u16 size, u16 tileOff LZ77UnCompWram(src, gWindows[windowId].tileData + (0x20 * tileOffset)); } +// Sets all pixels within the window to the fillValue color. void FillWindowPixelBuffer(u8 windowId, u8 fillValue) { int fillSize = gWindows[windowId].window.width * gWindows[windowId].window.height; |