diff --git a/include/battle_main.h b/include/battle_main.h index 3b83a2c33..8d5e1d19d 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -69,7 +69,7 @@ void VBlankCB_Battle(void); void SpriteCB_VsLetterDummy(struct Sprite *sprite); void SpriteCB_VsLetterInit(struct Sprite *sprite); void CB2_InitEndLinkBattle(void); -u32 GetBattleBgAttribute(u8 arrayId, u8 caseId); +u32 GetBattleBgTemplateData(u8 arrayId, u8 caseId); void SpriteCB_EnemyMon(struct Sprite *sprite); void SpriteCallbackDummy_2(struct Sprite *sprite); void SpriteCB_FaintOpponentMon(struct Sprite *sprite); diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h index 0eb6b63f4..c78452622 100644 --- a/include/battle_string_ids.h +++ b/include/battle_string_ids.h @@ -1,8 +1,6 @@ #ifndef GUARD_BATTLE_STRING_IDS_H #define GUARD_BATTLE_STRING_IDS_H -#define BATTLESTRINGS_ID_ADDER 12 // all battlestrings have its ID + 12, because first 5 are reserved - #define STRINGID_INTROMSG 0 #define STRINGID_INTROSENDOUT 1 #define STRINGID_RETURNMON 2 @@ -389,4 +387,9 @@ #define BATTLESTRINGS_COUNT 374 +// This is the string id that gBattleStringsTable starts with. +// String ids before this (e.g. STRINGID_INTROMSG) are not in the table, +// and are instead handled explicitly by BufferStringBattle. +#define BATTLESTRINGS_TABLE_START STRINGID_TRAINER1LOSETEXT + #endif // GUARD_BATTLE_STRING_IDS_H diff --git a/include/constants/battle.h b/include/constants/battle.h index 3260200ae..c2efecafc 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -314,4 +314,34 @@ #define BATTLE_RUN_FORBIDDEN 1 #define BATTLE_RUN_FAILURE 2 +// Window Ids for sStandardBattleWindowTemplates +#define B_WIN_MSG 0 +#define B_WIN_ACTION_PROMPT 1 // "What will {x} do?" +#define B_WIN_ACTION_MENU 2 // "Fight/Pokémon/Bag/Run" menu +#define B_WIN_MOVE_NAME_1 3 // Top left +#define B_WIN_MOVE_NAME_2 4 // Top right +#define B_WIN_MOVE_NAME_3 5 // Bottom left +#define B_WIN_MOVE_NAME_4 6 // Bottom right +#define B_WIN_PP 7 +#define B_WIN_MOVE_TYPE 8 +#define B_WIN_PP_REMAINING 9 +#define B_WIN_DUMMY 10 +#define B_WIN_SWITCH_PROMPT 11 // "Switch which?" +#define B_WIN_YESNO 14 +#define B_WIN_VS_PLAYER 15 +#define B_WIN_VS_OPPONENT 16 +#define B_WIN_VS_MULTI_PLAYER_1 17 +#define B_WIN_VS_MULTI_PLAYER_2 18 +#define B_WIN_VS_MULTI_PLAYER_3 19 +#define B_WIN_VS_MULTI_PLAYER_4 20 +#define B_WIN_VS_OUTCOME_DRAW 21 +#define B_WIN_VS_OUTCOME_LEFT 22 +#define B_WIN_VS_OUTCOME_RIGHT 23 +#define B_WIN_OAK_OLD_MAN 24 + +#define B_TEXT_FLAG_NONE (0 << 0) +#define B_TEXT_FLAG_NPC_CONTEXT_FONT (1 << 6) +#define B_TEXT_FLAG_WINDOW_CLEAR (1 << 7) +#define B_TEXT_FLAG_BOTH (B_TEXT_FLAG_NPC_CONTEXT_FONT | B_TEXT_FLAG_WINDOW_CLEAR) + #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/include/constants/global.h b/include/constants/global.h index caee324aa..fff17a8b6 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -30,6 +30,7 @@ #define GAME_LANGUAGE (LANGUAGE_ENGLISH) #endif +// capacities of various saveblock objects #define DAYCARE_MON_COUNT 2 #define PC_ITEMS_COUNT 30 #define BAG_ITEMS_COUNT 42 @@ -53,6 +54,9 @@ #define POCKET_BERRY_POUCH 5 #define NUM_BAG_POCKETS 5 +// Contests +#define CONTEST_CATEGORIES_COUNT 5 + // string lengths #define ITEM_NAME_LENGTH 14 #define POKEMON_NAME_LENGTH 10 diff --git a/include/constants/items.h b/include/constants/items.h index 8f3e82c90..fc1e008a0 100644 --- a/include/constants/items.h +++ b/include/constants/items.h @@ -447,6 +447,7 @@ #define FIRST_BERRY_INDEX ITEM_CHERI_BERRY #define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY #define ITEM_TO_BERRY(itemId)(((itemId - FIRST_BERRY_INDEX) + 1)) +#define MAIL_NONE 0xFF #define NUM_TECHNICAL_MACHINES 50 #define NUM_HIDDEN_MACHINES 8 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 43a3a59d4..7a9a0afcf 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -81,7 +81,7 @@ #define MON_DATA_NATIONAL_RIBBON 76 #define MON_DATA_EARTH_RIBBON 77 #define MON_DATA_WORLD_RIBBON 78 -#define MON_DATA_FILLER 79 +#define MON_DATA_UNUSED_RIBBONS 79 #define MON_DATA_EVENT_LEGAL 80 #define MON_DATA_KNOWN_MOVES 81 #define MON_DATA_RIBBON_COUNT 82 diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h index e4fbf0fc0..781f26ed3 100644 --- a/include/evolution_graphics.h +++ b/include/evolution_graphics.h @@ -5,12 +5,12 @@ void LoadEvoSparkleSpriteAndPal(void); -u8 LaunchTask_PreEvoSparklesSet1(u16 arg0); -u8 LaunchTask_PreEvoSparklesSet2(void); -u8 LaunchTask_PostEvoSparklesSet1(void); -u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species); -u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species); -u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId); +u8 EvolutionSparkles_SpiralUpward(u16 arg0); +u8 EvolutionSparkles_ArcDown(void); +u8 EvolutionSparkles_CircleInward(void); +u8 EvolutionSparkles_SprayAndFlash(u16 species); +u8 EvolutionSparkles_SprayAndFlash_Trade(u16 species); +u8 CycleEvolutionMonSprite(u8 preEvoSpriteId, u8 postEvoSpriteId); #define EvoGraphicsTaskEvoStop data[8] diff --git a/include/pokemon.h b/include/pokemon.h index 6134064d0..9c24a7389 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -73,7 +73,7 @@ struct PokemonSubstruct3 /* 0x0B */ u32 nationalRibbon:1; /* 0x0B */ u32 earthRibbon:1; /* 0x0B */ u32 worldRibbon:1; // distributed during Pokémon Festa '04 and '05 to tournament winners - /* 0x0B */ u32 filler:4; + /* 0x0B */ u32 unusedRibbons:4; // discarded in Gen 4 /* 0x0B */ u32 eventLegal:1; // controls Mew & Deoxys obedience; if set, Pokémon is a fateful encounter in FRLG & Gen 4+ summary screens; set for in-game event island legendaries, some distributed events, and Pokémon from XD: Gale of Darkness. }; diff --git a/include/sound.h b/include/sound.h index 840c23865..82ec758c5 100644 --- a/include/sound.h +++ b/include/sound.h @@ -24,7 +24,7 @@ bool8 IsBGMPausedOrStopped(void); void FadeInBGM(u8 speed); void FadeOutBGM(u8 speed); bool8 IsBGMStopped(void); -void PlayCry1(u16 species, s8 pan); +void PlayCry_Normal(u16 species, s8 pan); void PlayCry2(u16 species, s8 pan, s8 volume, u8 priority); void PlayCry3(u16 species, s8 pan, u8 mode); void PlayCry4(u16 species, s8 pan, u8 mode); diff --git a/include/trade_scene.h b/include/trade_scene.h index 31679eafe..876481c8f 100644 --- a/include/trade_scene.h +++ b/include/trade_scene.h @@ -9,7 +9,7 @@ u16 GetInGameTradeSpeciesInfo(void); u16 GetTradeSpecies(void); void InitTradeSequenceBgGpuRegs(void); void LinkTradeDrawWindow(void); -void LoadTradeAnimGfx(void); +void InitTradeBg(void); extern const u16 gTradeOrHatchMonShadowTilemap[]; extern const struct WindowTemplate gTradeEvolutionSceneYesNoWindowTemplate; diff --git a/src/battle_bg.c b/src/battle_bg.c index 7a4aa9d12..976781fee 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -764,7 +764,7 @@ static void DrawLinkBattleVsScreenOutcomeText(void) { if (gBattleOutcome == B_OUTCOME_DREW) { - BattlePutTextOnWindow(gText_Draw, 0x15); + BattlePutTextOnWindow(gText_Draw, (B_WIN_VS_OUTCOME_DRAW | B_TEXT_FLAG_NONE)); } else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { @@ -773,20 +773,20 @@ static void DrawLinkBattleVsScreenOutcomeText(void) switch (gLinkPlayers[gBattleStruct->multiplayerId].id) { case 0: - BattlePutTextOnWindow(gText_Win, 0x16); - BattlePutTextOnWindow(gText_Loss, 0x17); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); break; case 1: - BattlePutTextOnWindow(gText_Win, 0x17); - BattlePutTextOnWindow(gText_Loss, 0x16); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); break; case 2: - BattlePutTextOnWindow(gText_Win, 0x16); - BattlePutTextOnWindow(gText_Loss, 0x17); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); break; case 3: - BattlePutTextOnWindow(gText_Win, 0x17); - BattlePutTextOnWindow(gText_Loss, 0x16); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); break; } } @@ -795,20 +795,20 @@ static void DrawLinkBattleVsScreenOutcomeText(void) switch (gLinkPlayers[gBattleStruct->multiplayerId].id) { case 0: - BattlePutTextOnWindow(gText_Win, 0x17); - BattlePutTextOnWindow(gText_Loss, 0x16); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); break; case 1: - BattlePutTextOnWindow(gText_Win, 0x16); - BattlePutTextOnWindow(gText_Loss, 0x17); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); break; case 2: - BattlePutTextOnWindow(gText_Win, 0x17); - BattlePutTextOnWindow(gText_Loss, 0x16); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); break; case 3: - BattlePutTextOnWindow(gText_Win, 0x16); - BattlePutTextOnWindow(gText_Loss, 0x17); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); break; } } @@ -817,26 +817,26 @@ static void DrawLinkBattleVsScreenOutcomeText(void) { if (gLinkPlayers[gBattleStruct->multiplayerId].id != 0) { - BattlePutTextOnWindow(gText_Win, 0x17); - BattlePutTextOnWindow(gText_Loss, 0x16); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); } else { - BattlePutTextOnWindow(gText_Win, 0x16); - BattlePutTextOnWindow(gText_Loss, 0x17); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); } } else { if (gLinkPlayers[gBattleStruct->multiplayerId].id != 0) { - BattlePutTextOnWindow(gText_Win, 0x16); - BattlePutTextOnWindow(gText_Loss, 0x17); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); } else { - BattlePutTextOnWindow(gText_Win, 0x17); - BattlePutTextOnWindow(gText_Loss, 0x16); + BattlePutTextOnWindow(gText_Win, (B_WIN_VS_OUTCOME_RIGHT | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_Loss, (B_WIN_VS_OUTCOME_LEFT | B_TEXT_FLAG_NONE)); } } } @@ -860,19 +860,19 @@ void InitLinkBattleVsScreen(u8 taskId) switch (linkPlayer->id) { case 0: - BattlePutTextOnWindow(name, 0x11); + BattlePutTextOnWindow(name, (B_WIN_VS_MULTI_PLAYER_1 | B_TEXT_FLAG_NONE)); DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 4); break; case 1: - BattlePutTextOnWindow(name, 0x12); + BattlePutTextOnWindow(name, (B_WIN_VS_MULTI_PLAYER_2 | B_TEXT_FLAG_NONE)); DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 4); break; case 2: - BattlePutTextOnWindow(name, 0x13); + BattlePutTextOnWindow(name, (B_WIN_VS_MULTI_PLAYER_3 | B_TEXT_FLAG_NONE)); DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 8); break; case 3: - BattlePutTextOnWindow(name, 0x14); + BattlePutTextOnWindow(name, (B_WIN_VS_MULTI_PLAYER_4 | B_TEXT_FLAG_NONE)); DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 8); break; } @@ -888,10 +888,10 @@ void InitLinkBattleVsScreen(u8 taskId) opponentId = playerId, playerId = opponentId_copy; name = gLinkPlayers[playerId].name; - BattlePutTextOnWindow(name, 0xF); + BattlePutTextOnWindow(name, (B_WIN_VS_PLAYER | B_TEXT_FLAG_NONE)); name = gLinkPlayers[opponentId].name; - BattlePutTextOnWindow(name, 0x10); + BattlePutTextOnWindow(name, (B_WIN_VS_OPPONENT | B_TEXT_FLAG_NONE)); DrawLinkBattleParticipantPokeballs(taskId, playerId, 1, 2, 7); DrawLinkBattleParticipantPokeballs(taskId, opponentId, 2, 2, 7); diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index ad21a7e56..eb211e7c8 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1310,9 +1310,9 @@ static void LinkOpponentHandlePrintString(void) stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); BufferStringBattle(*stringId); if (BattleStringShouldBeColored(*stringId)) - BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NPC_CONTEXT_FONT)); else - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; } diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 539532070..b46591825 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -1223,9 +1223,9 @@ static void LinkPartnerHandlePrintString(void) stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); BufferStringBattle(*stringId); if (BattleStringShouldBeColored(*stringId)) - BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NPC_CONTEXT_FONT)); else - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; } diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index 4a40d0a64..f578c7136 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -651,7 +651,7 @@ static void PrintOakText_ForPetesSake(void) break; case 2: BattleStringExpandPlaceholdersToDisplayedString(gText_ForPetesSake); - BattlePutTextOnWindow(gDisplayedStringBattle, 24); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_OAK_OLD_MAN | B_TEXT_FLAG_NONE)); ++gBattleStruct->simulatedInputState[0]; break; case 3: @@ -670,7 +670,7 @@ static void PrintOakText_ForPetesSake(void) if (!gPaletteFade.active) { BattleStringExpandPlaceholdersToDisplayedString(gText_TheTrainerThat); - BattlePutTextOnWindow(gDisplayedStringBattle, 24); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_OAK_OLD_MAN | B_TEXT_FLAG_NONE)); ++gBattleStruct->simulatedInputState[0]; } break; @@ -690,7 +690,7 @@ static void PrintOakText_ForPetesSake(void) if (!gPaletteFade.active) { BattleStringExpandPlaceholdersToDisplayedString(gText_TryBattling); - BattlePutTextOnWindow(gDisplayedStringBattle, 24); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_OAK_OLD_MAN | B_TEXT_FLAG_NONE)); ++gBattleStruct->simulatedInputState[0]; } break; @@ -774,7 +774,7 @@ static void PrintOakTextWithMainBgDarkened(const u8 *text, u8 delay) break; case 3: BattleStringExpandPlaceholdersToDisplayedString(text); - BattlePutTextOnWindow(gDisplayedStringBattle, 24); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_OAK_OLD_MAN | B_TEXT_FLAG_NONE)); ++gBattleStruct->simulatedInputState[0]; break; case 4: @@ -842,7 +842,7 @@ static void PrintOakText_KeepAnEyeOnHP(void) break; case 3: BattleStringExpandPlaceholdersToDisplayedString(gText_KeepAnEyeOnHP); - BattlePutTextOnWindow(gDisplayedStringBattle, 24); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_OAK_OLD_MAN | B_TEXT_FLAG_NONE)); ++gBattleStruct->simulatedInputState[0]; break; case 4: @@ -1759,9 +1759,9 @@ static void OakOldManHandlePrintString(void) { BufferStringBattle(*stringId); if (BattleStringShouldBeColored(*stringId)) - BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NPC_CONTEXT_FONT)); else - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) { switch (*stringId) @@ -1815,8 +1815,8 @@ static void OakOldManHandleChooseAction(void) s32 i; gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; - BattlePutTextOnWindow(gText_EmptyString3, 0); - BattlePutTextOnWindow(gText_BattleMenu, 2); + BattlePutTextOnWindow(gText_EmptyString3, (B_WIN_MSG | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_BattleMenu, (B_WIN_ACTION_MENU | B_TEXT_FLAG_NONE)); for (i = 0; i < MAX_MON_MOVES; ++i) ActionSelectionDestroyCursorAt((u8)i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); @@ -1824,7 +1824,7 @@ static void OakOldManHandleChooseAction(void) BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); else BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillOldManDo); - BattlePutTextOnWindow(gDisplayedStringBattle, 1); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_ACTION_PROMPT | B_TEXT_FLAG_NONE)); } static void OakOldManHandleUnknownYesNoBox(void) @@ -2060,7 +2060,7 @@ static void OakOldManHandleFaintingCry(void) { u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); - PlayCry1(species, 25); + PlayCry_Normal(species, 25); OakOldManBufferExecCompleted(); } diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index ce6f6a1c7..8a048fc53 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1312,9 +1312,9 @@ static void OpponentHandlePrintString(void) stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); BufferStringBattle(*stringId); if (BattleStringShouldBeColored(*stringId)) - BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NPC_CONTEXT_FONT)); else - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) { switch (*stringId) diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index c3bf976b4..4367539d7 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -570,7 +570,7 @@ void HandleInputChooseMove(void) else gMultiUsePlayerCursor = gMoveSelectionCursor[gActiveBattler] + 1; MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27); - BattlePutTextOnWindow(gText_BattleSwitchWhich, 0xB); + BattlePutTextOnWindow(gText_BattleSwitchWhich, (B_WIN_SWITCH_PROMPT | B_TEXT_FLAG_NONE)); gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitching; } } @@ -1379,7 +1379,7 @@ static void MoveSelectionDisplayMoveNames(void) static void MoveSelectionDisplayPpString(void) { StringCopy(gDisplayedStringBattle, gText_MoveInterfacePP); - BattlePutTextOnWindow(gDisplayedStringBattle, 7); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_PP | B_TEXT_FLAG_NONE)); } static void MoveSelectionDisplayPpNumber(void) @@ -1394,7 +1394,7 @@ static void MoveSelectionDisplayPpNumber(void) txtPtr = ConvertIntToDecimalStringN(gDisplayedStringBattle, moveInfo->currentPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2); *txtPtr = CHAR_SLASH; ConvertIntToDecimalStringN(++txtPtr, moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2); - BattlePutTextOnWindow(gDisplayedStringBattle, 9); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_PP_REMAINING | B_TEXT_FLAG_NONE)); } static void MoveSelectionDisplayMoveType(void) @@ -1408,7 +1408,7 @@ static void MoveSelectionDisplayMoveType(void) *txtPtr++ = 1; txtPtr = StringCopy(txtPtr, gUnknown_83FE770); StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]); - BattlePutTextOnWindow(gDisplayedStringBattle, 8); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MOVE_TYPE | B_TEXT_FLAG_NONE)); } void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1) @@ -1479,7 +1479,7 @@ static void PrintLinkStandbyMsg(void) { gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - BattlePutTextOnWindow(gText_LinkStandby, 0); + BattlePutTextOnWindow(gText_LinkStandby, (B_WIN_MSG | B_TEXT_FLAG_NONE)); } } @@ -2377,9 +2377,9 @@ static void PlayerHandlePrintString(void) stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); BufferStringBattle(*stringId); if (BattleStringShouldBeColored(*stringId)) - BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NPC_CONTEXT_FONT)); else - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2; } @@ -2406,13 +2406,13 @@ static void PlayerHandleChooseAction(void) s32 i; gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; - BattlePutTextOnWindow(gText_EmptyString3, 0); - BattlePutTextOnWindow(gText_BattleMenu, 2); + BattlePutTextOnWindow(gText_EmptyString3, (B_WIN_MSG | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_BattleMenu, (B_WIN_ACTION_MENU | B_TEXT_FLAG_NONE)); for (i = 0; i < 4; ++i) ActionSelectionDestroyCursorAt(i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); - BattlePutTextOnWindow(gDisplayedStringBattle, 1); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_ACTION_PROMPT | B_TEXT_FLAG_NONE)); } static void PlayerHandleUnknownYesNoBox(void) diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c index 5b5ee3eb0..4bacb902e 100644 --- a/src/battle_controller_pokedude.c +++ b/src/battle_controller_pokedude.c @@ -1533,9 +1533,9 @@ static void PokedudeHandlePrintString(void) stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); BufferStringBattle(*stringId); if (BattleStringShouldBeColored(*stringId)) - BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NPC_CONTEXT_FONT)); else - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; } @@ -1564,13 +1564,13 @@ static void PokedudeHandleChooseAction(void) if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; - BattlePutTextOnWindow(gText_EmptyString3, 0); - BattlePutTextOnWindow(gText_BattleMenu, 2); + BattlePutTextOnWindow(gText_EmptyString3, (B_WIN_MSG | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gText_BattleMenu, (B_WIN_ACTION_MENU | B_TEXT_FLAG_NONE)); for (i = 0; i < MAX_MON_MOVES; ++i) ActionSelectionDestroyCursorAt((u8)i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); - BattlePutTextOnWindow(gDisplayedStringBattle, 1); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_ACTION_PROMPT | B_TEXT_FLAG_NONE)); } else { @@ -1834,7 +1834,7 @@ static void PokedudeHandleFaintingCry(void) else mon = &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]; species = GetMonData(mon, MON_DATA_SPECIES); - PlayCry1(species, 25); + PlayCry_Normal(species, 25); PokedudeBufferExecCompleted(); } @@ -2557,7 +2557,7 @@ static void PokedudeAction_PrintVoiceoverMessage(void) case 2: gBattle_BG0_Y = 0; BattleStringExpandPlaceholdersToDisplayedString(GetPokedudeText()); - BattlePutTextOnWindow(gDisplayedStringBattle, 24); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_OAK_OLD_MAN | B_TEXT_FLAG_NONE)); ++gPokedudeBattlerStates[gActiveBattler]->timer; break; case 3: @@ -2618,7 +2618,7 @@ static void PokedudeAction_PrintMessageWithHealthboxPals(void) break; case 3: BattleStringExpandPlaceholdersToDisplayedString(GetPokedudeText()); - BattlePutTextOnWindow(gDisplayedStringBattle, 24); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_OAK_OLD_MAN | B_TEXT_FLAG_NONE)); ++gPokedudeBattlerStates[gActiveBattler]->timer; break; case 4: diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 0fd72ed10..bb6e34296 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -409,9 +409,9 @@ static void SafariHandlePrintString(void) stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); BufferStringBattle(*stringId); if (BattleStringShouldBeColored(*stringId)) - BattlePutTextOnWindow(gDisplayedStringBattle, 0x40); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NPC_CONTEXT_FONT)); else - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; } @@ -438,13 +438,13 @@ static void SafariHandleChooseAction(void) s32 i; gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; - BattlePutTextOnWindow(gText_EmptyString3, 0); - BattlePutTextOnWindow(gUnknown_83FE747, 2); + BattlePutTextOnWindow(gText_EmptyString3, (B_WIN_MSG | B_TEXT_FLAG_NONE)); + BattlePutTextOnWindow(gUnknown_83FE747, (B_WIN_ACTION_MENU | B_TEXT_FLAG_NONE)); for (i = 0; i < 4; ++i) ActionSelectionDestroyCursorAt(i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPlayerThrow); - BattlePutTextOnWindow(gDisplayedStringBattle, 1); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_ACTION_PROMPT | B_TEXT_FLAG_NONE)); } static void SafariHandleUnknownYesNoBox(void) @@ -594,7 +594,7 @@ static void SafariHandleFaintingCry(void) { u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); - PlayCry1(species, 25); + PlayCry_Normal(species, 25); SafariBufferExecCompleted(); } diff --git a/src/battle_main.c b/src/battle_main.c index b98fe6e2b..957fac0f4 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1796,7 +1796,7 @@ static void EndLinkBattleInSteps(void) } } -u32 GetBattleBgAttribute(u8 arrayId, u8 caseId) +u32 GetBattleBgTemplateData(u8 arrayId, u8 caseId) { u32 ret = 0; @@ -1859,7 +1859,7 @@ static void SpriteCB_MoveWildMonToRight(struct Sprite *sprite) if (sprite->x2 == 0) { sprite->callback = SpriteCB_WildMonShowHealthbox; - PlayCry1(sprite->data[2], 25); + PlayCry_Normal(sprite->data[2], 25); } } } diff --git a/src/battle_message.c b/src/battle_message.c index 73735d49c..63911400d 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1701,14 +1701,14 @@ void BufferStringBattle(u16 stringId) } break; default: // load a string from the table - if (stringId >= BATTLESTRINGS_COUNT + BATTLESTRINGS_ID_ADDER) + if (stringId >= BATTLESTRINGS_COUNT + BATTLESTRINGS_TABLE_START) { gDisplayedStringBattle[0] = EOS; return; } else { - stringPtr = gBattleStringsTable[stringId - BATTLESTRINGS_ID_ADDER]; + stringPtr = gBattleStringsTable[stringId - BATTLESTRINGS_TABLE_START]; } break; } @@ -2169,7 +2169,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) { case B_BUFF_STRING: // battle string hword = T1_READ_16(&src[srcId + 1]); - StringAppend(dst, gBattleStringsTable[hword - BATTLESTRINGS_ID_ADDER]); + StringAppend(dst, gBattleStringsTable[hword - BATTLESTRINGS_TABLE_START]); srcId += 3; break; case B_BUFF_NUMBER: // int to string diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 19ec1d615..4b0a8e713 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -4983,7 +4983,7 @@ static void atk5A_yesnoboxlearnmove(void) { case 0: HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); - BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + BattlePutTextOnWindow(gText_BattleYesNoChoice, (B_WIN_YESNO | B_TEXT_FLAG_NONE)); ++gBattleScripting.learnMoveState; gBattleCommunication[CURSOR_POSITION] = 0; BattleCreateYesNoCursorAt(); @@ -5093,7 +5093,7 @@ static void atk5B_yesnoboxstoplearningmove(void) { case 0: HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); - BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + BattlePutTextOnWindow(gText_BattleYesNoChoice, (B_WIN_YESNO | B_TEXT_FLAG_NONE)); ++gBattleScripting.learnMoveState; gBattleCommunication[CURSOR_POSITION] = 0; BattleCreateYesNoCursorAt(); @@ -5381,7 +5381,7 @@ static void atk67_yesnobox(void) { case 0: HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); - BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + BattlePutTextOnWindow(gText_BattleYesNoChoice, (B_WIN_YESNO | B_TEXT_FLAG_NONE)); ++gBattleCommunication[0]; gBattleCommunication[CURSOR_POSITION] = 0; BattleCreateYesNoCursorAt(); @@ -9298,7 +9298,7 @@ static void atkF3_trygivecaughtmonnick(void) { case 0: HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); - BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + BattlePutTextOnWindow(gText_BattleYesNoChoice, (B_WIN_YESNO | B_TEXT_FLAG_NONE)); ++gBattleCommunication[MULTIUSE_STATE]; gBattleCommunication[CURSOR_POSITION] = 0; BattleCreateYesNoCursorAt(); diff --git a/src/battle_transition.c b/src/battle_transition.c index 7b6ad2a87..a14cfd3e3 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1982,7 +1982,7 @@ static bool8 BT_Phase2Mugshot_ExpandWhiteBand(struct Task *task) static bool8 BT_Phase2Mugshot_StartBlackFade(struct Task *task) { sTransitionStructPtr->vblankDma = FALSE; - BlendPalettes(0xFFFFFFFF, 0x10, RGB_WHITE); + BlendPalettes(PALETTES_ALL, 0x10, RGB_WHITE); sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN; task->tCounter = 0; ++task->tState; @@ -2310,7 +2310,7 @@ static bool8 BT_Phase2WhiteFadeInStripes_IsWhiteFadeDone(struct Task *task) sTransitionStructPtr->vblankDma = FALSE; if (sTransitionStructPtr->counter > 5) { - BlendPalettes(0xFFFFFFFF, 0x10, RGB_WHITE); + BlendPalettes(PALETTES_ALL, 0x10, RGB_WHITE); ++task->tState; } return FALSE; @@ -2658,7 +2658,7 @@ static bool8 BT_Phase1_FadeIn(struct Task *task) task->tCoeff -= task->tFadeInSpeed; if (task->tCoeff < 0) task->tCoeff = 0; - BlendPalettes(0xFFFFFFFF, task->tCoeff, RGB(11, 11, 11)); + BlendPalettes(PALETTES_ALL, task->tCoeff, RGB(11, 11, 11)); } if (task->tCoeff == 0) { @@ -2719,7 +2719,7 @@ static void BT_GetBg0TilemapAndTilesetBase(u16 **tilemapPtr, u16 **tilesetPtr) static void BT_BlendPalettesToBlack(void) { - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); } static void BT_LoadWaveIntoBuffer(s16 *buffer, s16 offset, s16 theta, s16 frequency, s16 amplitude, s16 bufSize) diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 086dfc2f4..875f37137 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -552,7 +552,7 @@ static bool8 RunBerryPouchInit(void) gMain.state++; break; case 17: - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); gMain.state++; break; case 18: diff --git a/src/dark.c b/src/dark.c index 202782c55..9b12555d9 100644 --- a/src/dark.c +++ b/src/dark.c @@ -412,7 +412,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) GetBattleAnimBg1Data(&animBg); task->data[10] = gBattle_BG1_Y; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); - FillPalette(0, animBg.paletteId * 16, 32); + FillPalette(RGB_BLACK, animBg.paletteId * 16, 32); scanlineParams.dmaDest = ®_BG1VOFS; var0 = WINOUT_WIN01_BG1; if (!IsContest()) @@ -422,7 +422,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) { task->data[10] = gBattle_BG2_Y; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2); - FillPalette(0, 144, 32); + FillPalette(RGB_BLACK, 144, 32); scanlineParams.dmaDest = ®_BG2VOFS; var0 = WINOUT_WIN01_BG2; if (!IsContest()) @@ -542,12 +542,12 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) { GetBattleAnimBg1Data(&animBg); task->data[10] = gBattle_BG1_Y; - FillPalette(0, animBg.paletteId * 16, 32); + FillPalette(RGB_BLACK, animBg.paletteId * 16, 32); } else { task->data[10] = gBattle_BG2_Y; - FillPalette(0, 9 * 16, 32); + FillPalette(RGB_BLACK, 9 * 16, 32); } sub_80B856C(3); ++task->data[0]; diff --git a/src/daycare.c b/src/daycare.c index f43742aca..141f40db5 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1920,7 +1920,7 @@ static void CB2_EggHatch_1(void) case 3: if (gSprites[sEggHatchData->eggSpriteID].callback == SpriteCallbackDummy) { - PlayCry1(sEggHatchData->species, 0); + PlayCry_Normal(sEggHatchData->species, 0); sEggHatchData->CB2_state++; } break; diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 377a9661e..68e618bf8 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -332,7 +332,7 @@ static void sub_8150A84(u8 taskId) gUnknown_203F3E0->unk0C++; break; case 6: - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); SetVBlankCallback(sub_8152034); gUnknown_203F3E0->unk0C++; @@ -902,7 +902,7 @@ static void sub_815159C(void) gUnknown_203F3E0->unk10++; break; case 5: - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); gUnknown_203F3E0->unk10++; break; diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index fd445d827..90d066674 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -162,7 +162,7 @@ static void Task_RunEasyChat(u8 taskId) { case 0: SetVBlankCallback(VBlankCallback_EasyChatScreen); - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, -1, 16, 0, RGB_BLACK); data[EZCHAT_TASK_STATE]++; break; diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index 54f378670..c1d6befac 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -259,7 +259,7 @@ void LoadEvoSparkleSpriteAndPal(void) LoadSpritePalettes(sSpritePalette_EvolutionSparkles); } -u8 LaunchTask_PreEvoSparklesSet1(u16 a0) +u8 EvolutionSparkles_SpiralUpward(u16 a0) { u8 taskId = CreateTask(EvoTask_PreEvoSparkleSet1Init, 0); gTasks[taskId].data[1] = a0; @@ -302,7 +302,7 @@ static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskId) DestroyTask(taskId); } -u8 LaunchTask_PreEvoSparklesSet2(void) +u8 EvolutionSparkles_ArcDown(void) { u8 taskId = CreateTask(EvoTask_PreEvoSparkleSet2Init, 0); return taskId; @@ -339,7 +339,7 @@ static void EvoTask_PreEvoSparkleSet2Teardown(u8 taskId) DestroyTask(taskId); } -u8 LaunchTask_PostEvoSparklesSet1(void) +u8 EvolutionSparkles_CircleInward(void) { u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet1Init, 0); return taskId; @@ -385,7 +385,7 @@ static void EvoTask_PostEvoSparklesSet1Teardown(u8 taskId) DestroyTask(taskId); } -u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species) +u8 EvolutionSparkles_SprayAndFlash(u16 species) { u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2Init, 0); gTasks[taskId].data[2] = species; @@ -436,7 +436,7 @@ static void EvoTask_PostEvoSparklesSet2Teardown(u8 taskId) DestroyTask(taskId); } -u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species) +u8 EvolutionSparkles_SprayAndFlash_Trade(u16 species) { u8 taskId = CreateTask(EvoTask_PostEvoSparklesSet2TradeInit, 0); gTasks[taskId].data[2] = species; @@ -493,7 +493,7 @@ static void SpriteCallbackDummy_MonSprites(struct Sprite * sprite) #define tDirection data[5] #define tSpeed data[6] -u8 LaunchTask_PrePostEvoMonSprites(u8 preEvoSpriteId, u8 postEvoSpriteId) +u8 CycleEvolutionMonSprite(u8 preEvoSpriteId, u8 postEvoSpriteId) { u16 i; u8 taskId; diff --git a/src/evolution_scene.c b/src/evolution_scene.c index cb2e472bf..1229d67ba 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -23,8 +23,10 @@ #include "text_window.h" #include "trig.h" #include "battle_string_ids.h" +#include "constants/moves.h" #include "constants/songs.h" #include "constants/pokemon.h" +#include "constants/items.h" extern struct Evolution gEvolutionTable[][EVOS_PER_MON]; @@ -33,13 +35,13 @@ struct EvoInfo u8 preEvoSpriteId; u8 postEvoSpriteId; u8 evoTaskId; - u8 field_3; + u8 delayTimer; u16 savedPalette[48]; }; // EWRAM vars static EWRAM_DATA struct EvoInfo *sEvoStructPtr = NULL; -static EWRAM_DATA u16 *sEvoMovingBgPtr = NULL; +static EWRAM_DATA u16 *sBgAnimPal = NULL; // IWRAM common void (*gCB2_AfterEvolution)(void); @@ -55,10 +57,10 @@ static void CB2_TradeEvolutionSceneUpdate(void); static void EvoDummyFunc(void); static void VBlankCB_EvolutionScene(void); static void VBlankCB_TradeEvolutionScene(void); -static void DestroyMovingBackgroundTasks(void); -static void InitMovingBackgroundTask(bool8 isLink); -static void Task_MovingBackgroundPos(u8 taskId); -static void ResetBgRegsAfterMovingBackgroundCancel(void); +static void StartBgAnimation(bool8 isLink); +static void StopBgAnimation(void); +static void Task_AnimateBg(u8 taskId); +static void RestoreBgAfterAnim(void); // const data static const u16 sUnusedPal[] = INCBIN_U16("graphics/evolution_scene/unused.gbapal"); @@ -67,7 +69,7 @@ static const u32 sMovingBackgroundMap1[] = INCBIN_U32("graphics/evolution_scene/ static const u32 sMovingBackgroundMap2[] = INCBIN_U32("graphics/evolution_scene/bg2.bin.lz"); static const u16 sBlackPalette[] = INCBIN_U16("graphics/evolution_scene/gray_transition_intro.gbapal"); static const u16 sUnusedTilemap[] = INCBIN_U16("graphics/evolution_scene/unused_tilemap.bin"); -static const u16 sMovingBgPals[] = INCBIN_U16("graphics/evolution_scene/transition.gbapal"); +static const u16 sBgAnim_Pal[] = INCBIN_U16("graphics/evolution_scene/transition.gbapal"); static const u8 sText_ShedinjaJapaneseName[] = _("ヌケニン"); @@ -79,8 +81,13 @@ static const u8 unref_83F844F[][10] = { _(" \n ") }; -// start frame, stop frame, loop count, delay -static const u8 sMovingBackgroundTimers[][4] = +// The below table is used by Task_UpdateBgPalette to control the speed at which the bg color updates. +// The first two values are indexes into sBgAnim_PalIndexes (indirectly, via sBgAnimPal), and are +// the start and end of the range of colors in sBgAnim_PalIndexes it will move through incrementally +// before starting over. It will repeat this cycle x number of times, where x = the 3rd value, +// delaying each increment by y, where y = the 4th value. +// Once it has cycled x number of times, it will move to the next array in this table. +static const u8 sBgAnim_PaletteControl[][4] = { { 0, 12, 1, 6 }, { 13, 36, 5, 2 }, @@ -88,7 +95,8 @@ static const u8 sMovingBackgroundTimers[][4] = { 37, 49, 1, 6 }, }; -static const u8 sMovingBgPalIndices[][16] = { +// Indexes into sBgAnim_Pal, 0 is black, transitioning to a bright light blue (172, 213, 255) at 13 +static const u8 sBgAnim_PalIndexes[][16] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0 }, @@ -254,12 +262,12 @@ void EvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, bool8 canStopEvo, u trainerId = GetMonData(mon, MON_DATA_OT_ID); personality = GetMonData(mon, MON_DATA_PERSONALITY); DecompressPicFromTable(&gMonFrontPicTable[currSpecies], - gMonSpritesGfxPtr->sprites[1], + gMonSpritesGfxPtr->sprites[B_POSITION_OPPONENT_LEFT], currSpecies); pokePal = GetMonSpritePalStructFromOtIdPersonality(currSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x110, 0x20); - SetMultiuseSpriteTemplateToPokemon(currSpecies, 1); + SetMultiuseSpriteTemplateToPokemon(currSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; sEvoStructPtr->preEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); @@ -269,12 +277,12 @@ void EvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, bool8 canStopEvo, u // postEvo sprite DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites[3], + gMonSpritesGfxPtr->sprites[B_POSITION_OPPONENT_RIGHT], postEvoSpecies); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20); - SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 3); + SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; sEvoStructPtr->postEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); gSprites[id].callback = SpriteCallbackDummy_2; @@ -292,7 +300,7 @@ void EvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, bool8 canStopEvo, u gTasks[id].tEvoWasStopped = FALSE; gTasks[id].tPartyId = partyId; - memcpy(&sEvoStructPtr->savedPalette, &gPlttBufferUnfaded[0x20], 0x60); + memcpy(&sEvoStructPtr->savedPalette, &gPlttBufferUnfaded[0x20], sizeof(sEvoStructPtr->savedPalette)); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); @@ -309,11 +317,11 @@ static void CB2_EvolutionSceneLoadGraphics(void) const struct CompressedSpritePalette* pokePal; u16 postEvoSpecies; u32 trainerId, personality; - struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId]; + struct Pokemon* mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId]; postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies; - trainerId = GetMonData(Mon, MON_DATA_OT_ID); - personality = GetMonData(Mon, MON_DATA_PERSONALITY); + trainerId = GetMonData(mon, MON_DATA_OT_ID); + personality = GetMonData(mon, MON_DATA_PERSONALITY); SetHBlankCallback(NULL); SetVBlankCallback(NULL); @@ -347,13 +355,13 @@ static void CB2_EvolutionSceneLoadGraphics(void) gReservedSpritePaletteCount = 4; DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites[3], + gMonSpritesGfxPtr->sprites[B_POSITION_OPPONENT_RIGHT], postEvoSpecies); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20); - SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 3); + SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_RIGHT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; sEvoStructPtr->postEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); @@ -376,7 +384,7 @@ static void CB2_EvolutionSceneLoadGraphics(void) static void CB2_TradeEvolutionSceneLoadGraphics(void) { - struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId]; + struct Pokemon* mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId]; u16 postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies; switch (gMain.state) @@ -405,7 +413,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) gMain.state++; break; case 2: - LoadTradeAnimGfx(); + InitTradeBg(); gMain.state++; break; case 3: @@ -416,10 +424,10 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) case 4: { const struct CompressedSpritePalette* pokePal; - u32 trainerId = GetMonData(Mon, MON_DATA_OT_ID); - u32 personality = GetMonData(Mon, MON_DATA_PERSONALITY); + u32 trainerId = GetMonData(mon, MON_DATA_OT_ID); + u32 personality = GetMonData(mon, MON_DATA_PERSONALITY); DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites[3], + gMonSpritesGfxPtr->sprites[B_POSITION_OPPONENT_RIGHT], postEvoSpecies); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20); @@ -430,7 +438,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) { u8 id; - SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 1); + SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; sEvoStructPtr->postEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); @@ -446,7 +454,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void) LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); } - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); gMain.state++; break; case 7: @@ -483,13 +491,13 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, u8 preEvoSprit sEvoStructPtr->preEvoSpriteId = preEvoSpriteId; DecompressPicFromTable(&gMonFrontPicTable[postEvoSpecies], - gMonSpritesGfxPtr->sprites[1], + gMonSpritesGfxPtr->sprites[B_POSITION_OPPONENT_LEFT], postEvoSpecies); pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality); LoadCompressedPalette(pokePal->data, 0x120, 0x20); - SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 1); + SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, B_POSITION_OPPONENT_LEFT); gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable; sEvoStructPtr->postEvoSpriteId = id = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30); @@ -543,26 +551,26 @@ static void CB2_TradeEvolutionSceneUpdate(void) static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) { u32 data = 0; - if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6) + if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE) { s32 i; struct Pokemon* shedinja = &gPlayerParty[gPlayerPartyCount]; CopyMon(&gPlayerParty[gPlayerPartyCount], mon, sizeof(struct Pokemon)); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, (&gEvolutionTable[preEvoSpecies][1].targetSpecies)); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, (gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies])); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, (&data)); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, (&data)); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, (&data)); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_SPECIES, &gEvolutionTable[preEvoSpecies][1].targetSpecies); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_NICKNAME, gSpeciesNames[gEvolutionTable[preEvoSpecies][1].targetSpecies]); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_HELD_ITEM, &data); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, &data); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, &data); - for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++) - SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data)); - for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FILLER; i++) - SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data)); + for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + CONTEST_CATEGORIES_COUNT; i++) + SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data); + for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_UNUSED_RIBBONS; i++) + SetMonData(&gPlayerParty[gPlayerPartyCount], i, &data); - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, (&data)); - data = 0xFF; - SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MAIL, (&data)); + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, &data); + data = MAIL_NONE; + SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MAIL, &data); CalculateMonStats(&gPlayerParty[gPlayerPartyCount]); CalculatePlayerPartyCount(); @@ -577,6 +585,53 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon) } } +// States for the main switch in Task_EvolutionScene +enum { + EVOSTATE_FADE_IN, + EVOSTATE_INTRO_MSG, + EVOSTATE_INTRO_MON_ANIM, + EVOSTATE_INTRO_SOUND, + EVOSTATE_START_MUSIC, + EVOSTATE_START_BG_AND_SPARKLE_SPIRAL, + EVOSTATE_SPARKLE_ARC, + EVOSTATE_CYCLE_MON_SPRITE, + EVOSTATE_WAIT_CYCLE_MON_SPRITE, + EVOSTATE_SPARKLE_CIRCLE, + EVOSTATE_SPARKLE_SPRAY, + EVOSTATE_EVO_SOUND, + EVOSTATE_RESTORE_SCREEN, + EVOSTATE_EVO_MON_ANIM, + EVOSTATE_SET_MON_EVOLVED, + EVOSTATE_TRY_LEARN_MOVE, + EVOSTATE_END, + EVOSTATE_CANCEL, + EVOSTATE_CANCEL_MON_ANIM, + EVOSTATE_CANCEL_MSG, + EVOSTATE_LEARNED_MOVE, + EVOSTATE_TRY_LEARN_ANOTHER_MOVE, + EVOSTATE_REPLACE_MOVE, +}; + +// States for the switch in EVOSTATE_REPLACE_MOVE +enum { + MVSTATE_INTRO_MSG_1, + MVSTATE_INTRO_MSG_2, + MVSTATE_INTRO_MSG_3, + MVSTATE_PRINT_YES_NO, + MVSTATE_HANDLE_YES_NO, + MVSTATE_SHOW_MOVE_SELECT, + MVSTATE_HANDLE_MOVE_SELECT, + MVSTATE_FORGET_MSG_1, + MVSTATE_FORGET_MSG_2, + MVSTATE_LEARNED_MOVE, + MVSTATE_ASK_CANCEL, + MVSTATE_CANCEL, + MVSTATE_RETRY_AFTER_HM, +}; + +// Task data from CycleEvolutionMonSprite +#define tEvoStopped data[8] + static void Task_EvolutionScene(u8 taskId) { u32 var; @@ -585,31 +640,31 @@ static void Task_EvolutionScene(u8 taskId) // Automatically cancel if the Pokemon would evolve into a species you have not // yet unlocked, such as Crobat. if (!IsNationalPokedexEnabled() - && gTasks[taskId].tState == 8 + && gTasks[taskId].tState == EVOSTATE_WAIT_CYCLE_MON_SPRITE && gTasks[taskId].tPostEvoSpecies > SPECIES_MEW) { - gTasks[taskId].tState = 17; + gTasks[taskId].tState = EVOSTATE_CANCEL; gTasks[taskId].tEvoWasStopped = TRUE; - gTasks[sEvoGraphicsTaskId].EvoGraphicsTaskEvoStop = TRUE; - DestroyMovingBackgroundTasks(); + gTasks[sEvoGraphicsTaskId].tEvoStopped = TRUE; + StopBgAnimation(); return; } // check if B Button was held, so the evolution gets stopped if (gMain.heldKeys == B_BUTTON - && gTasks[taskId].tState == 8 + && gTasks[taskId].tState == EVOSTATE_WAIT_CYCLE_MON_SPRITE && gTasks[sEvoGraphicsTaskId].isActive && gTasks[taskId].tBits & TASK_BIT_CAN_STOP) { - gTasks[taskId].tState = 17; - gTasks[sEvoGraphicsTaskId].EvoGraphicsTaskEvoStop = TRUE; - DestroyMovingBackgroundTasks(); + gTasks[taskId].tState = EVOSTATE_CANCEL; + gTasks[sEvoGraphicsTaskId].tEvoStopped = TRUE; + StopBgAnimation(); return; } switch (gTasks[taskId].tState) { - case 0: + case EVOSTATE_FADE_IN: BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); gSprites[sEvoStructPtr->preEvoSpriteId].invisible = FALSE; gTasks[taskId].tState++; @@ -618,107 +673,108 @@ static void Task_EvolutionScene(u8 taskId) ShowBg(2); ShowBg(3); break; - case 1: // print 'whoa, poke is evolving!!!' msg + case EVOSTATE_INTRO_MSG: // print 'whoa, poke is evolving!!!' msg if (!gPaletteFade.active) { StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving); - BattlePutTextOnWindow(gStringVar4, 0); + BattlePutTextOnWindow(gStringVar4, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gTasks[taskId].tState++; } break; - case 2: // wait for string, animate mon(and play its cry) + case EVOSTATE_INTRO_MON_ANIM: // wait for string, animate mon(and play its cry) if (!IsTextPrinterActive(0)) { - PlayCry1(gTasks[taskId].tPreEvoSpecies, 0); + PlayCry_Normal(gTasks[taskId].tPreEvoSpecies, 0); gTasks[taskId].tState++; } break; - case 3: + case EVOSTATE_INTRO_SOUND: if (IsCryFinished()) // wait for animation, play tu du SE { PlaySE(MUS_EVOLUTION_INTRO); gTasks[taskId].tState++; } break; - case 4: // play evolution music and fade screen black + case EVOSTATE_START_MUSIC: // play evolution music and fade screen black if (!IsSEPlaying()) { + // Start music, fade background to black PlayNewMapMusic(MUS_EVOLUTION); gTasks[taskId].tState++; BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK); } break; - case 5: // launch moving bg task, preapre evo sparkles + case EVOSTATE_START_BG_AND_SPARKLE_SPIRAL: // launch moving bg task, preapre evo sparkles if (!gPaletteFade.active) { - InitMovingBackgroundTask(FALSE); - sEvoGraphicsTaskId = LaunchTask_PreEvoSparklesSet1(17); + StartBgAnimation(FALSE); + sEvoGraphicsTaskId = EvolutionSparkles_SpiralUpward(17); gTasks[taskId].tState++; } break; - case 6: // another set of evo sparkles + case EVOSTATE_SPARKLE_ARC: // another set of evo sparkles if (!gTasks[sEvoGraphicsTaskId].isActive) { gTasks[taskId].tState++; - sEvoStructPtr->field_3 = 1; - sEvoGraphicsTaskId = LaunchTask_PreEvoSparklesSet2(); + sEvoStructPtr->delayTimer = 1; + sEvoGraphicsTaskId = EvolutionSparkles_ArcDown(); } break; - case 7: // launch task that flashes pre evo with post evo sprites + case EVOSTATE_CYCLE_MON_SPRITE: // launch task that flashes pre evo with post evo sprites if (!gTasks[sEvoGraphicsTaskId].isActive) { - sEvoGraphicsTaskId = LaunchTask_PrePostEvoMonSprites(sEvoStructPtr->preEvoSpriteId, sEvoStructPtr->postEvoSpriteId); + sEvoGraphicsTaskId = CycleEvolutionMonSprite(sEvoStructPtr->preEvoSpriteId, sEvoStructPtr->postEvoSpriteId); gTasks[taskId].tState++; } break; - case 8: // wait for the above task to finish - if (--sEvoStructPtr->field_3 == 0) + case EVOSTATE_WAIT_CYCLE_MON_SPRITE: // wait for the above task to finish + if (--sEvoStructPtr->delayTimer == 0) { - sEvoStructPtr->field_3 = 3; + sEvoStructPtr->delayTimer = 3; if (!gTasks[sEvoGraphicsTaskId].isActive) gTasks[taskId].tState++; } break; - case 9: // post evo sparkles - sEvoGraphicsTaskId = LaunchTask_PostEvoSparklesSet1(); + case EVOSTATE_SPARKLE_CIRCLE: // post evo sparkles + sEvoGraphicsTaskId = EvolutionSparkles_CircleInward(); gTasks[taskId].tState++; break; - case 10: + case EVOSTATE_SPARKLE_SPRAY: if (!gTasks[sEvoGraphicsTaskId].isActive) { - sEvoGraphicsTaskId = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskId].tPostEvoSpecies); + sEvoGraphicsTaskId = EvolutionSparkles_SprayAndFlash(gTasks[taskId].tPostEvoSpecies); gTasks[taskId].tState++; } break; - case 11: // play tu du sound after evolution + case EVOSTATE_EVO_SOUND: // play tu du sound after evolution if (!gTasks[sEvoGraphicsTaskId].isActive) { PlaySE(SE_EXP); gTasks[taskId].tState++; } break; - case 12: // stop music, return screen to pre-fade state + case EVOSTATE_RESTORE_SCREEN: // stop music, return screen to pre-fade state if (IsSEPlaying()) { m4aMPlayAllStop(); - memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, 0x60); - ResetBgRegsAfterMovingBackgroundCancel(); + memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, sizeof(sEvoStructPtr->savedPalette)); + RestoreBgAfterAnim(); BeginNormalPaletteFade(0x1C, 0, 0x10, 0, RGB_BLACK); gTasks[taskId].tState++; } break; - case 13: // animate mon + case EVOSTATE_EVO_MON_ANIM: // animate mon if (!gPaletteFade.active) { - PlayCry1(gTasks[taskId].tPostEvoSpecies, 0); + PlayCry_Normal(gTasks[taskId].tPostEvoSpecies, 0); gTasks[taskId].tState++; } break; - case 14: // congratulations string and rename prompt + case EVOSTATE_SET_MON_EVOLVED: // congratulations string and rename prompt if (IsCryFinished()) { StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved); - BattlePutTextOnWindow(gStringVar4, 0); + BattlePutTextOnWindow(gStringVar4, (B_WIN_MSG | B_TEXT_FLAG_NONE)); PlayBGM(MUS_EVOLVED); gTasks[taskId].tState++; SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskId].tPostEvoSpecies)); @@ -729,12 +785,12 @@ static void Task_EvolutionScene(u8 taskId) IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); } break; - case 15: // check if it wants to learn a new move + case EVOSTATE_TRY_LEARN_MOVE: // check if it wants to learn a new move if (!IsTextPrinterActive(0)) { HelpSystem_Enable(); var = MonTryLearningNewMove(mon, gTasks[taskId].tLearnsFirstMove); - if (var != 0 && !gTasks[taskId].tEvoWasStopped) + if (var != MOVE_NONE && !gTasks[taskId].tEvoWasStopped) { u8 text[20]; @@ -742,25 +798,25 @@ static void Task_EvolutionScene(u8 taskId) Overworld_PlaySpecialMapMusic(); gTasks[taskId].tBits |= TASK_BIT_LEARN_MOVE; gTasks[taskId].tLearnsFirstMove = FALSE; - gTasks[taskId].tLearnMoveState = 0; + gTasks[taskId].tLearnMoveState = MVSTATE_INTRO_MSG_1; GetMonData(mon, MON_DATA_NICKNAME, text); StringCopy_Nickname(gBattleTextBuff1, text); - if (var == MON_HAS_MAX_MOVES) - gTasks[taskId].tState = 22; + if (var == MON_HAS_MAX_MOVES) + gTasks[taskId].tState = EVOSTATE_REPLACE_MOVE; else if (var == MON_ALREADY_KNOWS_MOVE) break; else - gTasks[taskId].tState = 20; // move has been learned + gTasks[taskId].tState = EVOSTATE_LEARNED_MOVE; } - else // no move to learn + else // no move to learn, or evolution was canceled { BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gTasks[taskId].tState++; } } break; - case 16: // task has finished, return + case EVOSTATE_END: // task has finished, return if (!gPaletteFade.active) { if (!(gTasks[taskId].tBits & TASK_BIT_LEARN_MOVE)) @@ -773,13 +829,12 @@ static void Task_EvolutionScene(u8 taskId) DestroyTask(taskId); FreeMonSpritesGfx(); - Free(sEvoStructPtr); - sEvoStructPtr = NULL; + FREE_AND_SET_NULL(sEvoStructPtr); FreeAllWindowBuffers(); SetMainCallback2(gCB2_AfterEvolution); } break; - case 17: // evolution has been canceled, stop music and re-fade palette + case EVOSTATE_CANCEL: // evolution has been canceled, stop music and re-fade palette if (!gTasks[sEvoGraphicsTaskId].isActive) { m4aMPlayAllStop(); @@ -787,14 +842,14 @@ static void Task_EvolutionScene(u8 taskId) gTasks[taskId].tState++; } break; - case 18: // animate pokemon trying to evolve again, evolution has been stopped + case EVOSTATE_CANCEL_MON_ANIM: // animate pokemon trying to evolve again, evolution has been stopped if (!gPaletteFade.active) { - PlayCry1(gTasks[taskId].tPreEvoSpecies, 0); + PlayCry_Normal(gTasks[taskId].tPreEvoSpecies, 0); gTasks[taskId].tState++; } break; - case 19: // after the animation, print the string 'WHOA IT DId NOT EVOLVE!!!' + case EVOSTATE_CANCEL_MSG: // after the animation, print the string 'WHOA IT DId NOT EVOLVE!!!' if (IsCryFinished()) { if (gTasks[taskId].tEvoWasStopped) @@ -802,68 +857,75 @@ static void Task_EvolutionScene(u8 taskId) else StringExpandPlaceholders(gStringVar4, gText_PkmnStoppedEvolving); - BattlePutTextOnWindow(gStringVar4, 0); + BattlePutTextOnWindow(gStringVar4, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gTasks[taskId].tEvoWasStopped = TRUE; - gTasks[taskId].tState = 15; + gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE; } break; - case 20: // pokemon learned a new move, print string and play a fanfare + case EVOSTATE_LEARNED_MOVE: // pokemon learned a new move, print string and play a fanfare if (!IsTextPrinterActive(0) && !IsSEPlaying()) { BufferMoveToLearnIntoBattleTextBuff2(); PlayFanfare(MUS_LEVEL_UP); - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gTasks[taskId].tLearnsFirstMove = 0x40; // re-used as a counter gTasks[taskId].tState++; } break; - case 21: // wait a bit and check if can learn another move + case EVOSTATE_TRY_LEARN_ANOTHER_MOVE: // wait a bit and check if can learn another move if (!IsTextPrinterActive(0) && !IsSEPlaying() && --gTasks[taskId].tLearnsFirstMove == 0) - gTasks[taskId].tState = 15; + gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE; break; - case 22: // try to learn a new move + case EVOSTATE_REPLACE_MOVE: // try to learn a new move switch (gTasks[taskId].tLearnMoveState) { - case 0: + case MVSTATE_INTRO_MSG_1: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { + // "{mon} is trying to learn {move}" BufferMoveToLearnIntoBattleTextBuff2(); - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gTasks[taskId].tLearnMoveState++; } break; - case 1: + case MVSTATE_INTRO_MSG_2: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + // "But, {mon} can't learn more than four moves" + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gTasks[taskId].tLearnMoveState++; } break; - case 2: + case MVSTATE_INTRO_MSG_3: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); - gTasks[taskId].tLearnMoveYesState = 5; - gTasks[taskId].tLearnMoveNoState = 10; + // "Delete a move to make room for {move}?" + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); + gTasks[taskId].tLearnMoveYesState = MVSTATE_SHOW_MOVE_SELECT; + gTasks[taskId].tLearnMoveNoState = MVSTATE_ASK_CANCEL; gTasks[taskId].tLearnMoveState++; } - case 3: + case MVSTATE_PRINT_YES_NO: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { HandleBattleWindow(0x17, 8, 0x1D, 0xD, 0); - BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xE); + BattlePutTextOnWindow(gText_BattleYesNoChoice, (B_WIN_YESNO | B_TEXT_FLAG_NONE)); gTasks[taskId].tLearnMoveState++; sEvoCursorPos = 0; BattleCreateYesNoCursorAt(); } break; - case 4: + case MVSTATE_HANDLE_YES_NO: + // This Yes/No is used for both the initial "delete move?" prompt + // and for the "stop learning move?" prompt + // What Yes/No do next is determined by tLearnMoveYesState / tLearnMoveNoState if (JOY_NEW(DPAD_UP) && sEvoCursorPos != 0) { + // Moved onto YES PlaySE(SE_SELECT); BattleDestroyYesNoCursorAt(); sEvoCursorPos = 0; @@ -871,6 +933,7 @@ static void Task_EvolutionScene(u8 taskId) } if (JOY_NEW(DPAD_DOWN) && sEvoCursorPos == 0) { + // Moved onto NO PlaySE(SE_SELECT); BattleDestroyYesNoCursorAt(); sEvoCursorPos = 1; @@ -883,23 +946,26 @@ static void Task_EvolutionScene(u8 taskId) if (sEvoCursorPos != 0) { + // NO gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveNoState; } else { + // YES gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveYesState; - if (gTasks[taskId].tLearnMoveState == 5) + if (gTasks[taskId].tLearnMoveState == MVSTATE_SHOW_MOVE_SELECT) BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); } } if (JOY_NEW(B_BUTTON)) { + // Equivalent to selecting NO HandleBattleWindow(0x17, 8, 0x1D, 0xD, WINDOW_CLEAR); PlaySE(SE_SELECT); gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveNoState; } break; - case 5: + case MVSTATE_SHOW_MOVE_SELECT: if (!gPaletteFade.active) { FreeAllWindowBuffers(); @@ -909,25 +975,29 @@ static void Task_EvolutionScene(u8 taskId) gTasks[taskId].tLearnMoveState++; } break; - case 6: + case MVSTATE_HANDLE_MOVE_SELECT: if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate) { var = GetMoveSlotToReplace(); if (var == MAX_MON_MOVES) { - gTasks[taskId].tLearnMoveState = 10; + // Didn't select move slot + gTasks[taskId].tLearnMoveState = MVSTATE_ASK_CANCEL; } else { + // Selected move to forget u16 move = GetMonData(mon, var + MON_DATA_MOVE1); if (IsHMMove2(move)) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); - gTasks[taskId].tLearnMoveState = 12; + // Can't forget HMs + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); + gTasks[taskId].tLearnMoveState = MVSTATE_RETRY_AFTER_HM; } else { + // Forget move PREPARE_MOVE_BUFFER(gBattleTextBuff2, move) RemoveMonPPBonus(mon, var); @@ -937,48 +1007,89 @@ static void Task_EvolutionScene(u8 taskId) } } break; - case 7: - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + case MVSTATE_FORGET_MSG_1: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gTasks[taskId].tLearnMoveState++; break; - case 8: + case MVSTATE_FORGET_MSG_2: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); gTasks[taskId].tLearnMoveState++; } break; - case 9: + case MVSTATE_LEARNED_MOVE: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); - gTasks[taskId].tState = 20; + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); + gTasks[taskId].tState = EVOSTATE_LEARNED_MOVE; } break; - case 10: - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); - gTasks[taskId].tLearnMoveYesState = 11; - gTasks[taskId].tLearnMoveNoState = 0; - gTasks[taskId].tLearnMoveState = 3; + case MVSTATE_ASK_CANCEL: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); + gTasks[taskId].tLearnMoveYesState = MVSTATE_CANCEL; + gTasks[taskId].tLearnMoveNoState = MVSTATE_INTRO_MSG_1; + gTasks[taskId].tLearnMoveState = MVSTATE_PRINT_YES_NO; break; - case 11: - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]); - BattlePutTextOnWindow(gDisplayedStringBattle, 0); - gTasks[taskId].tState = 15; + case MVSTATE_CANCEL: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_TABLE_START]); + BattlePutTextOnWindow(gDisplayedStringBattle, (B_WIN_MSG | B_TEXT_FLAG_NONE)); + gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE; break; - case 12: + case MVSTATE_RETRY_AFTER_HM: if (!IsTextPrinterActive(0) && !IsSEPlaying()) - gTasks[taskId].tLearnMoveState = 5; + gTasks[taskId].tLearnMoveState = MVSTATE_SHOW_MOVE_SELECT; break; } break; } } +// States for the main switch in Task_TradeEvolutionScene +enum { + T_EVOSTATE_INTRO_MSG, + T_EVOSTATE_INTRO_CRY, + T_EVOSTATE_INTRO_SOUND, + T_EVOSTATE_START_MUSIC, + T_EVOSTATE_START_BG_AND_SPARKLE_SPIRAL, + T_EVOSTATE_SPARKLE_ARC, + T_EVOSTATE_CYCLE_MON_SPRITE, + T_EVOSTATE_WAIT_CYCLE_MON_SPRITE, + T_EVOSTATE_SPARKLE_CIRCLE, + T_EVOSTATE_SPARKLE_SPRAY, + T_EVOSTATE_EVO_SOUND, + T_EVOSTATE_EVO_MON_ANIM, + T_EVOSTATE_SET_MON_EVOLVED, + T_EVOSTATE_TRY_LEARN_MOVE, + T_EVOSTATE_END, + T_EVOSTATE_CANCEL, + T_EVOSTATE_CANCEL_MON_ANIM, + T_EVOSTATE_CANCEL_MSG, + T_EVOSTATE_LEARNED_MOVE, + T_EVOSTATE_TRY_LEARN_ANOTHER_MOVE, + T_EVOSTATE_REPLACE_MOVE, +}; + +// States for the switch in T_EVOSTATE_REPLACE_MOVE +enum { + T_MVSTATE_INTRO_MSG_1, + T_MVSTATE_INTRO_MSG_2, + T_MVSTATE_INTRO_MSG_3, + T_MVSTATE_PRINT_YES_NO, + T_MVSTATE_HANDLE_YES_NO, + T_MVSTATE_SHOW_MOVE_SELECT, + T_MVSTATE_HANDLE_MOVE_SELECT, + T_MVSTATE_FORGET_MSG, + T_MVSTATE_LEARNED_MOVE, + T_MVSTATE_ASK_CANCEL, + T_MVSTATE_CANCEL, + T_MVSTATE_RETRY_AFTER_HM, +}; + static void Task_TradeEvolutionScene(u8 taskId) { u32 var = 0; @@ -987,33 +1098,33 @@ static void Task_TradeEvolutionScene(u8 taskId) // Automatically cancel if the Pokemon would evolve into a species you have not // yet unlocked, such as Crobat. if (!IsNationalPokedexEnabled() - && gTasks[taskId].tState == 7 + && gTasks[taskId].tState == T_EVOSTATE_WAIT_CYCLE_MON_SPRITE && gTasks[taskId].tPostEvoSpecies > SPECIES_MEW) { - gTasks[taskId].tState = 15; + gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE; gTasks[taskId].tEvoWasStopped = TRUE; if (gTasks[sEvoGraphicsTaskId].isActive) { - gTasks[sEvoGraphicsTaskId].EvoGraphicsTaskEvoStop = TRUE; - DestroyMovingBackgroundTasks(); + gTasks[sEvoGraphicsTaskId].tEvoStopped = TRUE; + StopBgAnimation(); } } switch (gTasks[taskId].tState) { - case 0: + case T_EVOSTATE_INTRO_MSG: StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving); DrawTextOnTradeWindow(0, gStringVar4, 1); gTasks[taskId].tState++; break; - case 1: + case T_EVOSTATE_INTRO_CRY: if (!IsTextPrinterActive(0)) { - PlayCry1(gTasks[taskId].tPreEvoSpecies, 0); + PlayCry_Normal(gTasks[taskId].tPreEvoSpecies, 0); gTasks[taskId].tState++; } break; - case 2: + case T_EVOSTATE_INTRO_SOUND: if (IsCryFinished()) { m4aSongNumStop(MUS_EVOLUTION); @@ -1021,7 +1132,7 @@ static void Task_TradeEvolutionScene(u8 taskId) gTasks[taskId].tState++; } break; - case 3: + case T_EVOSTATE_START_MUSIC: if (!IsSEPlaying()) { PlayBGM(MUS_EVOLUTION); @@ -1029,71 +1140,71 @@ static void Task_TradeEvolutionScene(u8 taskId) BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK); } break; - case 4: + case T_EVOSTATE_START_BG_AND_SPARKLE_SPIRAL: if (!gPaletteFade.active) { - InitMovingBackgroundTask(TRUE); + StartBgAnimation(TRUE); var = gSprites[sEvoStructPtr->preEvoSpriteId].oam.paletteNum + 16; - sEvoGraphicsTaskId = LaunchTask_PreEvoSparklesSet1(var); + sEvoGraphicsTaskId = EvolutionSparkles_SpiralUpward(var); gTasks[taskId].tState++; SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6)); } break; - case 5: + case T_EVOSTATE_SPARKLE_ARC: if (!gTasks[sEvoGraphicsTaskId].isActive) { gTasks[taskId].tState++; - sEvoStructPtr->field_3 = 1; - sEvoGraphicsTaskId = LaunchTask_PreEvoSparklesSet2(); + sEvoStructPtr->delayTimer = 1; + sEvoGraphicsTaskId = EvolutionSparkles_ArcDown(); } break; - case 6: + case T_EVOSTATE_CYCLE_MON_SPRITE: if (!gTasks[sEvoGraphicsTaskId].isActive) { - sEvoGraphicsTaskId = LaunchTask_PrePostEvoMonSprites(sEvoStructPtr->preEvoSpriteId, sEvoStructPtr->postEvoSpriteId); + sEvoGraphicsTaskId = CycleEvolutionMonSprite(sEvoStructPtr->preEvoSpriteId, sEvoStructPtr->postEvoSpriteId); gTasks[taskId].tState++; } break; - case 7: - if (--sEvoStructPtr->field_3 == 0) + case T_EVOSTATE_WAIT_CYCLE_MON_SPRITE: + if (--sEvoStructPtr->delayTimer == 0) { - sEvoStructPtr->field_3 = 3; + sEvoStructPtr->delayTimer = 3; if (!gTasks[sEvoGraphicsTaskId].isActive) gTasks[taskId].tState++; } break; - case 8: - sEvoGraphicsTaskId = LaunchTask_PostEvoSparklesSet1(); + case T_EVOSTATE_SPARKLE_CIRCLE: + sEvoGraphicsTaskId = EvolutionSparkles_CircleInward(); gTasks[taskId].tState++; break; - case 9: + case T_EVOSTATE_SPARKLE_SPRAY: if (!gTasks[sEvoGraphicsTaskId].isActive) { - sEvoGraphicsTaskId = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskId].tPostEvoSpecies); + sEvoGraphicsTaskId = EvolutionSparkles_SprayAndFlash_Trade(gTasks[taskId].tPostEvoSpecies); gTasks[taskId].tState++; } break; - case 10: + case T_EVOSTATE_EVO_SOUND: if (!gTasks[sEvoGraphicsTaskId].isActive) { PlaySE(SE_EXP); gTasks[taskId].tState++; } break; - case 11: + case T_EVOSTATE_EVO_MON_ANIM: /* * BUG: This check causes the evolved Pokemon's cry to play over the sfx. * Negate the below condition. */ if (IsSEPlaying()) { -// Free(sEvoMovingBgPtr); - PlayCry1(gTasks[taskId].tPostEvoSpecies, 0); - memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, 0x60); +// Free(sBgAnimPal); + PlayCry_Normal(gTasks[taskId].tPostEvoSpecies, 0); + memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, sizeof(sEvoStructPtr->savedPalette)); gTasks[taskId].tState++; } break; - case 12: + case T_EVOSTATE_SET_MON_EVOLVED: if (IsCryFinished()) { StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved); @@ -1108,11 +1219,11 @@ static void Task_TradeEvolutionScene(u8 taskId) IncrementGameStat(GAME_STAT_EVOLVED_POKEMON); } break; - case 13: + case T_EVOSTATE_TRY_LEARN_MOVE: if (!IsTextPrinterActive(0) && IsFanfareTaskInactive() == TRUE) { var = MonTryLearningNewMove(mon, gTasks[taskId].tLearnsFirstMove); - if (var != 0 && !gTasks[taskId].tEvoWasStopped) + if (var != MOVE_NONE && !gTasks[taskId].tEvoWasStopped) { u8 text[20]; @@ -1123,11 +1234,11 @@ static void Task_TradeEvolutionScene(u8 taskId) StringCopy_Nickname(gBattleTextBuff1, text); if (var == MON_HAS_MAX_MOVES) - gTasks[taskId].tState = 20; + gTasks[taskId].tState = T_EVOSTATE_REPLACE_MOVE; else if (var == MON_ALREADY_KNOWS_MOVE) break; else - gTasks[taskId].tState = 18; + gTasks[taskId].tState = T_EVOSTATE_LEARNED_MOVE; } else { @@ -1137,17 +1248,17 @@ static void Task_TradeEvolutionScene(u8 taskId) } } break; - case 14: + case T_EVOSTATE_END: if (!IsTextPrinterActive(0)) { DestroyTask(taskId); - Free(sEvoStructPtr); + FREE_AND_SET_NULL(sEvoStructPtr); sEvoStructPtr = NULL; gTextFlags.useAlternateDownArrow = FALSE; SetMainCallback2(gCB2_AfterEvolution); } break; - case 15: + case T_EVOSTATE_CANCEL: if (!gTasks[sEvoGraphicsTaskId].isActive) { m4aMPlayAllStop(); @@ -1155,67 +1266,70 @@ static void Task_TradeEvolutionScene(u8 taskId) gTasks[taskId].tState++; } break; - case 16: + case T_EVOSTATE_CANCEL_MON_ANIM: if (!gPaletteFade.active) { - PlayCry1(gTasks[taskId].tPreEvoSpecies, 0); + PlayCry_Normal(gTasks[taskId].tPreEvoSpecies, 0); gTasks[taskId].tState++; } break; - case 17: + case T_EVOSTATE_CANCEL_MSG: if (IsCryFinished()) { StringExpandPlaceholders(gStringVar4, gText_EllipsisQuestionMark); DrawTextOnTradeWindow(0, gStringVar4, 1); gTasks[taskId].tEvoWasStopped = TRUE; - gTasks[taskId].tState = 13; + gTasks[taskId].tState = T_EVOSTATE_TRY_LEARN_MOVE; } break; - case 18: + case T_EVOSTATE_LEARNED_MOVE: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { BufferMoveToLearnIntoBattleTextBuff2(); PlayFanfare(MUS_LEVEL_UP); - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); gTasks[taskId].tLearnsFirstMove = 0x40; // re-used as a counter gTasks[taskId].tState++; } break; - case 19: + case T_EVOSTATE_TRY_LEARN_ANOTHER_MOVE: if (!IsTextPrinterActive(0) && IsFanfareTaskInactive() == TRUE && --gTasks[taskId].tLearnsFirstMove == 0) - gTasks[taskId].tState = 13; + gTasks[taskId].tState = T_EVOSTATE_TRY_LEARN_MOVE; break; - case 20: + case T_EVOSTATE_REPLACE_MOVE: switch (gTasks[taskId].tLearnMoveState) { - case 0: + case T_MVSTATE_INTRO_MSG_1: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { + // "{mon} is trying to learn {move}" BufferMoveToLearnIntoBattleTextBuff2(); - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); gTasks[taskId].tLearnMoveState++; } break; - case 1: + case T_MVSTATE_INTRO_MSG_2: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]); + // "But, {mon} can't learn more than four moves" + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); gTasks[taskId].tLearnMoveState++; } break; - case 2: + case T_MVSTATE_INTRO_MSG_3: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]); + // "Delete a move to make room for {move}?" + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); - gTasks[taskId].tLearnMoveYesState = 5; - gTasks[taskId].tLearnMoveNoState = 9; + gTasks[taskId].tLearnMoveYesState = T_MVSTATE_SHOW_MOVE_SELECT; + gTasks[taskId].tLearnMoveNoState = T_MVSTATE_ASK_CANCEL; gTasks[taskId].tLearnMoveState++; } - case 3: + case T_MVSTATE_PRINT_YES_NO: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { LoadUserWindowBorderGfx(0, 0xA8, 0xE0); @@ -1225,27 +1339,27 @@ static void Task_TradeEvolutionScene(u8 taskId) sEvoCursorPos = 0; } break; - case 4: + case T_MVSTATE_HANDLE_YES_NO: switch (Menu_ProcessInputNoWrapClearOnChoose()) { - case 0: + case 0: // YES sEvoCursorPos = 0; - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_ID_ADDER]); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveYesState; - if (gTasks[taskId].tLearnMoveState == 5) + if (gTasks[taskId].tLearnMoveState == T_MVSTATE_SHOW_MOVE_SELECT) BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); break; - case 1: - case -1: + case 1: // NO + case MENU_B_PRESSED: sEvoCursorPos = 1; - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_ID_ADDER]); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveNoState; break; } break; - case 5: + case T_MVSTATE_SHOW_MOVE_SELECT: if (!gPaletteFade.active) { if (gWirelessCommType) @@ -1262,67 +1376,71 @@ static void Task_TradeEvolutionScene(u8 taskId) gTasks[taskId].tLearnMoveState++; } break; - case 6: + case T_MVSTATE_HANDLE_MOVE_SELECT: if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate) { var = GetMoveSlotToReplace(); if (var == MAX_MON_MOVES) { - gTasks[taskId].tLearnMoveState = 9; + // Didn't select move slot + gTasks[taskId].tLearnMoveState = T_MVSTATE_ASK_CANCEL; } else { + // Selected move to forget u16 move = GetMonData(mon, var + MON_DATA_MOVE1); if (IsHMMove2(move)) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]); + // Can't forget HMs + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); - gTasks[taskId].tLearnMoveState = 11; + gTasks[taskId].tLearnMoveState = T_MVSTATE_RETRY_AFTER_HM; } else { + // Forget move PREPARE_MOVE_BUFFER(gBattleTextBuff2, move) RemoveMonPPBonus(mon, var); SetMonMoveSlot(mon, gMoveToLearn, var); - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); gTasks[taskId].tLearnMoveState++; } } } break; - case 7: + case T_MVSTATE_FORGET_MSG: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); gTasks[taskId].tLearnMoveState++; } break; - case 8: + case T_MVSTATE_LEARNED_MOVE: if (!IsTextPrinterActive(0) && !IsSEPlaying()) { - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]); + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); - gTasks[taskId].tState = 18; + gTasks[taskId].tState = T_EVOSTATE_LEARNED_MOVE; } break; - case 9: - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]); + case T_MVSTATE_ASK_CANCEL: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); - gTasks[taskId].tLearnMoveYesState = 10; - gTasks[taskId].tLearnMoveNoState = 0; - gTasks[taskId].tLearnMoveState = 3; + gTasks[taskId].tLearnMoveYesState = T_MVSTATE_CANCEL; + gTasks[taskId].tLearnMoveNoState = T_MVSTATE_INTRO_MSG_1; + gTasks[taskId].tLearnMoveState = T_MVSTATE_PRINT_YES_NO; break; - case 10: - BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]); + case T_MVSTATE_CANCEL: + BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_TABLE_START]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); - gTasks[taskId].tState = 13; + gTasks[taskId].tState = T_EVOSTATE_TRY_LEARN_MOVE; break; - case 11: + case T_MVSTATE_RETRY_AFTER_HM: if (!IsTextPrinterActive(0) && !IsSEPlaying()) - gTasks[taskId].tLearnMoveState = 5; + gTasks[taskId].tLearnMoveState = T_MVSTATE_SHOW_MOVE_SELECT; break; } break; @@ -1379,50 +1497,80 @@ static void VBlankCB_TradeEvolutionScene(void) ScanlineEffect_InitHBlankDmaTransfer(); } -static void Task_MovingBackgroundPalettes(u8 taskId) +#define tCycleTimer data[0] +#define tPalStage data[1] +#define tControlStage data[2] +#define tNumCycles data[3] +#define tStartTimer data[5] +#define tPaused data[6] + +// See comments above sBgAnim_PaletteControl +#define START_PAL sBgAnim_PaletteControl[tControlStage][0] +#define END_PAL sBgAnim_PaletteControl[tControlStage][1] +#define CYCLES sBgAnim_PaletteControl[tControlStage][2] +#define DELAY sBgAnim_PaletteControl[tControlStage][3] + +// Cycles the background through a set range of palettes in a series +// of stages, each stage having a different palette range and timing +static void Task_UpdateBgPalette(u8 taskId) { s16 *data = gTasks[taskId].data; - if (data[6] != 0) + if (tPaused) return; - if (data[5]++ < 20) + if (tStartTimer++ < 20) return; - if (data[0]++ > sMovingBackgroundTimers[data[2]][3]) + if (tCycleTimer++ > DELAY) { - if (sMovingBackgroundTimers[data[2]][1] == data[1]) + if (END_PAL == tPalStage) { - data[3]++; - if (data[3] == sMovingBackgroundTimers[data[2]][2]) + // Reached final palette in current stage, completed a 'cycle' + // If this is the final cycle for this stage, move to the next stage + tNumCycles++; + if (tNumCycles == CYCLES) { - data[3] = 0; - data[2]++; + tNumCycles = 0; + tControlStage++; } - data[1] = sMovingBackgroundTimers[data[2]][0]; + tPalStage = START_PAL; } else { - LoadPalette(&sEvoMovingBgPtr[data[1] * 16], 0xA0, 0x20); - data[0] = 0; - data[1]++; + // Haven't reached final palette in current stage, load the current palette + LoadPalette(&sBgAnimPal[tPalStage * 16], 0xA0, 0x20); + tCycleTimer = 0; + tPalStage++; } } - if (data[2] == 4) + if (tControlStage == (int)ARRAY_COUNT(sBgAnim_PaletteControl[0])) DestroyTask(taskId); } -static void LaunchTask_MovingBackgroundPos(bool8 isLink) +#undef tCycleTimer +#undef tPalStage +#undef tControlStage +#undef tNumCycles +#undef tStartTimer +#undef START_PAL +#undef END_PAL +#undef CYCLES +#undef DELAY + +#define tIsLink data[2] + +static void CreateBgAnimTask(bool8 isLink) { - u8 taskId = CreateTask(Task_MovingBackgroundPos, 7); + u8 taskId = CreateTask(Task_AnimateBg, 7); if (!isLink) - gTasks[taskId].data[2] = 0; + gTasks[taskId].data[2] = FALSE; else - gTasks[taskId].data[2] = 1; + gTasks[taskId].data[2] = TRUE; } -static void Task_MovingBackgroundPos(u8 taskId) +static void Task_AnimateBg(u8 taskId) { u16 *outer_X, *outer_Y; @@ -1449,7 +1597,7 @@ static void Task_MovingBackgroundPos(u8 taskId) *outer_X = Cos(gTasks[taskId].data[1], 4) + 8; *outer_Y = Sin(gTasks[taskId].data[1], 4) + 16; - if (!FuncIsActiveTask(Task_MovingBackgroundPalettes)) + if (!FuncIsActiveTask(Task_UpdateBgPalette)) { DestroyTask(taskId); @@ -1461,25 +1609,27 @@ static void Task_MovingBackgroundPos(u8 taskId) } } -static void InitMovingBgValues(u16 *movingBgs) +#undef tIsLink + +static void InitMovingBgPalette(u16 *palette) { s32 i, j; - for (i = 0; i < 50; i++) + for (i = 0; i < (int)ARRAY_COUNT(sBgAnim_PalIndexes); i++) { for (j = 0; j < 16; j++) { - movingBgs[i * 16 + j] = sMovingBgPals[sMovingBgPalIndices[i][j]]; + palette[i * 16 + j] = sBgAnim_Pal[sBgAnim_PalIndexes[i][j]]; } } } -static void InitMovingBackgroundTask(bool8 isLink) +static void StartBgAnimation(bool8 isLink) { u8 innerBgId, outerBgId; - sEvoMovingBgPtr = AllocZeroed(0x640); - InitMovingBgValues(sEvoMovingBgPtr); + sBgAnimPal = AllocZeroed(0x640); + InitMovingBgPalette(sBgAnimPal); if (!isLink) innerBgId = 1, outerBgId = 2; @@ -1513,41 +1663,43 @@ static void InitMovingBackgroundTask(bool8 isLink) SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG1_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP); } - CreateTask(Task_MovingBackgroundPalettes, 5); - LaunchTask_MovingBackgroundPos(isLink); + CreateTask(Task_UpdateBgPalette, 5); + CreateBgAnimTask(isLink); } void IsMovingBackgroundTaskRunning(void) // unused { - u8 taskId = FindTaskIdByFunc(Task_MovingBackgroundPalettes); + u8 taskId = FindTaskIdByFunc(Task_UpdateBgPalette); - if (taskId != 0xFF) - gTasks[taskId].data[6] = 1; + if (taskId != TASK_NONE) + gTasks[taskId].tPaused = TRUE; FillPalette(RGB_BLACK, 0xA0, 0x20); } -static void DestroyMovingBackgroundTasks(void) +#undef tPaused + +static void StopBgAnimation(void) { u8 taskId; - if ((taskId = FindTaskIdByFunc(Task_MovingBackgroundPalettes)) != 0xFF) + if ((taskId = FindTaskIdByFunc(Task_UpdateBgPalette)) != TASK_NONE) DestroyTask(taskId); - if ((taskId = FindTaskIdByFunc(Task_MovingBackgroundPos)) != 0xFF) + if ((taskId = FindTaskIdByFunc(Task_AnimateBg)) != TASK_NONE) DestroyTask(taskId); FillPalette(RGB_BLACK, 0xA0, 0x20); - ResetBgRegsAfterMovingBackgroundCancel(); + RestoreBgAfterAnim(); } -static void ResetBgRegsAfterMovingBackgroundCancel(void) +static void RestoreBgAfterAnim(void) { SetGpuReg(REG_OFFSET_BLDCNT, 0); gBattle_BG1_X = 0; gBattle_BG1_Y = 0; gBattle_BG2_X = 0; - SetBgAttribute(1, BG_ATTR_PRIORITY, GetBattleBgAttribute(1, 5)); - SetBgAttribute(2, BG_ATTR_PRIORITY, GetBattleBgAttribute(2, 5)); + SetBgAttribute(1, BG_ATTR_PRIORITY, GetBattleBgTemplateData(1, 5)); + SetBgAttribute(2, BG_ATTR_PRIORITY, GetBattleBgTemplateData(2, 5)); SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP); - Free(sEvoMovingBgPtr); + Free(sBgAnimPal); } diff --git a/src/field_effect.c b/src/field_effect.c index 6f20a8973..9a3a579d3 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -2939,7 +2939,7 @@ static void SpriteCB_FieldMoveMonSlideOnscreen(struct Sprite * sprite) } else { - PlayCry1(sprite->data[0], 0); + PlayCry_Normal(sprite->data[0], 0); } } } diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index b84675009..f001bf241 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -429,7 +429,7 @@ static void Task_MapPreviewScreen_0(u8 taskId) SetVBlankCallback(NULL); MapPreview_InitBgs(); MapPreview_LoadGfx(data[3]); - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); data[0]++; break; case 1: diff --git a/src/ghost.c b/src/ghost.c index f6afdd9dc..a531cec44 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -1418,7 +1418,7 @@ static void sub_80B6FC4(u8 taskId) break; case 3: InitBattleAnimBg(2); - FillPalette(0, 0x90, 0x20); + FillPalette(RGB_BLACK, 0x90, 0x20); SetAnimBgAttribute(2, BG_ANIM_CHAR_BASE_BLOCK, 0); task->data[1] = 12; break; diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 4f3d9aff2..97eb6f5c8 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -523,7 +523,7 @@ static void Task_Hof_PlayMonCryAndPrintInfo(u8 taskId) if (gSprites[gTasks[taskId].data[5 + currMonId]].data[0]) { if (currMon->species != SPECIES_EGG) - PlayCry1(currMon->species, 0); + PlayCry_Normal(currMon->species, 0); HallOfFame_PrintMonInfo(currMon, 0, 14); gTasks[taskId].data[3] = 120; gTasks[taskId].func = Task_Hof_TryDisplayAnotherMon; @@ -874,7 +874,7 @@ static void Task_HofPC_PrintMonInfo(u8 taskId) if (currMon->species != SPECIES_EGG) { StopCryAndClearCrySongs(); - PlayCry1(currMon->species, 0); + PlayCry_Normal(currMon->species, 0); } HallOfFame_PrintMonInfo(currMon, 0, 14); diff --git a/src/intro.c b/src/intro.c index 5583d5ba7..9ca210887 100644 --- a/src/intro.c +++ b/src/intro.c @@ -916,7 +916,7 @@ static void CB2_SetUpIntro(void) if (!FreeTempTileDataBuffersIfPossible()) { StartIntroSequence(); - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); SetMainCallback2(CB2_Intro); SetVBlankCallback(VBlankCB_Intro); } @@ -1016,7 +1016,7 @@ static void IntroCB_OpenWin1ToTheaterDimensions(struct IntroSequenceData * this) break; case 1: ShowBg(3); - BlendPalettes(0xFFFFFFFF, 0x00, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x00, RGB_BLACK); this->state++; break; case 2: diff --git a/src/item_menu.c b/src/item_menu.c index 843df277f..31463f1e4 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -925,7 +925,7 @@ static void ShowBagOrBeginWin0OpenTask(void) LoadPalette(&paldata, 0x00, 0x02); SetGpuReg(REG_OFFSET_WININ, 0); SetGpuReg(REG_OFFSET_WINOUT, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); if (gBagMenuState.bagOpen == TRUE) { diff --git a/src/item_pc.c b/src/item_pc.c index 628e4f2f7..44f8d2800 100644 --- a/src/item_pc.c +++ b/src/item_pc.c @@ -361,7 +361,7 @@ static bool8 ItemPc_DoGfxSetup(void) case 18: if (sListMenuState.initialized == 1) { - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); } gMain.state++; break; diff --git a/src/link.c b/src/link.c index 36279b6fe..55409c35b 100644 --- a/src/link.c +++ b/src/link.c @@ -1461,7 +1461,7 @@ void CB2_LinkError(void) ResetSpriteData(); FreeAllSpritePalettes(); ResetPaletteFadeControl(); - FillPalette(0, 0, 2); + FillPalette(RGB_BLACK, 0, 2); ResetTasks(); ScanlineEffect_Stop(); if (gWirelessCommType) diff --git a/src/oak_speech.c b/src/oak_speech.c index e48356d64..b2a0991f2 100644 --- a/src/oak_speech.c +++ b/src/oak_speech.c @@ -570,7 +570,7 @@ static void Task_OaksSpeech1(u8 taskId) CreateHelpDocsPage1(); gPaletteFade.bufferTransferDisabled = FALSE; gTasks[taskId].data[5] = CreateTextCursorSpriteForOakSpeech(0, 0xE6, 0x95, 0, 0); - BlendPalettes(0xFFFFFFFF, 0x10, 0x00); + BlendPalettes(PALETTES_ALL, 0x10, 0x00); break; case 10: BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); @@ -974,7 +974,7 @@ static void Task_OakSpeech13(u8 taskId) if (gTasks[taskId].data[3] == 32) { OaksSpeechPrintMessage(gOakText_WorldInhabited2, sOakSpeechResources->textSpeed); - PlayCry1(SPECIES_NIDORAN_F, 0); + PlayCry_Normal(SPECIES_NIDORAN_F, 0); } } } diff --git a/src/party_menu.c b/src/party_menu.c index e05d9a9e1..0ad2aa44c 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -574,7 +574,7 @@ static bool8 ShowPartyMenu(void) ++gMain.state; break; case 21: - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); ++gMain.state; break; case 22: diff --git a/src/pc_screen_effect.c b/src/pc_screen_effect.c index 5b5952c26..99a73d427 100644 --- a/src/pc_screen_effect.c +++ b/src/pc_screen_effect.c @@ -82,7 +82,7 @@ static void Task_PCScreenEffect_TurnOn(u8 taskId) task->tWin0Right = DISPLAY_WIDTH; SetGpuReg(REG_OFFSET_BLDY, 0); SetGpuReg(REG_OFFSET_BLDCNT, task->tBldCntBak); - BlendPalettes(0xFFFFFFFF, 0, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0, RGB_BLACK); gPlttBufferFaded[0] = 0; } SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWin0Left, task->tWin0Right)); @@ -151,7 +151,7 @@ static void Task_PCScreenEffect_TurnOff(u8 taskId) { task->tWin0Left = 120; task->tWin0Right = 120; - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); gPlttBufferFaded[0] = 0; } SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(task->tWin0Left, task->tWin0Right)); diff --git a/src/pokemon.c b/src/pokemon.c index aa1667584..5b774b172 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -3201,8 +3201,8 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) case MON_DATA_WORLD_RIBBON: retVal = substruct3->worldRibbon; break; - case MON_DATA_FILLER: - retVal = substruct3->filler; + case MON_DATA_UNUSED_RIBBONS: + retVal = substruct3->unusedRibbons; break; case MON_DATA_EVENT_LEGAL: retVal = substruct3->eventLegal; @@ -3350,7 +3350,7 @@ void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg) case MON_DATA_NATIONAL_RIBBON: case MON_DATA_EARTH_RIBBON: case MON_DATA_WORLD_RIBBON: - case MON_DATA_FILLER: + case MON_DATA_UNUSED_RIBBONS: case MON_DATA_EVENT_LEGAL: case MON_DATA_KNOWN_MOVES: case MON_DATA_RIBBON_COUNT: @@ -3604,8 +3604,8 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg) case MON_DATA_WORLD_RIBBON: SET8(substruct3->worldRibbon); break; - case MON_DATA_FILLER: - SET8(substruct3->filler); + case MON_DATA_UNUSED_RIBBONS: + SET8(substruct3->unusedRibbons); break; case MON_DATA_EVENT_LEGAL: SET8(substruct3->eventLegal); diff --git a/src/pokemon_special_anim.c b/src/pokemon_special_anim.c index f319512dd..f13732e2a 100644 --- a/src/pokemon_special_anim.c +++ b/src/pokemon_special_anim.c @@ -217,7 +217,7 @@ static void Task_UseItem_Normal(u8 taskId) ptr->cancelDisabled = TRUE; if (ptr->closeness == 3) { - PlayCry1(ptr->species, 0); + PlayCry_Normal(ptr->species, 0); } PSA_ShowMessageWindow(); ptr->state++; @@ -582,7 +582,7 @@ static void Task_CleanUp(u8 taskId) { case 0: SetVBlankCallback(VBlankCB_PSA); - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); ptr->state++; break; case 1: diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c index 61925475e..f4ebe9151 100644 --- a/src/pokemon_storage_system_3.c +++ b/src/pokemon_storage_system_3.c @@ -546,12 +546,12 @@ static void Cb_InitPSS(u8 taskId) sub_808CFC4(); if (!gPSSData->isReshowingPSS) { - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); SetPSSCallback(Cb_ShowPSS); } else { - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); SetPSSCallback(Cb_ReshowPSS); } SetVBlankCallback(VblankCb_PSS); diff --git a/src/region_map.c b/src/region_map.c index a87c65003..68d9ba9a2 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -2810,7 +2810,7 @@ static void Task_MapOpenAnim(u8 taskId) break; case 3: CopyBgTilemapBufferToVram(1); - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); SetRegionMapVBlankCB(); sMapOpenCloseAnim->openState++; @@ -3908,7 +3908,7 @@ static void LoadMapIcons(u8 taskId) sMapIcons->state++; break; case 3: - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); sMapIcons->state++; break; diff --git a/src/seagallop.c b/src/seagallop.c index 9133a1560..79f837df7 100644 --- a/src/seagallop.c +++ b/src/seagallop.c @@ -226,7 +226,7 @@ static void CB2_SetUpSeagallopScene(void) break; case 5: LoadFerrySpriteResources(); - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); gMain.state++; break; case 6: diff --git a/src/shop.c b/src/shop.c index 6cfe665a2..df7184db1 100644 --- a/src/shop.c +++ b/src/shop.c @@ -403,7 +403,7 @@ static void CB2_InitBuyMenu(void) BuyMenuAddScrollIndicatorArrows(); taskId = CreateTask(Task_BuyMenu, 8); gTasks[taskId].tListTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0); - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(VBlankCB_BuyMenu); SetMainCallback2(CB2_BuyMenu); diff --git a/src/slot_machine.c b/src/slot_machine.c index 5ec2f1bd2..2eeab5335 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1945,7 +1945,7 @@ static bool8 SlotsTask_GraphicsInit(u8 * state, struct SlotMachineSetupTaskData switch (*state) { case 0: - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); (*state)++; break; case 1: @@ -2002,7 +2002,7 @@ static bool8 SlotsTask_GraphicsInit(u8 * state, struct SlotMachineSetupTaskData CreateScoreDigitSprites(); CreateClefairySprites(); UpdateCoinsDisplay(); - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); SetVBlankCallback(VBlankCB_SlotMachine); SetHBlankCallback(HBlankCB_SlotMachine); (*state)++; @@ -2015,7 +2015,7 @@ static bool8 SlotsTask_GraphicsInit(u8 * state, struct SlotMachineSetupTaskData ShowBg(2); HideBg(1); InitReelButtonTileMem(); - BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, -1, 16, 0, RGB_BLACK); EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); (*state)++; diff --git a/src/sound.c b/src/sound.c index e14cd4c4e..04316adc0 100644 --- a/src/sound.c +++ b/src/sound.c @@ -315,7 +315,7 @@ bool8 IsBGMStopped(void) return FALSE; } -void PlayCry1(u16 species, s8 pan) +void PlayCry_Normal(u16 species, s8 pan) { m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 85); PlayCryInternal(species, pan, CRY_VOLUME, 10, 0); diff --git a/src/start_menu.c b/src/start_menu.c index 266e83c69..80c9d7f59 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -874,7 +874,7 @@ bool32 DoSetUpSaveAfterLinkBattle(u8 *state) break; case 3: ShowBg(0); - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); SetVBlankCallback(VBlankCB_WhileSavingAfterLinkBattle); EnableInterrupts(INTR_FLAG_VBLANK); break; diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 629174ed0..22577fc5b 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -494,7 +494,7 @@ static void TeachyTvMainCallback(void) ScheduleBgCopyTilemapToVram(2); ScheduleBgCopyTilemapToVram(3); SetHelpContextDontCheckBattle(HELPCONTEXT_BAG); - BlendPalettes(0xFFFFFFFF, 0x10, 0); + BlendPalettes(PALETTES_ALL, 0x10, 0); BeginNormalPaletteFade(PALETTES_ALL, 0, 0x10, 0, 0); SetVBlankCallback(TeachyTvVblankHandler); SetMainCallback2(TeachyTvCallback); diff --git a/src/title_screen.c b/src/title_screen.c index 3413a19f2..80c7ce193 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -674,7 +674,7 @@ static void SetTitleScreenScene_Cry(s16 * data) case 0: if (!gPaletteFade.active) { - PlayCry1(TITLE_SPECIES, 0); + PlayCry_Normal(TITLE_SPECIES, 0); ScheduleHideSlashSprite(data[6]); data[2] = 0; data[1]++; diff --git a/src/tm_case.c b/src/tm_case.c index de420f545..1cabb5ec7 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -391,7 +391,7 @@ static bool8 DoSetUpTMCaseUI(void) gMain.state++; break; case 17: - BlendPalettes(0xFFFFFFFF, 16, 0); + BlendPalettes(PALETTES_ALL, 16, 0); gMain.state++; break; case 18: diff --git a/src/trade.c b/src/trade.c index 670ef4922..3dd540962 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1142,7 +1142,7 @@ void CB2_ReturnToTradeMenuFromSummary(void) break; case 18: gPaletteFade.bufferTransferDisabled = FALSE; - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); gMain.state++; break; diff --git a/src/trade_scene.c b/src/trade_scene.c index d7608d5ed..7a3642020 100644 --- a/src/trade_scene.c +++ b/src/trade_scene.c @@ -1294,7 +1294,7 @@ static bool8 DoTradeAnim_Cable(void) if (sTradeData->tradeSpecies[0] != SPECIES_EGG) { - PlayCry1(sTradeData->tradeSpecies[0], 0); + PlayCry_Normal(sTradeData->tradeSpecies[0], 0); } sTradeData->state = 11; @@ -1677,7 +1677,7 @@ static bool8 DoTradeAnim_Cable(void) { if (sTradeData->tradeSpecies[1] != SPECIES_EGG) { - PlayCry1(sTradeData->tradeSpecies[1], 0); + PlayCry_Normal(sTradeData->tradeSpecies[1], 0); } sTradeData->state = 267; sTradeData->timer = 0; @@ -1791,7 +1791,7 @@ static bool8 DoTradeAnim_Wireless(void) if (sTradeData->tradeSpecies[0] != SPECIES_EGG) { - PlayCry1(sTradeData->tradeSpecies[0], 0); + PlayCry_Normal(sTradeData->tradeSpecies[0], 0); } sTradeData->state = 11; @@ -2198,7 +2198,7 @@ static bool8 DoTradeAnim_Wireless(void) { if (sTradeData->tradeSpecies[1] != SPECIES_EGG) { - PlayCry1(sTradeData->tradeSpecies[1], 0); + PlayCry_Normal(sTradeData->tradeSpecies[1], 0); } sTradeData->state = 267; sTradeData->timer = 0; @@ -2756,7 +2756,7 @@ static void CheckPartnersMonForRibbons(void) FlagSet(FLAG_SYS_RIBBON_GET); } -void LoadTradeAnimGfx(void) +void InitTradeBg(void) { TradeAnimInit_LoadGfx(); } diff --git a/src/union_room_chat.c b/src/union_room_chat.c index c8dead2bb..995d2473f 100644 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -256,7 +256,7 @@ static void CB2_LoadInterface(void) UnionRoomChat_RunDisplaySubtasks(); if (!UnionRoomChat_RunDisplaySubtask0()) { - BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, -1, 16, 0, RGB_BLACK); SetVBlankCallback(VBlankCB_UnionRoomChatMain); gMain.state++;