From a064849864d02833c045ee183edb7666e1f8b818 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 12 Aug 2022 13:08:40 -0400 Subject: [PATCH 01/38] Sync/document battle_message.c --- asm/macros/battle_script.inc | 12 +- data/battle_scripts_1.s | 6 +- .../{unk_8D2FBB4.pal => text_pp.pal} | 0 include/battle.h | 2 +- include/battle_ai_switch_items.h | 12 +- include/battle_message.h | 10 +- include/battle_string_ids.h | 12 +- include/constants/battle.h | 2 +- include/constants/battle_script_commands.h | 2 +- include/constants/pokemon.h | 39 +- include/constants/weather.h | 1 + include/graphics.h | 2 +- include/string_util.h | 4 +- include/strings.h | 4 +- src/battle_controller_link_opponent.c | 2 +- src/battle_controller_player.c | 4 +- src/battle_controller_safari.c | 2 +- src/battle_interface.c | 2 +- src/battle_message.c | 1035 +++++++++++------ src/battle_script_commands.c | 2 +- src/battle_tower.c | 16 +- src/field_poison.c | 2 +- src/field_specials.c | 2 +- src/graphics.c | 2 +- src/party_menu.c | 4 +- src/pokemon.c | 2 +- src/pokemon_storage_system_5.c | 4 +- src/pokemon_summary_screen.c | 2 +- src/quest_log_events.c | 6 +- src/scrcmd.c | 2 +- src/string_util.c | 8 +- src/union_room.c | 2 +- src/union_room_battle.c | 2 +- 33 files changed, 776 insertions(+), 433 deletions(-) rename graphics/interface/{unk_8D2FBB4.pal => text_pp.pal} (100%) diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index d9a55bbcd..392a387e9 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1282,16 +1282,16 @@ various BS_ATTACKER, VARIOUS_RESET_PLAYER_FAINTED .endm - .macro various8 battler:req - various \battler, 8 + .macro getbattlersforrecall + various BS_ATTACKER, VARIOUS_GET_BATTLERS_FOR_RECALL .endm - .macro returnopponentmon1toball battler:req - various \battler, VARIOUS_RETURN_OPPONENT_MON1 + .macro returnopponentmon1toball + various BS_ATTACKER, VARIOUS_RETURN_OPPONENT_MON1 .endm - .macro returnopponentmon2toball battler:req - various \battler, VARIOUS_RETURN_OPPONENT_MON2 + .macro returnopponentmon2toball + various BS_ATTACKER, VARIOUS_RETURN_OPPONENT_MON2 .endm .macro checkpokeflute battler:req diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index d469bb95d..6cf321c02 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2964,13 +2964,13 @@ BattleScript_RivalBattleLostSkipMonRecall:: end2 BattleScript_BattleTowerLost:: - various8 BS_ATTACKER + getbattlersforrecall jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0, BattleScript_BattleTowerLostLostSkipMonRecall printfromtable gDoubleBattleRecallStrings waitmessage B_WAIT_TIME_LONG - returnopponentmon1toball BS_ATTACKER + returnopponentmon1toball waitstate - returnopponentmon2toball BS_ATTACKER + returnopponentmon2toball waitstate BattleScript_BattleTowerLostLostSkipMonRecall:: trainerslidein BS_ATTACKER diff --git a/graphics/interface/unk_8D2FBB4.pal b/graphics/interface/text_pp.pal similarity index 100% rename from graphics/interface/unk_8D2FBB4.pal rename to graphics/interface/text_pp.pal diff --git a/include/battle.h b/include/battle.h index b581190d6..54ba4a776 100644 --- a/include/battle.h +++ b/include/battle.h @@ -30,7 +30,7 @@ && !(gDisableStructs[battler].mimickedMoves & gBitTable[moveSlot])) #define TRAINER_OPPONENT_3FE 0x3FE -#define TRAINER_OPPONENT_C00 0xC00 +#define TRAINER_UNION_ROOM 0xC00 #define TRAINER_LINK_OPPONENT 0x800 #define SECRET_BASE_OPPONENT 0x400 diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index d0461319d..461994d62 100644 --- a/include/battle_ai_switch_items.h +++ b/include/battle_ai_switch_items.h @@ -3,8 +3,7 @@ #include "global.h" -enum -{ +enum { AI_ITEM_FULL_RESTORE = 1, AI_ITEM_HEAL_HP, AI_ITEM_CURE_CONDITION, @@ -13,6 +12,15 @@ enum AI_ITEM_NOT_RECOGNIZABLE }; +enum { + AI_HEAL_CONFUSION, + AI_HEAL_PARALYSIS, + AI_HEAL_FREEZE, + AI_HEAL_BURN, + AI_HEAL_POISON, + AI_HEAL_SLEEP, +}; + void AI_TrySwitchOrUseItem(void); u8 GetMostSuitableMonToSwitchInto(void); diff --git a/include/battle_message.h b/include/battle_message.h index 49d05b07d..7e882e3a8 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -242,11 +242,11 @@ extern const u8 gText_Ice[]; extern const u8 gText_Confusion[]; extern const u8 gText_Love[]; -extern const u8 gUnknown_83FE859[]; -extern const u8 gUnknown_83FE85E[]; -extern const u8 gUnknown_83FE85C[]; -extern const u8 gUnknown_83FE860[]; -extern const u8 gUnknown_83FE864[]; +extern const u8 gText_BattleTowerBan_Space[]; +extern const u8 gText_BattleTowerBan_Newline1[]; +extern const u8 gText_BattleTowerBan_Newline2[]; +extern const u8 gText_BattleTowerBan_Is1[]; +extern const u8 gText_BattleTowerBan_Is2[]; extern const u8 gText_SafariBalls[]; extern const u8 gText_HighlightRed_Left[]; diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h index 69086a626..2a056e516 100644 --- a/include/battle_string_ids.h +++ b/include/battle_string_ids.h @@ -385,7 +385,7 @@ #define STRINGID_TRAINER1MON2COMEBACK 384 #define STRINGID_TRAINER1MON1AND2COMEBACK 385 -#define BATTLESTRINGS_COUNT 374 +#define BATTLESTRINGS_COUNT 386 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, @@ -545,19 +545,15 @@ #define B_MSG_WONT_OBEY 1 #define B_MSG_TURNED_AWAY 2 #define B_MSG_PRETEND_NOT_NOTICE 3 -#define B_MSG_INCAPABLE_OF_POWER 4 -// For randomly selecting a disobey string -// Skips the one used for Battle Palace -#define NUM_LOAF_STRINGS 4 // gSafariGetNearStringIds #define B_MSG_CREPT_CLOSER 0 #define B_MSG_CANT_GET_CLOSER 1 // gSafariPokeblockResultStringIds -#define B_MSG_MON_CURIOUS 0 -#define B_MSG_MON_ENTHRALLED 1 -#define B_MSG_MON_IGNORED 2 +#define B_MSG_MON_WATCHING 0 +#define B_MSG_MON_ANGRY 1 +#define B_MSG_MON_EATING 2 // gFlashFireStringIds #define B_MSG_FLASH_FIRE_BOOST 0 diff --git a/include/constants/battle.h b/include/constants/battle.h index 0b4c372a2..041c6e73e 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -321,7 +321,7 @@ #define BATTLE_RUN_FORBIDDEN 1 #define BATTLE_RUN_FAILURE 2 -// Window Ids for sStandardBattleWindowTemplates +// Window Ids for sTextOnWindowsInfo_Normal #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 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 6856f4bf8..e08a9e400 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -87,7 +87,7 @@ #define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 #define VARIOUS_RESET_PLAYER_FAINTED 7 -#define VARIOUS_CASE_8 8 +#define VARIOUS_GET_BATTLERS_FOR_RECALL 8 #define VARIOUS_RETURN_OPPONENT_MON1 9 #define VARIOUS_RETURN_OPPONENT_MON2 10 #define VARIOUS_CHECK_POKEFLUTE 11 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index dbea7dff5..298a829c9 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -93,25 +93,26 @@ #define MON_DATA_SPDEF2 88 // Pokemon types -#define TYPE_NORMAL 0x00 -#define TYPE_FIGHTING 0x01 -#define TYPE_FLYING 0x02 -#define TYPE_POISON 0x03 -#define TYPE_GROUND 0x04 -#define TYPE_ROCK 0x05 -#define TYPE_BUG 0x06 -#define TYPE_GHOST 0x07 -#define TYPE_STEEL 0x08 -#define TYPE_MYSTERY 0x09 -#define TYPE_FIRE 0x0a -#define TYPE_WATER 0x0b -#define TYPE_GRASS 0x0c -#define TYPE_ELECTRIC 0x0d -#define TYPE_PSYCHIC 0x0e -#define TYPE_ICE 0x0f -#define TYPE_DRAGON 0x10 -#define TYPE_DARK 0x11 -#define NUMBER_OF_MON_TYPES 0x12 +#define TYPE_NONE 255 +#define TYPE_NORMAL 0 +#define TYPE_FIGHTING 1 +#define TYPE_FLYING 2 +#define TYPE_POISON 3 +#define TYPE_GROUND 4 +#define TYPE_ROCK 5 +#define TYPE_BUG 6 +#define TYPE_GHOST 7 +#define TYPE_STEEL 8 +#define TYPE_MYSTERY 9 +#define TYPE_FIRE 10 +#define TYPE_WATER 11 +#define TYPE_GRASS 12 +#define TYPE_ELECTRIC 13 +#define TYPE_PSYCHIC 14 +#define TYPE_ICE 15 +#define TYPE_DRAGON 16 +#define TYPE_DARK 17 +#define NUMBER_OF_MON_TYPES 18 // Pokemon egg groups #define EGG_GROUP_NONE 0 diff --git a/include/constants/weather.h b/include/constants/weather.h index 241dc5e2a..b02496bff 100644 --- a/include/constants/weather.h +++ b/include/constants/weather.h @@ -16,6 +16,7 @@ #define WEATHER_DROUGHT 12 // unused and broken in overworld #define WEATHER_DOWNPOUR 13 // unused #define WEATHER_UNDERWATER_BUBBLES 14 // unused +#define WEATHER_ABNORMAL 15 // unused #define WEATHER_ROUTE119_CYCLE 20 // unused #define WEATHER_ROUTE123_CYCLE 21 // unused diff --git a/include/graphics.h b/include/graphics.h index f26373307..70b85d41b 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4848,7 +4848,7 @@ extern const u32 gBuyMenuFrame_TmHmTilemap[]; extern const u32 gBuyMenuFrame_Pal[]; // battle_message -extern const u16 gUnknown_8D2FBB4[]; +extern const u16 gPPTextPalette[]; // trainer card extern const u16 gKantoTrainerCard_Pal[]; diff --git a/include/string_util.h b/include/string_util.h index 65511b5c4..5f052d9f9 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -11,8 +11,8 @@ enum StringConvertMode }; u8 *StringCopy_Nickname(u8 *dest, const u8 *src); -u8 *StringGetEnd10(u8 *str); -u8 *StringCopy7(u8 *dest, const u8 *src); +u8 *StringGet_Nickname(u8 *str); +u8 *StringCopy_PlayerName(u8 *dest, const u8 *src); u8 *StringCopy(u8 *dest, const u8 *src); u8 *StringAppend(u8 *dest, const u8 *src); u8 *StringCopyN(u8 *dest, const u8 *src, u8 n); diff --git a/include/strings.h b/include/strings.h index c7663fef9..63fed5e97 100644 --- a/include/strings.h +++ b/include/strings.h @@ -216,12 +216,12 @@ extern const u8 gString_SlotMachineControls[]; // battle_controller_safari extern const u8 gText_EmptyString3[]; -extern const u8 gUnknown_83FE747[]; +extern const u8 gText_SafariZoneMenu[]; extern const u8 gText_WhatWillPlayerThrow[]; // battle_controller_player extern const u8 gText_BattleSwitchWhich[]; -extern const u8 gUnknown_83FE770[]; +extern const u8 gText_MoveInterfaceDynamicColors[]; extern const u8 gText_MoveInterfacePP[]; extern const u8 gText_MoveInterfaceType[]; extern const u8 gText_LinkStandby[]; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 839a230ad..b9573611e 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1134,7 +1134,7 @@ static void LinkOpponentHandleDrawTrainerPic(void) else { xPos = 176; - if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) { trainerPicId = GetUnionRoomTrainerPic(); } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 16c812fb0..541276a78 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1369,7 +1369,7 @@ static void MoveSelectionDisplayMoveNames(void) for (i = 0; i < MAX_MON_MOVES; ++i) { MoveSelectionDestroyCursorAt(i); - StringCopy(gDisplayedStringBattle, gUnknown_83FE770); + StringCopy(gDisplayedStringBattle, gText_MoveInterfaceDynamicColors); StringAppend(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); BattlePutTextOnWindow(gDisplayedStringBattle, i + 3); if (moveInfo->moves[i] != MOVE_NONE) @@ -1407,7 +1407,7 @@ static void MoveSelectionDisplayMoveType(void) *txtPtr++ = EXT_CTRL_CODE_BEGIN; *txtPtr++ = 6; *txtPtr++ = 1; - txtPtr = StringCopy(txtPtr, gUnknown_83FE770); + txtPtr = StringCopy(txtPtr, gText_MoveInterfaceDynamicColors); StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 6e7b1ee9a..545572416 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -439,7 +439,7 @@ static void SafariHandleChooseAction(void) gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG); - BattlePutTextOnWindow(gUnknown_83FE747, B_WIN_ACTION_MENU); + BattlePutTextOnWindow(gText_SafariZoneMenu, B_WIN_ACTION_MENU); for (i = 0; i < 4; ++i) ActionSelectionDestroyCursorAt(i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); diff --git a/src/battle_interface.c b/src/battle_interface.c index d0713bda1..07f880acc 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1466,7 +1466,7 @@ void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) ptr = StringCopy(gDisplayedStringBattle, gUnknown_8260556); GetMonData(mon, MON_DATA_NICKNAME, nickname); - StringGetEnd10(nickname); + StringGet_Nickname(nickname); ptr = StringCopy(ptr, nickname); *ptr++ = EXT_CTRL_CODE_BEGIN; *ptr++ = EXT_CTRL_CODE_COLOR; diff --git a/src/battle_message.c b/src/battle_message.c index 12369f063..ffe2bd764 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -16,9 +16,11 @@ #include "new_menu_helpers.h" #include "battle_controllers.h" #include "graphics.h" +#include "battle_ai_switch_items.h" #include "constants/moves.h" #include "constants/items.h" #include "constants/trainers.h" +#include "constants/weather.h" struct BattleWindowText { @@ -330,7 +332,7 @@ static const u8 sText_WildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} f static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); static const u8 sText_NoRunningFromTrainers[] = _("No! There's no running\nfrom a TRAINER battle!\p"); static const u8 sText_CantEscape[] = _("Can't escape!\p"); -static const u8 sText_EmptyString5[] = _(""); //sText_DontLeaveBirch in pokeem +static const u8 sText_DontLeaveBirch[] = _(""); // Dummied static const u8 sText_ButNothingHappened[] = _("But nothing happened!"); static const u8 sText_ButItFailed[] = _("But it failed!"); static const u8 sText_ItHurtConfusion[] = _("It hurt itself in its\nconfusion!"); @@ -470,7 +472,7 @@ static const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); static const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); static const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); static const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); -const u8 gUnknown_83FD78A[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); +static const u8 sText_ItDodgedBall2[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); // Unused version of the Marowak ghost dodging text static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}\p"); static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127}"); static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); @@ -483,7 +485,7 @@ static const u8 sText_SandstormIsRaging[] = _("A sandstorm is raging."); static const u8 sText_BoxIsFull[] = _("The BOX is full!\nYou can't catch any more!\p"); static const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY"); static const u8 sText_BerrySuffix[] = _(" BERRY"); -static const u8 gUnknown_83FD8B6[] = _("ナゾ"); +static const u8 sText_Enigma[] = _("ナゾ"); static const u8 sText_PkmnsItemCuredParalysis[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured paralysis!"); static const u8 sText_PkmnsItemCuredPoison[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured poison!"); static const u8 sText_PkmnsItemHealedBurn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its burn!"); @@ -513,7 +515,7 @@ const u8 gText_OakNoRunningFromATrainer[] = _("OAK: No! There's no running away\ const u8 gText_WinEarnsPrizeMoney[] = _("OAK: Hm! Excellent!\pIf you win, you earn prize money,\nand your POKéMON will grow!\pBattle other TRAINERS and make\nyour POKéMON strong!\p"); const u8 gText_HowDissapointing[] = _("OAK: Hm…\nHow disappointing…\pIf you win, you earn prize money,\nand your POKéMON grow.\pBut if you lose, {B_PLAYER_NAME}, you end\nup paying prize money…\pHowever, since you had no warning\nthis time, I'll pay for you.\pBut things won't be this way once\nyou step outside these doors.\pThat's why you must strengthen your\nPOKéMON by battling wild POKéMON.\p"); -const u8 *const gBattleStringsTable[] = { +const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_START] = { [STRINGID_TRAINER1LOSETEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer1LoseText, [STRINGID_PKMNGAINEDEXP - BATTLESTRINGS_TABLE_START] = sText_PkmnGainedEXP, [STRINGID_PKMNGREWTOLV - BATTLESTRINGS_TABLE_START] = sText_PkmnGrewToLv, @@ -625,7 +627,7 @@ const u8 *const gBattleStringsTable[] = { [STRINGID_PKMNSTORINGENERGY - BATTLESTRINGS_TABLE_START] = sText_PkmnStoringEnergy, [STRINGID_PKMNUNLEASHEDENERGY - BATTLESTRINGS_TABLE_START] = sText_PkmnUnleashedEnergy, [STRINGID_PKMNFATIGUECONFUSION - BATTLESTRINGS_TABLE_START] = sText_PkmnFatigueConfusion, - [STRINGID_PLAYERPICKEDUPMONEY - BATTLESTRINGS_TABLE_START] = sText_PkmnPickedUpItem, + [STRINGID_PLAYERPICKEDUPMONEY - BATTLESTRINGS_TABLE_START] = sText_PkmnPickedUpItem, [STRINGID_PKMNUNAFFECTED - BATTLESTRINGS_TABLE_START] = sText_PkmnUnaffected, [STRINGID_PKMNTRANSFORMEDINTO - BATTLESTRINGS_TABLE_START] = sText_PkmnTransformedInto, [STRINGID_PKMNMADESUBSTITUTE - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeSubstitute, @@ -729,7 +731,7 @@ const u8 *const gBattleStringsTable[] = { [STRINGID_WILDPKMNFLED - BATTLESTRINGS_TABLE_START] = sText_WildPkmnFled, [STRINGID_NORUNNINGFROMTRAINERS - BATTLESTRINGS_TABLE_START] = sText_NoRunningFromTrainers, [STRINGID_CANTESCAPE - BATTLESTRINGS_TABLE_START] = sText_CantEscape, - [STRINGID_DONTLEAVEBIRCH - BATTLESTRINGS_TABLE_START] = sText_EmptyString5, + [STRINGID_DONTLEAVEBIRCH - BATTLESTRINGS_TABLE_START] = sText_DontLeaveBirch, [STRINGID_BUTNOTHINGHAPPENED - BATTLESTRINGS_TABLE_START] = sText_ButNothingHappened, [STRINGID_BUTITFAILED - BATTLESTRINGS_TABLE_START] = sText_ButItFailed, [STRINGID_ITHURTCONFUSION - BATTLESTRINGS_TABLE_START] = sText_ItHurtConfusion, @@ -890,104 +892,120 @@ const u8 *const gBattleStringsTable[] = { [STRINGID_TRAINER1MON1AND2COMEBACK - BATTLESTRINGS_TABLE_START] = sText_Trainer1RecallBoth }; -const u16 gMissStringIds[] = { - STRINGID_ATTACKMISSED, - STRINGID_PKMNPROTECTEDITSELF, - STRINGID_PKMNAVOIDEDATTACK, - STRINGID_AVOIDEDDAMAGE, - STRINGID_PKMNMAKESGROUNDMISS +const u16 gMissStringIds[] = +{ + [B_MSG_MISSED] = STRINGID_ATTACKMISSED, + [B_MSG_PROTECTED] = STRINGID_PKMNPROTECTEDITSELF, + [B_MSG_AVOIDED_ATK] = STRINGID_PKMNAVOIDEDATTACK, + [B_MSG_AVOIDED_DMG] = STRINGID_AVOIDEDDAMAGE, + [B_MSG_GROUND_MISS] = STRINGID_PKMNMAKESGROUNDMISS }; -const u16 gNoEscapeStringIds[] = { - STRINGID_CANTESCAPE, - STRINGID_DONTLEAVEBIRCH, - STRINGID_PREVENTSESCAPE, - STRINGID_CANTESCAPE2, - STRINGID_ATTACKERCANTESCAPE +const u16 gNoEscapeStringIds[] = +{ + [B_MSG_CANT_ESCAPE] = STRINGID_CANTESCAPE, + [B_MSG_DONT_LEAVE_BIRCH] = STRINGID_DONTLEAVEBIRCH, + [B_MSG_PREVENTS_ESCAPE] = STRINGID_PREVENTSESCAPE, + [B_MSG_CANT_ESCAPE_2] = STRINGID_CANTESCAPE2, + [B_MSG_ATTACKER_CANT_ESCAPE] = STRINGID_ATTACKERCANTESCAPE }; -const u16 gMoveWeatherChangeStringIds[] = { - STRINGID_STARTEDTORAIN, - STRINGID_DOWNPOURSTARTED, - STRINGID_BUTITFAILED, - STRINGID_SANDSTORMBREWED, - STRINGID_SUNLIGHTGOTBRIGHT, - STRINGID_STARTEDHAIL +const u16 gMoveWeatherChangeStringIds[] = +{ + [B_MSG_STARTED_RAIN] = STRINGID_STARTEDTORAIN, + [B_MSG_STARTED_DOWNPOUR] = STRINGID_DOWNPOURSTARTED, + [B_MSG_WEATHER_FAILED] = STRINGID_BUTITFAILED, + [B_MSG_STARTED_SANDSTORM] = STRINGID_SANDSTORMBREWED, + [B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT, + [B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL }; -const u16 gSandstormHailContinuesStringIds[] = { - STRINGID_SANDSTORMRAGES, - STRINGID_HAILCONTINUES +const u16 gSandstormHailContinuesStringIds[] = +{ + [B_MSG_SANDSTORM] = STRINGID_SANDSTORMRAGES, + [B_MSG_HAIL] = STRINGID_HAILCONTINUES }; -const u16 gSandstormHailDmgStringIds[] = { - STRINGID_PKMNBUFFETEDBYSANDSTORM, - STRINGID_PKMNPELTEDBYHAIL +const u16 gSandstormHailDmgStringIds[] = +{ + [B_MSG_SANDSTORM] = STRINGID_PKMNBUFFETEDBYSANDSTORM, + [B_MSG_HAIL] = STRINGID_PKMNPELTEDBYHAIL }; -const u16 gSandstormHailEndStringIds[] = { - STRINGID_SANDSTORMSUBSIDED, - STRINGID_HAILSTOPPED +const u16 gSandstormHailEndStringIds[] = +{ + [B_MSG_SANDSTORM] = STRINGID_SANDSTORMSUBSIDED, + [B_MSG_HAIL] = STRINGID_HAILSTOPPED }; -const u16 gRainContinuesStringIds[] = { - STRINGID_RAINCONTINUES, - STRINGID_DOWNPOURCONTINUES, - STRINGID_RAINSTOPPED +const u16 gRainContinuesStringIds[] = +{ + [B_MSG_RAIN_CONTINUES] = STRINGID_RAINCONTINUES, + [B_MSG_DOWNPOUR_CONTINUES] = STRINGID_DOWNPOURCONTINUES, + [B_MSG_RAIN_STOPPED] = STRINGID_RAINSTOPPED }; -const u16 gProtectLikeUsedStringIds[] = { - STRINGID_PKMNPROTECTEDITSELF2, - STRINGID_PKMNBRACEDITSELF, - STRINGID_BUTITFAILED +const u16 gProtectLikeUsedStringIds[] = +{ + [B_MSG_PROTECTED_ITSELF] = STRINGID_PKMNPROTECTEDITSELF2, + [B_MSG_BRACED_ITSELF] = STRINGID_PKMNBRACEDITSELF, + [B_MSG_PROTECT_FAILED] = STRINGID_BUTITFAILED }; -const u16 gReflectLightScreenSafeguardStringIds[] = { - STRINGID_BUTITFAILED, - STRINGID_PKMNRAISEDDEF, - STRINGID_PKMNRAISEDDEFALITTLE, - STRINGID_PKMNRAISEDSPDEF, - STRINGID_PKMNRAISEDSPDEFALITTLE, - STRINGID_PKMNCOVEREDBYVEIL +const u16 gReflectLightScreenSafeguardStringIds[] = +{ + [B_MSG_SIDE_STATUS_FAILED] = STRINGID_BUTITFAILED, + [B_MSG_SET_REFLECT_SINGLE] = STRINGID_PKMNRAISEDDEF, + [B_MSG_SET_REFLECT_DOUBLE] = STRINGID_PKMNRAISEDDEFALITTLE, + [B_MSG_SET_LIGHTSCREEN_SINGLE] = STRINGID_PKMNRAISEDSPDEF, + [B_MSG_SET_LIGHTSCREEN_DOUBLE] = STRINGID_PKMNRAISEDSPDEFALITTLE, + [B_MSG_SET_SAFEGUARD] = STRINGID_PKMNCOVEREDBYVEIL }; -const u16 gLeechSeedStringIds[] = { - STRINGID_PKMNSEEDED, - STRINGID_PKMNEVADEDATTACK, - STRINGID_ITDOESNTAFFECT, - STRINGID_PKMNSAPPEDBYLEECHSEED, - STRINGID_ITSUCKEDLIQUIDOOZE +const u16 gLeechSeedStringIds[] = +{ + [B_MSG_LEECH_SEED_SET] = STRINGID_PKMNSEEDED, + [B_MSG_LEECH_SEED_MISS] = STRINGID_PKMNEVADEDATTACK, + [B_MSG_LEECH_SEED_FAIL] = STRINGID_ITDOESNTAFFECT, + [B_MSG_LEECH_SEED_DRAIN] = STRINGID_PKMNSAPPEDBYLEECHSEED, + [B_MSG_LEECH_SEED_OOZE] = STRINGID_ITSUCKEDLIQUIDOOZE }; -const u16 gRestUsedStringIds[] = { - STRINGID_PKMNWENTTOSLEEP, - STRINGID_PKMNSLEPTHEALTHY +const u16 gRestUsedStringIds[] = +{ + [B_MSG_REST] = STRINGID_PKMNWENTTOSLEEP, + [B_MSG_REST_STATUSED] = STRINGID_PKMNSLEPTHEALTHY }; -const u16 gUproarOverTurnStringIds[] = { - STRINGID_PKMNMAKINGUPROAR, - STRINGID_PKMNCALMEDDOWN +const u16 gUproarOverTurnStringIds[] = +{ + [B_MSG_UPROAR_CONTINUES] = STRINGID_PKMNMAKINGUPROAR, + [B_MSG_UPROAR_ENDS] = STRINGID_PKMNCALMEDDOWN }; -const u16 gStockpileUsedStringIds[] = { - STRINGID_PKMNSTOCKPILED, - STRINGID_PKMNCANTSTOCKPILE +const u16 gStockpileUsedStringIds[] = +{ + [B_MSG_STOCKPILED] = STRINGID_PKMNSTOCKPILED, + [B_MSG_CANT_STOCKPILE] = STRINGID_PKMNCANTSTOCKPILE }; -const u16 gWokeUpStringIds[] = { - STRINGID_PKMNWOKEUP, - STRINGID_PKMNWOKEUPINUPROAR +const u16 gWokeUpStringIds[] = +{ + [B_MSG_WOKE_UP] = STRINGID_PKMNWOKEUP, + [B_MSG_WOKE_UP_UPROAR] = STRINGID_PKMNWOKEUPINUPROAR }; -const u16 gSwallowFailStringIds[] = { - STRINGID_FAILEDTOSWALLOW, - STRINGID_PKMNHPFULL +const u16 gSwallowFailStringIds[] = +{ + [B_MSG_SWALLOW_FAILED] = STRINGID_FAILEDTOSWALLOW, + [B_MSG_SWALLOW_FULL_HP] = STRINGID_PKMNHPFULL }; -const u16 gUproarAwakeStringIds[] = { - STRINGID_PKMNCANTSLEEPINUPROAR2, - STRINGID_UPROARKEPTPKMNAWAKE, - STRINGID_PKMNSTAYEDAWAKEUSING +const u16 gUproarAwakeStringIds[] = +{ + [B_MSG_CANT_SLEEP_UPROAR] = STRINGID_PKMNCANTSLEEPINUPROAR2, + [B_MSG_UPROAR_KEPT_AWAKE] = STRINGID_UPROARKEPTPKMNAWAKE, + [B_MSG_STAYED_AWAKE_USING] = STRINGID_PKMNSTAYEDAWAKEUSING }; const u16 gStatUpStringIds[] = @@ -1000,220 +1018,258 @@ const u16 gStatUpStringIds[] = [B_MSG_USED_DIRE_HIT] = STRINGID_PKMNUSEDXTOGETPUMPED, }; -const u16 gStatDownStringIds[] = { - STRINGID_ATTACKERSSTATFELL, - STRINGID_DEFENDERSSTATFELL, - STRINGID_STATSWONTDECREASE, - STRINGID_EMPTYSTRING3 +const u16 gStatDownStringIds[] = +{ + [B_MSG_ATTACKER_STAT_FELL] = STRINGID_ATTACKERSSTATFELL, + [B_MSG_DEFENDER_STAT_FELL] = STRINGID_DEFENDERSSTATFELL, + [B_MSG_STAT_WONT_DECREASE] = STRINGID_STATSWONTDECREASE, + [B_MSG_STAT_FELL_EMPTY] = STRINGID_EMPTYSTRING3 }; -const u16 gFirstTurnOfTwoStringIds[] = { - STRINGID_PKMNWHIPPEDWHIRLWIND, - STRINGID_PKMNTOOKSUNLIGHT, - STRINGID_PKMNLOWEREDHEAD, - STRINGID_PKMNISGLOWING, - STRINGID_PKMNFLEWHIGH, - STRINGID_PKMNDUGHOLE, - STRINGID_PKMNHIDUNDERWATER, - STRINGID_PKMNSPRANGUP +// Index read from sTWOTURN_STRINGID +const u16 gFirstTurnOfTwoStringIds[] = +{ + [B_MSG_TURN1_RAZOR_WIND] = STRINGID_PKMNWHIPPEDWHIRLWIND, + [B_MSG_TURN1_SOLAR_BEAM] = STRINGID_PKMNTOOKSUNLIGHT, + [B_MSG_TURN1_SKULL_BASH] = STRINGID_PKMNLOWEREDHEAD, + [B_MSG_TURN1_SKY_ATTACK] = STRINGID_PKMNISGLOWING, + [B_MSG_TURN1_FLY] = STRINGID_PKMNFLEWHIGH, + [B_MSG_TURN1_DIG] = STRINGID_PKMNDUGHOLE, + [B_MSG_TURN1_DIVE] = STRINGID_PKMNHIDUNDERWATER, + [B_MSG_TURN1_BOUNCE] = STRINGID_PKMNSPRANGUP }; -const u16 gWrappedStringIds[] = { - STRINGID_PKMNSQUEEZEDBYBIND, - STRINGID_PKMNWRAPPEDBY, - STRINGID_PKMNTRAPPEDINVORTEX, - STRINGID_PKMNCLAMPED, - STRINGID_PKMNTRAPPEDINVORTEX, - STRINGID_PKMNTRAPPEDBYSANDTOMB +// Index copied from move's index in gTrappingMoves +const u16 gWrappedStringIds[] = +{ + STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND + STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP + STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_FIRE_SPIN + STRINGID_PKMNCLAMPED, // MOVE_CLAMP + STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_WHIRLPOOL + STRINGID_PKMNTRAPPEDBYSANDTOMB // MOVE_SAND_TOMB }; -const u16 gMistUsedStringIds[] = { - STRINGID_PKMNSHROUDEDINMIST, - STRINGID_BUTITFAILED +const u16 gMistUsedStringIds[] = +{ + [B_MSG_SET_MIST] = STRINGID_PKMNSHROUDEDINMIST, + [B_MSG_MIST_FAILED] = STRINGID_BUTITFAILED }; -const u16 gFocusEnergyUsedStringIds[] = { - STRINGID_PKMNGETTINGPUMPED, - STRINGID_BUTITFAILED +const u16 gFocusEnergyUsedStringIds[] = +{ + [B_MSG_GETTING_PUMPED] = STRINGID_PKMNGETTINGPUMPED, + [B_MSG_FOCUS_ENERGY_FAILED] = STRINGID_BUTITFAILED }; -const u16 gTransformUsedStringIds[] = { - STRINGID_PKMNTRANSFORMEDINTO, - STRINGID_BUTITFAILED +const u16 gTransformUsedStringIds[] = +{ + [B_MSG_TRANSFORMED] = STRINGID_PKMNTRANSFORMEDINTO, + [B_MSG_TRANSFORM_FAILED] = STRINGID_BUTITFAILED }; -const u16 gSubstituteUsedStringIds[] = { - STRINGID_PKMNMADESUBSTITUTE, - STRINGID_TOOWEAKFORSUBSTITUTE +const u16 gSubstituteUsedStringIds[] = +{ + [B_MSG_SET_SUBSTITUTE] = STRINGID_PKMNMADESUBSTITUTE, + [B_MSG_SUBSTITUTE_FAILED] = STRINGID_TOOWEAKFORSUBSTITUTE }; -const u16 gGotPoisonedStringIds[] = { - STRINGID_PKMNWASPOISONED, - STRINGID_PKMNPOISONEDBY +const u16 gGotPoisonedStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNWASPOISONED, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNPOISONEDBY }; -const u16 gGotParalyzedStringIds[] = { - STRINGID_PKMNWASPARALYZED, - STRINGID_PKMNWASPARALYZEDBY +const u16 gGotParalyzedStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNWASPARALYZED, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNWASPARALYZEDBY }; -const u16 gFellAsleepStringIds[] = { - STRINGID_PKMNFELLASLEEP, - STRINGID_PKMNMADESLEEP +const u16 gFellAsleepStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNFELLASLEEP, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNMADESLEEP }; -const u16 gGotBurnedStringIds[] = { - STRINGID_PKMNWASBURNED, - STRINGID_PKMNBURNEDBY +const u16 gGotBurnedStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNWASBURNED, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNBURNEDBY }; -const u16 gGotFrozenStringIds[] = { - STRINGID_PKMNWASFROZEN, - STRINGID_PKMNFROZENBY +const u16 gGotFrozenStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNWASFROZEN, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNFROZENBY }; -const u16 gGotDefrostedStringIds[] = { - STRINGID_PKMNWASDEFROSTED2, - STRINGID_PKMNWASDEFROSTEDBY +const u16 gGotDefrostedStringIds[] = +{ + [B_MSG_DEFROSTED] = STRINGID_PKMNWASDEFROSTED2, + [B_MSG_DEFROSTED_BY_MOVE] = STRINGID_PKMNWASDEFROSTEDBY }; -const u16 gKOFailedStringIds[] = { - STRINGID_ATTACKMISSED, - STRINGID_PKMNUNAFFECTED +const u16 gKOFailedStringIds[] = +{ + [B_MSG_KO_MISS] = STRINGID_ATTACKMISSED, + [B_MSG_KO_UNAFFECTED] = STRINGID_PKMNUNAFFECTED }; -const u16 gAttractUsedStringIds[] = { - STRINGID_PKMNFELLINLOVE, - STRINGID_PKMNSXINFATUATEDY +const u16 gAttractUsedStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNFELLINLOVE, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNSXINFATUATEDY }; -const u16 gAbsorbDrainStringIds[] = { - STRINGID_PKMNENERGYDRAINED, - STRINGID_ITSUCKEDLIQUIDOOZE +const u16 gAbsorbDrainStringIds[] = +{ + [B_MSG_ABSORB] = STRINGID_PKMNENERGYDRAINED, + [B_MSG_ABSORB_OOZE] = STRINGID_ITSUCKEDLIQUIDOOZE }; -const u16 gSportsUsedStringIds[] = { - STRINGID_ELECTRICITYWEAKENED, - STRINGID_FIREWEAKENED +const u16 gSportsUsedStringIds[] = +{ + [B_MSG_WEAKEN_ELECTRIC] = STRINGID_ELECTRICITYWEAKENED, + [B_MSG_WEAKEN_FIRE] = STRINGID_FIREWEAKENED }; -const u16 gPartyStatusHealStringIds[] = { - STRINGID_BELLCHIMED, - STRINGID_BELLCHIMED, - STRINGID_BELLCHIMED, - STRINGID_BELLCHIMED, - STRINGID_SOOTHINGAROMA +const u16 gPartyStatusHealStringIds[] = +{ + [B_MSG_BELL] = STRINGID_BELLCHIMED, + [B_MSG_BELL_SOUNDPROOF_ATTACKER] = STRINGID_BELLCHIMED, + [B_MSG_BELL_SOUNDPROOF_PARTNER] = STRINGID_BELLCHIMED, + [B_MSG_BELL_BOTH_SOUNDPROOF] = STRINGID_BELLCHIMED, + [B_MSG_SOOTHING_AROMA] = STRINGID_SOOTHINGAROMA }; -const u16 gFutureMoveUsedStringIds[] = { - STRINGID_PKMNFORESAWATTACK, - STRINGID_PKMNCHOSEXASDESTINY +const u16 gFutureMoveUsedStringIds[] = +{ + [B_MSG_FUTURE_SIGHT] = STRINGID_PKMNFORESAWATTACK, + [B_MSG_DOOM_DESIRE] = STRINGID_PKMNCHOSEXASDESTINY }; -const u16 gBallEscapeStringIds[] = { - STRINGID_PKMNBROKEFREE, - STRINGID_ITAPPEAREDCAUGHT, - STRINGID_AARGHALMOSTHADIT, - STRINGID_SHOOTSOCLOSE +const u16 gBallEscapeStringIds[] = +{ + [BALL_NO_SHAKES] = STRINGID_PKMNBROKEFREE, + [BALL_1_SHAKE] = STRINGID_ITAPPEAREDCAUGHT, + [BALL_2_SHAKES] = STRINGID_AARGHALMOSTHADIT, + [BALL_3_SHAKES_FAIL] = STRINGID_SHOOTSOCLOSE }; -const u16 gWeatherStartsStringIds[] = { - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_SANDSTORMISRAGING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_SUNLIGHTSTRONG, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING +// Overworld weathers that don't have an associated battle weather default to "It is raining." +const u16 gWeatherStartsStringIds[] = +{ + [WEATHER_NONE] = STRINGID_ITISRAINING, + [WEATHER_SUNNY_CLOUDS] = STRINGID_ITISRAINING, + [WEATHER_SUNNY] = STRINGID_ITISRAINING, + [WEATHER_RAIN] = STRINGID_ITISRAINING, + [WEATHER_SNOW] = STRINGID_ITISRAINING, + [WEATHER_RAIN_THUNDERSTORM] = STRINGID_ITISRAINING, + [WEATHER_FOG_HORIZONTAL] = STRINGID_ITISRAINING, + [WEATHER_VOLCANIC_ASH] = STRINGID_ITISRAINING, + [WEATHER_SANDSTORM] = STRINGID_SANDSTORMISRAGING, + [WEATHER_FOG_DIAGONAL] = STRINGID_ITISRAINING, + [WEATHER_UNDERWATER] = STRINGID_ITISRAINING, + [WEATHER_SHADE] = STRINGID_ITISRAINING, + [WEATHER_DROUGHT] = STRINGID_SUNLIGHTSTRONG, + [WEATHER_DOWNPOUR] = STRINGID_ITISRAINING, + [WEATHER_UNDERWATER_BUBBLES] = STRINGID_ITISRAINING, + [WEATHER_ABNORMAL] = STRINGID_ITISRAINING }; -const u16 gInobedientStringIds[] = { - STRINGID_PKMNLOAFING, - STRINGID_PKMNWONTOBEY, - STRINGID_PKMNTURNEDAWAY, - STRINGID_PKMNPRETENDNOTNOTICE +const u16 gInobedientStringIds[] = +{ + [B_MSG_LOAFING] = STRINGID_PKMNLOAFING, + [B_MSG_WONT_OBEY] = STRINGID_PKMNWONTOBEY, + [B_MSG_TURNED_AWAY] = STRINGID_PKMNTURNEDAWAY, + [B_MSG_PRETEND_NOT_NOTICE] = STRINGID_PKMNPRETENDNOTNOTICE }; -const u16 gSafariPokeblockResultStringIds[] = { - STRINGID_PKMNWATCHINGCAREFULLY, - STRINGID_PKMNANGRY, - STRINGID_PKMNEATING +const u16 gSafariPokeblockResultStringIds[] = +{ + [B_MSG_MON_WATCHING] = STRINGID_PKMNWATCHINGCAREFULLY, + [B_MSG_MON_ANGRY] = STRINGID_PKMNANGRY, + [B_MSG_MON_EATING] = STRINGID_PKMNEATING }; -const u16 gTrainerItemCuredStatusStringIds[] = { - STRINGID_PKMNSITEMSNAPPEDOUT, - STRINGID_PKMNSITEMCUREDPARALYSIS, - STRINGID_PKMNSITEMDEFROSTEDIT, - STRINGID_PKMNSITEMHEALEDBURN, - STRINGID_PKMNSITEMCUREDPOISON, - STRINGID_PKMNSITEMWOKEIT +const u16 gTrainerItemCuredStatusStringIds[] = +{ + [AI_HEAL_CONFUSION] = STRINGID_PKMNSITEMSNAPPEDOUT, + [AI_HEAL_PARALYSIS] = STRINGID_PKMNSITEMCUREDPARALYSIS, + [AI_HEAL_FREEZE] = STRINGID_PKMNSITEMDEFROSTEDIT, + [AI_HEAL_BURN] = STRINGID_PKMNSITEMHEALEDBURN, + [AI_HEAL_POISON] = STRINGID_PKMNSITEMCUREDPOISON, + [AI_HEAL_SLEEP] = STRINGID_PKMNSITEMWOKEIT }; -const u16 gBerryEffectStringIds[] = { - STRINGID_PKMNSITEMCUREDPROBLEM, - STRINGID_PKMNSITEMNORMALIZEDSTATUS +const u16 gBerryEffectStringIds[] = +{ + [B_MSG_CURED_PROBLEM] = STRINGID_PKMNSITEMCUREDPROBLEM, + [B_MSG_NORMALIZED_STATUS] = STRINGID_PKMNSITEMNORMALIZEDSTATUS }; -const u16 gBRNPreventionStringIds[] = { - STRINGID_PKMNSXPREVENTSBURNS, - STRINGID_PKMNSXPREVENTSYSZ, - STRINGID_PKMNSXHADNOEFFECTONY +const u16 gBRNPreventionStringIds[] = +{ + [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNSXPREVENTSBURNS, + [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ, + [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY }; -const u16 gPRLZPreventionStringIds[] = { - STRINGID_PKMNPREVENTSPARALYSISWITH, - STRINGID_PKMNSXPREVENTSYSZ, - STRINGID_PKMNSXHADNOEFFECTONY +const u16 gPRLZPreventionStringIds[] = +{ + [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPARALYSISWITH, + [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ, + [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY }; -const u16 gPSNPreventionStringIds[] = { - STRINGID_PKMNPREVENTSPOISONINGWITH, - STRINGID_PKMNSXPREVENTSYSZ, - STRINGID_PKMNSXHADNOEFFECTONY +const u16 gPSNPreventionStringIds[] = +{ + [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPOISONINGWITH, + [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ, + [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY }; -const u16 gItemSwapStringIds[] = { - STRINGID_PKMNOBTAINEDX, - STRINGID_PKMNOBTAINEDX2, - STRINGID_PKMNOBTAINEDXYOBTAINEDZ +const u16 gItemSwapStringIds[] = +{ + [B_MSG_ITEM_SWAP_TAKEN] = STRINGID_PKMNOBTAINEDX, + [B_MSG_ITEM_SWAP_GIVEN] = STRINGID_PKMNOBTAINEDX2, + [B_MSG_ITEM_SWAP_BOTH] = STRINGID_PKMNOBTAINEDXYOBTAINEDZ }; -const u16 gFlashFireStringIds[] = { - STRINGID_PKMNRAISEDFIREPOWERWITH, - STRINGID_PKMNSXMADEYINEFFECTIVE +const u16 gFlashFireStringIds[] = +{ + [B_MSG_FLASH_FIRE_BOOST] = STRINGID_PKMNRAISEDFIREPOWERWITH, + [B_MSG_FLASH_FIRE_NO_BOOST] = STRINGID_PKMNSXMADEYINEFFECTIVE }; -const u16 gCaughtMonStringIds[] = { - STRINGID_PKMNTRANSFERREDSOMEONESPC, - STRINGID_PKMNTRANSFERREDBILLSPC, - STRINGID_PKMNBOXSOMEONESPCFULL, - STRINGID_PKMNBOXBILLSPCFULL +const u16 gCaughtMonStringIds[] = +{ + [B_MSG_SENT_SOMEONES_PC] = STRINGID_PKMNTRANSFERREDSOMEONESPC, + [B_MSG_SENT_BILLS_PC] = STRINGID_PKMNTRANSFERREDBILLSPC, + [B_MSG_SOMEONES_BOX_FULL] = STRINGID_PKMNBOXSOMEONESPCFULL, + [B_MSG_BILLS_BOX_FULL] = STRINGID_PKMNBOXBILLSPCFULL }; -const u16 gDoubleBattleRecallStrings[] = { +// Index is determined in VARIOUS_GET_BATTLERS_FOR_RECALL by ORing flags for each present battler on the losing side. +// No battlers (0) is skipped. +const u16 gDoubleBattleRecallStrings[1 << (MAX_BATTLERS_COUNT / 2)] = +{ STRINGID_TRAINER1MON1COMEBACK, STRINGID_TRAINER1MON1COMEBACK, STRINGID_TRAINER1MON2COMEBACK, STRINGID_TRAINER1MON1AND2COMEBACK }; -const u16 gTrappingMoves[] = { +const u16 gTrappingMoves[NUM_TRAPPING_MOVES + 1] = +{ MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, - 0xFFFF + 0xFFFF // Never read }; const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); @@ -1225,30 +1281,32 @@ const u8 gText_WhatWillPlayerThrow[] = _("What will {B_PLAYER_NAME}\nthrow?"); const u8 gText_WhatWillOldManDo[] = _("What will the\nold man do?"); const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…"); const u8 gText_BattleMenu[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN"); -const u8 gUnknown_83FE747[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}BALL{CLEAR_TO 56}BAIT\nROCK{CLEAR_TO 56}RUN"); +const u8 gText_SafariZoneMenu[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}BALL{CLEAR_TO 56}BAIT\nROCK{CLEAR_TO 56}RUN"); const u8 gText_MoveInterfacePP[] = _("PP "); const u8 gText_MoveInterfaceType[] = _("TYPE/"); -const u8 gUnknown_83FE770[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); -const u8 gUnknown_83FE779[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\nわすれさせたい?"); +const u8 gText_MoveInterfaceDynamicColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); +const u8 gText_WhichMoveToForget_Unused[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\nわすれさせたい?"); const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Yes\nNo"); const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Switch\nwhich?"); -const u8 gUnknown_83FE7B6[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); -const u8 gUnknown_83FE7BF[] = _("{RIGHT_ARROW_2}"); -const u8 gUnknown_83FE7C2[] = _("{PLUS}"); -const u8 gUnknown_83FE7C5[] = _("-"); +static const u8 sText_UnusedColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); +static const u8 sText_RightArrow2[] = _("{RIGHT_ARROW_2}"); +static const u8 sText_Plus[] = _("{PLUS}"); +static const u8 sText_Dash[] = _("-"); -const u8 gUnknown_83FE7C7[] = _("{FONT_0}Max{FONT_2} HP"); -const u8 gUnknown_83FE7D4[] = _("ATTACK "); -const u8 gUnknown_83FE7DC[] = _("DEFENSE"); -const u8 gUnknown_83FE7E4[] = _("SP. ATK"); -const u8 gUnknown_83FE7EC[] = _("SP. DEF"); +static const u8 sText_MaxHP[] = _("{FONT_0}Max{FONT_2} HP"); +static const u8 sText_Attack[] = _("ATTACK "); +static const u8 sText_Defense[] = _("DEFENSE"); +static const u8 sText_SpAtk[] = _("SP. ATK"); +static const u8 sText_SpDef[] = _("SP. DEF"); -const u8 *const gUnknown_83FE7F4[] = { - gUnknown_83FE7C7, - gUnknown_83FE7E4, - gUnknown_83FE7D4, - gUnknown_83FE7EC, - gUnknown_83FE7DC, +// Unused +static const u8 *const sStatNamesTable2[] = +{ + sText_MaxHP, + sText_SpAtk, + sText_Attack, + sText_SpDef, + sText_Defense, sText_Speed }; @@ -1262,81 +1320,84 @@ const u8 gText_Paralysis[] = _("paralysis"); const u8 gText_Ice[] = _("ice"); const u8 gText_Confusion[] = _("confusion"); const u8 gText_Love[] = _("love"); -const u8 gUnknown_83FE859[] = _(" "); -const u8 gUnknown_83FE85C[] = _("\n"); -const u8 gUnknown_83FE85E[] = _("\n"); -const u8 gUnknown_83FE860[] = _(" is"); -const u8 gUnknown_83FE864[] = _(" is"); +const u8 gText_BattleTowerBan_Space[] = _(" "); +const u8 gText_BattleTowerBan_Newline1[] = _("\n"); +const u8 gText_BattleTowerBan_Newline2[] = _("\n"); +const u8 gText_BattleTowerBan_Is1[] = _(" is"); +const u8 gText_BattleTowerBan_Is2[] = _(" is"); const u8 gText_BadEgg[] = _("Bad EGG"); -const u8 gUnknown_83FE870[] = _("ミツル"); +const u8 gText_BattleWallyName[] = _("ミツル"); const u8 gText_Win[] = _("{HIGHLIGHT 0}Win"); const u8 gText_Loss[] = _("{HIGHLIGHT 0}Loss"); const u8 gText_Draw[] = _("{HIGHLIGHT 0}Draw"); static const u8 sText_SpaceIs[] = _(" is"); static const u8 sText_ApostropheS[] = _("'s"); -const u8 gUnknown_83FE892[] = _("a NORMAL move"); -const u8 gUnknown_83FE8A0[] = _("a FIGHTING move"); -const u8 gUnknown_83FE8B0[] = _("a FLYING move"); -const u8 gUnknown_83FE8BE[] = _("a POISON move"); -const u8 gUnknown_83FE8CC[] = _("a GROUND move"); -const u8 gUnknown_83FE8DA[] = _("a ROCK move"); -const u8 gUnknown_83FE8E6[] = _("a BUG move"); -const u8 gUnknown_83FE8F1[] = _("a GHOST move"); -const u8 gUnknown_83FE8FE[] = _("a STEEL move"); -const u8 gUnknown_83FE90B[] = _("a ??? move"); -const u8 gUnknown_83FE916[] = _("a FIRE move"); -const u8 gUnknown_83FE922[] = _("a WATER move"); -const u8 gUnknown_83FE92F[] = _("a GRASS move"); -const u8 gUnknown_83FE93C[] = _("an ELECTRIC move"); -const u8 gUnknown_83FE94D[] = _("a PSYCHIC move"); -const u8 gUnknown_83FE95C[] = _("an ICE move"); -const u8 gUnknown_83FE968[] = _("a DRAGON move"); -const u8 gUnknown_83FE976[] = _("a DARK move"); +const u8 gText_ANormalMove[] = _("a NORMAL move"); +const u8 gText_AFightingMove[] = _("a FIGHTING move"); +const u8 gText_AFlyingMove[] = _("a FLYING move"); +const u8 gText_APoisonMove[] = _("a POISON move"); +const u8 gText_AGroundMove[] = _("a GROUND move"); +const u8 gText_ARockMove[] = _("a ROCK move"); +const u8 gText_ABugMove[] = _("a BUG move"); +const u8 gText_AGhostMove[] = _("a GHOST move"); +const u8 gText_ASteelMove[] = _("a STEEL move"); +const u8 gText_AMysteryMove[] = _("a ??? move"); +const u8 gText_AFireMove[] = _("a FIRE move"); +const u8 gText_AWaterMove[] = _("a WATER move"); +const u8 gText_AGrassMove[] = _("a GRASS move"); +const u8 gText_AnElectricMove[] = _("an ELECTRIC move"); +const u8 gText_APsychicMove[] = _("a PSYCHIC move"); +const u8 gText_AnIceMove[] = _("an ICE move"); +const u8 gText_ADragonMove[] = _("a DRAGON move"); +const u8 gText_ADarkMove[] = _("a DARK move"); const u8 gText_TimeBoard[] = _("TIME BOARD"); const u8 gText_ClearTime[] = _("CLEAR TIME"); // Unused const u8 gText_XMinYZSec[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC."); -const u8 gUnknown_83FE9A9[] = _("1F"); -const u8 gUnknown_83FE9AC[] = _("2F"); -const u8 gUnknown_83FE9AF[] = _("3F"); -const u8 gUnknown_83FE9B2[] = _("4F"); -const u8 gUnknown_83FE9B5[] = _("5F"); -const u8 gUnknown_83FE9B8[] = _("6F"); -const u8 gUnknown_83FE9BB[] = _("7F"); -const u8 gUnknown_83FE9BE[] = _("8F"); +const u8 gText_Unused_1F[] = _("1F"); +const u8 gText_Unused_2F[] = _("2F"); +const u8 gText_Unused_3F[] = _("3F"); +const u8 gText_Unused_4F[] = _("4F"); +const u8 gText_Unused_5F[] = _("5F"); +const u8 gText_Unused_6F[] = _("6F"); +const u8 gText_Unused_7F[] = _("7F"); +const u8 gText_Unused_8F[] = _("8F"); -const u8 *const gTrainerTowerChallengeTypeTexts[NUM_TOWER_CHALLENGE_TYPES] = { +const u8 *const gTrainerTowerChallengeTypeTexts[NUM_TOWER_CHALLENGE_TYPES] = +{ gOtherText_Single, gOtherText_Double, gOtherText_Knockout, gOtherText_Mixed }; -const u8 gUnknown_83FE9D4[] = _("{PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); // +static const u8 sText_Trainer1Fled[] = _("{PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); -static const u8 *const sATypeMove_Table[] = { - gUnknown_83FE892, - gUnknown_83FE8A0, - gUnknown_83FE8B0, - gUnknown_83FE8BE, - gUnknown_83FE8CC, - gUnknown_83FE8DA, - gUnknown_83FE8E6, - gUnknown_83FE8F1, - gUnknown_83FE8FE, - gUnknown_83FE90B, - gUnknown_83FE916, - gUnknown_83FE922, - gUnknown_83FE92F, - gUnknown_83FE93C, - gUnknown_83FE94D, - gUnknown_83FE95C, - gUnknown_83FE968, - gUnknown_83FE976 +static const u8 *const sATypeMove_Table[NUMBER_OF_MON_TYPES] = +{ + [TYPE_NORMAL] = gText_ANormalMove, + [TYPE_FIGHTING] = gText_AFightingMove, + [TYPE_FLYING] = gText_AFlyingMove, + [TYPE_POISON] = gText_APoisonMove, + [TYPE_GROUND] = gText_AGroundMove, + [TYPE_ROCK] = gText_ARockMove, + [TYPE_BUG] = gText_ABugMove, + [TYPE_GHOST] = gText_AGhostMove, + [TYPE_STEEL] = gText_ASteelMove, + [TYPE_MYSTERY] = gText_AMysteryMove, + [TYPE_FIRE] = gText_AFireMove, + [TYPE_WATER] = gText_AWaterMove, + [TYPE_GRASS] = gText_AGrassMove, + [TYPE_ELECTRIC] = gText_AnElectricMove, + [TYPE_PSYCHIC] = gText_APsychicMove, + [TYPE_ICE] = gText_AnIceMove, + [TYPE_DRAGON] = gText_ADragonMove, + [TYPE_DARK] = gText_ADarkMove }; -static const u16 sGrammarMoveUsedTable[] = { +static const u16 sGrammarMoveUsedTable[] = +{ MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_GROWTH, @@ -1460,7 +1521,6 @@ static const u16 sGrammarMoveUsedTable[] = { MOVE_NONE }; -// code void BufferStringBattle(u16 stringId) { s32 i; @@ -1499,7 +1559,7 @@ void BufferStringBattle(u16 stringId) } else { - if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) stringPtr = sText_Trainer1WantsToBattle; else stringPtr = sText_LinkTrainerWantsToBattle; @@ -1559,7 +1619,7 @@ void BufferStringBattle(u16 stringId) { if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) stringPtr = sText_Trainer1SentOutPkmn; - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) stringPtr = sText_Trainer1SentOutPkmn; else stringPtr = sText_LinkTrainerSentOutPkmn; @@ -1611,7 +1671,7 @@ void BufferStringBattle(u16 stringId) { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) stringPtr = sText_LinkTrainerMultiSentOutPkmn; - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) stringPtr = sText_Trainer1SentOutPkmn2; else stringPtr = sText_LinkTrainerSentOutPkmn2; @@ -1644,8 +1704,8 @@ void BufferStringBattle(u16 stringId) stringPtr = sText_GotAwaySafely; else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) stringPtr = sText_TwoWildFled; - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) - stringPtr = gUnknown_83FE9D4; + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) + stringPtr = sText_Trainer1Fled; else stringPtr = sText_WildFled; } @@ -1669,7 +1729,7 @@ void BufferStringBattle(u16 stringId) break; } } - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) { switch (gBattleTextBuff1[0]) { @@ -1702,7 +1762,7 @@ void BufferStringBattle(u16 stringId) } break; default: // load a string from the table - if (stringId >= BATTLESTRINGS_COUNT + BATTLESTRINGS_TABLE_START) + if (stringId >= BATTLESTRINGS_COUNT) { gDisplayedStringBattle[0] = EOS; return; @@ -1770,7 +1830,7 @@ static const u8 *TryGetStatusString(u8 *src) { \ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ } \ - StringGetEnd10(text); \ + StringGet_Nickname(text); \ toCpy = text; u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) @@ -1833,49 +1893,49 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_PLAYER_MON1_NAME: // first player poke name GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_PLAYER_MON2_NAME: // second player poke name GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 1]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 2]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 3]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // attacker name with prefix, only battlerId 0/1 @@ -1892,7 +1952,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) &gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker)) + 2]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix @@ -1983,7 +2043,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_TRAINER1_CLASS: // trainer class name if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()]; - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) toCpy = gTrainerClassNames[GetUnionRoomTrainerClass()]; else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) toCpy = gTrainerClassNames[GetBattleTowerTrainerClassNameId()]; @@ -2002,7 +2062,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) text[i] = EOS; toCpy = text; } - if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) { toCpy = gLinkPlayers[multiplayerId ^ BIT_SIDE].name; } @@ -2129,29 +2189,24 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) // missing if (toCpy != NULL) check while (*toCpy != EOS) { - dst[dstId] = *toCpy; - dstId++; + dst[dstId++] = *toCpy; toCpy++; } if (*src == B_TXT_TRAINER1_LOSE_TEXT || *src == B_TXT_TRAINER1_WIN_TEXT || *src == B_TXT_TRAINER2_LOSE_TEXT || *src == B_TXT_TRAINER2_WIN_TEXT) { - dst[dstId] = EXT_CTRL_CODE_BEGIN; - dstId++; - dst[dstId] = 9; - dstId++; + dst[dstId++] = EXT_CTRL_CODE_BEGIN; + dst[dstId++] = EXT_CTRL_CODE_WAIT_BUTTON; } } else { - dst[dstId] = *src; - dstId++; + dst[dstId++] = *src; } src++; } - dst[dstId] = *src; - dstId++; + dst[dstId++] = *src; return dstId; } @@ -2211,7 +2266,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) GetMonData(&gEnemyParty[src[srcId + 2]], MON_DATA_NICKNAME, text); } - StringGetEnd10(text); + StringGet_Nickname(text); StringAppend(dst, text); srcId += 3; break; @@ -2228,7 +2283,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) GetMonData(&gPlayerParty[src[srcId + 2]], MON_DATA_NICKNAME, dst); else GetMonData(&gEnemyParty[src[srcId + 2]], MON_DATA_NICKNAME, dst); - StringGetEnd10(dst); + StringGet_Nickname(dst); srcId += 3; break; case B_BUFF_NEGATIVE_FLAVOR: // flavor table @@ -2351,31 +2406,306 @@ static void ChooseTypeOfMoveUsedString(u8 *dst) } static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = { - {PIXEL_FILL(0xf), 2, 0x02, 2, 0, 2, 1, 0x1, 0xf, 0x6}, - {PIXEL_FILL(0xf), 2, 0x02, 2, 0, 2, 0, 0x1, 0xf, 0x6}, - {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 2, 0, 0, 0, 0xc, 0xe, 0xb}, - {PIXEL_FILL(0xe), 0, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 1, 0x0a, 2, 0, 2, 0, 0xc, 0xe, 0xb}, - {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 0, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0x0), 0, 0x20, 0, 0, 0, 0, 0x1, 0x0, 0x2}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 1, 2, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0x0), 2, 0x00, 2, 0, 0, 0, 0x1, 0x0, 0x6}, - {PIXEL_FILL(0x0), 2, 0x00, 2, 0, 0, 0, 0x1, 0x0, 0x6}, - {PIXEL_FILL(0x0), 2, 0x00, 2, 0, 0, 0, 0x1, 0x0, 0x6}, - {PIXEL_FILL(0x1), 4, 0x00, 1, 0, 1, 1, 0x2, 0x1, 0x3} + [B_WIN_MSG] = { + .fillValue = PIXEL_FILL(0xf), + .fontId = FONT_2, + .x = 2, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 1, + .fgColor = 1, + .bgColor = 15, + .shadowColor = 6, + }, + [B_WIN_ACTION_PROMPT] = { + .fillValue = PIXEL_FILL(0xf), + .fontId = FONT_2, + .x = 2, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 1, + .bgColor = 15, + .shadowColor = 6, + }, + [B_WIN_ACTION_MENU] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_1, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_MOVE_NAME_1] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_MOVE_NAME_2] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_MOVE_NAME_3] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_MOVE_NAME_4] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_PP] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 12, + .bgColor = 14, + .shadowColor = 11, + }, + [B_WIN_MOVE_TYPE] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_PP_REMAINING] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_1, + .x = 10, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 12, + .bgColor = 14, + .shadowColor = 11, + }, + [B_WIN_DUMMY] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_1, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_SWITCH_PROMPT] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_1, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_LEVEL_UP_BOX] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 0, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_LEVEL_UP_BANNER] = { + .fillValue = PIXEL_FILL(0x0), + .fontId = FONT_0, + .x = 0x20, + .y = 0, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 1, + .bgColor = 0, + .shadowColor = 2, + }, + [B_WIN_YESNO] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 1, + .lineSpacing = 2, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_PLAYER] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_OPPONENT] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_MULTI_PLAYER_1] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_MULTI_PLAYER_2] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_MULTI_PLAYER_3] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_MULTI_PLAYER_4] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_OUTCOME_DRAW] = { + .fillValue = PIXEL_FILL(0x0), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 1, + .bgColor = 0, + .shadowColor = 6, + }, + [B_WIN_VS_OUTCOME_LEFT] = { + .fillValue = PIXEL_FILL(0x0), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 1, + .bgColor = 0, + .shadowColor = 6, + }, + [B_WIN_VS_OUTCOME_RIGHT] = { + .fillValue = PIXEL_FILL(0x0), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 1, + .bgColor = 0, + .shadowColor = 6, + }, + [B_WIN_OAK_OLD_MAN] = { + .fillValue = PIXEL_FILL(0x1), + .fontId = FONT_4, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 1, + .speed = 1, + .fgColor = 2, + .bgColor = 1, + .shadowColor = 3, + } }; const u8 gUnknown_83FEC90[] = {0x04, 0x05, 0x02, 0x02}; @@ -2403,11 +2733,18 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) { } switch (windowId) { - case 15 ... 20: + case B_WIN_VS_PLAYER: + case B_WIN_VS_OPPONENT: + case B_WIN_VS_MULTI_PLAYER_1: + case B_WIN_VS_MULTI_PLAYER_2: + case B_WIN_VS_MULTI_PLAYER_3: + case B_WIN_VS_MULTI_PLAYER_4: x = (48 - GetStringWidth(sTextOnWindowsInfo_Normal[windowId].fontId, text, sTextOnWindowsInfo_Normal[windowId].letterSpacing)) / 2; break; - case 21 ... 23: + case B_WIN_VS_OUTCOME_DRAW: + case B_WIN_VS_OUTCOME_LEFT: + case B_WIN_VS_OUTCOME_RIGHT: x = (64 - GetStringWidth(sTextOnWindowsInfo_Normal[windowId].fontId, text, sTextOnWindowsInfo_Normal[windowId].letterSpacing)) / 2; break; @@ -2429,17 +2766,17 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) { printerTemplate.fgColor = sTextOnWindowsInfo_Normal[windowId].fgColor; printerTemplate.bgColor = sTextOnWindowsInfo_Normal[windowId].bgColor; printerTemplate.shadowColor = sTextOnWindowsInfo_Normal[windowId].shadowColor; - if (windowId == 24) + if (windowId == B_WIN_OAK_OLD_MAN) gTextFlags.useAlternateDownArrow = FALSE; else gTextFlags.useAlternateDownArrow = TRUE; - if ((gBattleTypeFlags & BATTLE_TYPE_LINK) || ((gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) && windowId != 24)) + if ((gBattleTypeFlags & BATTLE_TYPE_LINK) || ((gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) && windowId != B_WIN_OAK_OLD_MAN)) gTextFlags.autoScroll = TRUE; else gTextFlags.autoScroll = FALSE; - if (windowId == 0 || windowId == 24) + if (windowId == B_WIN_MSG || windowId == B_WIN_OAK_OLD_MAN) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) speed = 1; @@ -2471,7 +2808,7 @@ bool8 BattleStringShouldBeColored(u16 stringId) void SetPpNumbersPaletteInMoveSelection(void) { struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); - const u16 *palPtr = gUnknown_8D2FBB4; + const u16 *palPtr = gPPTextPalette; u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBattler]], chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBattler]]); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 92dc9ecf4..272c900bb 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6125,7 +6125,7 @@ static void Cmd_various(void) gHitMarker &= ~HITMARKER_PLAYER_FAINTED; } break; - case VARIOUS_CASE_8: + case VARIOUS_GET_BATTLERS_FOR_RECALL: i = 0; // redundant gBattleCommunication[MULTISTRING_CHOOSER] = 0; gActiveBattler = 1; diff --git a/src/battle_tower.c b/src/battle_tower.c index 5c6672f6e..134e82a11 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -717,21 +717,21 @@ static u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count) if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) { if (count == 0) - StringAppend(gStringVar1, gUnknown_83FE859); + StringAppend(gStringVar1, gText_BattleTowerBan_Space); count++; StringAppend(gStringVar1, gSpeciesNames[species]); switch (count) { case 2: - StringAppend(gStringVar1, gUnknown_83FE85E); + StringAppend(gStringVar1, gText_BattleTowerBan_Newline2); break; case 5: case 8: case 11: - StringAppend(gStringVar1, gUnknown_83FE85C); + StringAppend(gStringVar1, gText_BattleTowerBan_Newline1); break; default: - StringAppend(gStringVar1, gUnknown_83FE859); + StringAppend(gStringVar1, gText_BattleTowerBan_Space); break; } } @@ -815,9 +815,9 @@ void CheckPartyBattleTowerBanlist(void) i = StringLength(gStringVar1); gStringVar1[i - 1] = EOS; if (counter < 3) - StringAppend(gStringVar1, gUnknown_83FE860); + StringAppend(gStringVar1, gText_BattleTowerBan_Is1); else - StringAppend(gStringVar1, gUnknown_83FE864); + StringAppend(gStringVar1, gText_BattleTowerBan_Is2); } else { @@ -1119,7 +1119,7 @@ static void SetPlayerBattleTowerRecord(void) playerRecord->trainerClass = trainerClass; CopyTrainerId(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId); - StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName); + StringCopy_PlayerName(playerRecord->name, gSaveBlock2Ptr->playerName); playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); @@ -1310,7 +1310,7 @@ static void Debug_FillEReaderTrainerWithPlayerData(void) } CopyTrainerId(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId); - StringCopy7(ereaderTrainer->name, gSaveBlock2Ptr->playerName); + StringCopy_PlayerName(ereaderTrainer->name, gSaveBlock2Ptr->playerName); ereaderTrainer->winStreak = 1; diff --git a/src/field_poison.c b/src/field_poison.c index 1e2a30c0c..9c8b1f4b9 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -36,7 +36,7 @@ static void FaintFromFieldPoison(u8 partyIdx) AdjustFriendship(pokemon, FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE); SetMonData(pokemon, MON_DATA_STATUS, &status); GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1); - StringGetEnd10(gStringVar1); + StringGet_Nickname(gStringVar1); } static bool32 MonFaintedFromPoison(u8 partyIdx) diff --git a/src/field_specials.c b/src/field_specials.c index d306236cb..92c47c2eb 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1663,7 +1663,7 @@ static void ChangePokemonNickname_CB(void) void BufferMonNickname(void) { GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); - StringGetEnd10(gStringVar1); + StringGet_Nickname(gStringVar1); } void IsMonOTIDNotPlayers(void) diff --git a/src/graphics.c b/src/graphics.c index b7694f158..ce702daf4 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -950,7 +950,7 @@ const u32 gBattleAnimSpritePal_Meteor[] = INCBIN_U32("graphics/battle_anims/spri const u32 gBattleAnimSpriteGfx_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.4bpp.lz"); const u32 gBattleAnimSpritePal_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.gbapal.lz"); -const u16 gUnknown_8D2FBB4[] = INCBIN_U16("graphics/interface/unk_8D2FBB4.gbapal"); +const u16 gPPTextPalette[] = INCBIN_U16("graphics/interface/text_pp.gbapal"); #include "data/graphics/pokemon.h" #include "data/graphics/trainers.h" diff --git a/src/party_menu.c b/src/party_menu.c index ee2800801..faeca7ef9 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -895,7 +895,7 @@ static void DisplayPartyPokemonDataForMultiBattle(u8 slot) { menuBox->infoRects->blitFunc(menuBox->windowId, 0, 0, 0, 0, FALSE); StringCopy(gStringVar1, gMultiPartnerParty[actualSlot].nickname); - StringGetEnd10(gStringVar1); + StringGet_Nickname(gStringVar1); if (StringLength(gStringVar1) <= 5) ConvertInternationalString(gStringVar1, 1); DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, menuBox->infoRects->dimensions); @@ -1530,7 +1530,7 @@ static s8 GetNewSlotDoubleLayout(s8 slotId, s8 movementDir) u8 *GetMonNickname(struct Pokemon *mon, u8 *dest) { GetMonData(mon, MON_DATA_NICKNAME, dest); - return StringGetEnd10(dest); + return StringGet_Nickname(dest); } #define tKeepOpen data[0] diff --git a/src/pokemon.c b/src/pokemon.c index e2bfb20cf..8955cfe4c 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6082,7 +6082,7 @@ bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 battlerId) if (gBattleTypeFlags & BATTLE_TYPE_GHOST && GetBattlerSide(battlerId) != B_SIDE_PLAYER) { GetMonData(mon, MON_DATA_NICKNAME, buffer); - StringGetEnd10(buffer); + StringGet_Nickname(buffer); if (!StringCompare(buffer, gText_Ghost)) return TRUE; } diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c index f01a1551b..8074b57c4 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_5.c @@ -1026,7 +1026,7 @@ static void SetCursorMonData(void *pokemon, u8 mode) gPSSData->displayMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG); GetMonData(mon, MON_DATA_NICKNAME, gPSSData->displayMonName); - StringGetEnd10(gPSSData->displayMonName); + StringGet_Nickname(gPSSData->displayMonName); gPSSData->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL); gPSSData->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS); gPSSData->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY); @@ -1051,7 +1051,7 @@ static void SetCursorMonData(void *pokemon, u8 mode) GetBoxMonData(boxMon, MON_DATA_NICKNAME, gPSSData->displayMonName); - StringGetEnd10(gPSSData->displayMonName); + StringGet_Nickname(gPSSData->displayMonName); gPSSData->displayMonLevel = GetLevelFromBoxMonExp(boxMon); gPSSData->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS); gPSSData->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index fa3731083..bfe9fd267 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -2110,7 +2110,7 @@ static void BufferMonInfo(void) GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_NICKNAME, tempStr); StringCopyN_Multibyte(sMonSummaryScreen->summary.nicknameStrBuf, tempStr, POKEMON_NAME_LENGTH); - StringGetEnd10(sMonSummaryScreen->summary.nicknameStrBuf); + StringGet_Nickname(sMonSummaryScreen->summary.nicknameStrBuf); gender = GetMonGender(&sMonSummaryScreen->currentMon); dexNum = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPECIES2); diff --git a/src/quest_log_events.c b/src/quest_log_events.c index e805b5f2e..6dc645b93 100644 --- a/src/quest_log_events.c +++ b/src/quest_log_events.c @@ -1149,9 +1149,9 @@ static const u16 *BufferQuestLogText_LinkBattledMulti(const u16 *a0) memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1); memset(gStringVar2, EOS, PLAYER_NAME_LENGTH + 1); memset(gStringVar3, EOS, PLAYER_NAME_LENGTH + 1); - StringCopy7(gStringVar1, (const u8 *)a0 + 5); - StringCopy7(gStringVar2, (const u8 *)a0 + 12); - StringCopy7(gStringVar3, (const u8 *)a0 + 19); + StringCopy_PlayerName(gStringVar1, (const u8 *)a0 + 5); + StringCopy_PlayerName(gStringVar2, (const u8 *)a0 + 12); + StringCopy_PlayerName(gStringVar3, (const u8 *)a0 + 19); BufferLinkPartnersName(gStringVar1); BufferLinkPartnersName(gStringVar2); BufferLinkPartnersName(gStringVar3); diff --git a/src/scrcmd.c b/src/scrcmd.c index 823593623..3640aba6a 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1616,7 +1616,7 @@ bool8 ScrCmd_bufferpartymonnick(struct ScriptContext * ctx) u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); - StringGetEnd10(sScriptStringVars[stringVarIndex]); + StringGet_Nickname(sScriptStringVars[stringVarIndex]); return FALSE; } diff --git a/src/string_util.c b/src/string_util.c index ffb51b354..4744e231c 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -54,10 +54,10 @@ u8 *StringCopy_Nickname(u8 *dest, const u8 *src) return &dest[i]; } -u8 *StringGetEnd10(u8 *str) +u8 *StringGet_Nickname(u8 *str) { u8 i; - u32 limit = 10; + u32 limit = POKEMON_NAME_LENGTH; for (i = 0; i < limit; i++) if (str[i] == EOS) @@ -67,10 +67,10 @@ u8 *StringGetEnd10(u8 *str) return &str[i]; } -u8 *StringCopy7(u8 *dest, const u8 *src) +u8 *StringCopy_PlayerName(u8 *dest, const u8 *src) { s32 i; - s32 limit = 7; + s32 limit = PLAYER_NAME_LENGTH; for (i = 0; i < limit; i++) { diff --git a/src/union_room.c b/src/union_room.c index cadc00181..70973e4aa 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -645,7 +645,7 @@ static const u8 sUnref_84570D1[] = _("{DYNAMIC 00}·{DYNAMIC 01}"); // These are functions in Emerald but inlined in FireRed #define IntlConvPartnerUname7(dest, arg1) ({ \ - StringCopy7(dest, (arg1).gname_uname.uname); \ + StringCopy_PlayerName(dest, (arg1).gname_uname.uname); \ ConvertInternationalString(dest, (arg1).gname_uname.gname.unk_00.language); \ }) diff --git a/src/union_room_battle.c b/src/union_room_battle.c index 56676ab7b..907c9ef8d 100644 --- a/src/union_room_battle.c +++ b/src/union_room_battle.c @@ -58,7 +58,7 @@ static void SetUpPartiesAndStartBattle(void) } IncrementGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES); CalculatePlayerPartyCount(); - gTrainerBattleOpponent_A = TRAINER_OPPONENT_C00; + gTrainerBattleOpponent_A = TRAINER_UNION_ROOM; SetMainCallback2(CB2_InitBattle); } From 1040b2a66a73f0a9eb424b2269ae355cfb3a377b Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 12 Aug 2022 15:42:26 -0400 Subject: [PATCH 02/38] Restore NUM_LOAF_STRINGS --- include/battle_string_ids.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h index 2a056e516..d05863c3c 100644 --- a/include/battle_string_ids.h +++ b/include/battle_string_ids.h @@ -545,6 +545,7 @@ #define B_MSG_WONT_OBEY 1 #define B_MSG_TURNED_AWAY 2 #define B_MSG_PRETEND_NOT_NOTICE 3 +#define NUM_LOAF_STRINGS 4 // For randomly selecting a disobey string // gSafariGetNearStringIds #define B_MSG_CREPT_CLOSER 0 From 702d43e74254f25b84f4e40963fce70911db0af2 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 14 Aug 2022 17:52:12 -0400 Subject: [PATCH 03/38] Rename battle anim files --- ...mokescreen.s => battle_anim_smokescreen.s} | 0 ld_script.txt | 60 +++++++++---------- src/{bug.c => battle_anim_bug.c} | 0 src/{dark.c => battle_anim_dark.c} | 0 src/{dragon.c => battle_anim_dragon.c} | 0 src/{electric.c => battle_anim_electric.c} | 0 src/{fighting.c => battle_anim_fight.c} | 0 src/{fire.c => battle_anim_fire.c} | 0 src/{ghost.c => battle_anim_ghost.c} | 0 src/{ground.c => battle_anim_ground.c} | 0 src/{ice.c => battle_anim_ice.c} | 0 src/{normal.c => battle_anim_normal.c} | 0 src/{poison.c => battle_anim_poison.c} | 0 src/{psychic.c => battle_anim_psychic.c} | 0 src/{rock.c => battle_anim_rock.c} | 0 ...mokescreen.c => battle_anim_smokescreen.c} | 0 src/{water.c => battle_anim_water.c} | 0 sym_ewram.txt | 2 +- 18 files changed, 31 insertions(+), 31 deletions(-) rename data/{smokescreen.s => battle_anim_smokescreen.s} (100%) rename src/{bug.c => battle_anim_bug.c} (100%) rename src/{dark.c => battle_anim_dark.c} (100%) rename src/{dragon.c => battle_anim_dragon.c} (100%) rename src/{electric.c => battle_anim_electric.c} (100%) rename src/{fighting.c => battle_anim_fight.c} (100%) rename src/{fire.c => battle_anim_fire.c} (100%) rename src/{ghost.c => battle_anim_ghost.c} (100%) rename src/{ground.c => battle_anim_ground.c} (100%) rename src/{ice.c => battle_anim_ice.c} (100%) rename src/{normal.c => battle_anim_normal.c} (100%) rename src/{poison.c => battle_anim_poison.c} (100%) rename src/{psychic.c => battle_anim_psychic.c} (100%) rename src/{rock.c => battle_anim_rock.c} (100%) rename src/{smokescreen.c => battle_anim_smokescreen.c} (100%) rename src/{water.c => battle_anim_water.c} (100%) diff --git a/data/smokescreen.s b/data/battle_anim_smokescreen.s similarity index 100% rename from data/smokescreen.s rename to data/battle_anim_smokescreen.s diff --git a/ld_script.txt b/ld_script.txt index 09e230ed6..7006d3094 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -81,7 +81,7 @@ SECTIONS { src/blend_palette.o(.text); src/daycare.o(.text); src/battle_interface.o(.text); - src/smokescreen.o(.text); + src/battle_anim_smokescreen.o(.text); src/pokeball.o(.text); src/load_save.o(.text); src/trade.o(.text); @@ -162,21 +162,21 @@ SECTIONS { src/item_use.o(.text); src/battle_anim_effects_1.o(.text); src/battle_anim_effects_2.o(.text); - src/water.o(.text); - src/fire.o(.text); - src/electric.o(.text); - src/ice.o(.text); - src/fighting.o(.text); - src/poison.o(.text); + src/battle_anim_water.o(.text); + src/battle_anim_fire.o(.text); + src/battle_anim_electric.o(.text); + src/battle_anim_ice.o(.text); + src/battle_anim_fight.o(.text); + src/battle_anim_poison.o(.text); src/flying.o(.text); - src/psychic.o(.text); - src/bug.o(.text); - src/rock.o(.text); - src/ghost.o(.text); - src/dragon.o(.text); - src/dark.o(.text); - src/ground.o(.text); - src/normal.o(.text); + src/battle_anim_psychic.o(.text); + src/battle_anim_bug.o(.text); + src/battle_anim_rock.o(.text); + src/battle_anim_ghost.o(.text); + src/battle_anim_dragon.o(.text); + src/battle_anim_dark.o(.text); + src/battle_anim_ground.o(.text); + src/battle_anim_normal.o(.text); src/battle_anim_utility_funcs.o(.text); src/battle_intro.o(.text); src/bike.o(.text); @@ -409,7 +409,7 @@ SECTIONS { src/battle_util.o(.rodata); src/battle_script_commands.o(.rodata); src/battle_controller_player.o(.rodata); - data/smokescreen.o(.rodata); + data/battle_anim_smokescreen.o(.rodata); src/battle_controller_opponent.o(.rodata); src/battle_controller_link_opponent.o(.rodata); src/pokemon.o(.rodata); @@ -474,21 +474,21 @@ SECTIONS { src/item_use.o(.rodata); src/battle_anim_effects_1.o(.rodata); src/battle_anim_effects_2.o(.rodata); - src/water.o(.rodata); - src/fire.o(.rodata); - src/electric.o(.rodata); - src/ice.o(.rodata); - src/fighting.o(.rodata); - src/poison.o(.rodata); + src/battle_anim_water.o(.rodata); + src/battle_anim_fire.o(.rodata); + src/battle_anim_electric.o(.rodata); + src/battle_anim_ice.o(.rodata); + src/battle_anim_fight.o(.rodata); + src/battle_anim_poison.o(.rodata); src/flying.o(.rodata); - src/psychic.o(.rodata); - src/bug.o(.rodata); - src/rock.o(.rodata); - src/ghost.o(.rodata); - src/dragon.o(.rodata); - src/dark.o(.rodata); - src/ground.o(.rodata); - src/normal.o(.rodata); + src/battle_anim_psychic.o(.rodata); + src/battle_anim_bug.o(.rodata); + src/battle_anim_rock.o(.rodata); + src/battle_anim_ghost.o(.rodata); + src/battle_anim_dragon.o(.rodata); + src/battle_anim_dark.o(.rodata); + src/battle_anim_ground.o(.rodata); + src/battle_anim_normal.o(.rodata); src/battle_anim_utility_funcs.o(.rodata); src/battle_intro.o(.rodata); src/bike.o(.rodata); diff --git a/src/bug.c b/src/battle_anim_bug.c similarity index 100% rename from src/bug.c rename to src/battle_anim_bug.c diff --git a/src/dark.c b/src/battle_anim_dark.c similarity index 100% rename from src/dark.c rename to src/battle_anim_dark.c diff --git a/src/dragon.c b/src/battle_anim_dragon.c similarity index 100% rename from src/dragon.c rename to src/battle_anim_dragon.c diff --git a/src/electric.c b/src/battle_anim_electric.c similarity index 100% rename from src/electric.c rename to src/battle_anim_electric.c diff --git a/src/fighting.c b/src/battle_anim_fight.c similarity index 100% rename from src/fighting.c rename to src/battle_anim_fight.c diff --git a/src/fire.c b/src/battle_anim_fire.c similarity index 100% rename from src/fire.c rename to src/battle_anim_fire.c diff --git a/src/ghost.c b/src/battle_anim_ghost.c similarity index 100% rename from src/ghost.c rename to src/battle_anim_ghost.c diff --git a/src/ground.c b/src/battle_anim_ground.c similarity index 100% rename from src/ground.c rename to src/battle_anim_ground.c diff --git a/src/ice.c b/src/battle_anim_ice.c similarity index 100% rename from src/ice.c rename to src/battle_anim_ice.c diff --git a/src/normal.c b/src/battle_anim_normal.c similarity index 100% rename from src/normal.c rename to src/battle_anim_normal.c diff --git a/src/poison.c b/src/battle_anim_poison.c similarity index 100% rename from src/poison.c rename to src/battle_anim_poison.c diff --git a/src/psychic.c b/src/battle_anim_psychic.c similarity index 100% rename from src/psychic.c rename to src/battle_anim_psychic.c diff --git a/src/rock.c b/src/battle_anim_rock.c similarity index 100% rename from src/rock.c rename to src/battle_anim_rock.c diff --git a/src/smokescreen.c b/src/battle_anim_smokescreen.c similarity index 100% rename from src/smokescreen.c rename to src/battle_anim_smokescreen.c diff --git a/src/water.c b/src/battle_anim_water.c similarity index 100% rename from src/water.c rename to src/battle_anim_water.c diff --git a/sym_ewram.txt b/sym_ewram.txt index 719497748..a3766873e 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -55,7 +55,7 @@ .include "src/safari_zone.o" .include "src/item_use.o" .include "src/battle_anim_effects_1.o" - .include "src/dragon.o" + .include "src/battle_anim_dragon.o" .include "src/battle_anim_utility_funcs.o" .include "src/battle_intro.o" .include "src/easy_chat.o" From e4aec1b6d19c241130061b4ead1296b71aeef447 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 14 Aug 2022 18:21:03 -0400 Subject: [PATCH 04/38] Sync battle anim - bug --- src/battle_anim_bug.c | 68 +++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c index 32d2f3b3f..74e7ae5d5 100644 --- a/src/battle_anim_bug.c +++ b/src/battle_anim_bug.c @@ -6,16 +6,16 @@ static void AnimMegahornHorn(struct Sprite *sprite); static void AnimLeechLifeNeedle(struct Sprite *sprite); static void AnimTranslateWebThread(struct Sprite *sprite); +static void AnimTranslateWebThread_Step(struct Sprite *sprite); static void AnimStringWrap(struct Sprite *sprite); +static void AnimStringWrap_Step(struct Sprite *sprite); static void AnimSpiderWeb(struct Sprite *sprite); +static void AnimSpiderWeb_Step(struct Sprite *sprite); +static void AnimSpiderWeb_End(struct Sprite *sprite); static void AnimTranslateStinger(struct Sprite *sprite); static void AnimMissileArc(struct Sprite *sprite); +static void AnimMissileArc_Step(struct Sprite *sprite); static void AnimTailGlowOrb(struct Sprite *sprite); -static void sub_80B41C0(struct Sprite *sprite); -static void sub_80B4274(struct Sprite *sprite); -static void sub_80B42E8(struct Sprite *sprite); -static void sub_80B4344(struct Sprite *sprite); -static void AnimMissileArcStep(struct Sprite *sprite); static const union AffineAnimCmd sAffineAnim_MegahornHorn_0[] = { @@ -210,11 +210,11 @@ static void AnimMegahornHorn(struct Sprite *sprite) gBattleAnimArgs[3] = -gBattleAnimArgs[3]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } - sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -231,11 +231,11 @@ static void AnimLeechLifeNeedle(struct Sprite *sprite) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; gBattleAnimArgs[0] = -gBattleAnimArgs[0]; } - sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, 2) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, 3) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; sprite->data[0] = gBattleAnimArgs[2]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -257,8 +257,8 @@ static void AnimTranslateWebThread(struct Sprite *sprite) sprite->data[3] = sprite->y; if (!gBattleAnimArgs[4]) { - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); } else { @@ -266,10 +266,10 @@ static void AnimTranslateWebThread(struct Sprite *sprite) } BattleAnim_InitLinearTranslationWithDuration(sprite); sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = sub_80B41C0; + sprite->callback = AnimTranslateWebThread_Step; } -static void sub_80B41C0(struct Sprite *sprite) +static void AnimTranslateWebThread_Step(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) { @@ -290,10 +290,10 @@ static void AnimStringWrap(struct Sprite *sprite) sprite->y += gBattleAnimArgs[1]; if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) sprite->y += 8; - sprite->callback = sub_80B4274; + sprite->callback = AnimStringWrap_Step; } -static void sub_80B4274(struct Sprite *sprite) +static void AnimStringWrap_Step(struct Sprite *sprite) { if (++sprite->data[0] == 3) { @@ -311,10 +311,10 @@ static void AnimSpiderWeb(struct Sprite *sprite) SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); sprite->data[0] = 16; - sprite->callback = sub_80B42E8; + sprite->callback = AnimSpiderWeb_Step; } -static void sub_80B42E8(struct Sprite *sprite) +static void AnimSpiderWeb_Step(struct Sprite *sprite) { if (sprite->data[2] < 20) { @@ -328,12 +328,12 @@ static void sub_80B42E8(struct Sprite *sprite) if (sprite->data[0] == 0) { sprite->invisible = TRUE; - sprite->callback = sub_80B4344; + sprite->callback = AnimSpiderWeb_End; } } } -static void sub_80B4344(struct Sprite *sprite) +static void AnimSpiderWeb_End(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -377,8 +377,8 @@ static void AnimTranslateStinger(struct Sprite *sprite) } } InitSpritePosToAnimAttacker(sprite, 1); - lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + lVarX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + lVarY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; rot = ArcTan2Neg(lVarX - sprite->x, lVarY - sprite->y); rot += 0xC000; TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rot); @@ -402,15 +402,15 @@ static void AnimMissileArc(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[5]; InitAnimArcTranslation(sprite); - sprite->callback = AnimMissileArcStep; + sprite->callback = AnimMissileArc_Step; sprite->invisible = TRUE; } -static void AnimMissileArcStep(struct Sprite *sprite) +static void AnimMissileArc_Step(struct Sprite *sprite) { sprite->invisible = FALSE; @@ -447,15 +447,15 @@ static void AnimMissileArcStep(struct Sprite *sprite) static void AnimTailGlowOrb(struct Sprite *sprite) { - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + 18; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + 18; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + 18; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 18; } StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; From 92a193aa7151a795ab16a85ac9f0b8d0be3bf930 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 14 Aug 2022 18:30:55 -0400 Subject: [PATCH 05/38] Sync battle anim - dark --- data/battle_anim_scripts.s | 2 +- include/battle_anim.h | 2 +- include/sprite.h | 1 + src/battle_anim_dark.c | 111 +++++++++++++++++++------------------ 4 files changed, 60 insertions(+), 56 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 936e58a35..85d7201f1 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -3600,7 +3600,7 @@ Move_MEMENTO:: delay 48 playsewithpan SE_M_PSYBEAM2, 192 waitforvisualfinish - createvisualtask sub_80B8664, 2, + createvisualtask AnimTask_MementoHandleBg, 2, delay 12 setalpha 0, 16 delay 1 diff --git a/include/battle_anim.h b/include/battle_anim.h index fc40e1373..80963c10d 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -530,7 +530,7 @@ void AnimTask_InitAttackerFadeFromInvisible(u8 taskId); void AnimTask_MoveAttackerMementoShadow(u8 taskId); void AnimTask_MoveTargetMementoShadow(u8 taskId); void AnimTask_InitMementoShadow(u8 taskId); -void sub_80B8664(u8 taskId); +void AnimTask_MementoHandleBg(u8 taskId); void AnimTask_MetallicShine(u8 taskId); void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId); void GetIsDoomDesireHitTurn(u8 taskId); diff --git a/include/sprite.h b/include/sprite.h index 9fa6280dc..eed582775 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -4,6 +4,7 @@ #include "global.h" #define MAX_SPRITES 64 +#define SPRITE_NONE 0xFF #define TAG_NONE 0xFFFF struct SpriteSheet diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c index 9b12555d9..1923a9dea 100644 --- a/src/battle_anim_dark.c +++ b/src/battle_anim_dark.c @@ -6,23 +6,24 @@ #include "trig.h" #include "util.h" -static void sub_80B7ACC(struct Sprite *sprite); +static void AnimUnusedBagSteal(struct Sprite *sprite); +static void AnimUnusedBagSteal_Step(struct Sprite *sprite); static void AnimBite(struct Sprite *sprite); static void AnimTearDrop(struct Sprite *sprite); static void AnimClawSlash(struct Sprite *sprite); static void AnimTask_AttackerFadeToInvisible_Step(u8 taskId); static void AnimTask_AttackerFadeFromInvisible_Step(u8 taskId); -static void sub_80B7B48(struct Sprite *sprite); -static void sub_80B7C10(struct Sprite *sprite); -static void sub_80B7C50(struct Sprite *sprite); -static void sub_80B7D88(struct Sprite *sprite); -static void sub_80B856C(u8 priority); -static void sub_80B7F58(u8 taskId); -static void sub_80B843C(struct Task *task); -static void sub_80B82C0(u8 taskId); -static void sub_80B8920(u8 taskId); +static void AnimBite_Step1(struct Sprite *sprite); +static void AnimBite_Step2(struct Sprite *sprite); +static void AnimTearDrop_Step(struct Sprite *sprite); +static void SetAllBattlersSpritePriority(u8 priority); +static void AnimTask_MoveAttackerMementoShadow_Step(u8 taskId); +static void DoMementoShadowEffect(struct Task *task); +static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId); +static void AnimTask_MetallicShine_Step(u8 taskId); -const struct SpriteTemplate gUnknown_83E7878 = +// Unused +const struct SpriteTemplate sUnusedBagStealSpriteTemplate = { .tileTag = ANIM_TAG_TIED_BAG, .paletteTag = ANIM_TAG_TIED_BAG, @@ -30,7 +31,7 @@ const struct SpriteTemplate gUnknown_83E7878 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B7ACC, + .callback = AnimUnusedBagSteal, }; static const union AffineAnimCmd sAffineAnim_Bite_0[] = @@ -265,7 +266,7 @@ void AnimTask_InitAttackerFadeFromInvisible(u8 taskId) DestroyAnimVisualTask(taskId); } -static void sub_80B7ACC(struct Sprite *sprite) +static void AnimUnusedBagSteal(struct Sprite *sprite) { sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); @@ -276,11 +277,11 @@ static void sub_80B7ACC(struct Sprite *sprite) sprite->data[3] = -sprite->data[1]; sprite->data[4] = -sprite->data[2]; sprite->data[6] = 0xFFD8; - sprite->callback = sub_80B7B48; + sprite->callback = AnimUnusedBagSteal_Step; sprite->callback(sprite); } -static void sub_80B7B48(struct Sprite *sprite) +static void AnimUnusedBagSteal_Step(struct Sprite *sprite) { sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; @@ -306,6 +307,7 @@ static void sub_80B7B48(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Move sprite inward for Bite/Crunch and Clamp static void AnimBite(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; @@ -314,20 +316,20 @@ static void AnimBite(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[3]; sprite->data[1] = gBattleAnimArgs[4]; sprite->data[2] = gBattleAnimArgs[5]; - sprite->callback = sub_80B7C10; + sprite->callback = AnimBite_Step1; } -static void sub_80B7C10(struct Sprite *sprite) +static void AnimBite_Step1(struct Sprite *sprite) { sprite->data[4] += sprite->data[0]; sprite->data[5] += sprite->data[1]; sprite->x2 = sprite->data[4] >> 8; sprite->y2 = sprite->data[5] >> 8; if (++sprite->data[3] == sprite->data[2]) - sprite->callback = sub_80B7C50; + sprite->callback = AnimBite_Step2; } -static void sub_80B7C50(struct Sprite *sprite) +static void AnimBite_Step2(struct Sprite *sprite) { sprite->data[4] -= sprite->data[0]; sprite->data[5] -= sprite->data[1]; @@ -337,12 +339,13 @@ static void sub_80B7C50(struct Sprite *sprite) DestroySpriteAndMatrix(sprite); } +// Launches a tear drop away from the battler. Used by Fake Tears static void AnimTearDrop(struct Sprite *sprite) { u8 battler; s8 xOffset; - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; @@ -376,10 +379,10 @@ static void AnimTearDrop(struct Sprite *sprite) sprite->data[4] = sprite->y + 12; sprite->data[5] = -12; InitAnimArcTranslation(sprite); - sprite->callback = sub_80B7D88; + sprite->callback = AnimTearDrop_Step; } -static void sub_80B7D88(struct Sprite *sprite) +static void AnimTearDrop_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroySpriteAndMatrix(sprite); @@ -416,7 +419,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) scanlineParams.dmaDest = ®_BG1VOFS; var0 = WINOUT_WIN01_BG1; if (!IsContest()) - gBattle_BG2_X += 240; + gBattle_BG2_X += DISPLAY_WIDTH; } else { @@ -426,7 +429,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) scanlineParams.dmaDest = ®_BG2VOFS; var0 = WINOUT_WIN01_BG2; if (!IsContest()) - gBattle_BG1_X += 240; + gBattle_BG1_X += DISPLAY_WIDTH; } scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; scanlineParams.initState = 1; @@ -436,7 +439,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) task->data[0] = 0; task->data[1] = 0; task->data[2] = 0; - sub_80B856C(3); + SetAllBattlersSpritePriority(3); for (i = 0; i < 112; ++i) { gScanlineEffectRegBuffers[0][i] = task->data[10]; @@ -446,12 +449,12 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | (var0 ^ (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR))); SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; - gBattle_WIN0V = 160; + gBattle_WIN0V = DISPLAY_HEIGHT; - task->func = sub_80B7F58; + task->func = AnimTask_MoveAttackerMementoShadow_Step; } -static void sub_80B7F58(u8 taskId) +static void AnimTask_MoveAttackerMementoShadow_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -477,13 +480,13 @@ static void sub_80B7F58(u8 taskId) break; case 1: task->data[4] -= 8; - sub_80B843C(task); + DoMementoShadowEffect(task); if (task->data[4] < task->data[8]) ++task->data[0]; break; case 2: task->data[4] -= 8; - sub_80B843C(task); + DoMementoShadowEffect(task); task->data[14] += 4; task->data[15] -= 4; if (task->data[14] >= task->data[15]) @@ -527,12 +530,12 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) if (task->data[3] == 1) { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG1); - gBattle_BG2_X += 240; + gBattle_BG2_X += DISPLAY_WIDTH; } else { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND | BLDCNT_TGT1_BG2); - gBattle_BG1_X += 240; + gBattle_BG1_X += DISPLAY_WIDTH; } ++task->data[0]; } @@ -549,7 +552,7 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) task->data[10] = gBattle_BG2_Y; FillPalette(RGB_BLACK, 9 * 16, 32); } - sub_80B856C(3); + SetAllBattlersSpritePriority(3); ++task->data[0]; break; case 2: @@ -592,17 +595,17 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR); gBattle_WIN0H = (task->data[14] << 8) | task->data[15]; - gBattle_WIN0V = 160; + gBattle_WIN0V = DISPLAY_HEIGHT; task->data[0] = 0; task->data[1] = 0; task->data[2] = 0; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 8)); - task->func = sub_80B82C0; + task->func = AnimTask_MoveTargetMementoShadow_Step; break; } } -static void sub_80B82C0(u8 taskId) +static void AnimTask_MoveTargetMementoShadow_Step(u8 taskId) { u8 pos; u16 i; @@ -614,7 +617,7 @@ static void sub_80B82C0(u8 taskId) task->data[5] += 8; if (task->data[5] >= task->data[7]) task->data[5] = task->data[7]; - sub_80B843C(task); + DoMementoShadowEffect(task); if (task->data[5] == task->data[7]) ++task->data[0]; break; @@ -632,7 +635,7 @@ static void sub_80B82C0(u8 taskId) task->data[4] += 8; if (task->data[4] >= task->data[6]) task->data[4] = task->data[6]; - sub_80B843C(task); + DoMementoShadowEffect(task); if (task->data[4] == task->data[6] && task->data[1]) { task->data[1] = 0; @@ -672,7 +675,7 @@ static void sub_80B82C0(u8 taskId) } } -static void sub_80B843C(struct Task *task) +static void DoMementoShadowEffect(struct Task *task) { s32 var0, var1, var4; s16 var2, i; @@ -711,15 +714,14 @@ static void sub_80B843C(struct Task *task) } } -static void sub_80B856C(u8 priority) +static void SetAllBattlersSpritePriority(u8 priority) { u16 i; for (i = 0; i < MAX_BATTLERS_COUNT; ++i) { u8 spriteId = GetAnimBattlerSpriteId(i); - - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) gSprites[spriteId].oam.priority = priority; } } @@ -738,7 +740,7 @@ void AnimTask_InitMementoShadow(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_80B8664(u8 taskId) +void AnimTask_MementoHandleBg(u8 taskId) { bool8 toBG2 = GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) ^ 1 ? TRUE : FALSE; @@ -748,6 +750,7 @@ void sub_80B8664(u8 taskId) DestroyAnimVisualTask(taskId); } +// Animates a deep slash from a claw. Used by Metal Claw, Dragon Claw, and Crush Claw static void AnimClawSlash(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; @@ -816,10 +819,10 @@ void AnimTask_MetallicShine(u8 taskId) gTasks[taskId].data[2] = gBattleAnimArgs[1]; gTasks[taskId].data[3] = gBattleAnimArgs[2]; gTasks[taskId].data[6] = priorityChanged; - gTasks[taskId].func = sub_80B8920; + gTasks[taskId].func = AnimTask_MetallicShine_Step; } -static void sub_80B8920(u8 taskId) +static void AnimTask_MetallicShine_Step(u8 taskId) { struct BattleAnimBgData animBg; u16 paletteNum; @@ -871,10 +874,10 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) switch (gBattleAnimArgs[0]) { - case 0: - case 1: - case 2: - case 3: + case ANIM_ATTACKER: + case ANIM_TARGET: + case ANIM_ATK_PARTNER: + case ANIM_DEF_PARTNER: spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); break; case 4: @@ -894,7 +897,7 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) calcSpriteId = TRUE; break; default: - spriteId = 0xFF; + spriteId = SPRITE_NONE; break; } if (calcSpriteId) @@ -903,9 +906,9 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) if (IsBattlerSpriteVisible(battler)) spriteId = gBattlerSpriteIds[battler]; else - spriteId = 0xFF; + spriteId = SPRITE_NONE; } - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]); DestroyAnimVisualTask(taskId); } @@ -913,8 +916,8 @@ void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) void GetIsDoomDesireHitTurn(u8 taskId) { if (gAnimMoveTurn < 2) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; if (gAnimMoveTurn == 2) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; DestroyAnimVisualTask(taskId); } From 102dc65fd14bc29c3a5431f5c2c3d34fe43db657 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 14 Aug 2022 18:36:29 -0400 Subject: [PATCH 06/38] Sync battle anim - dragon --- src/battle_anim_dragon.c | 97 +++++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 47 deletions(-) diff --git a/src/battle_anim_dragon.c b/src/battle_anim_dragon.c index cef5d219d..6cdcdb4e1 100644 --- a/src/battle_anim_dragon.c +++ b/src/battle_anim_dragon.c @@ -4,19 +4,19 @@ #include "task.h" #include "trig.h" -static void sub_80B725C(struct Sprite *sprite); +static void AnimOutrageFlame(struct Sprite *sprite); static void AnimDragonFireToTarget(struct Sprite *sprite); static void AnimDragonRageFirePlume(struct Sprite *sprite); static void AnimDragonDanceOrb(struct Sprite *sprite); static void AnimOverheatFlame(struct Sprite *sprite); -static void sub_80B74D8(struct Sprite *sprite); -static void sub_80B76B0(u8 taskId); -static void sub_80B776C(struct Task *task); -static void sub_80B7894(struct Sprite *sprite); +static void AnimDragonDanceOrb_Step(struct Sprite *sprite); +static void AnimTask_DragonDanceWaver_Step(u8 taskId); +static void UpdateDragonDanceScanlineEffect(struct Task *task); +static void AnimOverheatFlame_Step(struct Sprite *sprite); -static EWRAM_DATA u16 gUnknown_20399A4[7] = {0}; +static EWRAM_DATA u16 sUnusedOverheatData[7] = {0}; -static const union AnimCmd gUnknown_83E7710[] = +static const union AnimCmd sAnim_OutrageOverheatFire_0[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(16, 4), @@ -26,9 +26,9 @@ static const union AnimCmd gUnknown_83E7710[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E7728[] = +static const union AnimCmd *const sAnims_OutrageOverheatFire[] = { - gUnknown_83E7710, + sAnim_OutrageOverheatFire_0, }; const struct SpriteTemplate gOutrageFlameSpriteTemplate = @@ -36,10 +36,10 @@ const struct SpriteTemplate gOutrageFlameSpriteTemplate = .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E7728, + .anims = sAnims_OutrageOverheatFire, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B725C, + .callback = AnimOutrageFlame, }; static const union AnimCmd sAnim_DragonBreathFire_0[] = @@ -180,16 +180,16 @@ const struct SpriteTemplate gOverheatFlameSpriteTemplate = .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E7728, + .anims = sAnims_OutrageOverheatFire, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimOverheatFlame, }; -static void sub_80B725C(struct Sprite *sprite) +static void AnimOutrageFlame(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { sprite->x -= gBattleAnimArgs[0]; @@ -210,11 +210,11 @@ static void sub_80B725C(struct Sprite *sprite) sprite->callback = TranslateSpriteLinearAndFlicker; } -static void sub_80B72F8(struct Sprite *sprite) +static void StartDragonFireTranslation(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { sprite->x -= gBattleAnimArgs[1]; @@ -239,13 +239,13 @@ static void AnimDragonRageFirePlume(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); } SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[1]); sprite->y += gBattleAnimArgs[2]; @@ -253,11 +253,12 @@ static void AnimDragonRageFirePlume(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); } +// For Dragon Breath and Dragon Rage static void AnimDragonFireToTarget(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) StartSpriteAffineAnim(sprite, 1); - sub_80B72F8(sprite); + StartDragonFireTranslation(sprite); } static void AnimDragonDanceOrb(struct Sprite *sprite) @@ -265,8 +266,8 @@ static void AnimDragonDanceOrb(struct Sprite *sprite) u16 r5; u16 r0; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[4] = 0; sprite->data[5] = 1; sprite->data[6] = gBattleAnimArgs[0]; @@ -278,10 +279,10 @@ static void AnimDragonDanceOrb(struct Sprite *sprite) sprite->data[7] = r0 / 2; sprite->x2 = Cos(sprite->data[6], sprite->data[7]); sprite->y2 = Sin(sprite->data[6], sprite->data[7]); - sprite->callback = sub_80B74D8; + sprite->callback = AnimDragonDanceOrb_Step; } -static void sub_80B74D8(struct Sprite *sprite) +static void AnimDragonDanceOrb_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -319,26 +320,28 @@ static void sub_80B74D8(struct Sprite *sprite) } } +// Wavers the attacker back and forth. Progressing vertical wave of scanline shifts +// Used by Dragon Dance void AnimTask_DragonDanceWaver(u8 taskId) { - struct ScanlineEffectParams sp; + struct ScanlineEffectParams scanlineParams; struct Task *task = &gTasks[taskId]; u16 i; u8 r1; if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) { - sp.dmaDest = ®_BG1HOFS; + scanlineParams.dmaDest = ®_BG1HOFS; task->data[2] = gBattle_BG1_X; } else { - sp.dmaDest = ®_BG2HOFS; + scanlineParams.dmaDest = ®_BG2HOFS; task->data[2] = gBattle_BG2_X; } - sp.dmaControl = 0xA2600001; - sp.initState = 1; - sp.unused9 = 0; + scanlineParams.dmaControl = SCANLINE_EFFECT_DMACNT_16BIT; + scanlineParams.initState = 1; + scanlineParams.unused9 = 0; r1 = GetBattlerYCoordWithElevation(gBattleAnimAttacker); task->data[3] = r1 - 32; task->data[4] = r1 + 32; @@ -349,11 +352,11 @@ void AnimTask_DragonDanceWaver(u8 taskId) gScanlineEffectRegBuffers[0][i] = task->data[2]; gScanlineEffectRegBuffers[1][i] = task->data[2]; } - ScanlineEffect_SetParams(sp); - task->func = sub_80B76B0; + ScanlineEffect_SetParams(scanlineParams); + task->func = AnimTask_DragonDanceWaver_Step; } -static void sub_80B76B0(u8 taskId) +static void AnimTask_DragonDanceWaver_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -366,12 +369,12 @@ static void sub_80B76B0(u8 taskId) if (++task->data[6] == 3) ++task->data[0]; } - sub_80B776C(task); + UpdateDragonDanceScanlineEffect(task); break; case 1: if (++task->data[1] > 0x3C) ++task->data[0]; - sub_80B776C(task); + UpdateDragonDanceScanlineEffect(task); break; case 2: if (++task->data[7] > 1) @@ -380,7 +383,7 @@ static void sub_80B76B0(u8 taskId) if (--task->data[6] == 0) ++task->data[0]; } - sub_80B776C(task); + UpdateDragonDanceScanlineEffect(task); break; case 3: gScanlineEffect.state = 3; @@ -392,7 +395,7 @@ static void sub_80B76B0(u8 taskId) } } -static void sub_80B776C(struct Task *task) +static void UpdateDragonDanceScanlineEffect(struct Task *task) { u16 i, r3 = task->data[5]; @@ -406,21 +409,21 @@ static void sub_80B776C(struct Task *task) static void AnimOverheatFlame(struct Sprite *sprite) { - s32 i, r6 = (gBattleAnimArgs[2] * 3) / 5; + s32 i, yAmplitude = (gBattleAnimArgs[2] * 3) / 5; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[4]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[4]; sprite->data[1] = Cos(gBattleAnimArgs[1], gBattleAnimArgs[2]); - sprite->data[2] = Sin(gBattleAnimArgs[1], r6); + sprite->data[2] = Sin(gBattleAnimArgs[1], yAmplitude); sprite->x += sprite->data[1] * gBattleAnimArgs[0]; sprite->y += sprite->data[2] * gBattleAnimArgs[0]; sprite->data[3] = gBattleAnimArgs[3]; - sprite->callback = sub_80B7894; + sprite->callback = AnimOverheatFlame_Step; for (i = 0; i < 7; ++i) - gUnknown_20399A4[i] = sprite->data[i]; + sUnusedOverheatData[i] = sprite->data[i]; } -static void sub_80B7894(struct Sprite *sprite) +static void AnimOverheatFlame_Step(struct Sprite *sprite) { sprite->data[4] += sprite->data[1]; sprite->data[5] += sprite->data[2]; From b15305378ac0ead882a85c3d1be7217902b17675 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sun, 14 Aug 2022 18:56:23 -0400 Subject: [PATCH 07/38] Sync battle anim - effects 1 --- include/battle_anim.h | 5 +- src/battle_anim_effects_1.c | 735 ++++++++++++++++---------------- src/battle_anim_effects_2.c | 6 +- src/battle_anim_effects_3.c | 4 +- src/battle_anim_ghost.c | 6 +- src/battle_anim_mons.c | 6 +- src/battle_anim_normal.c | 4 +- src/battle_anim_psychic.c | 2 +- src/battle_anim_special.c | 2 +- src/battle_anim_utility_funcs.c | 10 +- 10 files changed, 394 insertions(+), 386 deletions(-) diff --git a/include/battle_anim.h b/include/battle_anim.h index 80963c10d..fde2a87aa 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -215,7 +215,6 @@ void AnimMoon(struct Sprite *); void AnimMoonlightSparkle(struct Sprite *); void AnimHornHit(struct Sprite *); void AnimSuperFang(struct Sprite *); -void AnimWavyMusicNotes(struct Sprite *); void AnimFlyingMusicNotes(struct Sprite *); void AnimBellyDrumHand(struct Sprite *); void AnimSlowFlyingMusicNotes(struct Sprite *); @@ -421,7 +420,7 @@ void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 x void TryResetSpriteAffineState(struct Sprite *sprite); u16 ArcTan2Neg(s16 a, s16 b); void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor); -u32 SelectBattleAnimSpriteAndBgPalettes(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7); +u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7); u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLeft, bool8 foeRight); u8 GetSpritePalIdxByBattler(u8 a1); void AnimSpriteOnMonPos(struct Sprite *sprite); @@ -429,7 +428,7 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); void AnimThrowProjectile(struct Sprite *sprite); void AnimSnoreZ(struct Sprite *sprite); s16 CloneBattlerSpriteWithBlend(u8 animBattler); -void obj_delete_but_dont_free_vram(struct Sprite *sprite); +void DestroySpriteWithActiveSheet(struct Sprite *sprite); void AnimTask_AlphaFadeIn(u8 taskId); void AnimTask_BlendMonInAndOut(u8 task); void AnimTask_BlendPalInAndOutByTag(u8 taskId); diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 2d1a6f3cf..d03206ded 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -7,84 +7,87 @@ #include "util.h" #include "constants/songs.h" -// RAM -EWRAM_DATA static s16 gUnknown_203999C[4] = {0}; +struct { + s16 startX; + s16 startY; + s16 targetX; + s16 targetY; +} static EWRAM_DATA sFrenzyPlantRootData = {0}; // Debug? Written to but never read. -// Function Declarations -static void AnimMovePowderParticleStep(struct Sprite *); -static void AnimSolarBeamSmallOrbStep(struct Sprite *); -static void AnimAbsorptionOrbStep(struct Sprite *); -static void AnimHyperBeamOrbStep(struct Sprite *); -static void AnimLeechSeedStep(struct Sprite *); +static void AnimMovePowderParticle_Step(struct Sprite *); +static void AnimSolarBeamSmallOrb_Step(struct Sprite *); +static void AnimAbsorptionOrb_Step(struct Sprite *); +static void AnimHyperBeamOrb_Step(struct Sprite *); +static void AnimLeechSeed_Step(struct Sprite *); static void AnimLeechSeedSprouts(struct Sprite *); -static void AnimSporeParticleStep(struct Sprite *); -static void AnimPetalDanceBigFlowerStep(struct Sprite *); -static void AnimPetalDanceSmallFlowerStep(struct Sprite *); -static void AnimRazorLeafParticleStep1(struct Sprite *); -static void AnimRazorLeafParticleStep2(struct Sprite *); -static void AnimTranslateLinearSingleSineWaveStep(struct Sprite *); -static void AnimMoveTwisterParticleStep(struct Sprite *); -static void AnimConstrictBindingStep1(struct Sprite *); -static void AnimConstrictBindingStep2(struct Sprite *); -static void AnimTask_DuplicateAndShrinkToPosStep1(u8); -static void AnimTask_DuplicateAndShrinkToPosStep2(u8); -static void AnimItemStealStep3(struct Sprite *); +static void AnimSporeParticle_Step(struct Sprite *); +static void AnimPetalDanceBigFlower_Step(struct Sprite *); +static void AnimPetalDanceSmallFlower_Step(struct Sprite *); +static void AnimRazorLeafParticle_Step1(struct Sprite *); +static void AnimRazorLeafParticle_Step2(struct Sprite *); +static void AnimTranslateLinearSingleSineWave_Step(struct Sprite *); +static void AnimMoveTwisterParticle_Step(struct Sprite *); +static void AnimConstrictBinding_Step1(struct Sprite *); +static void AnimConstrictBinding_Step2(struct Sprite *); +static void AnimTask_DuplicateAndShrinkToPos_Step1(u8); +static void AnimTask_DuplicateAndShrinkToPos_Step2(u8); +static void AnimItemSteal_Step3(struct Sprite *); static void AnimRootFlickerOut(struct Sprite *); -static void AnimTrickBagStep1(struct Sprite *); -static void AnimTrickBagStep2(struct Sprite *); -static void AnimTrickBagStep3(struct Sprite *); -static void AnimTask_LeafBladeStep(u8); +static void AnimTrickBag_Step1(struct Sprite *); +static void AnimTrickBag_Step2(struct Sprite *); +static void AnimTrickBag_Step3(struct Sprite *); +static void AnimTask_LeafBlade_Step(u8); static s16 LeafBladeGetPosFactor(struct Sprite *); -static void AnimTask_LeafBladeStep2(struct Task *, u8); -static void AnimTask_LeafBladeStep2_Callback(struct Sprite *); -static void AnimFlyingParticleStep(struct Sprite *); -static void AnimNeedleArmSpikeStep(struct Sprite *); -static void AnimSliceStep(struct Sprite *); +static void AnimTask_LeafBlade_Step2(struct Task *, u8); +static void AnimTask_LeafBlade_Step2_Callback(struct Sprite *); +static void AnimFlyingParticle_Step(struct Sprite *); +static void AnimNeedleArmSpike_Step(struct Sprite *); +static void AnimSlice_Step(struct Sprite *); static void AnimCirclingMusicNote_Step(struct Sprite *); -static void AnimProtectStep(struct Sprite *); -static void AnimMilkBottleStep1(struct Sprite *); -static void AnimMilkBottleStep2(struct Sprite *, int, int); +static void AnimProtect_Step(struct Sprite *); +static void AnimMilkBottle_Step1(struct Sprite *); +static void AnimMilkBottle_Step2(struct Sprite *, int, int); static void AnimBubbleBurst_Step(struct Sprite *); -static void AnimSleepLetterZStep(struct Sprite *); -static void AnimLockOnTargetStep1(struct Sprite *); -static void AnimLockOnTargetStep2(struct Sprite *); -static void AnimLockOnTargetStep3(struct Sprite *); -static void AnimLockOnTargetStep4(struct Sprite *); -static void AnimLockOnTargetStep5(struct Sprite *); -static void AnimLockOnTargetStep6(struct Sprite *); -static void AnimBowMonStep1(struct Sprite *); -static void AnimBowMonStep1_Callback(struct Sprite *); -static void AnimBowMonStep2(struct Sprite *); -static void AnimBowMonStep3(struct Sprite *); -static void AnimBowMonStep4(struct Sprite *); -static void AnimBowMonStep3_Callback(struct Sprite *); +static void AnimSleepLetterZ_Step(struct Sprite *); +static void AnimLockOnTarget_Step1(struct Sprite *); +static void AnimLockOnTarget_Step2(struct Sprite *); +static void AnimLockOnTarget_Step3(struct Sprite *); +static void AnimLockOnTarget_Step4(struct Sprite *); +static void AnimLockOnTarget_Step5(struct Sprite *); +static void AnimLockOnTarget_Step6(struct Sprite *); +static void AnimBowMon_Step1(struct Sprite *); +static void AnimBowMon_Step1_Callback(struct Sprite *); +static void AnimBowMon_Step2(struct Sprite *); +static void AnimBowMon_Step3(struct Sprite *); +static void AnimBowMon_Step4(struct Sprite *); +static void AnimBowMon_Step3_Callback(struct Sprite *); static void AnimTipMon_Step(struct Sprite *); static void AnimTask_SkullBashPositionSet(u8); static void AnimTask_SkullBashPositionReset(u8); -static void AnimFalseSwipeSliceStep1(struct Sprite *); -static void AnimFalseSwipeSliceStep2(struct Sprite *); -static void AnimFalseSwipeSliceStep3(struct Sprite *); -static void AnimEndureEnergyStep(struct Sprite *); -static void AnimSharpenSphereStep(struct Sprite *); +static void AnimFalseSwipeSlice_Step1(struct Sprite *); +static void AnimFalseSwipeSlice_Step2(struct Sprite *); +static void AnimFalseSwipeSlice_Step3(struct Sprite *); +static void AnimEndureEnergy_Step(struct Sprite *); +static void AnimSharpenSphere_Step(struct Sprite *); static void AnimConversion2Step(struct Sprite *); -static void AnimMoonStep(struct Sprite *); -static void AnimMoonlightSparkleStep(struct Sprite *); -static void AnimHornHitStep(struct Sprite *); -static void AnimTask_DoubleTeamStep(u8); -static void AnimTask_DoubleTeamCallback(struct Sprite *); -static void AnimWavyMusicNotesGetNextPos(s16, s16, s16 *, s16 *, s8); -static void AnimWavyMusicNotesStep(struct Sprite *); -static void AnimFlyingMusicNotesStep(struct Sprite *); -static void AnimSlowFlyingMusicNotesStep(struct Sprite *); -static void AnimThoughtBubbleStep(struct Sprite *); -static void AnimMetronomeFingerStep(struct Sprite *); -static void AnimFollowMeFingerStep1(struct Sprite *); -static void AnimFollowMeFingerStep2(struct Sprite *); -static void AnimTauntFingerStep1(struct Sprite *); -static void AnimTauntFingerStep2(struct Sprite *); +static void AnimMoon_Step(struct Sprite *); +static void AnimMoonlightSparkle_Step(struct Sprite *); +static void AnimHornHit_Step(struct Sprite *); +static void AnimTask_DoubleTeam_Step(u8); +static void AnimDoubleTeam(struct Sprite *); +static void AnimWavyMusicNotes(struct Sprite* sprite); +static void AnimWavyMusicNotes_CalcVelocity(s16, s16, s16 *, s16 *, s8); +static void AnimWavyMusicNotes_Step(struct Sprite *); +static void AnimFlyingMusicNotes_Step(struct Sprite *); +static void AnimSlowFlyingMusicNotes_Step(struct Sprite *); +static void AnimThoughtBubble_Step(struct Sprite *); +static void AnimMetronomeFinger_Step(struct Sprite *); +static void AnimFollowMeFinger_Step1(struct Sprite *); +static void AnimFollowMeFinger_Step2(struct Sprite *); +static void AnimTauntFinger_Step1(struct Sprite *); +static void AnimTauntFinger_Step2(struct Sprite *); -// Unused -static const u8 sUnknown_83E2964[] = {0x02, 0x04, 0x01, 0x03}; +static const u8 sUnused[] = {2, 4, 1, 3}; static const union AnimCmd sPowderParticlesAnimCmds[] = { @@ -513,7 +516,7 @@ const struct SpriteTemplate gSwiftStarSpriteTemplate = .callback = AnimTranslateLinearSingleSineWave, }; -static const union AnimCmd sConstrictBindingAnimCmds1[] = +static const union AnimCmd sAnim_ConstrictBinding[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(32, 4), @@ -522,7 +525,7 @@ static const union AnimCmd sConstrictBindingAnimCmds1[] = ANIMCMD_END, }; -static const union AnimCmd sConstrictBindingAnimCmds2[] = +static const union AnimCmd sAnim_ConstrictBinding_Flipped[] = { ANIMCMD_FRAME(0, 4, .hFlip = TRUE), ANIMCMD_FRAME(32, 4, .hFlip = TRUE), @@ -531,13 +534,13 @@ static const union AnimCmd sConstrictBindingAnimCmds2[] = ANIMCMD_END, }; -static const union AnimCmd *const sConstrictBindingAnimTable[] = +static const union AnimCmd *const sAnims_ConstrictBinding[] = { - sConstrictBindingAnimCmds1, - sConstrictBindingAnimCmds2, + sAnim_ConstrictBinding, + sAnim_ConstrictBinding_Flipped, }; -static const union AffineAnimCmd sConstrictBindingAffineAnimCmds1[] = +static const union AffineAnimCmd sAffineAnim_ConstrictBinding[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(-11, 0, 0, 6), @@ -545,7 +548,7 @@ static const union AffineAnimCmd sConstrictBindingAffineAnimCmds1[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sConstrictBindingAffineAnimCmds2[] = +static const union AffineAnimCmd sAffineAnim_ConstrictBinding_Flipped[] = { AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(11, 0, 0, 6), @@ -553,10 +556,10 @@ static const union AffineAnimCmd sConstrictBindingAffineAnimCmds2[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sConstrictBindingAffineAnimTable[] = +static const union AffineAnimCmd *const sAffineAnims_ConstrictBinding[] = { - sConstrictBindingAffineAnimCmds1, - sConstrictBindingAffineAnimCmds2, + sAffineAnim_ConstrictBinding, + sAffineAnim_ConstrictBinding_Flipped, }; const struct SpriteTemplate gConstrictBindingSpriteTemplate = @@ -564,9 +567,9 @@ const struct SpriteTemplate gConstrictBindingSpriteTemplate = .tileTag = ANIM_TAG_TENDRILS, .paletteTag = ANIM_TAG_TENDRILS, .oam = &gOamData_AffineNormal_ObjNormal_64x32, - .anims = sConstrictBindingAnimTable, + .anims = sAnims_ConstrictBinding, .images = NULL, - .affineAnims = sConstrictBindingAffineAnimTable, + .affineAnims = sAffineAnims_ConstrictBinding, .callback = AnimConstrictBinding, }; @@ -1022,7 +1025,7 @@ const struct SpriteTemplate gNeedleArmSpikeSpriteTemplate = .callback = AnimNeedleArmSpike, }; -static const union AnimCmd sWhipAnimCmds1[] = +static const union AnimCmd sAnim_Whip[] = { ANIMCMD_FRAME(64, 3), ANIMCMD_FRAME(80, 3), @@ -1031,7 +1034,7 @@ static const union AnimCmd sWhipAnimCmds1[] = ANIMCMD_END, }; -static const union AnimCmd sWhipAnimCmds2[] = +static const union AnimCmd sAnim_Whip_Flipped[] = { ANIMCMD_FRAME(64, 3, .hFlip = TRUE), ANIMCMD_FRAME(80, 3, .hFlip = TRUE), @@ -1040,10 +1043,10 @@ static const union AnimCmd sWhipAnimCmds2[] = ANIMCMD_END, }; -static const union AnimCmd *const sWhipAnimTable[] = +static const union AnimCmd *const sAnims_Whip[] = { - sWhipAnimCmds1, - sWhipAnimCmds2, + sAnim_Whip, + sAnim_Whip_Flipped, }; const struct SpriteTemplate gSlamHitSpriteTemplate = @@ -1051,7 +1054,7 @@ const struct SpriteTemplate gSlamHitSpriteTemplate = .tileTag = ANIM_TAG_SLAM_HIT, .paletteTag = ANIM_TAG_SLAM_HIT, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sWhipAnimTable, + .anims = sAnims_Whip, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimWhipHit, @@ -1062,13 +1065,13 @@ const struct SpriteTemplate gVineWhipSpriteTemplate = .tileTag = ANIM_TAG_WHIP_HIT, .paletteTag = ANIM_TAG_WHIP_HIT, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sWhipAnimTable, + .anims = sAnims_Whip, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimWhipHit, }; -static const union AnimCmd sUnknown_83E3178[] = +static const union AnimCmd sAnim_SlidingHit[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(16, 4), @@ -1078,105 +1081,104 @@ static const union AnimCmd sUnknown_83E3178[] = ANIMCMD_END, }; -// Unused -static const union AnimCmd *const sUnknown_83E3190[] = +static const union AnimCmd *const sAnims_SlidingHit[] = { - sUnknown_83E3178, + sAnim_SlidingHit, }; // Unused -static const struct SpriteTemplate sUnknown_83E3194 = +static const struct SpriteTemplate sSlidingHit1SpriteTemplate = { .tileTag = ANIM_TAG_HIT, .paletteTag = ANIM_TAG_HIT, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sUnknown_83E3190, + .anims = sAnims_SlidingHit, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSlidingHit, }; // Unused -static const struct SpriteTemplate sUnknown_83E31AC = +static const struct SpriteTemplate sSlidingHit2SpriteTemplate = { .tileTag = ANIM_TAG_HIT_2, .paletteTag = ANIM_TAG_HIT_2, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sUnknown_83E3190, + .anims = sAnims_SlidingHit, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSlidingHit, }; -static const union AffineAnimCmd sUnknown_83E31C4[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_Normal[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E31D4[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedTopLeft[] = { AFFINEANIMCMD_FRAME(256, 256, 32, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E31E4[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedLeft[] = { AFFINEANIMCMD_FRAME(256, 256, 64, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E31F4[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedBottomLeft[] = { AFFINEANIMCMD_FRAME(256, 256, 96, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E3204[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_UpsideDown[] = { AFFINEANIMCMD_FRAME(256, 256, -128, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E3214[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedBottomRight[] = { AFFINEANIMCMD_FRAME(256, 256, -96, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E3224[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedRight[] = { AFFINEANIMCMD_FRAME(256, 256, -64, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sUnknown_83E3234[] = +static const union AffineAnimCmd sAffineAnim_FlickeringPunch_TurnedTopRight[] = { AFFINEANIMCMD_FRAME(256, 256, -32, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sUnknown_83E3244[] = +static const union AffineAnimCmd *const sAffineAnims_FlickeringPunch[] = { - sUnknown_83E31C4, - sUnknown_83E31D4, - sUnknown_83E31E4, - sUnknown_83E31F4, - sUnknown_83E3204, - sUnknown_83E3214, - sUnknown_83E3224, - sUnknown_83E3234, + sAffineAnim_FlickeringPunch_Normal, + sAffineAnim_FlickeringPunch_TurnedTopLeft, + sAffineAnim_FlickeringPunch_TurnedLeft, + sAffineAnim_FlickeringPunch_TurnedBottomLeft, + sAffineAnim_FlickeringPunch_UpsideDown, + sAffineAnim_FlickeringPunch_TurnedBottomRight, + sAffineAnim_FlickeringPunch_TurnedRight, + sAffineAnim_FlickeringPunch_TurnedTopRight, }; // Unused -static const struct SpriteTemplate sUnknown_83E3264 = +static const struct SpriteTemplate sFlickeringPunchSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = sUnknown_83E3244, + .affineAnims = sAffineAnims_FlickeringPunch, .callback = AnimFlickeringPunch, }; @@ -1216,87 +1218,87 @@ const struct SpriteTemplate gAirCutterSliceSpriteTemplate = .callback = AnimAirCutterSlice, }; -static const union AnimCmd sUnknown_83E32C4[] = +static const union AnimCmd sAnim_CirclingMusicNote_Eighth[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32CC[] = +static const union AnimCmd sAnim_CirclingMusicNote_BeamedEighth[] = { ANIMCMD_FRAME(4, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32D4[] = +static const union AnimCmd sAnim_CirclingMusicNote_SlantedBeamedEighth[] = { ANIMCMD_FRAME(8, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32DC[] = +static const union AnimCmd sAnim_CirclingMusicNote_Quarter[] = { ANIMCMD_FRAME(12, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32E4[] = +static const union AnimCmd sAnim_CirclingMusicNote_QuarterRest[] = { ANIMCMD_FRAME(16, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32EC[] = +static const union AnimCmd sAnim_CirclingMusicNote_EighthRest[] = { ANIMCMD_FRAME(20, 1), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32F4[] = +static const union AnimCmd sAnim_CirclingMusicNote_Eighth_Flipped[] = { ANIMCMD_FRAME(0, 1, .vFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E32FC[] = +static const union AnimCmd sAnim_CirclingMusicNote_BeamedEighth_Flipped[] = { ANIMCMD_FRAME(4, 1, .vFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E3304[] = +static const union AnimCmd sAnim_CirclingMusicNote_SlantedBeamedEighth_Flipped[] = { ANIMCMD_FRAME(8, 1, .vFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E330C[] = +static const union AnimCmd sAnim_CirclingMusicNote_Quarter_Flipped[] = { ANIMCMD_FRAME(12, 1, .vFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd *const sUnknown_83E3314[] = +static const union AnimCmd *const sAnims_CirclingMusicNote[] = { - sUnknown_83E32C4, - sUnknown_83E32CC, - sUnknown_83E32D4, - sUnknown_83E32DC, - sUnknown_83E32E4, - sUnknown_83E32EC, - sUnknown_83E32F4, - sUnknown_83E32FC, - sUnknown_83E3304, - sUnknown_83E330C, + sAnim_CirclingMusicNote_Eighth, + sAnim_CirclingMusicNote_BeamedEighth, + sAnim_CirclingMusicNote_SlantedBeamedEighth, + sAnim_CirclingMusicNote_Quarter, + sAnim_CirclingMusicNote_QuarterRest, + sAnim_CirclingMusicNote_EighthRest, + sAnim_CirclingMusicNote_Eighth_Flipped, + sAnim_CirclingMusicNote_BeamedEighth_Flipped, + sAnim_CirclingMusicNote_SlantedBeamedEighth_Flipped, + sAnim_CirclingMusicNote_Quarter_Flipped, }; // Unused -static const struct SpriteTemplate sUnknown_83E333C = +static const struct SpriteTemplate sCirclingMusicNoteSpriteTemplate = { .tileTag = ANIM_TAG_MUSIC_NOTES, .paletteTag = ANIM_TAG_MUSIC_NOTES, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sUnknown_83E3314, + .anims = sAnims_CirclingMusicNote, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimCirclingMusicNote, @@ -1386,7 +1388,7 @@ const struct SpriteTemplate gSparklingStarsSpriteTemplate = .callback = AnimSparkingStars, }; -static const union AnimCmd sUnknown_83E3424[] = +static const union AnimCmd sAnim_BubbleBurst[] = { ANIMCMD_FRAME(0, 10), ANIMCMD_FRAME(4, 10), @@ -1399,7 +1401,7 @@ static const union AnimCmd sUnknown_83E3424[] = ANIMCMD_END, }; -static const union AnimCmd sUnknown_83E3448[] = +static const union AnimCmd sAnim_BubbleBurst_Flipped[] = { ANIMCMD_FRAME(0, 10, .hFlip = TRUE), ANIMCMD_FRAME(4, 10, .hFlip = TRUE), @@ -1412,19 +1414,19 @@ static const union AnimCmd sUnknown_83E3448[] = ANIMCMD_END, }; -static const union AnimCmd *const sUnknown_83E346C[] = +static const union AnimCmd *const sAnims_BubbleBurst[] = { - sUnknown_83E3424, - sUnknown_83E3448, + sAnim_BubbleBurst, + sAnim_BubbleBurst_Flipped, }; // Unused -static const struct SpriteTemplate sUnknown_83E3474 = +static const struct SpriteTemplate sBubbleBurstSpriteTemplate = { .tileTag = ANIM_TAG_BUBBLE_BURST, .paletteTag = ANIM_TAG_BUBBLE_BURST, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sUnknown_83E346C, + .anims = sAnims_BubbleBurst, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBubbleBurst, @@ -1528,7 +1530,8 @@ const struct SpriteTemplate gBowMonSpriteTemplate = }; // Unused -static const struct SpriteTemplate sUnknown_83E3568 = +// Same as BowMon above but without backing up +static const struct SpriteTemplate sTipMonSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -2155,7 +2158,6 @@ const struct SpriteTemplate gTauntFingerSpriteTemplate = .callback = AnimTauntFinger, }; -// Functions // Animates the falling particles that horizontally wave back and forth. // Used by Sleep Powder, Stun Spore, and Poison Powder. // arg 0: initial x pixel offset @@ -2181,10 +2183,10 @@ void AnimMovePowderParticle(struct Sprite* sprite) } sprite->data[4] = gBattleAnimArgs[5]; - sprite->callback = AnimMovePowderParticleStep; + sprite->callback = AnimMovePowderParticle_Step; } -static void AnimMovePowderParticleStep(struct Sprite* sprite) +static void AnimMovePowderParticle_Step(struct Sprite* sprite) { if (sprite->data[0] > 0) { @@ -2246,11 +2248,11 @@ void AnimSolarBeamSmallOrb(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = AnimSolarBeamSmallOrbStep; + sprite->callback = AnimSolarBeamSmallOrb_Step; sprite->callback(sprite); } -static void AnimSolarBeamSmallOrbStep(struct Sprite* sprite) +static void AnimSolarBeamSmallOrb_Step(struct Sprite* sprite) { if (AnimTranslateLinear(sprite)) { @@ -2302,10 +2304,10 @@ void AnimAbsorptionOrb(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[5] = gBattleAnimArgs[2]; InitAnimArcTranslation(sprite); - sprite->callback = AnimAbsorptionOrbStep; + sprite->callback = AnimAbsorptionOrb_Step; } -static void AnimAbsorptionOrbStep(struct Sprite* sprite) +static void AnimAbsorptionOrb_Step(struct Sprite* sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -2335,11 +2337,11 @@ void AnimHyperBeamOrb(struct Sprite* sprite) InitAnimFastLinearTranslationWithSpeed(sprite); sprite->data[5] = Random() & 0xFF; sprite->data[6] = sprite->subpriority; - sprite->callback = AnimHyperBeamOrbStep; + sprite->callback = AnimHyperBeamOrb_Step; sprite->callback(sprite); } -static void AnimHyperBeamOrbStep(struct Sprite* sprite) +static void AnimHyperBeamOrb_Step(struct Sprite* sprite) { if (AnimFastTranslateLinear(sprite)) { @@ -2377,10 +2379,10 @@ void AnimLeechSeed(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[5]; InitAnimArcTranslation(sprite); - sprite->callback = AnimLeechSeedStep; + sprite->callback = AnimLeechSeed_Step; } -static void AnimLeechSeedStep(struct Sprite* sprite) +static void AnimLeechSeed_Step(struct Sprite* sprite) { if (TranslateAnimHorizontalArc(sprite)) { @@ -2417,11 +2419,11 @@ void AnimSporeParticle(struct Sprite* sprite) sprite->data[0] = gBattleAnimArgs[3]; sprite->data[1] = gBattleAnimArgs[2]; - sprite->callback = AnimSporeParticleStep; + sprite->callback = AnimSporeParticle_Step; sprite->callback(sprite); } -static void AnimSporeParticleStep(struct Sprite* sprite) +static void AnimSporeParticle_Step(struct Sprite* sprite) { sprite->x2 = Sin(sprite->data[1], 32); sprite->y2 = Cos(sprite->data[1], -3) + ((sprite->data[2] += 24) >> 8); @@ -2480,11 +2482,11 @@ void AnimPetalDanceBigFlower(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; InitAnimLinearTranslation(sprite); sprite->data[5] = 0x40; - sprite->callback = AnimPetalDanceBigFlowerStep; + sprite->callback = AnimPetalDanceBigFlower_Step; sprite->callback(sprite); } -static void AnimPetalDanceBigFlowerStep(struct Sprite* sprite) +static void AnimPetalDanceBigFlower_Step(struct Sprite* sprite) { if (!AnimTranslateLinear(sprite)) { @@ -2518,11 +2520,11 @@ void AnimPetalDanceSmallFlower(struct Sprite* sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; InitAnimLinearTranslation(sprite); sprite->data[5] = 0x40; - sprite->callback = AnimPetalDanceSmallFlowerStep; + sprite->callback = AnimPetalDanceSmallFlower_Step; sprite->callback(sprite); } -static void AnimPetalDanceSmallFlowerStep(struct Sprite* sprite) +static void AnimPetalDanceSmallFlower_Step(struct Sprite* sprite) { if (!AnimTranslateLinear(sprite)) { @@ -2550,10 +2552,10 @@ void AnimRazorLeafParticle(struct Sprite* sprite) sprite->data[0] = gBattleAnimArgs[0]; sprite->data[1] = gBattleAnimArgs[1]; sprite->data[2] = gBattleAnimArgs[2]; - sprite->callback = AnimRazorLeafParticleStep1; + sprite->callback = AnimRazorLeafParticle_Step1; } -static void AnimRazorLeafParticleStep1(struct Sprite* sprite) +static void AnimRazorLeafParticle_Step1(struct Sprite* sprite) { if (!sprite->data[2]) { @@ -2569,7 +2571,7 @@ static void AnimRazorLeafParticleStep1(struct Sprite* sprite) sprite->data[1] = 0; sprite->data[2] = 0; } - sprite->callback = AnimRazorLeafParticleStep2; + sprite->callback = AnimRazorLeafParticle_Step2; } else { @@ -2579,7 +2581,7 @@ static void AnimRazorLeafParticleStep1(struct Sprite* sprite) } } -static void AnimRazorLeafParticleStep2(struct Sprite* sprite) +static void AnimRazorLeafParticle_Step2(struct Sprite* sprite) { if (GetBattlerSide(gBattleAnimAttacker)) sprite->x2 = -Sin(sprite->data[0], 25); @@ -2632,10 +2634,10 @@ void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) else sprite->data[0] = 0; - sprite->callback = AnimTranslateLinearSingleSineWaveStep; + sprite->callback = AnimTranslateLinearSingleSineWave_Step; } -static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite) +static void AnimTranslateLinearSingleSineWave_Step(struct Sprite* sprite) { bool8 destroy = FALSE; s16 a = sprite->data[0]; @@ -2657,9 +2659,9 @@ static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite) destroy = TRUE; } - if (sprite->x + sprite->x2 > 256 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 || sprite->x + sprite->x2 < -16 - || sprite->y + sprite->y2 > 160 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) destroy = TRUE; @@ -2684,10 +2686,10 @@ void AnimMoveTwisterParticle(struct Sprite* sprite) sprite->data[2] = gBattleAnimArgs[2]; sprite->data[3] = gBattleAnimArgs[3]; sprite->data[4] = gBattleAnimArgs[4]; - sprite->callback = AnimMoveTwisterParticleStep; + sprite->callback = AnimMoveTwisterParticle_Step; } -static void AnimMoveTwisterParticleStep(struct Sprite* sprite) +static void AnimMoveTwisterParticle_Step(struct Sprite* sprite) { if (sprite->data[1] == 0xFF) { @@ -2727,10 +2729,10 @@ void AnimConstrictBinding(struct Sprite* sprite) StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]); sprite->data[6] = gBattleAnimArgs[2]; sprite->data[7] = gBattleAnimArgs[3]; - sprite->callback = AnimConstrictBindingStep1; + sprite->callback = AnimConstrictBinding_Step1; } -static void AnimConstrictBindingStep1(struct Sprite* sprite) +static void AnimConstrictBinding_Step1(struct Sprite* sprite) { u8 spriteId; @@ -2739,11 +2741,11 @@ static void AnimConstrictBindingStep1(struct Sprite* sprite) sprite->affineAnimPaused = FALSE; spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); sprite->data[0] = 0x100; - sprite->callback = AnimConstrictBindingStep2; + sprite->callback = AnimConstrictBinding_Step2; } } -static void AnimConstrictBindingStep2(struct Sprite* sprite) +static void AnimConstrictBinding_Step2(struct Sprite* sprite) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); @@ -2781,11 +2783,11 @@ void AnimTask_ShrinkTargetCopy(u8 taskId) gTasks[taskId].data[0] = gBattleAnimArgs[0]; gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].data[11] = 0x100; - gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPosStep1; + gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPos_Step1; } } -static void AnimTask_DuplicateAndShrinkToPosStep1(u8 taskId) +static void AnimTask_DuplicateAndShrinkToPos_Step1(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); @@ -2800,11 +2802,11 @@ static void AnimTask_DuplicateAndShrinkToPosStep1(u8 taskId) if (--gTasks[taskId].data[1] == 0) { gTasks[taskId].data[0] = 0; - gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPosStep2; + gTasks[taskId].func = AnimTask_DuplicateAndShrinkToPos_Step2; } } -static void AnimTask_DuplicateAndShrinkToPosStep2(u8 taskId) +static void AnimTask_DuplicateAndShrinkToPos_Step2(u8 taskId) { if ((u16)gBattleAnimArgs[7] == 0xFFFF) { @@ -2907,10 +2909,10 @@ void AnimFrenzyPlantRoot(struct Sprite *sprite) StartSpriteAnim(sprite, gBattleAnimArgs[4]); sprite->data[2] = gBattleAnimArgs[5]; sprite->callback = AnimRootFlickerOut; - gUnknown_203999C[0] = sprite->x; - gUnknown_203999C[1] = sprite->y; - gUnknown_203999C[2] = targetX; - gUnknown_203999C[3] = targetY; + sFrenzyPlantRootData.startX = sprite->x; + sFrenzyPlantRootData.startY = sprite->y; + sFrenzyPlantRootData.targetX = targetX; + sFrenzyPlantRootData.targetY = targetY; } static void AnimRootFlickerOut(struct Sprite* sprite) @@ -2946,7 +2948,7 @@ void AnimIngrainOrb(struct Sprite* sprite) DestroyAnimSprite(sprite); } -static void sub_80A33B8(struct Sprite* sprite, s16 c) +static void InitItemBagData(struct Sprite* sprite, s16 c) { int a = (sprite->x << 8) | sprite->y; int b = (sprite->data[6] << 8) | sprite->data[7]; @@ -2972,7 +2974,7 @@ bool8 MoveAlongLinearPath(struct Sprite* sprite) if (xEndPos == 0) xEndPos = -32; else if (xEndPos == 255) - xEndPos = 272; + xEndPos = DISPLAY_WIDTH + 32; yEndPos_2 = yEndPos - yStartPos; r0 = xEndPos - xStartPos; @@ -2987,7 +2989,7 @@ bool8 MoveAlongLinearPath(struct Sprite* sprite) return FALSE; } -void AnimItemStealStep2(struct Sprite* sprite) +static void AnimItemSteal_Step2(struct Sprite* sprite) { if (sprite->data[0] == 10) StartSpriteAffineAnim(sprite, 1); @@ -2997,7 +2999,7 @@ void AnimItemStealStep2(struct Sprite* sprite) DestroyAnimSprite(sprite); } -static void AnimItemStealStep1(struct Sprite* sprite) +static void AnimItemSteal_Step1(struct Sprite* sprite) { sprite->data[0] += sprite->data[3] * 128 / sprite->data[4]; if (sprite->data[0] >= 128) @@ -3011,7 +3013,7 @@ static void AnimItemStealStep1(struct Sprite* sprite) { sprite->y2 = 0; sprite->data[0] = 0; - sprite->callback = AnimItemStealStep2; + sprite->callback = AnimItemSteal_Step2; } } @@ -3027,22 +3029,22 @@ void AnimPresent(struct Sprite* sprite) { sprite->data[6] = targetX; sprite->data[7] = targetY + 10; - sub_80A33B8(sprite, 60); + InitItemBagData(sprite, 60); sprite->data[3] = 1; } else { sprite->data[6] = targetX; sprite->data[7] = targetY + 10; - sub_80A33B8(sprite, 60); + InitItemBagData(sprite, 60); sprite->data[3] = 3; } sprite->data[4] = 60; - sprite->callback = AnimItemStealStep1; + sprite->callback = AnimItemSteal_Step1; } -static void sub_80A3590(struct Sprite* sprite) +static void AnimKnockOffOpponentsItem(struct Sprite* sprite) { int zero; @@ -3071,10 +3073,10 @@ void AnimKnockOffItem(struct Sprite* sprite) { sprite->data[6] = 0; sprite->data[7] = targetY + 10; - sub_80A33B8(sprite, 40); + InitItemBagData(sprite, 40); sprite->data[3] = 3; sprite->data[4] = 60; - sprite->callback = AnimItemStealStep1; + sprite->callback = AnimItemSteal_Step1; } else { @@ -3083,10 +3085,10 @@ void AnimKnockOffItem(struct Sprite* sprite) if (IsContest()) sprite->data[6] = 0; - sub_80A33B8(sprite, 40); + InitItemBagData(sprite, 40); sprite->data[3] = 3; sprite->data[4] = 60; - sprite->callback = sub_80A3590; + sprite->callback = AnimKnockOffOpponentsItem; } } @@ -3121,22 +3123,22 @@ void AnimItemSteal(struct Sprite* sprite) { sprite->data[6] = attackerX; sprite->data[7] = attackerY + 10; - sub_80A33B8(sprite, 60); + InitItemBagData(sprite, 60); sprite->data[3] = 1; } else { sprite->data[6] = attackerX; sprite->data[7] = attackerY + 10; - sub_80A33B8(sprite, 60); + InitItemBagData(sprite, 60); sprite->data[3] = 3; } sprite->data[4] = 60; - sprite->callback = AnimItemStealStep3; + sprite->callback = AnimItemSteal_Step3; } -static void AnimItemStealStep3(struct Sprite* sprite) +static void AnimItemSteal_Step3(struct Sprite* sprite) { int zero; @@ -3156,7 +3158,7 @@ static void AnimItemStealStep3(struct Sprite* sprite) { sprite->y2 = 0; sprite->data[0] = 0; - sprite->callback = AnimItemStealStep2; + sprite->callback = AnimItemSteal_Step2; PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(SOUND_PAN_ATTACKER)); } } @@ -3193,7 +3195,7 @@ void AnimTrickBag(struct Sprite* sprite) sprite->data[4] = 20; sprite->x2 = Cos(sprite->data[1], 60); sprite->y2 = Sin(sprite->data[1], 20); - sprite->callback = AnimTrickBagStep1; + sprite->callback = AnimTrickBag_Step1; if (sprite->data[1] > 0 && sprite->data[1] < 192) sprite->subpriority = 31; else @@ -3201,7 +3203,7 @@ void AnimTrickBag(struct Sprite* sprite) } } -static void AnimTrickBagStep1(struct Sprite* sprite) +static void AnimTrickBag_Step1(struct Sprite* sprite) { switch (sprite->data[3]) { @@ -3225,20 +3227,20 @@ static void AnimTrickBagStep1(struct Sprite* sprite) { sprite->data[0] = 0; sprite->data[2] = 0; - sprite->callback = AnimTrickBagStep2; + sprite->callback = AnimTrickBag_Step2; } break; } } -static void AnimTrickBagStep2(struct Sprite* sprite) +static void AnimTrickBag_Step2(struct Sprite* sprite) { if (sprite->data[2] == gTrickBagCoordinates[sprite->data[0]][1]) { if (gTrickBagCoordinates[sprite->data[0]][2] == 127) { sprite->data[0] = 0; - sprite->callback = AnimTrickBagStep3; + sprite->callback = AnimTrickBag_Step3; } sprite->data[2] = 0; @@ -3261,7 +3263,7 @@ static void AnimTrickBagStep2(struct Sprite* sprite) } } -static void AnimTrickBagStep3(struct Sprite* sprite) +static void AnimTrickBag_Step3(struct Sprite* sprite) { if (sprite->data[0] > 20) DestroyAnimSprite(sprite); @@ -3293,10 +3295,10 @@ void AnimTask_LeafBlade(u8 taskId) gSprites[task->data[2]].data[4] = task->data[7] + (task->data[11] / 2 + 10) * task->data[5]; gSprites[task->data[2]].data[5] = LeafBladeGetPosFactor(&gSprites[task->data[2]]); InitAnimArcTranslation(&gSprites[task->data[2]]); - task->func = AnimTask_LeafBladeStep; + task->func = AnimTask_LeafBlade_Step; } -static void AnimTask_LeafBladeStep(u8 taskId) +static void AnimTask_LeafBlade_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; struct Sprite* sprite = &gSprites[task->data[2]]; @@ -3305,7 +3307,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) switch (a) { case 4: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 5; @@ -3313,7 +3315,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) } break; case 8: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 9; @@ -3321,7 +3323,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) } break; case 0: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 1; @@ -3347,7 +3349,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) task->data[0]++; break; case 2: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 3; @@ -3390,7 +3392,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) task->data[0]++; break; case 6: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 7; @@ -3433,7 +3435,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) task->data[0]++; break; case 10: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { task->data[15] = 11; @@ -3461,7 +3463,7 @@ static void AnimTask_LeafBladeStep(u8 taskId) break; } case 12: - AnimTask_LeafBladeStep2(task, taskId); + AnimTask_LeafBlade_Step2(task, taskId); if (TranslateAnimHorizontalArc(sprite)) { DestroySprite(sprite); @@ -3492,7 +3494,7 @@ static s16 LeafBladeGetPosFactor(struct Sprite* sprite) return var; } -static void AnimTask_LeafBladeStep2(struct Task* task, u8 taskId) +static void AnimTask_LeafBlade_Step2(struct Task* task, u8 taskId) { task->data[14]++; if (task->data[14] > 0) @@ -3513,12 +3515,12 @@ static void AnimTask_LeafBladeStep2(struct Task* task, u8 taskId) gTasks[taskId].data[13]++; StartSpriteAnim(&gSprites[spriteId], task->data[3]); gSprites[spriteId].subpriority = task->data[4]; - gSprites[spriteId].callback = AnimTask_LeafBladeStep2_Callback; + gSprites[spriteId].callback = AnimTask_LeafBlade_Step2_Callback; } } } -static void AnimTask_LeafBladeStep2_Callback(struct Sprite* sprite) +static void AnimTask_LeafBlade_Step2_Callback(struct Sprite* sprite) { sprite->data[0]++; if (sprite->data[0] > 1) @@ -3580,10 +3582,10 @@ void AnimFlyingParticle(struct Sprite* sprite) break; } - sprite->callback = AnimFlyingParticleStep; + sprite->callback = AnimFlyingParticle_Step; } -static void AnimFlyingParticleStep(struct Sprite* sprite) +static void AnimFlyingParticle_Step(struct Sprite* sprite) { int a = sprite->data[7]; @@ -3688,11 +3690,11 @@ void AnimNeedleArmSpike(struct Sprite* sprite) c -= 0x8000; TrySetSpriteRotScale(sprite, 0, 0x100, 0x100, c); - sprite->callback = AnimNeedleArmSpikeStep; + sprite->callback = AnimNeedleArmSpike_Step; } } -static void AnimNeedleArmSpikeStep(struct Sprite* sprite) +static void AnimNeedleArmSpike_Step(struct Sprite* sprite) { if (sprite->data[0]) { @@ -3708,7 +3710,7 @@ static void AnimNeedleArmSpikeStep(struct Sprite* sprite) } } -static void sub_80A43DC(struct Sprite* sprite) +static void AnimWhipHit_WaitEnd(struct Sprite* sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); @@ -3736,7 +3738,7 @@ void AnimWhipHit(struct Sprite* sprite) if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) StartSpriteAnim(sprite, 1); - sprite->callback = sub_80A43DC; + sprite->callback = AnimWhipHit_WaitEnd; SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); sprite->y += gBattleAnimArgs[1]; } @@ -3766,7 +3768,7 @@ void AnimCuttingSlice(struct Sprite* sprite) if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) sprite->y += 8; - sprite->callback = AnimSliceStep; + sprite->callback = AnimSlice_Step; if (gBattleAnimArgs[2] == 0) { sprite->x += gBattleAnimArgs[0]; @@ -3817,7 +3819,7 @@ void AnimAirCutterSlice(struct Sprite* sprite) if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) sprite->y += 8; - sprite->callback = AnimSliceStep; + sprite->callback = AnimSlice_Step; if (gBattleAnimArgs[2] == 0) { sprite->x += gBattleAnimArgs[0]; @@ -3836,7 +3838,7 @@ void AnimAirCutterSlice(struct Sprite* sprite) sprite->data[1] = -sprite->data[1]; } -static void AnimSliceStep(struct Sprite* sprite) +static void AnimSlice_Step(struct Sprite* sprite) { sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; @@ -3857,7 +3859,7 @@ static void AnimSliceStep(struct Sprite* sprite) } } -void sub_80A4738(struct Sprite* sprite) +static void UnusedFlickerAnim(struct Sprite* sprite) { if (sprite->data[2] > 1) { @@ -3940,10 +3942,10 @@ void AnimProtect(struct Sprite* sprite) sprite->data[7] = 16; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[7], sprite->data[7])); - sprite->callback = AnimProtectStep; + sprite->callback = AnimProtect_Step; } -static void AnimProtectStep(struct Sprite *sprite) +static void AnimProtect_Step(struct Sprite *sprite) { int i, id, savedPal; sprite->data[5] += 96; @@ -3999,10 +4001,10 @@ void AnimMilkBottle(struct Sprite* sprite) sprite->data[7] = 16; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); - sprite->callback = AnimMilkBottleStep1; + sprite->callback = AnimMilkBottle_Step1; } -static void AnimMilkBottleStep1(struct Sprite* sprite) +static void AnimMilkBottle_Step1(struct Sprite* sprite) { switch (sprite->data[0]) { @@ -4035,7 +4037,7 @@ static void AnimMilkBottleStep1(struct Sprite* sprite) } break; case 2: - AnimMilkBottleStep2(sprite, 16, 4); + AnimMilkBottle_Step2(sprite, 16, 4); if (++sprite->data[1] > 2) { sprite->data[1] = 0; @@ -4075,7 +4077,7 @@ static void AnimMilkBottleStep1(struct Sprite* sprite) } } -static void AnimMilkBottleStep2(struct Sprite* sprite, int unk1, int unk2) +static void AnimMilkBottle_Step2(struct Sprite* sprite, int unk1, int unk2) { if (sprite->data[3] <= 11) sprite->data[4] += 2; @@ -4196,10 +4198,10 @@ void AnimSleepLetterZ(struct Sprite* sprite) StartSpriteAffineAnim(sprite, 1); } - sprite->callback = AnimSleepLetterZStep; + sprite->callback = AnimSleepLetterZ_Step; } -static void AnimSleepLetterZStep(struct Sprite* sprite) +static void AnimSleepLetterZ_Step(struct Sprite* sprite) { sprite->y2 = -(sprite->data[0] / 0x28); sprite->x2 = sprite->data[4] / 10; @@ -4215,17 +4217,17 @@ void AnimLockOnTarget(struct Sprite* sprite) sprite->y -= 32; sprite->data[0] = 20; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep1); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step1); } -static void AnimLockOnTargetStep1(struct Sprite* sprite) +static void AnimLockOnTarget_Step1(struct Sprite* sprite) { switch (sprite->data[5] & 1) { case 0: sprite->data[0] = 1; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep1); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step1); break; case 1: sprite->x += sprite->x2; @@ -4236,7 +4238,7 @@ static void AnimLockOnTargetStep1(struct Sprite* sprite) sprite->data[2] = sprite->x + sInclineMonCoordTable[sprite->data[5] >> 8][0]; sprite->data[4] = sprite->y + sInclineMonCoordTable[sprite->data[5] >> 8][1]; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep2); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step2); sprite->data[5] += 0x100; PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(SOUND_PAN_TARGET)); break; @@ -4245,21 +4247,21 @@ static void AnimLockOnTargetStep1(struct Sprite* sprite) sprite->data[5] ^= 1; } -static void AnimLockOnTargetStep2(struct Sprite* sprite) +static void AnimLockOnTarget_Step2(struct Sprite* sprite) { if ((sprite->data[5] >> 8) == 4) { sprite->data[0] = 10; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep3); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step3); } else { - sprite->callback = AnimLockOnTargetStep1; + sprite->callback = AnimLockOnTarget_Step1; } } -static void AnimLockOnTargetStep3(struct Sprite* sprite) +static void AnimLockOnTarget_Step3(struct Sprite* sprite) { s16 a; s16 b; @@ -4270,7 +4272,7 @@ static void AnimLockOnTargetStep3(struct Sprite* sprite) sprite->data[1] = 0; sprite->data[2] = 0; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep4); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step4); } else { @@ -4302,11 +4304,11 @@ static void AnimLockOnTargetStep3(struct Sprite* sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + a; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + b; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, AnimLockOnTargetStep5); + StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step5); } } -static void AnimLockOnTargetStep4(struct Sprite* sprite) +static void AnimLockOnTarget_Step4(struct Sprite* sprite) { if (sprite->data[2] == 0) { @@ -4318,7 +4320,7 @@ static void AnimLockOnTargetStep4(struct Sprite* sprite) sprite->data[1] = 0; } - BlendPalettes(SelectBattleAnimSpriteAndBgPalettes(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB_WHITE); + BlendPalettes(GetBattlePalettesMask(1, 1, 1, 1, 1, 0, 0), sprite->data[1], RGB_WHITE); if (sprite->data[1] == 16) { int pal; @@ -4329,21 +4331,21 @@ static void AnimLockOnTargetStep4(struct Sprite* sprite) } else if (sprite->data[1] == 0) { - sprite->callback = AnimLockOnTargetStep5; + sprite->callback = AnimLockOnTarget_Step5; } } -static void AnimLockOnTargetStep5(struct Sprite* sprite) +static void AnimLockOnTarget_Step5(struct Sprite* sprite) { if ((u16)gBattleAnimArgs[7] == 0xFFFF) { sprite->data[1] = 0; sprite->data[0] = 0; - sprite->callback = AnimLockOnTargetStep6; + sprite->callback = AnimLockOnTarget_Step6; } } -static void AnimLockOnTargetStep6(struct Sprite* sprite) +static void AnimLockOnTarget_Step6(struct Sprite* sprite) { if (sprite->data[0] % 3 == 0) { @@ -4395,31 +4397,31 @@ void AnimBowMon(struct Sprite* sprite) switch (gBattleAnimArgs[0]) { case 0: - sprite->callback = AnimBowMonStep1; + sprite->callback = AnimBowMon_Step1; break; case 1: - sprite->callback = AnimBowMonStep2; + sprite->callback = AnimBowMon_Step2; break; case 2: - sprite->callback = AnimBowMonStep3; + sprite->callback = AnimBowMon_Step3; break; default: - sprite->callback = AnimBowMonStep4; + sprite->callback = AnimBowMon_Step4; break; } } -static void AnimBowMonStep1(struct Sprite* sprite) +static void AnimBowMon_Step1(struct Sprite* sprite) { sprite->data[0] = 6; sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) ? 2 : -2; sprite->data[2] = 0; sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; - StoreSpriteCallbackInData6(sprite, AnimBowMonStep1_Callback); + StoreSpriteCallbackInData6(sprite, AnimBowMon_Step1_Callback); sprite->callback = TranslateMonSpriteLinear; } -static void AnimBowMonStep1_Callback(struct Sprite* sprite) +static void AnimBowMon_Step1_Callback(struct Sprite* sprite) { if (sprite->data[0] == 0) { @@ -4435,30 +4437,30 @@ static void AnimBowMonStep1_Callback(struct Sprite* sprite) if (++sprite->data[0] > 3) { sprite->data[0] = 0; - sprite->callback = AnimBowMonStep4; + sprite->callback = AnimBowMon_Step4; } } -static void AnimBowMonStep2(struct Sprite* sprite) +static void AnimBowMon_Step2(struct Sprite* sprite) { sprite->data[0] = 4; sprite->data[1] = (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) ? -3 : 3; sprite->data[2] = 0; sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; - StoreSpriteCallbackInData6(sprite, AnimBowMonStep4); + StoreSpriteCallbackInData6(sprite, AnimBowMon_Step4); sprite->callback = TranslateMonSpriteLinear; } -static void AnimBowMonStep3(struct Sprite* sprite) +static void AnimBowMon_Step3(struct Sprite* sprite) { if (++sprite->data[0] > 8) { sprite->data[0] = 0; - sprite->callback = AnimBowMonStep3_Callback; + sprite->callback = AnimBowMon_Step3_Callback; } } -static void AnimBowMonStep3_Callback(struct Sprite* sprite) +static void AnimBowMon_Step3_Callback(struct Sprite* sprite) { if (sprite->data[0] == 0) { @@ -4482,11 +4484,11 @@ static void AnimBowMonStep3_Callback(struct Sprite* sprite) if (++sprite->data[0] > 2) { ResetSpriteRotScale(sprite->data[3]); - sprite->callback = AnimBowMonStep4; + sprite->callback = AnimBowMon_Step4; } } -static void AnimBowMonStep4(struct Sprite* sprite) +static void AnimBowMon_Step4(struct Sprite* sprite) { DestroyAnimSprite(sprite); } @@ -4697,7 +4699,7 @@ void AnimSlashSlice(struct Sprite* sprite) sprite->data[0] = 0; sprite->data[1] = 0; - StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSliceStep3); + StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSlice_Step3); sprite->callback = RunStoredCallbackWhenAnimEnds; } @@ -4705,7 +4707,7 @@ void AnimFalseSwipeSlice(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0; sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSliceStep1); + StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSlice_Step1); sprite->callback = RunStoredCallbackWhenAnimEnds; } @@ -4716,29 +4718,29 @@ void AnimFalseSwipePositionedSlice(struct Sprite* sprite) StartSpriteAnim(sprite, 1); sprite->data[0] = 0; sprite->data[1] = 0; - sprite->callback = AnimFalseSwipeSliceStep3; + sprite->callback = AnimFalseSwipeSlice_Step3; } -static void AnimFalseSwipeSliceStep1(struct Sprite* sprite) +static void AnimFalseSwipeSlice_Step1(struct Sprite* sprite) { if (++sprite->data[0] > 8) { sprite->data[0] = 12; sprite->data[1] = 8; sprite->data[2] = 0; - StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSliceStep2); + StoreSpriteCallbackInData6(sprite, AnimFalseSwipeSlice_Step2); sprite->callback = TranslateSpriteLinear; } } -static void AnimFalseSwipeSliceStep2(struct Sprite* sprite) +static void AnimFalseSwipeSlice_Step2(struct Sprite* sprite) { sprite->data[0] = 0; sprite->data[1] = 0; - sprite->callback = AnimFalseSwipeSliceStep3; + sprite->callback = AnimFalseSwipeSlice_Step3; } -static void AnimFalseSwipeSliceStep3(struct Sprite* sprite) +static void AnimFalseSwipeSlice_Step3(struct Sprite* sprite) { if (++sprite->data[0] > 1) { @@ -4764,10 +4766,10 @@ void AnimEndureEnergy(struct Sprite* sprite) sprite->data[0] = 0; sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = AnimEndureEnergyStep; + sprite->callback = AnimEndureEnergy_Step; } -static void AnimEndureEnergyStep(struct Sprite* sprite) +static void AnimEndureEnergy_Step(struct Sprite* sprite) { if (++sprite->data[0] > sprite->data[1]) { @@ -4790,10 +4792,10 @@ void AnimSharpenSphere(struct Sprite* sprite) sprite->data[3] = 0; sprite->data[4] = 0; sprite->data[5] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); - sprite->callback = AnimSharpenSphereStep; + sprite->callback = AnimSharpenSphere_Step; } -static void AnimSharpenSphereStep(struct Sprite* sprite) +static void AnimSharpenSphere_Step(struct Sprite* sprite) { if (++sprite->data[0] >= sprite->data[1]) { @@ -4894,26 +4896,27 @@ void AnimTask_Conversion2AlphaBlend(u8 taskId) } } -void sub_80A5E34(u8 taskId) +// Unused +static void AnimTask_HideBattlersHealthbox(u8 taskId) { u8 i; for (i = 0; i < gBattlersCount; i++) { - if (gBattleAnimArgs[0] == 1 && GetBattlerSide(i) == B_SIDE_PLAYER) + if (gBattleAnimArgs[0] == TRUE && GetBattlerSide(i) == B_SIDE_PLAYER) SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); - if (gBattleAnimArgs[1] == 1 && GetBattlerSide(i) == B_SIDE_OPPONENT) + if (gBattleAnimArgs[1] == TRUE && GetBattlerSide(i) == B_SIDE_OPPONENT) SetHealthboxSpriteInvisible(gHealthboxSpriteIds[i]); } DestroyAnimVisualTask(taskId); } -void sub_80A5EA8(u8 taskId) +// Unused +static void AnimTask_ShowBattlersHealthbox(u8 taskId) { u8 i; - for (i = 0; i < gBattlersCount; i++) SetHealthboxSpriteVisible(gHealthboxSpriteIds[i]); @@ -4936,10 +4939,10 @@ void AnimMoon(struct Sprite* sprite) sprite->oam.shape = SPRITE_SHAPE(8x8); sprite->oam.size = SPRITE_SIZE(64x32); sprite->data[0] = 0; - sprite->callback = AnimMoonStep; + sprite->callback = AnimMoon_Step; } -static void AnimMoonStep(struct Sprite* sprite) +static void AnimMoon_Step(struct Sprite* sprite) { if (sprite->data[0]) DestroyAnimSprite(sprite); @@ -4954,10 +4957,10 @@ void AnimMoonlightSparkle(struct Sprite* sprite) sprite->data[2] = 0; sprite->data[3] = 0; sprite->data[4] = 1; - sprite->callback = AnimMoonlightSparkleStep; + sprite->callback = AnimMoonlightSparkle_Step; } -static void AnimMoonlightSparkleStep(struct Sprite* sprite) +static void AnimMoonlightSparkle_Step(struct Sprite* sprite) { if (++sprite->data[1] > 1) { @@ -4973,12 +4976,12 @@ static void AnimMoonlightSparkleStep(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimTask_FadeScreenBlueStep(u8); +void AnimTask_FadeScreenBlue_Step(u8); void AnimTask_FadeScreenBlue(u8 taskId) { - int a = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + int a = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) & 0xFFFF; int b; int c; int d; @@ -4999,11 +5002,11 @@ void AnimTask_FadeScreenBlue(u8 taskId) b = b | (0x10000 << IndexOfSpritePaletteTag(ANIM_TAG_MOON)); d = IndexOfSpritePaletteTag(ANIM_TAG_GREEN_SPARKLE); BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 16, RGB(27, 29, 31)); - gTasks[taskId].func = AnimTask_FadeScreenBlueStep; + gTasks[taskId].func = AnimTask_FadeScreenBlue_Step; gTasks[taskId].func(taskId); } -void AnimTask_FadeScreenBlueStep(u8 taskId) +void AnimTask_FadeScreenBlue_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -5126,10 +5129,10 @@ void AnimHornHit(struct Sprite* sprite) sprite->oam.matrixNum = (ST_OAM_HFLIP | ST_OAM_VFLIP); } - sprite->callback = AnimHornHitStep; + sprite->callback = AnimHornHit_Step; } -static void AnimHornHitStep(struct Sprite* sprite) +static void AnimHornHit_Step(struct Sprite* sprite) { sprite->data[2] += sprite->data[3]; sprite->data[4] += sprite->data[5]; @@ -5169,19 +5172,19 @@ void AnimTask_DoubleTeam(u8 taskId) gSprites[obj].data[0] = 0; gSprites[obj].data[1] = i << 7; gSprites[obj].data[2] = taskId; - gSprites[obj].callback = AnimTask_DoubleTeamCallback; + gSprites[obj].callback = AnimDoubleTeam; task->data[3]++; i++; } - task->func = AnimTask_DoubleTeamStep; + task->func = AnimTask_DoubleTeam_Step; if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); else ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); } -static void AnimTask_DoubleTeamStep(u8 taskId) +static void AnimTask_DoubleTeam_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -5197,7 +5200,7 @@ static void AnimTask_DoubleTeamStep(u8 taskId) } } -static void AnimTask_DoubleTeamCallback(struct Sprite* sprite) +static void AnimDoubleTeam(struct Sprite* sprite) { if (++sprite->data[3] > 1) { @@ -5208,7 +5211,7 @@ static void AnimTask_DoubleTeamCallback(struct Sprite* sprite) if (sprite->data[0] > 64) { gTasks[sprite->data[2]].data[3]--; - obj_delete_but_dont_free_vram(sprite); + DestroySpriteWithActiveSheet(sprite); } else { @@ -5263,81 +5266,87 @@ void AnimTask_MusicNotesClearRainbowBlend(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimWavyMusicNotes(struct Sprite* sprite) +#define sMoveTimer data[0] +#define sBlendTableIdx data[1] +#define sBlendTimer data[2] +#define sBlendCycleTime data[3] +#define sX data[4] +#define sY data[5] +#define sVelocX data[6] +#define sVelocY data[7] + +static void AnimWavyMusicNotes(struct Sprite* sprite) { u8 index; - u8 a; - u8 b; - + u8 x, y; SetSpriteCoordsToAnimAttackerCoords(sprite); StartSpriteAnim(sprite, gBattleAnimArgs[0]); if ((index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[gBattleAnimArgs[1]][0])) != 0xFF) sprite->oam.paletteNum = index; - sprite->data[1] = gBattleAnimArgs[1]; - sprite->data[2] = 0; - sprite->data[3] = gBattleAnimArgs[2]; + sprite->sBlendTableIdx = gBattleAnimArgs[1]; + sprite->sBlendTimer = 0; + sprite->sBlendCycleTime = gBattleAnimArgs[2]; if (IsContest()) { - a = 48; - b = 40; + x = 48; + y = 40; } else { - a = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - b = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); } - sprite->data[4] = sprite->x << 4; - sprite->data[5] = sprite->y << 4; - AnimWavyMusicNotesGetNextPos(a - sprite->x, b - sprite->y, &sprite->data[6], &sprite->data[7], 40); - sprite->callback = AnimWavyMusicNotesStep; + sprite->sX = sprite->x << 4; + sprite->sY = sprite->y << 4; + AnimWavyMusicNotes_CalcVelocity(x - sprite->x, y - sprite->y, &sprite->sVelocX, &sprite->sVelocY, 40); + sprite->callback = AnimWavyMusicNotes_Step; } -static void AnimWavyMusicNotesGetNextPos(s16 a, s16 b, s16 *c, s16 *d, s8 e) +static void AnimWavyMusicNotes_CalcVelocity(s16 x, s16 y, s16 *velocX, s16 *velocY, s8 xSpeedFactor) { - int f; - int g; - - if (a < 0) - e = -e; + int x2; + int time; + if (x < 0) + xSpeedFactor = -xSpeedFactor; - f = a << 8; - g = f / e; - if (g == 0) - g = 1; + x2 = x * 256; + time = x2 / xSpeedFactor; + if (time == 0) + time = 1; - *c = f / g; - *d = (b << 8) / g; + *velocX = x2 / time; + *velocY = (y * 256) / time; } -static void AnimWavyMusicNotesStep(struct Sprite* sprite) +static void AnimWavyMusicNotes_Step(struct Sprite* sprite) { - s16 y, yDelta; + s16 y, trigIdx; u8 index; - sprite->data[0]++; - yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8); - sprite->data[4] += sprite->data[6]; - sprite->data[5] += sprite->data[7]; - sprite->x = sprite->data[4] >> 4; - sprite->y = sprite->data[5] >> 4; - sprite->y2 = Sin(yDelta, 15); + sprite->sMoveTimer++; + trigIdx = sprite->sMoveTimer * 5 - ((sprite->sMoveTimer * 5 / 256) << 8); + sprite->sX += sprite->sVelocX; + sprite->sY += sprite->sVelocY; + sprite->x = sprite->sX >> 4; + sprite->y = sprite->sY >> 4; + sprite->y2 = Sin(trigIdx, 15); y = sprite->y; - if (sprite->x < -16 || sprite->x > 256 || y < -16 || y > 128) + if (sprite->x < -16 || sprite->x > DISPLAY_WIDTH + 16 || y < -16 || y > DISPLAY_HEIGHT - 32) { DestroySpriteAndMatrix(sprite); } else { - if (sprite->data[3] && ++sprite->data[2] > sprite->data[3]) + if (sprite->sBlendCycleTime && ++sprite->sBlendTimer > sprite->sBlendCycleTime) { - sprite->data[2] = 0; - if (++sprite->data[1] > 3) - sprite->data[1] = 0; + sprite->sBlendTimer = 0; + if (++sprite->sBlendTableIdx > 3) + sprite->sBlendTableIdx = 0; - index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[sprite->data[1]][0]); + index = IndexOfSpritePaletteTag(sParticlesColorBlendTable[sprite->sBlendTableIdx][0]); if (index != 0xFF) sprite->oam.paletteNum = index; } @@ -5358,10 +5367,10 @@ void AnimFlyingMusicNotes(struct Sprite* sprite) sprite->data[5] = sprite->y << 4; sprite->data[6] = (gBattleAnimArgs[1] << 4) / 5; sprite->data[7] = (gBattleAnimArgs[2] << 7) / 5; - sprite->callback = AnimFlyingMusicNotesStep; + sprite->callback = AnimFlyingMusicNotes_Step; } -static void AnimFlyingMusicNotesStep(struct Sprite* sprite) +static void AnimFlyingMusicNotes_Step(struct Sprite* sprite) { sprite->data[4] += sprite->data[6]; sprite->data[5] += sprite->data[7]; @@ -5421,10 +5430,10 @@ void AnimSlowFlyingMusicNotes(struct Sprite* sprite) sprite->data[4] = sprite->data[3] - 40; InitAnimLinearTranslation(sprite); sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = AnimSlowFlyingMusicNotesStep; + sprite->callback = AnimSlowFlyingMusicNotes_Step; } -static void AnimSlowFlyingMusicNotesStep(struct Sprite* sprite) +static void AnimSlowFlyingMusicNotes_Step(struct Sprite* sprite) { if (!AnimTranslateLinear(sprite)) { @@ -5456,7 +5465,7 @@ void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite) void AnimThoughtBubble(struct Sprite* sprite) { - u8 a; + u8 animNum; u8 battler; if (gBattleAnimArgs[0] == 0) @@ -5465,15 +5474,15 @@ void AnimThoughtBubble(struct Sprite* sprite) battler = gBattleAnimTarget; SetSpriteNextToMonHead(battler, sprite); - a = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; + animNum = (GetBattlerSide(battler) == B_SIDE_PLAYER) ? 0 : 1; sprite->data[0] = gBattleAnimArgs[1]; - sprite->data[1] = a + 2; - StartSpriteAnim(sprite, a); - StoreSpriteCallbackInData6(sprite, AnimThoughtBubbleStep); + sprite->data[1] = animNum + 2; + StartSpriteAnim(sprite, animNum); + StoreSpriteCallbackInData6(sprite, AnimThoughtBubble_Step); sprite->callback = RunStoredCallbackWhenAnimEnds; } -static void AnimThoughtBubbleStep(struct Sprite* sprite) +static void AnimThoughtBubble_Step(struct Sprite* sprite) { if (--sprite->data[0] == 0) { @@ -5494,11 +5503,11 @@ void AnimMetronomeFinger(struct Sprite* sprite) SetSpriteNextToMonHead(battler, sprite); sprite->data[0] = 0; - StoreSpriteCallbackInData6(sprite, AnimMetronomeFingerStep); + StoreSpriteCallbackInData6(sprite, AnimMetronomeFinger_Step); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } -static void AnimMetronomeFingerStep(struct Sprite* sprite) +static void AnimMetronomeFinger_Step(struct Sprite* sprite) { if (++sprite->data[0] > 16) { @@ -5527,17 +5536,17 @@ void AnimFollowMeFinger(struct Sprite* sprite) sprite->data[2] = sprite->subpriority; sprite->data[3] = sprite->subpriority + 4; sprite->data[4] = 0; - StoreSpriteCallbackInData6(sprite, AnimFollowMeFingerStep1); + StoreSpriteCallbackInData6(sprite, AnimFollowMeFinger_Step1); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } -static void AnimFollowMeFingerStep1(struct Sprite* sprite) +static void AnimFollowMeFinger_Step1(struct Sprite* sprite) { if (++sprite->data[4] > 12) - sprite->callback = AnimFollowMeFingerStep2; + sprite->callback = AnimFollowMeFinger_Step2; } -static void AnimFollowMeFingerStep2(struct Sprite* sprite) +static void AnimFollowMeFinger_Step2(struct Sprite* sprite) { s16 x1, x2; @@ -5547,7 +5556,7 @@ static void AnimFollowMeFingerStep2(struct Sprite* sprite) if (--sprite->data[0] == 0) { sprite->x2 = 0; - sprite->callback = AnimMetronomeFingerStep; + sprite->callback = AnimMetronomeFinger_Step; return; } else @@ -5588,21 +5597,21 @@ void AnimTauntFinger(struct Sprite* sprite) sprite->data[0] = 3; } - sprite->callback = AnimTauntFingerStep1; + sprite->callback = AnimTauntFinger_Step1; } -static void AnimTauntFingerStep1(struct Sprite* sprite) +static void AnimTauntFinger_Step1(struct Sprite* sprite) { if (++sprite->data[1] > 10) { sprite->data[1] = 0; StartSpriteAnim(sprite, sprite->data[0]); - StoreSpriteCallbackInData6(sprite, AnimTauntFingerStep2); + StoreSpriteCallbackInData6(sprite, AnimTauntFinger_Step2); sprite->callback = RunStoredCallbackWhenAnimEnds; } } -static void AnimTauntFingerStep2(struct Sprite* sprite) +static void AnimTauntFinger_Step2(struct Sprite* sprite) { if (++sprite->data[1] > 5) DestroyAnimSprite(sprite); diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 5974491f1..455c4dfc7 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -2072,7 +2072,7 @@ static void CreateMinimizeSprite(struct Task* task, u8 taskId) { if ((matrixNum = AllocOamMatrix()) == 0xFF) { - obj_delete_but_dont_free_vram(&gSprites[spriteId]); + DestroySpriteWithActiveSheet(&gSprites[spriteId]); } else { @@ -2100,7 +2100,7 @@ static void ClonedMinizeSprite_Step(struct Sprite *sprite) { gTasks[sprite->data[1]].data[sprite->data[2]]--; FreeOamMatrix(sprite->oam.matrixNum); - obj_delete_but_dont_free_vram(sprite); + DestroySpriteWithActiveSheet(sprite); } } @@ -3082,7 +3082,7 @@ static void FakeOutStep2(u8 taskId) { gTasks[taskId].data[11] = 0x88; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN); - BlendPalettes(SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0), 16, RGB_WHITE); + BlendPalettes(GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0), 16, RGB_WHITE); } else if (gTasks[taskId].data[10] > 4) { diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index b7c1fa2cc..4a279249d 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -4743,7 +4743,7 @@ void AnimTask_OdorSleuthMovement(u8 taskId) spriteId2 = CloneBattlerSpriteWithBlend(ANIM_TARGET); if (spriteId2 < 0) { - obj_delete_but_dont_free_vram(&gSprites[spriteId1]); + DestroySpriteWithActiveSheet(&gSprites[spriteId1]); DestroyAnimVisualTask(taskId); return; } @@ -4823,7 +4823,7 @@ static void MoveOdorSleuthClone(struct Sprite *sprite) if (sprite->data[5] < 0) { gTasks[sprite->data[6]].data[sprite->data[7]]--; - obj_delete_but_dont_free_vram(sprite); + DestroySpriteWithActiveSheet(sprite); } } break; diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index a531cec44..43c451f9f 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -563,7 +563,7 @@ static void sub_80B59D4(u8 taskId) break; if (task->data[1] <= 80) break; - obj_delete_but_dont_free_vram(&gSprites[task->data[0]]); + DestroySpriteWithActiveSheet(&gSprites[task->data[0]]); task->data[4] = 1; break; case 1: @@ -718,7 +718,7 @@ static void sub_80B5DCC(u8 taskId) break; case 2: gSprites[task->data[14]].invisible = TRUE; - obj_delete_but_dont_free_vram(&gSprites[task->data[0]]); + DestroySpriteWithActiveSheet(&gSprites[task->data[0]]); FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON); SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -980,7 +980,7 @@ static void sub_80B6468(u8 taskId) right = 240; top = 0; bottom = 112; - selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0)); gTasks[taskId].func = sub_80B65F0; } diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index fa59a20c9..61fe2fb8f 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -1242,7 +1242,7 @@ void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) } } -u32 SelectBattleAnimSpriteAndBgPalettes(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7) +u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7) { u32 selectedPalettes = 0; u32 shift; @@ -1467,7 +1467,7 @@ s16 CloneBattlerSpriteWithBlend(u8 animBattler) return -1; } -void obj_delete_but_dont_free_vram(struct Sprite *sprite) +void DestroySpriteWithActiveSheet(struct Sprite *sprite) { sprite->usingSheet = TRUE; DestroySprite(sprite); @@ -2204,7 +2204,7 @@ static void SpriteCB_PunchTrace(struct Sprite *sprite) if (--sprite->data[0] == 0) { --gTasks[sprite->data[1]].data[5]; - obj_delete_but_dont_free_vram(sprite); + DestroySpriteWithActiveSheet(sprite); } } diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index 157af414a..9deb261dc 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -326,7 +326,7 @@ u32 UnpackSelectedBattleAnimPalettes(s16 selector) u8 arg5 = (selector >> 5) & 1; u8 arg6 = (selector >> 6) & 1; - return SelectBattleAnimSpriteAndBgPalettes(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6); + return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6); } static void AnimSimplePaletteBlendStep(struct Sprite *sprite) @@ -659,7 +659,7 @@ void AnimTask_InvertScreenColor(u8 taskId) u8 targetBattler = gBattleAnimTarget; if (gBattleAnimArgs[0] & 0x100) - selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); if (gBattleAnimArgs[1] & 0x100) selectedPalettes |= (0x10000 << attackerBattler); if (gBattleAnimArgs[2] & 0x100) diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index 1c31bfdca..97e1714ba 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -1024,7 +1024,7 @@ static void sub_80B3D78(u8 taskId) ++task->data[0]; break; case 2: - obj_delete_but_dont_free_vram(&gSprites[task->data[15]]); + DestroySpriteWithActiveSheet(&gSprites[task->data[15]]); ++task->data[0]; break; case 3: diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c index 238e0b3bd..677200b90 100644 --- a/src/battle_anim_special.c +++ b/src/battle_anim_special.c @@ -660,7 +660,7 @@ void AnimTask_SwitchOutBallEffect(u8 taskId) priority = gSprites[spriteId].oam.priority; subpriority = gSprites[spriteId].subpriority; gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId); - selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId); gTasks[taskId].data[0]++; break; diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 184d21884..4a44031db 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -279,7 +279,7 @@ static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite) else { --gTasks[sprite->data[1]].data[sprite->data[2]]; - obj_delete_but_dont_free_vram(sprite); + DestroySpriteWithActiveSheet(sprite); } } @@ -584,7 +584,7 @@ void AnimTask_Flash(u8 taskId) sub_80BB790(selectedPalettes, 0); gTasks[taskId].data[14] = selectedPalettes >> 16; - selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; + selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; sub_80BB790(selectedPalettes, 0xFFFF); gTasks[taskId].data[15] = selectedPalettes; gTasks[taskId].data[0] = 0; @@ -856,7 +856,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId) s32 paletteIndex = 0; if (gBattleAnimArgs[0] == 0) - for (selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + for (selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); (selectedPalettes & 1) == 0; ++paletteIndex) selectedPalettes >>= 1; @@ -874,7 +874,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId) s32 paletteIndex = 0; if (gBattleAnimArgs[0] == 0) - for (selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + for (selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); (selectedPalettes & 1) == 0; ++paletteIndex) selectedPalettes >>= 1; @@ -892,7 +892,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) s32 paletteIndex = 0; if (gBattleAnimArgs[0] == 0) - for (selectedPalettes = SelectBattleAnimSpriteAndBgPalettes(1, 0, 0, 0, 0, 0, 0); + for (selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); (selectedPalettes & 1) == 0; ++paletteIndex) selectedPalettes >>= 1; From bcab96fb861f258a7a4cd8813d557d32b89a269c Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 16 Aug 2022 13:54:37 -0400 Subject: [PATCH 08/38] Sync battle anim - effects 2 --- data/battle_anim_scripts.s | 2 +- include/battle_anim.h | 9 +- src/battle_anim_effects_2.c | 329 +++++++++++++++++++----------------- src/battle_anim_effects_3.c | 2 +- src/battle_anim_mons.c | 2 +- src/battle_anim_rock.c | 4 +- 6 files changed, 180 insertions(+), 168 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 85d7201f1..cb7f8ca9e 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -3478,7 +3478,7 @@ ExtremeSpeedContinue:: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1 waitbgfadein - createvisualtask AnimTask_StretchAttacker, 2 + createvisualtask AnimTask_AttackerStretchAndDisappear, 2 loopsewithpan SE_M_RAZOR_WIND2, 192, 8, 3 waitforvisualfinish delay 1 diff --git a/include/battle_anim.h b/include/battle_anim.h index fde2a87aa..3ee687e55 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -231,8 +231,8 @@ void AnimCirclingFinger(struct Sprite *); void AnimBouncingMusicNote(struct Sprite *); void AnimVibrateBattlerBack(struct Sprite *); void AnimMovingClamp(struct Sprite *); -void Anim_KinesisZapEnergy(struct Sprite *); -void Anim_SwordsDanceBlade(struct Sprite *); +void AnimKinesisZapEnergy(struct Sprite *); +void AnimSwordsDanceBlade(struct Sprite *); void AnimSonicBoomProjectile(struct Sprite *); void AnimAirWaveProjectile(struct Sprite *); void AnimVoidLines(struct Sprite *); @@ -253,7 +253,7 @@ void AnimSpeedDust(struct Sprite *); void AnimHealBellMusicNote(struct Sprite *); void AnimMagentaHeart(struct Sprite *); void AnimRedHeartProjectile(struct Sprite *); -void AnimParticuleBurst(struct Sprite *); +void AnimParticleBurst(struct Sprite *); void AnimRedHeartRising(struct Sprite *); void AnimOrbitFast(struct Sprite *); void AnimOrbitScatter(struct Sprite *); @@ -309,7 +309,6 @@ void AnimForesightMagnifyingGlass(struct Sprite *); void AnimMeteorMashStar(struct Sprite *); void AnimBlockX(struct Sprite *); void AnimUnusedItemBagSteal(struct Sprite *); -void AnimParticuleBurst(struct Sprite *); void AnimKnockOffStrike(struct Sprite *); void AnimRecycle(struct Sprite *); @@ -364,7 +363,7 @@ u8 GetAnimBattlerSpriteId(u8 animBattler); void StoreSpriteCallbackInData6(struct Sprite *sprite, SpriteCallback callback); void TranslateSpriteInCircleOverDuration(struct Sprite *sprite); void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite); -void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite); +void TranslateSpriteInEllipse(struct Sprite *sprite); void WaitAnimForDuration(struct Sprite *sprite); void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite); void TranslateSpriteLinear(struct Sprite *sprite); diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 455c4dfc7..cc67bbbc5 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -14,24 +14,24 @@ static void AnimBouncingMusicNote_Step(struct Sprite *); static void AnimMovingClamp_Step(struct Sprite *); static void AnimMovingClamp_End(struct Sprite *); -static void AnimTask_WithdrawStep(u8); -static void AnimSwordsDanceBladeStep(struct Sprite *); +static void AnimTask_Withdraw_Step(u8); +static void AnimSwordsDanceBlade_Step(struct Sprite *); static void AnimVoidLines_Step(struct Sprite *); static void AnimFallingCoin_Step(struct Sprite *); static void AnimBulletSeed_Step1(struct Sprite *); static void AnimBulletSeed_Step2(struct Sprite *); -static void AnimViceGripPincerStep(struct Sprite *); -static void AnimGuillotinePincerStep1(struct Sprite *); -static void AnimGuillotinePincerStep2(struct Sprite *); -static void AnimGuillotinePincerStep3(struct Sprite *); -static void AnimTask_GrowAndGreyscaleStep(u8); -static void AnimTask_MinimizeStep1(u8); +static void AnimViceGripPincer_Step(struct Sprite *); +static void AnimGuillotinePincer_Step1(struct Sprite *); +static void AnimGuillotinePincer_Step2(struct Sprite *); +static void AnimGuillotinePincer_Step3(struct Sprite *); +static void AnimTask_GrowAndGreyscale_Step(u8); +static void AnimTask_Minimize_Step1(u8); static void CreateMinimizeSprite(struct Task *, u8); static void ClonedMinizeSprite_Step(struct Sprite *); -static void AnimTask_SplashStep(u8); -static void AnimTask_GrowAndShrinkStep(u8); -static void ThrashMoveMonStep(u8); -static void ThrashMoveMon(u8); +static void AnimTask_Splash_Step(u8); +static void AnimTask_GrowAndShrink_Step(u8); +static void AnimTask_ThrashMoveMonHorizontal_Step(u8); +static void AnimTask_ThrashMoveMonVertical_Step(u8); static void AnimTask_SketchDrawMon_Step(u8); static void AnimPencil_Step(struct Sprite *); static void AnimSoftBoiledEgg_Step1(struct Sprite *); @@ -41,27 +41,26 @@ static void AnimSoftBoiledEgg_Step3_Callback1(struct Sprite *); static void AnimSoftBoiledEgg_Step3_Callback2(struct Sprite *); static void AnimSoftBoiledEgg_Step4(struct Sprite *); static void AnimSoftBoiledEgg_Step4_Callback(struct Sprite *); -static void StretchAttacker_Step(u8); -static void ExtremeSpeedImpact_Step(u8); -static void ExtremeSpeedMonReappear_Step(u8); -static void SpeedDust_Step1(u8); -static void FakeOutStep1(u8); -static void FakeOutStep2(u8); +static void AnimTask_AttackerStretchAndDisappear_Step(u8); +static void AnimTask_ExtremeSpeedImpact_Step(u8); +static void AnimTask_ExtremeSpeedMonReappear_Step(u8); +static void AnimTask_SpeedDust_Step(u8); +static void AnimTask_FakeOut_Step1(u8); +static void AnimTask_FakeOut_Step2(u8); static void AnimRedHeartProjectile_Step(struct Sprite *); static void AnimRedHeartRising_Step(struct Sprite *); -static void HeartsBackground_Step(u8); -static void ScaryFace_Step(u8); -static void AnimOrbitFastStep(struct Sprite *); -static void AnimOrbitScatterStep(struct Sprite *); +static void AnimTask_HeartsBackground_Step(u8); +static void AnimTask_ScaryFace_Step(u8); +static void AnimOrbitFast_Step(struct Sprite *); +static void AnimOrbitScatter_Step(struct Sprite *); static void AnimMovementWaves_Step(struct Sprite *); -static void UproarDistortion_Step(u8); +static void AnimTask_UproarDistortion_Step(u8); static void AnimJaggedMusicNote_Step(struct Sprite *); static void AnimPerishSongMusicNote_Step1(struct Sprite *); static void AnimPerishSongMusicNote_Step2(struct Sprite *); -// Data // Unused -static const struct SpriteTemplate sUnknown_83E3ADC = +static const struct SpriteTemplate sCirclingFingerSpriteTemplate = { .tileTag = ANIM_TAG_FINGER, .paletteTag = ANIM_TAG_FINGER, @@ -72,19 +71,20 @@ static const struct SpriteTemplate sUnknown_83E3ADC = .callback = AnimCirclingFinger, }; -static const union AnimCmd sUnknown_83E3AF4[] = +static const union AnimCmd sAnim_BouncingMusicNote[] = { ANIMCMD_FRAME(4, 1), ANIMCMD_END, }; -static const union AnimCmd *const sUnknown_83E3AFC[] = +// Unused (association assumed) +static const union AnimCmd *const sAnims_BouncingMusicNote[] = { - sUnknown_83E3AF4, + sAnim_BouncingMusicNote, }; // Unused -static const struct SpriteTemplate sUnknown_83E3B00 = +static const struct SpriteTemplate sBouncingMusicNoteSpriteTemplate = { .tileTag = ANIM_TAG_MUSIC_NOTES, .paletteTag = ANIM_TAG_MUSIC_NOTES, @@ -96,7 +96,7 @@ static const struct SpriteTemplate sUnknown_83E3B00 = }; // Unused -static const struct SpriteTemplate sUnknown_83E3B18 = +static const struct SpriteTemplate sVibrateBattlerBackSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -108,7 +108,7 @@ static const struct SpriteTemplate sUnknown_83E3B18 = }; // Unused -static const struct SpriteTemplate sUnknown_83E3B30 = +static const struct SpriteTemplate sMovingClampSpriteTemplate = { .tileTag = ANIM_TAG_CLAMP, .paletteTag = ANIM_TAG_CLAMP, @@ -119,7 +119,7 @@ static const struct SpriteTemplate sUnknown_83E3B30 = .callback = AnimMovingClamp, }; -static const union AnimCmd sUnknown_83E3B48[] = +static const union AnimCmd sAnim_SmallExplosion[] = { ANIMCMD_FRAME(0, 9), ANIMCMD_FRAME(16, 3), @@ -128,32 +128,32 @@ static const union AnimCmd sUnknown_83E3B48[] = ANIMCMD_END, }; -static const union AnimCmd *const sUnknown_83E3B5C[] = +static const union AnimCmd *const sAnims_SmallExplosion[] = { - sUnknown_83E3B48, + sAnim_SmallExplosion, }; -static const union AffineAnimCmd sUnknown_83E3B60[] = +static const union AffineAnimCmd sAffineAnim_SmallExplosion[] = { AFFINEANIMCMD_FRAME(80, 80, 0, 0), AFFINEANIMCMD_FRAME(9, 9, 0, 18), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const sUnknown_83E3B78[] = +static const union AffineAnimCmd *const sAffineAnims_SmallExplosion[] = { - sUnknown_83E3B60, + sAffineAnim_SmallExplosion, }; // Unused -static const struct SpriteTemplate sUnknown_83E3B7C = +static const struct SpriteTemplate sSmallExplosionSpriteTemplate = { .tileTag = ANIM_TAG_EXPLOSION_6, .paletteTag = ANIM_TAG_EXPLOSION_6, .oam = &gOamData_AffineNormal_ObjNormal_32x32, - .anims = sUnknown_83E3B5C, + .anims = sAnims_SmallExplosion, .images = NULL, - .affineAnims = sUnknown_83E3B78, + .affineAnims = sAffineAnims_SmallExplosion, .callback = AnimSpriteOnMonPos, }; @@ -183,7 +183,7 @@ const struct SpriteTemplate gKinesisZapEnergySpriteTemplate = .anims = sKinesisZapEnergyAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = Anim_KinesisZapEnergy, + .callback = AnimKinesisZapEnergy, }; static const union AffineAnimCmd sSwordsDanceBladeAffineAnimCmds[] = @@ -207,7 +207,7 @@ const struct SpriteTemplate gSwordsDanceBladeSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = sSwordsDanceBladeAffineAnimTable, - .callback = Anim_SwordsDanceBlade, + .callback = AnimSwordsDanceBlade, }; const struct SpriteTemplate gSonicBoomSpriteTemplate = @@ -316,7 +316,7 @@ const struct SpriteTemplate gEggThrowSpriteTemplate = .callback = AnimThrowProjectile, }; -static const struct SpriteTemplate sUnknown_83E3D18 = +static const struct SpriteTemplate sVoidLinesSpriteTemplate = { .tileTag = ANIM_TAG_VOID_LINES, .paletteTag = ANIM_TAG_VOID_LINES, @@ -830,7 +830,9 @@ const struct SpriteTemplate gBellSpriteTemplate = .callback = AnimSpriteOnMonPos, }; -const u16 gMusicNotePaletteTagsTable[] = +#define NUM_MUSIC_NOTE_PAL_TAGS 3 + +const u16 gMusicNotePaletteTagsTable[NUM_MUSIC_NOTE_PAL_TAGS] = { ANIM_TAG_MUSIC_NOTES_2, ANIM_SPRITES_START - 1, @@ -859,7 +861,7 @@ const struct SpriteTemplate gMagentaHeartSpriteTemplate = .callback = AnimMagentaHeart, }; -static const union AffineAnimCmd sUnknown_83E4200[] = +static const union AffineAnimCmd sAffineAnims_StretchBattlerUp[] = { AFFINEANIMCMD_FRAME(10, -13, 0, 10), AFFINEANIMCMD_FRAME(-10, 13, 0, 10), @@ -885,7 +887,7 @@ const struct SpriteTemplate gRedHeartBurstSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimParticuleBurst, + .callback = AnimParticleBurst, }; const struct SpriteTemplate gRedHeartRisingSpriteTemplate = @@ -1044,7 +1046,7 @@ const struct SpriteTemplate gDevilSpriteTemplate = .callback = AnimDevil, }; -static const union AnimCmd sFurySwipesAnimCmd1[] = +static const union AnimCmd sAnim_FurySwipes[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(16, 4), @@ -1053,7 +1055,7 @@ static const union AnimCmd sFurySwipesAnimCmd1[] = ANIMCMD_END, }; -static const union AnimCmd sFurySwipesAnimCmd2[] = +static const union AnimCmd sAnim_FurySwipes_Flipped[] = { ANIMCMD_FRAME(0, 4, .hFlip = TRUE), ANIMCMD_FRAME(16, 4, .hFlip = TRUE), @@ -1062,10 +1064,10 @@ static const union AnimCmd sFurySwipesAnimCmd2[] = ANIMCMD_END, }; -static const union AnimCmd *const sFurySwipesAnimTable[] = +static const union AnimCmd *const sAnims_FurySwipes[] = { - sFurySwipesAnimCmd1, - sFurySwipesAnimCmd2, + sAnim_FurySwipes, + sAnim_FurySwipes_Flipped, }; const struct SpriteTemplate gFurySwipesSpriteTemplate = @@ -1073,7 +1075,7 @@ const struct SpriteTemplate gFurySwipesSpriteTemplate = .tileTag = ANIM_TAG_SWIPE, .paletteTag = ANIM_TAG_SWIPE, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sFurySwipesAnimTable, + .anims = sAnims_FurySwipes, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFurySwipes, @@ -1209,21 +1211,30 @@ const struct SpriteTemplate gGuardRingSpriteTemplate = .callback = AnimGuardRing, }; -// Functions +#define sAmplitudeX data[1] +#define sCircleSpeed data[2] +#define sMoveSteps data[3] +#define sAmplitudeY data[4] + void AnimCirclingFinger(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); sprite->y += gBattleAnimArgs[1]; - sprite->data[1] = gBattleAnimArgs[2]; - sprite->data[2] = gBattleAnimArgs[4]; - sprite->data[3] = gBattleAnimArgs[5]; - sprite->data[4] = gBattleAnimArgs[3]; + sprite->sAmplitudeX = gBattleAnimArgs[2]; + sprite->sCircleSpeed = gBattleAnimArgs[4]; + sprite->sMoveSteps = gBattleAnimArgs[5]; + sprite->sAmplitudeY = gBattleAnimArgs[3]; StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = TranslateSpriteInEllipseOverDuration; + sprite->callback = TranslateSpriteInEllipse; sprite->callback(sprite); } +#undef sAmplitudeX +#undef sCircleSpeed +#undef sMoveSteps +#undef sAmplitudeY + void AnimBouncingMusicNote(struct Sprite *sprite) { u8 battler; @@ -1326,10 +1337,10 @@ static void AnimMovingClamp_End(struct Sprite *sprite) void AnimTask_Withdraw(u8 taskId) { PrepareBattlerSpriteForRotScale(gBattlerSpriteIds[gBattleAnimAttacker], ST_OAM_OBJ_NORMAL); - gTasks[taskId].func = AnimTask_WithdrawStep; + gTasks[taskId].func = AnimTask_Withdraw_Step; } -static void AnimTask_WithdrawStep(u8 taskId) +static void AnimTask_Withdraw_Step(u8 taskId) { u8 spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; s16 rotation; @@ -1379,7 +1390,7 @@ static void AnimTask_WithdrawStep(u8 taskId) // arg 0: x pixel offset // arg 1: y pixel offset // arg 2: vertical flip -void Anim_KinesisZapEnergy(struct Sprite *sprite) +void AnimKinesisZapEnergy(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -1407,14 +1418,14 @@ void Anim_KinesisZapEnergy(struct Sprite *sprite) // Animates a sword that rises into the air after a brief pause. // arg 0: x pixel offset // arg 1: y pixel offset -void Anim_SwordsDanceBlade(struct Sprite *sprite) +void AnimSwordsDanceBlade(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; - StoreSpriteCallbackInData6(sprite, AnimSwordsDanceBladeStep); + StoreSpriteCallbackInData6(sprite, AnimSwordsDanceBlade_Step); } -static void AnimSwordsDanceBladeStep(struct Sprite *sprite) +static void AnimSwordsDanceBlade_Step(struct Sprite *sprite) { sprite->data[0] = 6; sprite->data[2] = sprite->x; @@ -1555,13 +1566,13 @@ void AnimAirWaveProjectile(struct Sprite *sprite) } } -static void AirCutterProjectileStep2(u8 taskId) +static void AirCutterProjectile_Step2(u8 taskId) { if (gTasks[taskId].data[1] == 0) DestroyAnimVisualTask(taskId); } -static void AirCutterProjectileStep1(u8 taskId) +static void AirCutterProjectile_Step1(u8 taskId) { if (gTasks[taskId].data[0]-- <= 0) { @@ -1586,7 +1597,7 @@ static void AirCutterProjectileStep1(u8 taskId) gTasks[taskId].data[1]++; PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(-SOUND_PAN_TARGET)); if (gTasks[taskId].data[1] > 2) - gTasks[taskId].func = AirCutterProjectileStep2; + gTasks[taskId].func = AirCutterProjectile_Step2; } } @@ -1687,13 +1698,13 @@ void AnimTask_AirCutterProjectile(u8 taskId) if (gTasks[taskId].data[2] < 3) gTasks[taskId].data[2] = 3; - gTasks[taskId].func = AirCutterProjectileStep1; + gTasks[taskId].func = AirCutterProjectile_Step1; } void AnimVoidLines(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); - sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sUnknown_83E3D18.paletteTag) << 4); + sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sVoidLinesSpriteTemplate.paletteTag) << 4); sprite->callback = AnimVoidLines_Step; } @@ -1865,10 +1876,10 @@ void AnimViceGripPincer(struct Sprite *sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + endXOffset; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + endYOffset; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, AnimViceGripPincerStep); + StoreSpriteCallbackInData6(sprite, AnimViceGripPincer_Step); } -static void AnimViceGripPincerStep(struct Sprite *sprite) +static void AnimViceGripPincer_Step(struct Sprite *sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); @@ -1902,10 +1913,10 @@ void AnimGuillotinePincer(struct Sprite *sprite) InitAnimLinearTranslation(sprite); sprite->data[5] = gBattleAnimArgs[0]; sprite->data[6] = sprite->data[0]; - sprite->callback = AnimGuillotinePincerStep1; + sprite->callback = AnimGuillotinePincer_Step1; } -static void AnimGuillotinePincerStep1(struct Sprite *sprite) +static void AnimGuillotinePincer_Step1(struct Sprite *sprite) { if (AnimTranslateLinear(sprite) && sprite->animEnded) { @@ -1920,11 +1931,11 @@ static void AnimGuillotinePincerStep1(struct Sprite *sprite) sprite->data[2] ^= 1; sprite->data[4] = 0; sprite->data[3] = 0; - sprite->callback = AnimGuillotinePincerStep2; + sprite->callback = AnimGuillotinePincer_Step2; } } -static void AnimGuillotinePincerStep2(struct Sprite *sprite) +static void AnimGuillotinePincer_Step2(struct Sprite *sprite) { if (sprite->data[3]) { @@ -1941,11 +1952,11 @@ static void AnimGuillotinePincerStep2(struct Sprite *sprite) sprite->data[3] = 0; sprite->animPaused = FALSE; StartSpriteAnim(sprite, sprite->data[5] ^ 1); - sprite->callback = AnimGuillotinePincerStep3; + sprite->callback = AnimGuillotinePincer_Step3; } } -static void AnimGuillotinePincerStep3(struct Sprite *sprite) +static void AnimGuillotinePincer_Step3(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) DestroyAnimSprite(sprite); @@ -1962,10 +1973,10 @@ void AnimTask_GrowAndGreyscale(u8 taskId) SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0); SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE); gTasks[taskId].data[0] = 80; - gTasks[taskId].func = AnimTask_GrowAndGreyscaleStep; + gTasks[taskId].func = AnimTask_GrowAndGreyscale_Step; } -static void AnimTask_GrowAndGreyscaleStep(u8 taskId) +static void AnimTask_GrowAndGreyscale_Step(u8 taskId) { if (--gTasks[taskId].data[0] == -1) { @@ -1993,10 +2004,10 @@ void AnimTask_Minimize(u8 taskId) task->data[5] = 0; task->data[6] = 0; task->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); - task->func = AnimTask_MinimizeStep1; + task->func = AnimTask_Minimize_Step1; } -static void AnimTask_MinimizeStep1(u8 taskId) +static void AnimTask_Minimize_Step1(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2124,11 +2135,11 @@ void AnimTask_Splash(u8 taskId) task->data[3] = 0; task->data[4] = 0; PrepareAffineAnimInTaskData(task, spriteId, sSplashEffectAffineAnimCmds); - task->func = AnimTask_SplashStep; + task->func = AnimTask_Splash_Step; } } -static void AnimTask_SplashStep(u8 taskId) +static void AnimTask_Splash_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2189,10 +2200,10 @@ void AnimTask_GrowAndShrink(u8 taskId) u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); PrepareAffineAnimInTaskData(task, spriteId, sGrowAndShrinkAffineAnimCmds); - task->func = AnimTask_GrowAndShrinkStep; + task->func = AnimTask_GrowAndShrink_Step; } -static void AnimTask_GrowAndShrinkStep(u8 taskId) +static void AnimTask_GrowAndShrink_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2261,10 +2272,10 @@ void AnimTask_ThrashMoveMonHorizontal(u8 taskId) task->data[0] = spriteId; task->data[1] = 0; PrepareAffineAnimInTaskData(task, spriteId, sThrashMoveMonAffineAnimCmds); - task->func = ThrashMoveMonStep; + task->func = AnimTask_ThrashMoveMonHorizontal_Step; } -static void ThrashMoveMonStep(u8 taskId) +static void AnimTask_ThrashMoveMonHorizontal_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2290,10 +2301,10 @@ void AnimTask_ThrashMoveMonVertical(u8 taskId) if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) task->data[2] *= -1; - task->func = ThrashMoveMon; + task->func = AnimTask_ThrashMoveMonVertical_Step; } -static void ThrashMoveMon(u8 taskId) +static void AnimTask_ThrashMoveMonVertical_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2537,7 +2548,7 @@ void AnimBlendThinRing(struct Sprite *sprite) sprite->callback(sprite); } -void sub_80A8C84(struct Sprite *sprite) +static void AnimHyperVoiceRing_WaitEnd(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) { @@ -2548,14 +2559,14 @@ void sub_80A8C84(struct Sprite *sprite) void AnimHyperVoiceRing(struct Sprite *sprite) { - u16 r9 = 0; - u16 r6 = 0; - s16 sp0 = 0; - s16 sp1 = 0; - u8 sp4; + u16 startX = 0; + u16 startY = 0; + s16 x = 0; + s16 y = 0; + u8 yCoordType; u8 battler1; u8 battler2; - u8 r10; + u8 xCoordType; if (gBattleAnimArgs[5] == 0) { @@ -2570,18 +2581,18 @@ void AnimHyperVoiceRing(struct Sprite *sprite) if (!gBattleAnimArgs[6]) { - r10 = 0; - sp4 = 1; + xCoordType = BATTLER_COORD_X; + yCoordType = BATTLER_COORD_Y; } else { - r10 = 2; - sp4 = 3; + xCoordType = BATTLER_COORD_X_2; + yCoordType = BATTLER_COORD_Y_PIC_OFFSET; } if (GetBattlerSide(battler1) != B_SIDE_PLAYER) { - r9 = GetBattlerSpriteCoord(battler1, r10) + gBattleAnimArgs[0]; + startX = GetBattlerSpriteCoord(battler1, xCoordType) + gBattleAnimArgs[0]; if (IsBattlerSpriteVisible(BATTLE_PARTNER(battler2))) sprite->subpriority = gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler2)]].subpriority - 1; else @@ -2589,7 +2600,7 @@ void AnimHyperVoiceRing(struct Sprite *sprite) } else { - r9 = GetBattlerSpriteCoord(battler1, r10) - gBattleAnimArgs[0]; + startX = GetBattlerSpriteCoord(battler1, xCoordType) - gBattleAnimArgs[0]; if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler1))) { if (gSprites[gBattlerSpriteIds[battler1]].x < gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler1)]].x) @@ -2604,30 +2615,30 @@ void AnimHyperVoiceRing(struct Sprite *sprite) } - r6 = GetBattlerSpriteCoord(battler1, sp4) + gBattleAnimArgs[1]; + startY = GetBattlerSpriteCoord(battler1, yCoordType) + gBattleAnimArgs[1]; if (!IsContest() && IsBattlerSpriteVisible(BATTLE_PARTNER(battler2))) { - SetAverageBattlerPositions(battler2, gBattleAnimArgs[6], &sp0, &sp1); + SetAverageBattlerPositions(battler2, gBattleAnimArgs[6], &x, &y); } else { - sp0 = GetBattlerSpriteCoord(battler2, r10); - sp1 = GetBattlerSpriteCoord(battler2, sp4); + x = GetBattlerSpriteCoord(battler2, xCoordType); + y = GetBattlerSpriteCoord(battler2, yCoordType); } if (GetBattlerSide(battler2) != B_SIDE_PLAYER) - sp0 += gBattleAnimArgs[3]; + x += gBattleAnimArgs[3]; else - sp0 -= gBattleAnimArgs[3]; + x -= gBattleAnimArgs[3]; - sp1 += gBattleAnimArgs[4]; - sprite->x = sprite->data[1] = r9; - sprite->y = sprite->data[3] = r6; - sprite->data[2] = sp0; - sprite->data[4] = sp1; + y += gBattleAnimArgs[4]; + sprite->x = sprite->data[1] = startX; + sprite->y = sprite->data[3] = startY; + sprite->data[2] = x; + sprite->data[4] = y; sprite->data[0] = gBattleAnimArgs[0]; InitAnimLinearTranslation(sprite); - sprite->callback = sub_80A8C84; + sprite->callback = AnimHyperVoiceRing_WaitEnd; sprite->callback(sprite); } @@ -2749,17 +2760,18 @@ static void AnimSoftBoiledEgg_Step4_Callback(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimTask_StretchAttacker(u8 taskId) +// Used by Extremespeed +void AnimTask_AttackerStretchAndDisappear(u8 taskId) { struct Task* task = &gTasks[taskId]; u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); task->data[0] = spriteId; PrepareAffineAnimInTaskData(task, spriteId, sStretchAttackerAffineAnimCmds); - task->func = StretchAttacker_Step; + task->func = AnimTask_AttackerStretchAndDisappear_Step; } -static void StretchAttacker_Step(u8 taskId) +static void AnimTask_AttackerStretchAndDisappear_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2792,10 +2804,10 @@ void AnimTask_ExtremeSpeedImpact(u8 taskId) } task->data[15] = GetAnimBattlerSpriteId(ANIM_TARGET); - task->func = ExtremeSpeedImpact_Step; + task->func = AnimTask_ExtremeSpeedImpact_Step; } -static void ExtremeSpeedImpact_Step(u8 taskId) +static void AnimTask_ExtremeSpeedImpact_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2853,10 +2865,10 @@ void AnimTask_ExtremeSpeedMonReappear(u8 taskId) task->data[13] = 14; task->data[14] = 2; task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->func = ExtremeSpeedMonReappear_Step; + task->func = AnimTask_ExtremeSpeedMonReappear_Step; } -static void ExtremeSpeedMonReappear_Step(u8 taskId) +static void AnimTask_ExtremeSpeedMonReappear_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2901,10 +2913,10 @@ void AnimTask_SpeedDust(u8 taskId) task->data[13] = 0; task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); - task->func = SpeedDust_Step1; + task->func = AnimTask_SpeedDust_Step; } -static void SpeedDust_Step1(u8 taskId) +static void AnimTask_SpeedDust_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; @@ -2984,15 +2996,15 @@ void AnimSpeedDust(struct Sprite *sprite) void AnimTask_LoadMusicNotesPals(u8 taskId) { int i; - u8 paletteNums[3]; + u8 paletteNums[NUM_MUSIC_NOTE_PAL_TAGS]; paletteNums[0] = IndexOfSpritePaletteTag(ANIM_TAG_MUSIC_NOTES_2); - for (i = 1; i < 3; i++) + for (i = 1; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) paletteNums[i] = AllocSpritePalette(ANIM_SPRITES_START - i); gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000); LZDecompressWram(gBattleAnimSpritePal_MusicNotes2, gMonSpritesGfxPtr->multiUseBuffer); - for (i = 0; i < 3; i++) + for (i = 0; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) LoadPalette(&gMonSpritesGfxPtr->multiUseBuffer[i * 32], (u16)((paletteNums[i] << 4) + 0x100), 32); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer); @@ -3003,7 +3015,7 @@ void AnimTask_FreeMusicNotesPals(u8 taskId) { int i; - for (i = 0; i < 3; i++) + for (i = 0; i < NUM_MUSIC_NOTE_PAL_TAGS; i++) FreeSpritePaletteByTag(gMusicNotePaletteTagsTable[i]); DestroyAnimVisualTask(taskId); @@ -3045,30 +3057,30 @@ void AnimMagentaHeart(struct Sprite *sprite) void AnimTask_FakeOut(u8 taskId) { - u16 win0h = IsContest() ? 0x98 : 0xF0; + u16 win0h = IsContest() ? 152 : DISPLAY_WIDTH; u16 win0v = 0; gBattle_WIN0H = win0h; - gBattle_WIN0V = 0xA0; + gBattle_WIN0V = DISPLAY_HEIGHT; SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H); SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V); SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_CLR | WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); SetGpuReg(REG_OFFSET_WINOUT, WININ_WIN1_CLR | WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN); - SetGpuReg(REG_OFFSET_BLDY, BLDCNT_TGT1_OBJ); + SetGpuReg(REG_OFFSET_BLDY, 16); gTasks[taskId].data[0] = win0v; gTasks[taskId].data[1] = win0h; - gTasks[taskId].func = FakeOutStep1; + gTasks[taskId].func = AnimTask_FakeOut_Step1; } -static void FakeOutStep1(u8 taskId) +static void AnimTask_FakeOut_Step1(u8 taskId) { gTasks[taskId].data[0] += 13; gTasks[taskId].data[1] -= 13; if (gTasks[taskId].data[0] >= gTasks[taskId].data[1]) { gBattle_WIN0H = 0; - gTasks[taskId].func = FakeOutStep2; + gTasks[taskId].func = AnimTask_FakeOut_Step2; } else { @@ -3076,13 +3088,13 @@ static void FakeOutStep1(u8 taskId) } } -static void FakeOutStep2(u8 taskId) +static void AnimTask_FakeOut_Step2(u8 taskId) { if (++gTasks[taskId].data[10] == 5) { gTasks[taskId].data[11] = 0x88; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_LIGHTEN); - BlendPalettes(GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0), 16, RGB_WHITE); + BlendPalettes(GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), 16, RGB_WHITE); } else if (gTasks[taskId].data[10] > 4) { @@ -3102,7 +3114,7 @@ void AnimTask_StretchTargetUp(u8 taskId) if (++gTasks[taskId].data[0] == 1) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_TARGET), sUnknown_83E4200); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_TARGET), sAffineAnims_StretchBattlerUp); gSprites[spriteId].x2 = 4; } else @@ -3123,7 +3135,7 @@ void AnimTask_StretchAttackerUp(u8 taskId) if (++gTasks[taskId].data[0] == 1) { - PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sUnknown_83E4200); + PrepareAffineAnimInTaskData(&gTasks[taskId], GetAnimBattlerSpriteId(ANIM_ATTACKER), sAffineAnims_StretchBattlerUp); gSprites[spriteId].x2 = 4; } else @@ -3163,7 +3175,7 @@ static void AnimRedHeartProjectile_Step(struct Sprite *sprite) } } -void AnimParticuleBurst(struct Sprite *sprite) +void AnimParticleBurst(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -3188,7 +3200,7 @@ void AnimParticuleBurst(struct Sprite *sprite) void AnimRedHeartRising(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; - sprite->y = 160; + sprite->y = DISPLAY_HEIGHT; sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[1]; sprite->callback = WaitAnimForDuration; @@ -3234,10 +3246,10 @@ void AnimTask_HeartsBackground(u8 taskId) if (IsContest()) RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); - gTasks[taskId].func = HeartsBackground_Step; + gTasks[taskId].func = AnimTask_HeartsBackground_Step; } -static void HeartsBackground_Step(u8 taskId) +static void AnimTask_HeartsBackground_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -3322,10 +3334,10 @@ void AnimTask_ScaryFace(u8 taskId) if (IsContest()) RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); - gTasks[taskId].func = ScaryFace_Step; + gTasks[taskId].func = AnimTask_ScaryFace_Step; } -static void ScaryFace_Step(u8 taskId) +static void AnimTask_ScaryFace_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -3394,11 +3406,11 @@ void AnimOrbitFast(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[0]; sprite->data[1] = gBattleAnimArgs[1]; sprite->data[7] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); - sprite->callback = AnimOrbitFastStep; + sprite->callback = AnimOrbitFast_Step; sprite->callback(sprite); } -static void AnimOrbitFastStep(struct Sprite *sprite) +static void AnimOrbitFast_Step(struct Sprite *sprite) { if (sprite->data[1] >= 64 && sprite->data[1] <= 191) sprite->subpriority = sprite->data[7] + 1; @@ -3443,14 +3455,15 @@ void AnimOrbitScatter(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = Sin(gBattleAnimArgs[0], 10); sprite->data[1] = Cos(gBattleAnimArgs[0], 7); - sprite->callback = AnimOrbitScatterStep; + sprite->callback = AnimOrbitScatter_Step; } -static void AnimOrbitScatterStep(struct Sprite *sprite) +static void AnimOrbitScatter_Step(struct Sprite *sprite) { sprite->x2 += sprite->data[0]; sprite->y2 += sprite->data[1]; - if (sprite->x + sprite->x2 + 16 > 272u || sprite->y + sprite->y2 > 160 || sprite->y + sprite->y2 < -16) + if (sprite->x + sprite->x2 + 16 > ((u32)DISPLAY_WIDTH + 32) + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) DestroyAnimSprite(sprite); } @@ -3472,7 +3485,7 @@ void AnimSpitUpOrb(struct Sprite *sprite) sprite->callback = AnimSpitUpOrb_Step; } -static void sub_80AA3D4(struct Sprite *sprite) +static void AnimEyeSparkle_Step(struct Sprite *sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); @@ -3481,7 +3494,7 @@ static void sub_80AA3D4(struct Sprite *sprite) void AnimEyeSparkle(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - sprite->callback = sub_80AA3D4; + sprite->callback = AnimEyeSparkle_Step; } void AnimAngel(struct Sprite *sprite) @@ -3510,7 +3523,7 @@ void AnimAngel(struct Sprite *sprite) DestroyAnimSprite(sprite); } -static void sub_80AA49C(struct Sprite *sprite) +static void AnimPinkHeart_Step(struct Sprite *sprite) { sprite->data[5]++; sprite->x2 = Sin(sprite->data[3], 5); @@ -3539,7 +3552,7 @@ void AnimPinkHeart(struct Sprite *sprite) sprite->data[3] = (sprite->data[3] + 3) & 0xFF; if (sprite->data[3] > 70) { - sprite->callback = sub_80AA49C; + sprite->callback = AnimPinkHeart_Step; sprite->x += sprite->x2; sprite->y += sprite->y2; sprite->x2 = 0; @@ -3640,10 +3653,10 @@ void AnimTask_UproarDistortion(u8 taskId) u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareAffineAnimInTaskData(&gTasks[taskId], spriteId, sUproarAffineAnimCmds); - gTasks[taskId].func = UproarDistortion_Step; + gTasks[taskId].func = AnimTask_UproarDistortion_Step; } -static void UproarDistortion_Step(u8 taskId) +static void AnimTask_UproarDistortion_Step(u8 taskId) { if (!RunAffineAnimFromTaskData(&gTasks[taskId])) DestroyAnimVisualTask(taskId); @@ -3696,7 +3709,7 @@ void AnimPerishSongMusicNote2(struct Sprite *sprite) } if (++sprite->data[0] == sprite->data[1]) - SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, 0); + SetGreyscaleOrOriginalPalette(sprite->oam.paletteNum + 16, FALSE); if (sprite->data[0] == sprite->data[1] + 80) DestroyAnimSprite(sprite); @@ -3782,7 +3795,7 @@ void AnimGuardRing(struct Sprite *sprite) { if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) { - SetAverageBattlerPositions(gBattleAnimAttacker, 0, &sprite->x, &sprite->y); + SetAverageBattlerPositions(gBattleAnimAttacker, FALSE, &sprite->x, &sprite->y); sprite->y += 40; StartSpriteAffineAnim(sprite, 1); @@ -3803,12 +3816,12 @@ void AnimGuardRing(struct Sprite *sprite) void AnimTask_IsFuryCutterHitRight(u8 taskId) { - gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter & 1; + gBattleAnimArgs[ARG_RET_ID] = gAnimDisableStructPtr->furyCutterCounter & 1; DestroyAnimVisualTask(taskId); } void AnimTask_GetFuryCutterHitCount(u8 taskId) { - gBattleAnimArgs[7] = gAnimDisableStructPtr->furyCutterCounter; + gBattleAnimArgs[ARG_RET_ID] = gAnimDisableStructPtr->furyCutterCounter; DestroyAnimVisualTask(taskId); } diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 4a279249d..09cb223ae 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1031,7 +1031,7 @@ const struct SpriteTemplate gUnknown_83FF6D4 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimParticuleBurst, + .callback = AnimParticleBurst, }; const struct SpriteTemplate gBlockXSpriteTemplate = diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 61fe2fb8f..144a8db75 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -462,7 +462,7 @@ static void TranslateSpriteInLissajousCurveOverDuration(struct Sprite *sprite) // x = a * sin(theta0 + dtheta * t) // y = b * cos(theta0 + dtheta * t) -void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite) +void TranslateSpriteInEllipse(struct Sprite *sprite) { if (sprite->data[3]) { diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index 7ec10630a..2690e4237 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -328,7 +328,7 @@ static void AnimFallingRock(struct Sprite *sprite) sprite->data[4] = -70; sprite->data[5] = gBattleAnimArgs[2]; StoreSpriteCallbackInData6(sprite, sub_80B46B4); - sprite->callback = TranslateSpriteInEllipseOverDuration; + sprite->callback = TranslateSpriteInEllipse; sprite->callback(sprite); } @@ -341,7 +341,7 @@ static void sub_80B46B4(struct Sprite *sprite) sprite->data[3] = 32; sprite->data[4] = -24; StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = TranslateSpriteInEllipseOverDuration; + sprite->callback = TranslateSpriteInEllipse; sprite->callback(sprite); } From 0c74385de76c621d139c67650c1e910716d00393 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 16 Aug 2022 14:12:51 -0400 Subject: [PATCH 09/38] Sync battle anim - effects 3 --- data/battle_anim_scripts.s | 2 +- include/constants/battle_anim.h | 2 +- src/battle_anim.c | 4 +- src/battle_anim_effects_3.c | 504 ++++++++++++++++++-------------- 4 files changed, 295 insertions(+), 217 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index cb7f8ca9e..93904a4fa 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -8157,7 +8157,7 @@ HyperFangInContest:: goto HyperFangContinue Move_TRI_ATTACK:: - loadspritegfx ANIM_TAG_TRI_FORCE_TRIANGLE + loadspritegfx ANIM_TAG_TRI_ATTACK_TRIANGLE createsprite gTriAttackTriangleSpriteTemplate, ANIM_TARGET, 2, 16, 0 playsewithpan SE_M_TRI_ATTACK, 192 delay 20 diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 4363b7fca..3ea251966 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -237,7 +237,7 @@ #define ANIM_TAG_SPOTLIGHT (ANIM_SPRITES_START + 227) #define ANIM_TAG_LETTER_Z (ANIM_SPRITES_START + 228) #define ANIM_TAG_RAPID_SPIN (ANIM_SPRITES_START + 229) -#define ANIM_TAG_TRI_FORCE_TRIANGLE (ANIM_SPRITES_START + 230) +#define ANIM_TAG_TRI_ATTACK_TRIANGLE (ANIM_SPRITES_START + 230) #define ANIM_TAG_WISP_ORB (ANIM_SPRITES_START + 231) #define ANIM_TAG_WISP_FIRE (ANIM_SPRITES_START + 232) #define ANIM_TAG_GOLD_STARS (ANIM_SPRITES_START + 233) diff --git a/src/battle_anim.c b/src/battle_anim.c index 3b466329c..b1479a7bb 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1343,7 +1343,7 @@ const struct CompressedSpriteSheet gBattleAnimPicTable[] = {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT}, {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z}, {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN}, - {gBattleAnimSpriteGfx_TriForceTriangle, 0x0800, ANIM_TAG_TRI_FORCE_TRIANGLE}, + {gBattleAnimSpriteGfx_TriForceTriangle, 0x0800, ANIM_TAG_TRI_ATTACK_TRIANGLE}, {gBattleAnimSpriteGfx_WispOrb, 0x0380, ANIM_TAG_WISP_ORB}, {gBattleAnimSpriteGfx_WispFire, 0x0800, ANIM_TAG_WISP_FIRE}, {gBattleAnimSpriteGfx_GoldStars, 0x00c0, ANIM_TAG_GOLD_STARS}, @@ -1636,7 +1636,7 @@ const struct CompressedSpritePalette gBattleAnimPaletteTable[] = {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT}, {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z}, {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN}, - {gBattleAnimSpritePal_TriForceTriangle, ANIM_TAG_TRI_FORCE_TRIANGLE}, + {gBattleAnimSpritePal_TriForceTriangle, ANIM_TAG_TRI_ATTACK_TRIANGLE}, {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_ORB}, {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_FIRE}, {gBattleAnimSpritePal_GoldStars, ANIM_TAG_GOLD_STARS}, diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 09cb223ae..74737beec 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -15,8 +15,7 @@ #include "constants/songs.h" #include "constants/weather.h" -// Function Declarations -static void AnimBlackSmokeStep(struct Sprite *); +static void AnimBlackSmoke_Step(struct Sprite *); static void AnimWhiteHalo_Step1(struct Sprite *); static void AnimWhiteHalo_Step2(struct Sprite *); static void AnimMeanLookEye_Step1(struct Sprite *); @@ -39,39 +38,38 @@ static void AnimMiniTwinklingStar_Step(struct Sprite *); static void AnimGreenStar_Step1(struct Sprite *); static void AnimGreenStar_Step2(struct Sprite *); static void AnimGreenStar_Callback(struct Sprite *); -static void AnimTask_RockMonBackAndForthStep(u8); -static void AnimSweetScentPetalStep(struct Sprite *); -static void AnimTask_FlailMovementStep(u8); -static void AnimFlatterConfettiStep(struct Sprite *); -static void AnimFlatterSpotlightStep(struct Sprite *); -static void AnimReversalOrbStep(struct Sprite *); -static void AnimTask_RolePlaySilhouetteStep1(u8); -static void AnimTask_RolePlaySilhouetteStep2(u8); -static void AnimTask_AcidArmorStep(u8); -static void AnimTask_DeepInhaleStep(u8); -static void AnimYawnCloudStep(struct Sprite *); -static void AnimTask_SquishAndSweatDropletsStep(u8); +static void AnimTask_RockMonBackAndForth_Step(u8); +static void AnimSweetScentPetal_Step(struct Sprite *); +static void AnimTask_FlailMovement_Step(u8); +static void AnimFlatterConfetti_Step(struct Sprite *); +static void AnimFlatterSpotlight_Step(struct Sprite *); +static void AnimReversalOrb_Step(struct Sprite *); +static void AnimTask_RolePlaySilhouette_Step1(u8); +static void AnimTask_RolePlaySilhouette_Step2(u8); +static void AnimTask_AcidArmor_Step(u8); +static void AnimTask_DeepInhale_Step(u8); +static void AnimYawnCloud_Step(struct Sprite *); +static void AnimTask_SquishAndSweatDroplets_Step(u8); static void CreateSweatDroplets(u8, bool8); -static void AnimTask_FacadeColorBlendStep(u8); -static void AnimRoarNoiseLineStep(struct Sprite *); -static void AnimTask_GlareEyeDotsStep(u8); +static void AnimTask_FacadeColorBlend_Step(u8); +static void AnimRoarNoiseLine_Step(struct Sprite *); +static void AnimTask_GlareEyeDots_Step(u8); static void GetGlareEyeDotCoords(s16, s16, s16, s16, u8, u8, s16 *, s16 *); -static void AnimTask_BarrageBallStep(u8); +static void AnimTask_BarrageBall_Step(u8); static void AnimSmellingSaltsHand_Step(struct Sprite *); -static void AnimTask_SmellingSaltsSquishStep(u8); -static void AnimSmellingSaltExclamationStep(struct Sprite *); -static void AnimHelpingHandClapStep(struct Sprite *); -static void AnimTask_HelpingHandAttackerMovementStep(u8); -static void AnimForesightMagnifyingGlassStep(struct Sprite *); +static void AnimTask_SmellingSaltsSquish_Step(u8); +static void AnimSmellingSaltExclamation_Step(struct Sprite *); +static void AnimHelpingHandClap_Step(struct Sprite *); +static void AnimTask_HelpingHandAttackerMovement_Step(u8); +static void AnimForesightMagnifyingGlass_Step(struct Sprite *); static void AnimTask_MonToSubstituteDoll(u8); -static void AnimBlockXStep(struct Sprite *); +static void AnimBlockX_Step(struct Sprite *); static void AnimTask_OdorSleuthMovementWaitFinish(u8); static void MoveOdorSleuthClone(struct Sprite *); -static void AnimTask_TeeterDanceMovementStep(u8); -static void AnimRecycleStep(struct Sprite *); -static void AnimTask_SlackOffSquishStep(u8); +static void AnimTask_TeeterDanceMovement_Step(u8); +static void AnimRecycle_Step(struct Sprite *); +static void AnimTask_SlackOffSquish_Step(u8); -// Data static const union AnimCmd sScratchAnimCmds[] = { ANIMCMD_FRAME(0, 4), @@ -383,7 +381,7 @@ const struct SpriteTemplate gRapidSpinSpriteTemplate = .callback = AnimRapidSpin, }; -static const union AffineAnimCmd sUnknown_83FF080[] = +static const union AffineAnimCmd sAffineAnims_Torment[] = { AFFINEANIMCMD_FRAME(-12, 8, 0, 4), AFFINEANIMCMD_FRAME(20, -20, 0, 4), @@ -418,8 +416,8 @@ static const union AffineAnimCmd *const sTriAttackTriangleAffineAnimTable[] = const struct SpriteTemplate gTriAttackTriangleSpriteTemplate = { - .tileTag = ANIM_TAG_TRI_FORCE_TRIANGLE, - .paletteTag = ANIM_TAG_TRI_FORCE_TRIANGLE, + .tileTag = ANIM_TAG_TRI_ATTACK_TRIANGLE, + .paletteTag = ANIM_TAG_TRI_ATTACK_TRIANGLE, .oam = &gOamData_AffineDouble_ObjNormal_64x64, .anims = sTriAttackTriangleAnimTable, .images = NULL, @@ -669,7 +667,7 @@ const struct SpriteTemplate gSweetScentPetalSpriteTemplate = .callback = AnimSweetScentPetal, }; -static const u16 sUnknown_83FF33C[] = INCBIN_U16("graphics/battle_anims/unk_83FF33C.gbapal"); //Unused +static const u16 sUnusedPalette[] = INCBIN_U16("graphics/battle_anims/unk_83FF33C.gbapal"); //Unused static const union AnimCmd sPainSplitAnimCmds[] = { @@ -1023,7 +1021,7 @@ const struct SpriteTemplate gMeteorMashStarSpriteTemplate = .callback = AnimMeteorMashStar, }; -const struct SpriteTemplate gUnknown_83FF6D4 = +static const struct SpriteTemplate sUnusedStarBurstSpriteTemplate = { .tileTag = ANIM_TAG_GOLD_STARS, .paletteTag = ANIM_TAG_GOLD_STARS, @@ -1045,7 +1043,7 @@ const struct SpriteTemplate gBlockXSpriteTemplate = .callback = AnimBlockX, }; -const struct SpriteTemplate gUnknown_83FF704 = +static const struct SpriteTemplate sUnusedItemBagStealSpriteTemplate = { .tileTag = ANIM_TAG_ITEM_BAG, .paletteTag = ANIM_TAG_ITEM_BAG, @@ -1131,7 +1129,6 @@ static const union AffineAnimCmd sSlackOffSquishAffineAnimCmds[] = AFFINEANIMCMD_END, }; -// Functions void AnimBlackSmoke(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; @@ -1142,10 +1139,10 @@ void AnimBlackSmoke(struct Sprite *sprite) sprite->data[0] = -gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[4]; - sprite->callback = AnimBlackSmokeStep; + sprite->callback = AnimBlackSmoke_Step; } -static void AnimBlackSmokeStep(struct Sprite *sprite) +static void AnimBlackSmoke_Step(struct Sprite *sprite) { if (sprite->data[1] > 0) { @@ -1162,7 +1159,10 @@ static void AnimBlackSmokeStep(struct Sprite *sprite) void AnimTask_SmokescreenImpact(u8 taskId) { - SmokescreenImpact(GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 8, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 8, 0); + SmokescreenImpact( + GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 8, + GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 8, + FALSE); DestroyAnimVisualTask(taskId); } @@ -1465,9 +1465,9 @@ void AnimFang(struct Sprite *sprite) void AnimTask_IsTargetPlayerSide(u8 taskId) { if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; else - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; DestroyAnimVisualTask(taskId); } @@ -1475,9 +1475,9 @@ void AnimTask_IsTargetPlayerSide(u8 taskId) void AnimTask_IsHealingMove(u8 taskId) { if (gAnimMoveDmg > 0) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; else - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; DestroyAnimVisualTask(taskId); } @@ -1616,17 +1616,17 @@ void AnimTask_CreateSpotlight(u8 taskId) if (IsContest()) { SetGpuReg(REG_OFFSET_WININ, WININ_WIN1_OBJ | WININ_WIN1_BG_ALL | WININ_WIN0_CLR | WININ_WIN0_OBJ | WININ_WIN0_BG_ALL); - gBattle_WIN1H = WININ_WIN1_OBJ | WININ_WIN1_BG3 | WIN_RANGE(0, 0xF0) | WIN_RANGE(0x80, 0x0); - gBattle_WIN1V = WININ_WIN0_CLR | WIN_RANGE(0, 0x80); + gBattle_WIN1H = WIN_RANGE(152, DISPLAY_WIDTH); + gBattle_WIN1V = WIN_RANGE(0, DISPLAY_HEIGHT); SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN0H); SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN0V); } else { SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ); - gBattle_WIN1H = WIN_RANGE(0, 0xF0); - gBattle_WIN1V = WININ_WIN0_CLR | WIN_RANGE(0, 0x80) | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR | WIN_RANGE(0x40, 0); - SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(0, 0xF0)); + gBattle_WIN1H = WIN_RANGE(0, DISPLAY_WIDTH); + gBattle_WIN1V = WIN_RANGE(120, DISPLAY_HEIGHT); + SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN1H); SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); } @@ -1721,13 +1721,13 @@ void AnimTask_RapinSpinMonElevation(u8 taskId) { var3 = gBattle_BG1_X; task->data[8] = var3; - var4 = var3 + 240; + var4 = var3 + DISPLAY_WIDTH; } else { var3 = gBattle_BG2_X; task->data[8] = var3; - var4 = var3 + 240; + var4 = var3 + DISPLAY_WIDTH; } task->data[9] = var4; @@ -1878,7 +1878,7 @@ static void TormentAttacker_Step(u8 taskId) task->data[5] -= 6; } - PrepareAffineAnimInTaskData(task, task->data[15], sUnknown_83FF080); + PrepareAffineAnimInTaskData(task, task->data[15], sAffineAnims_Torment); task->data[1]++; task->data[0] = 1; break; @@ -2040,7 +2040,7 @@ void AnimWishStar(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) sprite->x = -16; else - sprite->x = 256; + sprite->x = DISPLAY_WIDTH + 16; sprite->y = 0; sprite->callback = AnimWishStar_Step; @@ -2069,7 +2069,7 @@ static void AnimWishStar_Step(struct Sprite *sprite) } newX = sprite->x + sprite->x2 + 32; - if (newX > 304) + if (newX > DISPLAY_WIDTH + 64) DestroyAnimSprite(sprite); } @@ -2224,7 +2224,7 @@ void AnimTask_TransformMon(u8 taskId) src = gMonSpritesGfxPtr->sprites[position] + (gBattleMonForms[gBattleAnimAttacker] << 11); dest = animBg.bgTiles; - CpuCopy32(src, dest, 0x800); + CpuCopy32(src, dest, MON_PIC_SIZE); LoadBgTiles(1, animBg.bgTiles, 0x800, animBg.tilesOffset); gTasks[taskId].data[0]++; break; @@ -2263,7 +2263,7 @@ void AnimTask_TransformMon(u8 taskId) void AnimTask_IsMonInvisible(u8 taskId) { - gBattleAnimArgs[7] = gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible; + gBattleAnimArgs[ARG_RET_ID] = gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].invisible; DestroyAnimVisualTask(taskId); } @@ -2638,10 +2638,10 @@ void AnimTask_RockMonBackAndForth(u8 taskId) } PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); - task->func = AnimTask_RockMonBackAndForthStep; + task->func = AnimTask_RockMonBackAndForth_Step; } -static void AnimTask_RockMonBackAndForthStep(u8 taskId) +static void AnimTask_RockMonBackAndForth_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -2708,16 +2708,16 @@ void AnimSweetScentPetal(struct Sprite *sprite) } else { - sprite->x = 240; + sprite->x = DISPLAY_WIDTH; sprite->y = gBattleAnimArgs[0] - 30; } sprite->data[2] = gBattleAnimArgs[2]; StartSpriteAnim(sprite, gBattleAnimArgs[1]); - sprite->callback = AnimSweetScentPetalStep; + sprite->callback = AnimSweetScentPetal_Step; } -static void AnimSweetScentPetalStep(struct Sprite *sprite) +static void AnimSweetScentPetal_Step(struct Sprite *sprite) { sprite->data[0] += 3; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) @@ -2725,7 +2725,7 @@ static void AnimSweetScentPetalStep(struct Sprite *sprite) sprite->x += 5; sprite->y -= 1; - if (sprite->x > 240) + if (sprite->x > DISPLAY_WIDTH) DestroyAnimSprite(sprite); sprite->y2 = Sin(sprite->data[0] & 0xFF, 16); @@ -2758,10 +2758,10 @@ void AnimTask_FlailMovement(u8 taskId) task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); - task->func = AnimTask_FlailMovementStep; + task->func = AnimTask_FlailMovement_Step; } -static void AnimTask_FlailMovementStep(u8 taskId) +static void AnimTask_FlailMovement_Step(u8 taskId) { int temp; struct Task *task = &gTasks[taskId]; @@ -2959,10 +2959,10 @@ void AnimFlatterConfetti(struct Sprite *sprite) sprite->x = 248; sprite->y = 104; - sprite->callback = AnimFlatterConfettiStep; + sprite->callback = AnimFlatterConfetti_Step; } -static void AnimFlatterConfettiStep(struct Sprite *sprite) +static void AnimFlatterConfetti_Step(struct Sprite *sprite) { if (sprite->data[2] == 0) { @@ -3000,10 +3000,10 @@ void AnimFlatterSpotlight(struct Sprite *sprite) InitSpritePosToAnimTarget(sprite, FALSE); sprite->oam.objMode = ST_OAM_OBJ_WINDOW; sprite->invisible = TRUE; - sprite->callback = AnimFlatterSpotlightStep; + sprite->callback = AnimFlatterSpotlight_Step; } -static void AnimFlatterSpotlightStep(struct Sprite *sprite) +static void AnimFlatterSpotlight_Step(struct Sprite *sprite) { switch (sprite->data[1]) { @@ -3043,11 +3043,11 @@ void AnimReversalOrb(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = gBattleAnimArgs[0]; sprite->data[1] = gBattleAnimArgs[1]; - sprite->callback = AnimReversalOrbStep; + sprite->callback = AnimReversalOrb_Step; sprite->callback(sprite); } -static void AnimReversalOrbStep(struct Sprite *sprite) +static void AnimReversalOrb_Step(struct Sprite *sprite) { sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8); sprite->y2 = Cos(sprite->data[1], sprite->data[3] >> 8); @@ -3143,10 +3143,10 @@ void AnimTask_RolePlaySilhouette(u8 taskId) SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[1], 16 - gTasks[taskId].data[1])); gTasks[taskId].data[0] = spriteId; - gTasks[taskId].func = AnimTask_RolePlaySilhouetteStep1; + gTasks[taskId].func = AnimTask_RolePlaySilhouette_Step1; } -static void AnimTask_RolePlaySilhouetteStep1(u8 taskId) +static void AnimTask_RolePlaySilhouette_Step1(u8 taskId) { if (gTasks[taskId].data[10]++ > 1) { @@ -3157,12 +3157,12 @@ static void AnimTask_RolePlaySilhouetteStep1(u8 taskId) { gTasks[taskId].data[10] = 256; gTasks[taskId].data[11] = 256; - gTasks[taskId].func = AnimTask_RolePlaySilhouetteStep2; + gTasks[taskId].func = AnimTask_RolePlaySilhouette_Step2; } } } -static void AnimTask_RolePlaySilhouetteStep2(u8 taskId) +static void AnimTask_RolePlaySilhouette_Step2(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; @@ -3239,10 +3239,10 @@ void AnimTask_AcidArmor(u8 taskId) scanlineParams.initState = 1; scanlineParams.unused9 = 0; ScanlineEffect_SetParams(scanlineParams); - task->func = AnimTask_AcidArmorStep; + task->func = AnimTask_AcidArmor_Step; } -static void AnimTask_AcidArmorStep(u8 taskId) +static void AnimTask_AcidArmor_Step(u8 taskId) { struct Task *task; s16 var1; @@ -3365,10 +3365,10 @@ void AnimTask_DeepInhale(u8 taskId) task->data[0] = 0; task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareAffineAnimInTaskData(&gTasks[taskId], task->data[15], sDeepInhaleAffineAnimCmds); - task->func = AnimTask_DeepInhaleStep; + task->func = AnimTask_DeepInhale_Step; } -static void AnimTask_DeepInhaleStep(u8 taskId) +static void AnimTask_DeepInhale_Step(u8 taskId) { u16 var0; struct Task *task = &gTasks[taskId]; @@ -3426,10 +3426,10 @@ void AnimYawnCloud(struct Sprite *sprite) StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]); InitYawnCloudPosition(sprite, sprite->x, sprite->y, destX, destY, 64); sprite->data[0] = 0; - sprite->callback = AnimYawnCloudStep; + sprite->callback = AnimYawnCloud_Step; } -static void AnimYawnCloudStep(struct Sprite *sprite) +static void AnimYawnCloud_Step(struct Sprite *sprite) { int index; @@ -3467,7 +3467,7 @@ void AnimSmokeBallEscapeCloud(struct Sprite *sprite) sprite->callback = DestroyAnimSpriteAfterTimer; } -static void sub_80E1990(u8 taskId) +static void AnimTask_SlideMonForFocusBand_Step2(u8 taskId) { u16 var0 = 0; u16 var1 = 0; @@ -3517,7 +3517,7 @@ static void sub_80E1990(u8 taskId) } } -static void sub_80E1AD8(u8 taskId) +static void AnimTask_SlideMonForFocusBand_Step1(u8 taskId) { u16 var0 = 0; u16 var1 = 0; @@ -3566,7 +3566,7 @@ static void sub_80E1AD8(u8 taskId) { gTasks[taskId].data[0] = 30; gTasks[taskId].data[13] = 0; - gTasks[taskId].func = sub_80E1990; + gTasks[taskId].func = AnimTask_SlideMonForFocusBand_Step2; } } @@ -3601,9 +3601,29 @@ void AnimTask_SlideMonForFocusBand(u8 taskId) gTasks[taskId].data[7] = 0; gTasks[taskId].data[4] = gBattleAnimArgs[4]; gTasks[taskId].data[5] = gBattleAnimArgs[5]; - gTasks[taskId].func = sub_80E1AD8; + gTasks[taskId].func = AnimTask_SlideMonForFocusBand_Step1; } +#define IDX_ACTIVE_SPRITES 2 // Used by the sprite callback to modify the number of active sprites + +// Task data for AnimTask_SquishAndSweatDroplets +#define tState data[0] +#define tTimer data[1] +#define tActiveSprites data[IDX_ACTIVE_SPRITES] +#define tNumSquishes data[3] +#define tBaseX data[4] +#define tBaseY data[5] +#define tSubpriority data[6] +// data[7]-data[15] used by PrepareAffineAnimInTaskData +#define tBattlerSpriteId data[15] + +// Sprite data for AnimFacadeSweatDrop +#define sTimer data[0] +#define sVelocX data[1] +#define sVelocY data[2] +#define sTaskId data[3] +#define sActiveSpritesIdx data[4] + // Squishes the mon vertically and emits sweat droplets a few times. // arg 0: battler // arg 1: num squishes @@ -3615,58 +3635,61 @@ void AnimTask_SquishAndSweatDroplets(u8 taskId) if (!gBattleAnimArgs[1]) DestroyAnimVisualTask(taskId); - task->data[0] = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = gBattleAnimArgs[1]; + task->tState = 0; + task->tTimer = 0; + task->tActiveSprites = 0; + task->tNumSquishes = gBattleAnimArgs[1]; if (gBattleAnimArgs[0] == ANIM_ATTACKER) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; - task->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); - task->data[5] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); - task->data[6] = GetBattlerSpriteSubpriority(battler); - task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - PrepareAffineAnimInTaskData(task, task->data[15], sFacadeSquishAffineAnimCmds); - task->func = AnimTask_SquishAndSweatDropletsStep; + task->tBaseX = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + task->tBaseY = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); + task->tSubpriority = GetBattlerSpriteSubpriority(battler); + task->tBattlerSpriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, sFacadeSquishAffineAnimCmds); + task->func = AnimTask_SquishAndSweatDroplets_Step; } -static void AnimTask_SquishAndSweatDropletsStep(u8 taskId) +static void AnimTask_SquishAndSweatDroplets_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - task->data[1]++; - if (task->data[1] == 6) + task->tTimer++; + if (task->tTimer == 6) CreateSweatDroplets(taskId, TRUE); - if (task->data[1] == 18) + if (task->tTimer == 18) CreateSweatDroplets(taskId, FALSE); if (!RunAffineAnimFromTaskData(task)) { - if (--task->data[3] == 0) + if (--task->tNumSquishes == 0) { - task->data[0]++; + // Animation is finished + task->tState++; } else { - task->data[1] = 0; - PrepareAffineAnimInTaskData(task, task->data[15], sFacadeSquishAffineAnimCmds); + // Animation continues, more droplet sprites to create + task->tTimer = 0; + PrepareAffineAnimInTaskData(task, task->tBattlerSpriteId, sFacadeSquishAffineAnimCmds); } } break; case 1: - if (task->data[2] == 0) + // Wait for sprites to be destroyed before ending task + if (task->tActiveSprites == 0) DestroyAnimVisualTask(taskId); break; } } -static void CreateSweatDroplets(u8 taskId, bool8 arg1) +static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) { u8 i; s8 xOffset, yOffset; @@ -3675,7 +3698,7 @@ static void CreateSweatDroplets(u8 taskId, bool8 arg1) s16 yCoords[2]; task = &gTasks[taskId]; - if (!arg1) + if (!lowerDroplets) { xOffset = 18; yOffset = -20; @@ -3686,39 +3709,54 @@ static void CreateSweatDroplets(u8 taskId, bool8 arg1) yOffset = 20; } - xCoords[0] = task->data[4] - xOffset; - xCoords[1] = task->data[4] - xOffset - 4; - xCoords[2] = task->data[4] + xOffset; - xCoords[3] = task->data[4] + xOffset + 4; - yCoords[0] = task->data[5] + yOffset; - yCoords[1] = task->data[5] + yOffset + 6; + xCoords[0] = task->tBaseX - xOffset; + xCoords[1] = task->tBaseX - xOffset - 4; + xCoords[2] = task->tBaseX + xOffset; + xCoords[3] = task->tBaseX + xOffset + 4; + yCoords[0] = task->tBaseY + yOffset; + yCoords[1] = task->tBaseY + yOffset + 6; for (i = 0; i < 4; i++) { - u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->data[6] - 5); + u8 spriteId = CreateSprite(&gFacadeSweatDropSpriteTemplate, xCoords[i], yCoords[i & 1], task->tSubpriority - 5); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[1] = i < 2 ? -2 : 2; - gSprites[spriteId].data[2] = -1; - gSprites[spriteId].data[3] = taskId; - gSprites[spriteId].data[4] = 2; - task->data[2]++; + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].sVelocX = i < 2 ? -2 : 2; // First two travel left, remaining travel right + gSprites[spriteId].sVelocY = -1; + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; + task->tActiveSprites++; } } } void AnimFacadeSweatDrop(struct Sprite *sprite) { - sprite->x += sprite->data[1]; - sprite->y += sprite->data[2]; - if (++sprite->data[0] > 6) + sprite->x += sprite->sVelocX; + sprite->y += sprite->sVelocY; + if (++sprite->sTimer > 6) { - gTasks[sprite->data[3]].data[sprite->data[4]]--; + gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; DestroySprite(sprite); } } +#undef IDX_ACTIVE_SPRITES +#undef tState +#undef tTimer +#undef tActiveSprites +#undef tNumSquishes +#undef tBaseX +#undef tBaseY +#undef tSubpriority +#undef tBattlerSpriteId +#undef sTimer +#undef sVelocX +#undef sVelocY +#undef sTaskId +#undef sActiveSpritesIdx + // Blends the mon sprite's color with a rotating set of colors. // arg 0: battler // arg 1: duration @@ -3730,10 +3768,10 @@ void AnimTask_FacadeColorBlend(u8 taskId) gTasks[taskId].data[1] = gBattleAnimArgs[1]; spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); gTasks[taskId].data[2] = 0x100 + gSprites[spriteId].oam.paletteNum * 16; - gTasks[taskId].func = AnimTask_FacadeColorBlendStep; + gTasks[taskId].func = AnimTask_FacadeColorBlend_Step; } -static void AnimTask_FacadeColorBlendStep(u8 taskId) +static void AnimTask_FacadeColorBlend_Step(u8 taskId) { if (gTasks[taskId].data[1]) { @@ -3789,10 +3827,10 @@ void AnimRoarNoiseLine(struct Sprite *sprite) sprite->hFlip = TRUE; } - sprite->callback = AnimRoarNoiseLineStep; + sprite->callback = AnimRoarNoiseLine_Step; } -static void AnimRoarNoiseLineStep(struct Sprite *sprite) +static void AnimRoarNoiseLine_Step(struct Sprite *sprite) { sprite->data[6] += sprite->data[0]; sprite->data[7] += sprite->data[1]; @@ -3802,130 +3840,169 @@ static void AnimRoarNoiseLineStep(struct Sprite *sprite) DestroyAnimSprite(sprite); } +#define IDX_ACTIVE_SPRITES 10 // Used by the sprite callback to modify the number of active sprites + +// Task data for AnimTask_GlareEyeDots +#define tState data[0] +#define tTimer data[1] +#define tPairNum data[2] +#define tPairMax data[5] +#define tDotOffset data[6] +#define tIsContest data[7] +#define tActiveSprites data[IDX_ACTIVE_SPRITES] +#define tStartX data[11] +#define tStartY data[12] +#define tEndX data[13] +#define tEndY data[14] + +// Sprite data for AnimGlareEyeDot +#define sTimer data[0] +#define sTaskId data[1] +#define sActiveSpritesIdx data[2] + // Makes a series of dots in a trail from the attacker to the target. // arg 0: unused void AnimTask_GlareEyeDots(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[5] = 12; - task->data[6] = 3; - task->data[7] = 0; + task->tPairMax = 12; + task->tDotOffset = 3; + task->tIsContest = FALSE; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; else - task->data[11] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->tStartX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->data[12] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; - task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); - task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - task->func = AnimTask_GlareEyeDotsStep; + task->tStartY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_HEIGHT) / 4; + task->tEndX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + task->tEndY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); + task->func = AnimTask_GlareEyeDots_Step; } -static void AnimTask_GlareEyeDotsStep(u8 taskId) +static void AnimTask_GlareEyeDots_Step(u8 taskId) { u8 i; s16 x, y; struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - if (++task->data[1] > 3) + // Wait to create next pair of dots + if (++task->tTimer > 3) { - task->data[1] = 0; + task->tTimer = 0; GetGlareEyeDotCoords( - task->data[11], - task->data[12], - task->data[13], - task->data[14], - task->data[5], - task->data[2], + task->tStartX, + task->tStartY, + task->tEndX, + task->tEndY, + task->tPairMax, + task->tPairNum, &x, &y); + // Create dot pair for (i = 0; i < 2; i++) { u8 spriteId = CreateSprite(&gGlareEyeDotSpriteTemplate, x, y, 35); if (spriteId != MAX_SPRITES) { - if (task->data[7] == 0) + if (!task->tIsContest) { if (i == 0) - gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->data[6]; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = -task->tDotOffset; else - gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->data[6]; + gSprites[spriteId].x2 = gSprites[spriteId].y2 = task->tDotOffset; } else { if (i == 0) { - gSprites[spriteId].x2 = -task->data[6]; - gSprites[spriteId].y2 = task->data[6]; + gSprites[spriteId].x2 = -task->tDotOffset; + gSprites[spriteId].y2 = task->tDotOffset; } else { - gSprites[spriteId].x2 = task->data[6]; - gSprites[spriteId].y2 = -task->data[6]; + gSprites[spriteId].x2 = task->tDotOffset; + gSprites[spriteId].y2 = -task->tDotOffset; } } - gSprites[spriteId].data[0] = 0; - gSprites[spriteId].data[1] = taskId; - gSprites[spriteId].data[2] = 10; - task->data[10]++; + gSprites[spriteId].sTimer = 0; + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sActiveSpritesIdx = IDX_ACTIVE_SPRITES; + task->tActiveSprites++; } } - if (task->data[2] == task->data[5]) - task->data[0]++; + if (task->tPairNum == task->tPairMax) + task->tState++; - task->data[2]++; + task->tPairNum++; } break; case 1: - if (task->data[10] == 0) + // Wait for sprites to be destroyed before ending task + if (task->tActiveSprites == 0) DestroyAnimVisualTask(taskId); break; } } -static void GetGlareEyeDotCoords(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y) +static void GetGlareEyeDotCoords(s16 startX, s16 startY, s16 endX, s16 endY, u8 pairMax, u8 pairNum, s16 *x, s16 *y) { int x2; int y2; - if (arg5 == 0) + if (pairNum == 0) { - *x = arg0; - *y = arg1; + *x = startX; + *y = startY; return; } - if (arg5 >= arg4) + if (pairNum >= pairMax) { - *x = arg2; - *y = arg3; + *x = endX; + *y = endY; return; } - arg4--; - x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4); - y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4); + pairMax--; + x2 = (startX << 8) + pairNum * (((endX - startX) << 8) / pairMax); + y2 = (startY << 8) + pairNum * (((endY - startY) << 8) / pairMax); *x = x2 >> 8; *y = y2 >> 8; } void AnimGlareEyeDot(struct Sprite *sprite) { - if (++sprite->data[0] > 36) + if (++sprite->sTimer > 36) { - gTasks[sprite->data[1]].data[sprite->data[2]]--; + gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; DestroySprite(sprite); } } +#undef IDX_ACTIVE_SPRITES +#undef tState +#undef tTimer +#undef tPairNum +#undef tPairMax +#undef tDotOffset +#undef tIsContest +#undef tActiveSprites +#undef tStartX +#undef tStartY +#undef tEndX +#undef tEndY +#undef sTimer +#undef sTaskId +#undef sActiveSpritesIdx + // Moves a pawprint in a straight line. // arg 0: initial x position // arg 1: initial y position @@ -3964,7 +4041,7 @@ void AnimTask_BarrageBall(u8 taskId) if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) StartSpriteAffineAnim(&gSprites[task->data[15]], 1); - task->func = AnimTask_BarrageBallStep; + task->func = AnimTask_BarrageBall_Step; } else { @@ -3972,7 +4049,7 @@ void AnimTask_BarrageBall(u8 taskId) } } -static void AnimTask_BarrageBallStep(u8 taskId) +static void AnimTask_BarrageBall_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -4105,11 +4182,11 @@ void AnimTask_SmellingSaltsSquish(u8 taskId) gTasks[taskId].data[0] = gBattleAnimArgs[1]; gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareAffineAnimInTaskData(&gTasks[taskId], gTasks[taskId].data[15], sSmellingSaltsSquishAffineAnimCmds); - gTasks[taskId].func = AnimTask_SmellingSaltsSquishStep; + gTasks[taskId].func = AnimTask_SmellingSaltsSquish_Step; } } -static void AnimTask_SmellingSaltsSquishStep(u8 taskId) +static void AnimTask_SmellingSaltsSquish_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -4162,10 +4239,10 @@ void AnimSmellingSaltExclamation(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[1]; sprite->data[2] = 0; sprite->data[3] = gBattleAnimArgs[2]; - sprite->callback = AnimSmellingSaltExclamationStep; + sprite->callback = AnimSmellingSaltExclamation_Step; } -static void AnimSmellingSaltExclamationStep(struct Sprite *sprite) +static void AnimSmellingSaltExclamation_Step(struct Sprite *sprite) { if (++sprite->data[0] >= sprite->data[1]) { @@ -4195,10 +4272,10 @@ void AnimHelpingHandClap(struct Sprite *sprite) } sprite->y = 56; - sprite->callback = AnimHelpingHandClapStep; + sprite->callback = AnimHelpingHandClap_Step; } -static void AnimHelpingHandClapStep(struct Sprite *sprite) +static void AnimHelpingHandClap_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -4290,9 +4367,9 @@ void AnimTask_HelpingHandAttackerMovement(u8 taskId) task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); if (IsDoubleBattle() == TRUE) { - int x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); - int y = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), BATTLER_COORD_X); - if (x > y) + int attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + int partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(gBattleAnimAttacker), BATTLER_COORD_X); + if (attackerX > partnerX) task->data[14] = 1; else task->data[14] = -1; @@ -4305,10 +4382,10 @@ void AnimTask_HelpingHandAttackerMovement(u8 taskId) task->data[14] = 1; } - task->func = AnimTask_HelpingHandAttackerMovementStep; + task->func = AnimTask_HelpingHandAttackerMovement_Step; } -static void AnimTask_HelpingHandAttackerMovementStep(u8 taskId) +static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -4409,10 +4486,10 @@ void AnimForesightMagnifyingGlass(struct Sprite *sprite) sprite->oam.priority = GetBattlerSpriteBGPriority(sprite->data[7]); sprite->oam.objMode = ST_OAM_OBJ_BLEND; - sprite->callback = AnimForesightMagnifyingGlassStep; + sprite->callback = AnimForesightMagnifyingGlass_Step; } -static void AnimForesightMagnifyingGlassStep(struct Sprite *sprite) +static void AnimForesightMagnifyingGlass_Step(struct Sprite *sprite) { u16 x, y; @@ -4514,7 +4591,7 @@ static void AnimForesightMagnifyingGlassStep(struct Sprite *sprite) } } -static void AnimMeteorMashStarStep(struct Sprite *sprite) +static void AnimMeteorMashStar_Step(struct Sprite *sprite) { sprite->x2 = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4]; sprite->y2 = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4]; @@ -4559,7 +4636,7 @@ void AnimMeteorMashStar(struct Sprite *sprite) sprite->data[4] = gBattleAnimArgs[4]; sprite->x = sprite->data[0]; sprite->y = sprite->data[1]; - sprite->callback = AnimMeteorMashStarStep; + sprite->callback = AnimMeteorMashStar_Step; } void AnimTask_MonToSubstitute(u8 taskId) @@ -4590,7 +4667,7 @@ void AnimTask_MonToSubstitute(u8 taskId) else { LoadBattleMonGfxAndAnimate(gBattleAnimAttacker, 0, spriteId); - for (i = 0; i < 16; i++) + for (i = 0; i < NUM_TASK_DATA; i++) gTasks[taskId].data[i] = 0; gTasks[taskId].func = AnimTask_MonToSubstituteDoll; @@ -4669,10 +4746,10 @@ void AnimBlockX(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->y2 = y; - sprite->callback = AnimBlockXStep; + sprite->callback = AnimBlockX_Step; } -static void AnimBlockXStep(struct Sprite *sprite) +static void AnimBlockX_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -4832,15 +4909,15 @@ static void MoveOdorSleuthClone(struct Sprite *sprite) void AnimTask_GetReturnPowerLevel(u8 taskId) { - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = 0; if (gAnimFriendship < 60) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = 0; if (gAnimFriendship > 60 && gAnimFriendship < 92) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = 1; if (gAnimFriendship > 91 && gAnimFriendship < 201) - gBattleAnimArgs[7] = 2; + gBattleAnimArgs[ARG_RET_ID] = 2; if (gAnimFriendship > 200) - gBattleAnimArgs[7] = 3; + gBattleAnimArgs[ARG_RET_ID] = 3; DestroyAnimVisualTask(taskId); } @@ -4869,7 +4946,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) gTasks[taskId].data[1] &= 0xFF; x = gSprites[spriteId].x + gSprites[spriteId].x2; - if ((u16)(x + 32) > 304) + if (x < -32 || x > DISPLAY_WIDTH + 32) { gTasks[taskId].data[1] = 0; gTasks[taskId].data[0]++; @@ -4890,7 +4967,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) subpriority = gSprites[GetAnimBattlerSpriteId(ANIM_TARGET)].subpriority + 1; isBackPic = FALSE; - x = 272; + x = DISPLAY_WIDTH + 32; } else { @@ -4943,7 +5020,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) } } } - if ((u16)(x + 32) > 304) + if (x < -32 || x > DISPLAY_WIDTH + 32) { gTasks[taskId].data[1] = 0; gTasks[taskId].data[0]++; @@ -4956,7 +5033,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) gSprites[spriteId].x2 = -gSprites[spriteId].x - 32; else - gSprites[spriteId].x2 = 272 - gSprites[spriteId].x; + gSprites[spriteId].x2 = DISPLAY_WIDTH + 32 - gSprites[spriteId].x; gTasks[taskId].data[0]++; break; @@ -5101,10 +5178,10 @@ void AnimTask_TeeterDanceMovement(u8 taskId) task->data[11] = 0; task->data[10] = 1; task->data[12] = 0; - task->func = AnimTask_TeeterDanceMovementStep; + task->func = AnimTask_TeeterDanceMovement_Step; } -static void AnimTask_TeeterDanceMovementStep(u8 taskId) +static void AnimTask_TeeterDanceMovement_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -5139,8 +5216,9 @@ static void AnimTask_TeeterDanceMovementStep(u8 taskId) } } -static void AnimKnockOffStrikeStep(struct Sprite *sprite) +static void AnimKnockOffStrike_Step(struct Sprite *sprite) { + // These two cases are identical. if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) { sprite->data[1] += sprite->data[0]; @@ -5181,7 +5259,7 @@ void AnimKnockOffStrike(struct Sprite *sprite) sprite->y += gBattleAnimArgs[1]; } - sprite->callback = AnimKnockOffStrikeStep; + sprite->callback = AnimKnockOffStrike_Step; } // Gradually fades a rotating recyle arrow sprite in and back out. @@ -5195,11 +5273,11 @@ void AnimRecycle(struct Sprite *sprite) sprite->data[6] = 0; sprite->data[7] = 16; - sprite->callback = AnimRecycleStep; + sprite->callback = AnimRecycle_Step; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[6], sprite->data[7])); } -static void AnimRecycleStep(struct Sprite *sprite) +static void AnimRecycle_Step(struct Sprite *sprite) { switch (sprite->data[2]) { @@ -5261,15 +5339,15 @@ static void AnimRecycleStep(struct Sprite *sprite) void AnimTask_GetWeather(u8 taskId) { - gBattleAnimArgs[7] = ANIM_WEATHER_NONE; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_NONE; if (gWeatherMoveAnim & B_WEATHER_SUN) - gBattleAnimArgs[7] = ANIM_WEATHER_SUN; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SUN; else if (gWeatherMoveAnim & B_WEATHER_RAIN) - gBattleAnimArgs[7] = ANIM_WEATHER_RAIN; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_RAIN; else if (gWeatherMoveAnim & B_WEATHER_SANDSTORM) - gBattleAnimArgs[7] = ANIM_WEATHER_SANDSTORM; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_SANDSTORM; else if (gWeatherMoveAnim & B_WEATHER_HAIL) - gBattleAnimArgs[7] = ANIM_WEATHER_HAIL; + gBattleAnimArgs[ARG_RET_ID] = ANIM_WEATHER_HAIL; DestroyAnimVisualTask(taskId); } @@ -5283,10 +5361,10 @@ void AnimTask_SlackOffSquish(u8 taskId) task->data[0] = 0; task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); PrepareAffineAnimInTaskData(task, task->data[15], sSlackOffSquishAffineAnimCmds); - task->func = AnimTask_SlackOffSquishStep; + task->func = AnimTask_SlackOffSquish_Step; } -static void AnimTask_SlackOffSquishStep(u8 taskId) +static void AnimTask_SlackOffSquish_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; From ba6bb34226855f0dca738890ffed523b0160b1a2 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 16 Aug 2022 14:35:37 -0400 Subject: [PATCH 10/38] Sync battle anim - electric --- include/battle_anim.h | 2 +- src/battle_anim_effects_2.c | 2 +- src/battle_anim_electric.c | 158 +++++++++++++++++++----------------- src/battle_anim_mons.c | 2 +- 4 files changed, 86 insertions(+), 78 deletions(-) diff --git a/include/battle_anim.h b/include/battle_anim.h index 3ee687e55..4b35ccc8b 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -361,7 +361,7 @@ u8 GetGhostSpriteDefault_Y(u8 battlerId); u8 GetBattlerYCoordWithElevation(u8 battlerId); u8 GetAnimBattlerSpriteId(u8 animBattler); void StoreSpriteCallbackInData6(struct Sprite *sprite, SpriteCallback callback); -void TranslateSpriteInCircleOverDuration(struct Sprite *sprite); +void TranslateSpriteInCircle(struct Sprite *sprite); void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite); void TranslateSpriteInEllipse(struct Sprite *sprite); void WaitAnimForDuration(struct Sprite *sprite); diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index cc67bbbc5..b16c2d163 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -1847,7 +1847,7 @@ void AnimRazorWindTornado(struct Sprite *sprite) sprite->data[2] = gBattleAnimArgs[5]; sprite->data[3] = gBattleAnimArgs[6]; sprite->data[4] = gBattleAnimArgs[3]; - sprite->callback = TranslateSpriteInCircleOverDuration; + sprite->callback = TranslateSpriteInCircle; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); sprite->callback(sprite); } diff --git a/src/battle_anim_electric.c b/src/battle_anim_electric.c index f6f01a8ef..a34f848f1 100644 --- a/src/battle_anim_electric.c +++ b/src/battle_anim_electric.c @@ -5,9 +5,9 @@ #include "constants/songs.h" static void AnimLightning(struct Sprite *sprite); -static void sub_80ADC58(struct Sprite *sprite); -static void sub_80ADCB8(struct Sprite *sprite); -static void sub_80ADD4C(struct Sprite *sprite); +static void AnimUnusedSpinningFist(struct Sprite *sprite); +static void AnimUnusedCirclingShock(struct Sprite *sprite); +static void AnimSparkElectricity(struct Sprite *sprite); static void AnimZapCannonSpark(struct Sprite *sprite); static void AnimThunderboltOrb(struct Sprite *sprite); static void AnimSparkElectricityFlashing(struct Sprite *sprite); @@ -20,19 +20,19 @@ static void AnimVoltTackleOrbSlide(struct Sprite *sprite); static void AnimVoltTackleBolt(struct Sprite *sprite); static void AnimGrowingShockWaveOrb(struct Sprite *sprite); static void AnimShockWaveProgressingBolt(struct Sprite *sprite); -static void sub_80ADC3C(struct Sprite *sprite); -static void sub_80ADC9C(struct Sprite *sprite); -static void sub_80ADF38(struct Sprite *sprite); -static void sub_80AE130(struct Sprite *sprite); -static void sub_80AE278(u8 taskId); -static void sub_80AE4F4(struct Sprite *sprite); -static void sub_80AE5BC(u8 taskId); -static void sub_80AE704(struct Sprite *sprite); -static void sub_80AE83C(struct Sprite *sprite); -static bool8 sub_80AEB98(struct Task *task, u8 taskId); -static bool8 sub_80AEE74(struct Task *task, u8 taskId); -static bool8 sub_80AF058(struct Task *task, u8 taskId); -static void sub_80AF0C8(struct Sprite *sprite); +static void AnimLightning_Step(struct Sprite *sprite); +static void AnimUnusedSpinningFist_Step(struct Sprite *sprite); +static void AnimZapCannonSpark_Step(struct Sprite *sprite); +static void AnimSparkElectricityFlashing_Step(struct Sprite *sprite); +static void AnimTask_ElectricBolt_Step(u8 taskId); +static void AnimThunderWave_Step(struct Sprite *sprite); +static void AnimTask_ElectricChargingParticles_Step(u8 taskId); +static void AnimElectricChargingParticles(struct Sprite *sprite); +static void AnimVoltTackleOrbSlide_Step(struct Sprite *sprite); +static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId); +static bool8 CreateShockWaveBoltSprite(struct Task *task, u8 taskId); +static bool8 CreateShockWaveLightningSprite(struct Task *task, u8 taskId); +static void AnimShockWaveLightning(struct Sprite *sprite); static const union AnimCmd sAnim_Lightning[] = { @@ -60,7 +60,7 @@ const struct SpriteTemplate gLightningSpriteTemplate = .callback = AnimLightning, }; -static const union AffineAnimCmd gUnknown_83E5F50[] = +static const union AffineAnimCmd sAffineAnim_UnusedSpinningFist[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 20), @@ -68,23 +68,23 @@ static const union AffineAnimCmd gUnknown_83E5F50[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const gUnknown_83E5F70[] = +static const union AffineAnimCmd *const sAffineAnims_UnusedSpinningFist[] = { - gUnknown_83E5F50, + sAffineAnim_UnusedSpinningFist, }; -const struct SpriteTemplate gUnknown_83E5F74 = +static const struct SpriteTemplate sUnusedSpinningFistSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineNormal_ObjNormal_32x32, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gUnknown_83E5F70, - .callback = sub_80ADC58, + .affineAnims = sAffineAnims_UnusedSpinningFist, + .callback = AnimUnusedSpinningFist, }; -static const union AnimCmd gUnknown_83E5F8C[] = +static const union AnimCmd sAnim_UnusedCirclingShock[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_FRAME(16, 5), @@ -95,20 +95,20 @@ static const union AnimCmd gUnknown_83E5F8C[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E5FA8[] = +static const union AnimCmd *const sAnims_UnusedCirclingShock[] = { - gUnknown_83E5F8C, + sAnim_UnusedCirclingShock, }; -const struct SpriteTemplate gUnknown_83E5FAC = +static const struct SpriteTemplate sUnusedCirclingShockSpriteTemplate = { .tileTag = ANIM_TAG_SHOCK, .paletteTag = ANIM_TAG_SHOCK, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E5FA8, + .anims = sAnims_UnusedCirclingShock, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80ADCB8, + .callback = AnimUnusedCirclingShock, }; const struct SpriteTemplate gSparkElectricitySpriteTemplate = @@ -119,7 +119,7 @@ const struct SpriteTemplate gSparkElectricitySpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80ADD4C, + .callback = AnimSparkElectricity, }; const struct SpriteTemplate gZapCannonBallSpriteTemplate = @@ -458,31 +458,31 @@ static void AnimLightning(struct Sprite *sprite) else sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; - sprite->callback = sub_80ADC3C; + sprite->callback = AnimLightning_Step; } -static void sub_80ADC3C(struct Sprite *sprite) +static void AnimLightning_Step(struct Sprite *sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); } -static void sub_80ADC58(struct Sprite *sprite) +static void AnimUnusedSpinningFist(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) sprite->x -= gBattleAnimArgs[0]; else sprite->x += gBattleAnimArgs[0]; - sprite->callback = sub_80ADC9C; + sprite->callback = AnimUnusedSpinningFist_Step; } -static void sub_80ADC9C(struct Sprite *sprite) +static void AnimUnusedSpinningFist_Step(struct Sprite *sprite) { if (sprite->affineAnimEnded) DestroySpriteAndMatrix(sprite); } -static void sub_80ADCB8(struct Sprite *sprite) +static void AnimUnusedCirclingShock(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); @@ -501,10 +501,10 @@ static void sub_80ADCB8(struct Sprite *sprite) sprite->data[2] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[4]; StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = TranslateSpriteInCircleOverDuration; + sprite->callback = TranslateSpriteInCircle; } -static void sub_80ADD4C(struct Sprite *sprite) +static void AnimSparkElectricity(struct Sprite *sprite) { u8 battler; u32 matrixNum; @@ -512,20 +512,20 @@ static void sub_80ADD4C(struct Sprite *sprite) switch (gBattleAnimArgs[4]) { - case 0: + case ANIM_ATTACKER: battler = gBattleAnimAttacker; break; - case 1: + case ANIM_TARGET: default: battler = gBattleAnimTarget; break; - case 2: + case ANIM_ATK_PARTNER: if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) battler = gBattleAnimAttacker; else battler = BATTLE_PARTNER(gBattleAnimAttacker); break; - case 3: + case ANIM_DEF_PARTNER: if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) battler = BATTLE_PARTNER(gBattleAnimTarget); else @@ -568,11 +568,11 @@ static void AnimZapCannonSpark(struct Sprite *sprite) sprite->data[6] = gBattleAnimArgs[5]; sprite->data[7] = gBattleAnimArgs[4]; sprite->oam.tileNum += gBattleAnimArgs[6] * 4; - sprite->callback = sub_80ADF38; + sprite->callback = AnimZapCannonSpark_Step; sprite->callback(sprite); } -static void sub_80ADF38(struct Sprite *sprite) +static void AnimZapCannonSpark_Step(struct Sprite *sprite) { if (!AnimTranslateLinear(sprite)) { @@ -588,7 +588,7 @@ static void sub_80ADF38(struct Sprite *sprite) } } -static void sub_80ADFB0(struct Sprite *sprite) +static void AnimThunderboltOrb_Step(struct Sprite *sprite) { if (--sprite->data[5] == -1) { @@ -608,7 +608,7 @@ static void AnimThunderboltOrb(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[0]; sprite->data[4] = gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[3]; - sprite->callback = sub_80ADFB0; + sprite->callback = AnimThunderboltOrb_Step; } static void AnimSparkElectricityFlashing(struct Sprite *sprite) @@ -629,11 +629,11 @@ static void AnimSparkElectricityFlashing(struct Sprite *sprite) sprite->data[6] = gBattleAnimArgs[5]; sprite->data[7] = gBattleAnimArgs[4]; sprite->oam.tileNum += gBattleAnimArgs[6] * 4; - sprite->callback = sub_80AE130; + sprite->callback = AnimSparkElectricityFlashing_Step; sprite->callback(sprite); } -static void sub_80AE130(struct Sprite *sprite) +static void AnimSparkElectricityFlashing_Step(struct Sprite *sprite) { sprite->x2 = Sin(sprite->data[7], sprite->data[5]); sprite->y2 = Cos(sprite->data[7], sprite->data[5]); @@ -644,6 +644,7 @@ static void sub_80AE130(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Electricity arcs around the target. Used for Paralysis and various electric move hits static void AnimElectricity(struct Sprite *sprite) { InitSpritePosToAnimTarget(sprite, FALSE); @@ -657,15 +658,16 @@ static void AnimElectricity(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } +// The vertical falling thunder bolt used in Thunder Wave/Shock/Bolt void AnimTask_ElectricBolt(u8 taskId) { gTasks[taskId].data[0] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0]; gTasks[taskId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1]; gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].func = sub_80AE278; + gTasks[taskId].func = AnimTask_ElectricBolt_Step; } -static void sub_80AE278(u8 taskId) +static void AnimTask_ElectricBolt_Step(u8 taskId) { u16 r8; u16 r2; @@ -735,18 +737,19 @@ static void AnimElectricBoltSegment(struct Sprite *sprite) { if (!sprite->data[0]) { - sprite->oam.shape = ST_OAM_V_RECTANGLE; - sprite->oam.size = ST_OAM_SIZE_0; + sprite->oam.shape = SPRITE_SHAPE(8x16); + sprite->oam.size = SPRITE_SIZE(8x16); } else { - sprite->oam.shape = ST_OAM_SQUARE; - sprite->oam.size = ST_OAM_SIZE_1; + sprite->oam.shape = SPRITE_SHAPE(16x16); + sprite->oam.size = SPRITE_SIZE(16x16); } if (++sprite->data[1] == 15) DestroySprite(sprite); } +// The horizontal bands of electricity used in Thunder Wave static void AnimThunderWave(struct Sprite *sprite) { u8 spriteId; @@ -756,11 +759,11 @@ static void AnimThunderWave(struct Sprite *sprite) spriteId = CreateSprite(&gThunderWaveSpriteTemplate, sprite->x + 32, sprite->y, sprite->subpriority); gSprites[spriteId].oam.tileNum += 8; ++gAnimVisualTaskCount; - gSprites[spriteId].callback = sub_80AE4F4; - sprite->callback = sub_80AE4F4; + gSprites[spriteId].callback = AnimThunderWave_Step; + sprite->callback = AnimThunderWave_Step; } -static void sub_80AE4F4(struct Sprite *sprite) +static void AnimThunderWave_Step(struct Sprite *sprite) { if (++sprite->data[0] == 3) { @@ -771,6 +774,7 @@ static void sub_80AE4F4(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Animates small electric orbs moving from around the battler inward. For Charge/Shock Wave void AnimTask_ElectricChargingParticles(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -793,10 +797,10 @@ void AnimTask_ElectricChargingParticles(u8 taskId) task->data[11] = gBattleAnimArgs[3]; task->data[12] = 0; task->data[13] = gBattleAnimArgs[2]; - task->func = sub_80AE5BC; + task->func = AnimTask_ElectricChargingParticles_Step; } -static void sub_80AE5BC(u8 taskId) +static void AnimTask_ElectricChargingParticles_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -821,7 +825,7 @@ static void sub_80AE5BC(u8 taskId) sprite->data[4] = task->data[15]; sprite->data[5] = taskId; InitAnimLinearTranslation(sprite); - StoreSpriteCallbackInData6(sprite, sub_80AE704); + StoreSpriteCallbackInData6(sprite, AnimElectricChargingParticles); sprite->callback = RunStoredCallbackWhenAnimEnds; if (++task->data[9] > 15) task->data[9] = 0; @@ -842,7 +846,7 @@ static void sub_80AE5BC(u8 taskId) } } -static void sub_80AE6D0(struct Sprite *sprite) +static void AnimElectricChargingParticles_Step(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) { @@ -851,15 +855,15 @@ static void sub_80AE6D0(struct Sprite *sprite) } } -static void sub_80AE704(struct Sprite *sprite) +static void AnimElectricChargingParticles(struct Sprite *sprite) { StartSpriteAnim(sprite, 1); - sprite->callback = sub_80AE6D0; + sprite->callback = AnimElectricChargingParticles_Step; } static void AnimGrowingChargeOrb(struct Sprite *sprite) { - if (!gBattleAnimArgs[0]) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -873,9 +877,10 @@ static void AnimGrowingChargeOrb(struct Sprite *sprite) sprite->callback = RunStoredCallbackWhenAffineAnimEnds; } +// The quick electric burst at the end of Charge / during the Volt Tackle hit static void AnimElectricPuff(struct Sprite *sprite) { - if (!gBattleAnimArgs[0]) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -891,6 +896,7 @@ static void AnimElectricPuff(struct Sprite *sprite) sprite->callback = RunStoredCallbackWhenAnimEnds; } +// Creates an orb of electricity that grows then slides off-screen. The attacker slides with it static void AnimVoltTackleOrbSlide(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, 1); @@ -900,10 +906,10 @@ static void AnimVoltTackleOrbSlide(struct Sprite *sprite) sprite->data[7] = 16; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) sprite->data[7] *= -1; - sprite->callback = sub_80AE83C; + sprite->callback = AnimVoltTackleOrbSlide_Step; } -static void sub_80AE83C(struct Sprite *sprite) +static void AnimVoltTackleOrbSlide_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -975,6 +981,7 @@ void AnimTask_VoltTackleAttackerReappear(u8 taskId) } } +// The horizontal bolts of electricity for Volt Tackle void AnimTask_VoltTackleBolt(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1036,7 +1043,7 @@ void AnimTask_VoltTackleBolt(u8 taskId) if (++task->data[2] > 0) { task->data[2] = 0; - if (sub_80AEB98(task, taskId) || sub_80AEB98(task, taskId)) + if (CreateVoltTackleBolt(task, taskId) || CreateVoltTackleBolt(task, taskId)) ++task->data[0]; } break; @@ -1047,7 +1054,7 @@ void AnimTask_VoltTackleBolt(u8 taskId) } } -static bool8 sub_80AEB98(struct Task *task, u8 taskId) +static bool8 CreateVoltTackleBolt(struct Task *task, u8 taskId) { u8 spriteId = CreateSprite(&gVoltTackleBoltSpriteTemplate, task->data[3], task->data[5], 35); @@ -1112,7 +1119,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId) task->data[4] = 7; task->data[5] = -1; task->data[11] = 12; - task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76); + task->data[12] = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); task->data[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET); task->data[14] = task->data[12]; task->data[15] = (task->data[13] - task->data[12]) / 3; @@ -1122,7 +1129,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId) if (++task->data[1] > 0) { task->data[1] = 0; - if (sub_80AEE74(task, taskId)) + if (CreateShockWaveBoltSprite(task, taskId)) { if (task->data[2] == 5) task->data[0] = 3; @@ -1172,7 +1179,7 @@ void AnimTask_ShockWaveProgressingBolt(u8 taskId) } } -static bool8 sub_80AEE74(struct Task *task, u8 taskId) +static bool8 CreateShockWaveBoltSprite(struct Task *task, u8 taskId) { u8 spriteId = CreateSprite(&sShockWaveProgressingBoltSpriteTemplate, task->data[6], task->data[7], 35); if (spriteId != MAX_SPRITES) @@ -1206,6 +1213,7 @@ static bool8 sub_80AEE74(struct Task *task, u8 taskId) } } +// Just runs timer for sprite. See AnimTask_ShockWaveProgressingBolt static void AnimShockWaveProgressingBolt(struct Sprite *sprite) { if (++sprite->data[0] > 12) @@ -1234,7 +1242,7 @@ void AnimTask_ShockWaveLightning(u8 taskId) if (++task->data[1] > 1) { task->data[1] = 0; - if (sub_80AF058(task, taskId)) + if (CreateShockWaveLightningSprite(task, taskId)) ++task->data[0]; } break; @@ -1245,13 +1253,13 @@ void AnimTask_ShockWaveLightning(u8 taskId) } } -static bool8 sub_80AF058(struct Task *task, u8 taskId) +static bool8 CreateShockWaveLightningSprite(struct Task *task, u8 taskId) { u8 spriteId = CreateSprite(&gLightningSpriteTemplate, task->data[13], task->data[14], task->data[12]); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].callback = sub_80AF0C8; + gSprites[spriteId].callback = AnimShockWaveLightning; gSprites[spriteId].data[6] = taskId; gSprites[spriteId].data[7] = 10; ++task->data[10]; @@ -1262,7 +1270,7 @@ static bool8 sub_80AF058(struct Task *task, u8 taskId) return FALSE; } -static void sub_80AF0C8(struct Sprite *sprite) +static void AnimShockWaveLightning(struct Sprite *sprite) { if (sprite->animEnded) { diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 144a8db75..9eb2fa2dd 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -392,7 +392,7 @@ static void SetCallbackToStoredInData6(struct Sprite *sprite) // x = a * sin(theta0 + dtheta * t) // y = a * cos(theta0 + dtheta * t) -void TranslateSpriteInCircleOverDuration(struct Sprite *sprite) +void TranslateSpriteInCircle(struct Sprite *sprite) { if (sprite->data[3]) { From b598507a2e5dd0d14e797f855cbc86f927980893 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 16 Aug 2022 14:51:48 -0400 Subject: [PATCH 11/38] Sync battle anim - fight --- include/battle_anim.h | 4 +- src/battle_anim_effects_2.c | 2 +- src/battle_anim_fight.c | 186 ++++++++++++++++++------------------ src/battle_anim_fire.c | 4 +- src/battle_anim_mons.c | 14 +-- 5 files changed, 104 insertions(+), 106 deletions(-) diff --git a/include/battle_anim.h b/include/battle_anim.h index 4b35ccc8b..15185b59d 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -404,7 +404,7 @@ void InitAnimLinearTranslation(struct Sprite *sprite); void StartAnimLinearTranslation(struct Sprite *sprite); void PlayerThrowBall_StartAnimLinearTranslation(struct Sprite *sprite); bool8 AnimTranslateLinear(struct Sprite *sprite); -void RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite); +void AnimTranslateLinear_WithFollowup(struct Sprite *sprite); void BattleAnim_InitLinearTranslationWithDuration(struct Sprite *sprite); void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite); void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite); @@ -425,7 +425,7 @@ u8 GetSpritePalIdxByBattler(u8 a1); void AnimSpriteOnMonPos(struct Sprite *sprite); void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); void AnimThrowProjectile(struct Sprite *sprite); -void AnimSnoreZ(struct Sprite *sprite); +void AnimTravelDiagonally(struct Sprite *sprite); s16 CloneBattlerSpriteWithBlend(u8 animBattler); void DestroySpriteWithActiveSheet(struct Sprite *sprite); void AnimTask_AlphaFadeIn(u8 taskId); diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index b16c2d163..ab870f792 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -585,7 +585,7 @@ const struct SpriteTemplate gSnoreZSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimSnoreZ, + .callback = AnimTravelDiagonally, }; static const union AnimCmd sExplosionAnimCmds[] = diff --git a/src/battle_anim_fight.c b/src/battle_anim_fight.c index f2c4b687e..c99a00785 100644 --- a/src/battle_anim_fight.c +++ b/src/battle_anim_fight.c @@ -5,7 +5,7 @@ #include "task.h" #include "trig.h" -static void unc_080B08A0(struct Sprite *sprite); +static void AnimUnusedHumanoidFoot(struct Sprite *sprite); static void AnimSlideHandOrFootToTarget(struct Sprite *sprite); static void AnimJumpKick(struct Sprite *sprite); static void AnimBasicFistOrFoot(struct Sprite *sprite); @@ -23,19 +23,19 @@ static void AnimSuperpowerFireball(struct Sprite *sprite); static void AnimArmThrustHit(struct Sprite *sprite); static void AnimRevengeScratch(struct Sprite *sprite); static void AnimFocusPunchFist(struct Sprite *sprite); -static void sub_80B0B2C(struct Sprite *sprite); -static void sub_80B0BD8(struct Sprite *sprite); -static void sub_80B0CB4(struct Sprite *sprite); +static void AnimFistOrFootRandomPos_Step(struct Sprite *sprite); +static void AnimCrossChopHand_Step(struct Sprite *sprite); +static void AnimSlidingKick_Step(struct Sprite *sprite); static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite); static void AnimStompFootStep(struct Sprite *sprite); static void AnimStompFootEnd(struct Sprite *sprite); -static void sub_80B0EF0(struct Sprite *sprite); -static void sub_80B1050(struct Sprite *sprite); -static void sub_80B111C(struct Sprite *sprite); -static void sub_80B11E4(struct Sprite *sprite); -static void sub_80B12A4(struct Sprite *sprite); +static void AnimBrickBreakWall_Step(struct Sprite *sprite); +static void AnimBrickBreakWallShard_Step(struct Sprite *sprite); +static void AnimSuperpowerOrb_Step(struct Sprite *sprite); +static void AnimSuperpowerRock_Step1(struct Sprite *sprite); +static void AnimSuperpowerRock_Step2(struct Sprite *sprite); -const struct SpriteTemplate gUnknown_83E668C = +static const struct SpriteTemplate sUnusedHumanoidFootSpriteTemplate = { .tileTag = ANIM_TAG_HUMANOID_FOOT, .paletteTag = ANIM_TAG_HUMANOID_FOOT, @@ -43,54 +43,46 @@ const struct SpriteTemplate gUnknown_83E668C = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = unc_080B08A0, + .callback = AnimUnusedHumanoidFoot, }; -static const union AnimCmd sAnim_HandOrFoot[] = +static const union AnimCmd sAnim_Fist[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_SlidingKick_0[] = +static const union AnimCmd sAnim_FootWide[] = { ANIMCMD_FRAME(16, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_SlidingKick_1[] = +static const union AnimCmd sAnim_FootTall[] = { ANIMCMD_FRAME(32, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CrossChopHand_0[] = +static const union AnimCmd sAnim_HandLeft[] = { ANIMCMD_FRAME(48, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_CrossChopHand_1[] = +static const union AnimCmd sAnim_HandRight[] = { ANIMCMD_FRAME(48, 1, .hFlip = TRUE), ANIMCMD_END, }; -static const union AnimCmd *const sAnims_HandOrFoot[] = +static const union AnimCmd *const sAnims_HandsAndFeet[] = { - sAnim_HandOrFoot, -}; - -static const union AnimCmd *const sAnims_SlidingKick[] = -{ - sAnim_SlidingKick_0, - sAnim_SlidingKick_1, -}; - -static const union AnimCmd *const sAnims_CrossChopHand[] = -{ - sAnim_CrossChopHand_0, - sAnim_CrossChopHand_1, + sAnim_Fist, + sAnim_FootWide, + sAnim_FootTall, + sAnim_HandLeft, + sAnim_HandRight, }; const struct SpriteTemplate gKarateChopSpriteTemplate = @@ -98,7 +90,7 @@ const struct SpriteTemplate gKarateChopSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSlideHandOrFootToTarget, @@ -109,7 +101,7 @@ const struct SpriteTemplate gJumpKickSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimJumpKick, @@ -120,7 +112,7 @@ const struct SpriteTemplate gFistFootSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimBasicFistOrFoot, @@ -131,7 +123,7 @@ const struct SpriteTemplate gFistFootRandomPosSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimFistOrFootRandomPos, @@ -142,7 +134,7 @@ const struct SpriteTemplate gCrossChopHandSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_CrossChopHand, + .anims = &sAnims_HandsAndFeet[3], .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimCrossChopHand, @@ -153,7 +145,7 @@ const struct SpriteTemplate gSlidingKickSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_SlidingKick, + .anims = &sAnims_HandsAndFeet[1], .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSlidingKick, @@ -171,12 +163,13 @@ static const union AffineAnimCmd *const sAffineAnims_SpinningHandOrFoot[] = sAffineAnim_SpinningHandOrFoot, }; +// Blaze Kick / Meteor Mash const struct SpriteTemplate gSpinningHandOrFootSpriteTemplate = { .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = sAffineAnims_SpinningHandOrFoot, .callback = AnimSpinningKickOrPunch, @@ -199,7 +192,7 @@ const struct SpriteTemplate gMegaPunchKickSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = sAffineAnims_MegaPunchKick, .callback = AnimSpinningKickOrPunch, @@ -210,7 +203,7 @@ const struct SpriteTemplate gStompFootSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_SlidingKick, + .anims = &sAnims_HandsAndFeet[1], .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimStompFoot, @@ -301,7 +294,7 @@ const struct SpriteTemplate gArmThrustHandSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimArmThrustHit, @@ -405,13 +398,13 @@ const struct SpriteTemplate gFocusPunchFistSpriteTemplate = .tileTag = ANIM_TAG_HANDS_AND_FEET, .paletteTag = ANIM_TAG_HANDS_AND_FEET, .oam = &gOamData_AffineDouble_ObjNormal_32x32, - .anims = sAnims_HandOrFoot, + .anims = sAnims_HandsAndFeet, .images = NULL, .affineAnims = sAffineAnims_FocusPunchFist, .callback = AnimFocusPunchFist, }; -static void unc_080B08A0(struct Sprite *sprite) +static void AnimUnusedHumanoidFoot(struct Sprite *sprite) { SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); sprite->y += gBattleAnimArgs[1]; @@ -429,7 +422,7 @@ static void AnimSlideHandOrFootToTarget(struct Sprite *sprite) } StartSpriteAnim(sprite, gBattleAnimArgs[6]); gBattleAnimArgs[6] = 0; - AnimSnoreZ(sprite); + AnimTravelDiagonally(sprite); } static void AnimJumpKick(struct Sprite *sprite) @@ -475,8 +468,8 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite) if (gBattleAnimArgs[2] < 0) gBattleAnimArgs[2] = Random() % 5; StartSpriteAnim(sprite, gBattleAnimArgs[2]); - sprite->x = GetBattlerSpriteCoord(battler, 2); - sprite->y = GetBattlerSpriteCoord(battler, 3); + sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET); xMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_WIDTH) / 2; yMod = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4; x = Random() % xMod; @@ -491,19 +484,19 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite) sprite->y += y; sprite->data[0] = gBattleAnimArgs[1]; sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->x, sprite->y, sprite->subpriority + 1); - if (sprite->data[7] != 64) + if (sprite->data[7] != MAX_SPRITES) { StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0); gSprites[sprite->data[7]].callback = SpriteCallbackDummy; } - sprite->callback = sub_80B0B2C; + sprite->callback = AnimFistOrFootRandomPos_Step; } -static void sub_80B0B2C(struct Sprite *sprite) +static void AnimFistOrFootRandomPos_Step(struct Sprite *sprite) { if (sprite->data[0] == 0) { - if (sprite->data[7] != 64) + if (sprite->data[7] != MAX_SPRITES) { FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum); DestroySprite(&gSprites[sprite->data[7]]); @@ -531,10 +524,10 @@ static void AnimCrossChopHand(struct Sprite *sprite) } sprite->data[4] = sprite->y - 20; sprite->callback = StartAnimLinearTranslation; - StoreSpriteCallbackInData6(sprite, sub_80B0BD8); + StoreSpriteCallbackInData6(sprite, AnimCrossChopHand_Step); } -static void sub_80B0BD8(struct Sprite *sprite) +static void AnimCrossChopHand_Step(struct Sprite *sprite) { if (++sprite->data[5] == 11) { @@ -550,6 +543,7 @@ static void sub_80B0BD8(struct Sprite *sprite) } } +// Rolling Kick / Low Kick static void AnimSlidingKick(struct Sprite *sprite) { if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget && GetBattlerPosition(gBattleAnimTarget) < B_POSITION_PLAYER_RIGHT) @@ -566,10 +560,10 @@ static void AnimSlidingKick(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[5]; sprite->data[6] = gBattleAnimArgs[4]; sprite->data[7] = 0; - sprite->callback = sub_80B0CB4; + sprite->callback = AnimSlidingKick_Step; } -static void sub_80B0CB4(struct Sprite *sprite) +static void AnimSlidingKick_Step(struct Sprite *sprite) { if (!AnimTranslateLinear(sprite)) { @@ -622,8 +616,8 @@ static void AnimStompFootStep(struct Sprite *sprite) if (--sprite->data[0] == -1) { sprite->data[0] = 6; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, AnimStompFootEnd); } @@ -658,17 +652,18 @@ static void AnimDizzyPunchDuck(struct Sprite *sprite) } } +// The wall that appears when Brick Break is going to shatter the target's defensive wall static void AnimBrickBreakWall(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); } sprite->x += gBattleAnimArgs[1]; sprite->y += gBattleAnimArgs[2]; @@ -676,10 +671,10 @@ static void AnimBrickBreakWall(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[3]; sprite->data[2] = gBattleAnimArgs[4]; sprite->data[3] = 0; - sprite->callback = sub_80B0EF0; + sprite->callback = AnimBrickBreakWall_Step; } -static void sub_80B0EF0(struct Sprite *sprite) +static void AnimBrickBreakWall_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -709,17 +704,18 @@ static void sub_80B0EF0(struct Sprite *sprite) } } +// Piece of shattered defensive wall flies off. Used by Brick Break when the target has a defensive wall static void AnimBrickBreakWallShard(struct Sprite *sprite) { - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0) + gBattleAnimArgs[2]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + gBattleAnimArgs[3]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X) + gBattleAnimArgs[2]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + gBattleAnimArgs[3]; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[2]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[3]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) + gBattleAnimArgs[2]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + gBattleAnimArgs[3]; } sprite->oam.tileNum += gBattleAnimArgs[1] * 16; sprite->data[0] = 0; @@ -745,10 +741,10 @@ static void AnimBrickBreakWallShard(struct Sprite *sprite) DestroyAnimSprite(sprite); return; } - sprite->callback = sub_80B1050; + sprite->callback = AnimBrickBreakWallShard_Step; } -static void sub_80B1050(struct Sprite *sprite) +static void AnimBrickBreakWallShard_Step(struct Sprite *sprite) { sprite->x += sprite->data[6]; sprite->y += sprite->data[7]; @@ -760,8 +756,8 @@ static void AnimSuperpowerOrb(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); sprite->data[7] = gBattleAnimTarget; } @@ -773,25 +769,26 @@ static void AnimSuperpowerOrb(struct Sprite *sprite) sprite->data[0] = 0; sprite->data[1] = 12; sprite->data[2] = 8; - sprite->callback = sub_80B111C; + sprite->callback = AnimSuperpowerOrb_Step; } -static void sub_80B111C(struct Sprite *sprite) +static void AnimSuperpowerOrb_Step(struct Sprite *sprite) { if (++sprite->data[0] == 180) { SetGpuReg(REG_OFFSET_BLDCNT, 0); sprite->data[0] = 16; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], 2); + sprite->data[2] = GetBattlerSpriteCoord(sprite->data[7], BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3); + sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; + sprite->callback = AnimTranslateLinear_WithFollowup; } } +// Floating rock that flies off to hit the target. Used by Superpower static void AnimSuperpowerRock(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; @@ -800,10 +797,10 @@ static void AnimSuperpowerRock(struct Sprite *sprite) StorePointerInVars(&sprite->data[4], &sprite->data[5], (void *)(sprite->y << 8)); sprite->data[6] = gBattleAnimArgs[1]; sprite->oam.tileNum += gBattleAnimArgs[2] * 4; - sprite->callback = sub_80B11E4; + sprite->callback = AnimSuperpowerRock_Step1; } -static void sub_80B11E4(struct Sprite *sprite) +static void AnimSuperpowerRock_Step1(struct Sprite *sprite) { void *var0; @@ -821,20 +818,20 @@ static void sub_80B11E4(struct Sprite *sprite) } else { - s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); - s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + s16 pos0 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + s16 pos1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + s16 pos2 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + s16 pos3 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = pos2 - pos0; sprite->data[1] = pos3 - pos1; sprite->data[2] = sprite->x << 4; sprite->data[3] = sprite->y << 4; - sprite->callback = sub_80B12A4; + sprite->callback = AnimSuperpowerRock_Step2; } } -static void sub_80B12A4(struct Sprite *sprite) +static void AnimSuperpowerRock_Step2(struct Sprite *sprite) { u16 edgeX; @@ -851,10 +848,10 @@ static void AnimSuperpowerFireball(struct Sprite *sprite) { u8 battler; - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) { - sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattlerAttacker, BATTLER_COORD_Y_PIC_OFFSET); battler = gBattleAnimTarget; sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimAttacker); } @@ -869,15 +866,15 @@ static void AnimSuperpowerFireball(struct Sprite *sprite) sprite->oam.matrixNum |= (ST_OAM_HFLIP | ST_OAM_VFLIP); sprite->data[0] = 16; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(battler, 2); + sprite->data[2] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(battler, 3); + sprite->data[4] = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; + sprite->callback = AnimTranslateLinear_WithFollowup; } -static void sub_80B13D4(struct Sprite *sprite) +static void AnimArmThrustHit_Step(struct Sprite *sprite) { if (sprite->data[0] == sprite->data[4]) DestroyAnimSprite(sprite); @@ -888,8 +885,8 @@ static void AnimArmThrustHit(struct Sprite *sprite) { u8 turn; - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[1] = gBattleAnimArgs[3]; sprite->data[2] = gBattleAnimArgs[0]; sprite->data[3] = gBattleAnimArgs[1]; @@ -905,12 +902,12 @@ static void AnimArmThrustHit(struct Sprite *sprite) StartSpriteAnim(sprite, sprite->data[1]); sprite->x2 = sprite->data[2]; sprite->y2 = sprite->data[3]; - sprite->callback = sub_80B13D4; + sprite->callback = AnimArmThrustHit_Step; } static void AnimRevengeScratch(struct Sprite *sprite) { - if (gBattleAnimArgs[2] == 0) + if (gBattleAnimArgs[2] == ANIM_ATTACKER) InitSpritePosToAnimAttacker(sprite, 0); else InitSpritePosToAnimTarget(sprite, FALSE); @@ -922,6 +919,7 @@ static void AnimRevengeScratch(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } +// Fist shrinks toward target and shakes static void AnimFocusPunchFist(struct Sprite *sprite) { if (sprite->affineAnimEnded) diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index a8f0c8503..c46fdf5d8 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -605,7 +605,7 @@ static void AnimEmberFlare(struct Sprite *sprite) && (gBattleAnimAttacker == GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT) || gBattleAnimAttacker == GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT))) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - sprite->callback = AnimSnoreZ; + sprite->callback = AnimTravelDiagonally; sprite->callback(sprite); } @@ -613,7 +613,7 @@ static void AnimBurnFlame(struct Sprite *sprite) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; gBattleAnimArgs[2] = -gBattleAnimArgs[2]; - sprite->callback = AnimSnoreZ; + sprite->callback = AnimTravelDiagonally; } // Animates the a fire sprite in the first-half of the MOVE_FIRE_BLAST diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 9eb2fa2dd..c5c88189c 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -19,7 +19,7 @@ #define IS_DOUBLE_BATTLE() (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3); -static void PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite); +static void PlayerThrowBall_AnimTranslateLinear_WithFollowup(struct Sprite *sprite); static void SpriteCB_RunAnimFastLinearTranslation(struct Sprite *sprite); static bool8 Dummy_ReturnFalse(void); static void AnimThrowProjectile_Step(struct Sprite *sprite); @@ -958,7 +958,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite) sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; InitAnimLinearTranslation(sprite); - sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; + sprite->callback = AnimTranslateLinear_WithFollowup; sprite->callback(sprite); } @@ -967,7 +967,7 @@ void PlayerThrowBall_StartAnimLinearTranslation(struct Sprite *sprite) sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; InitAnimLinearTranslation(sprite); - sprite->callback = PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6; + sprite->callback = PlayerThrowBall_AnimTranslateLinear_WithFollowup; sprite->callback(sprite); } @@ -998,13 +998,13 @@ bool8 AnimTranslateLinear(struct Sprite *sprite) return FALSE; } -void RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite) +void AnimTranslateLinear_WithFollowup(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); } -static void PlayerThrowBall_RunLinearTranslation_ThenceSetCBtoStoredInData6(struct Sprite *sprite) +static void PlayerThrowBall_AnimTranslateLinear_WithFollowup(struct Sprite *sprite) { UpdatePlayerPosInThrowAnim(sprite); if (AnimTranslateLinear(sprite)) @@ -1024,7 +1024,7 @@ void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite) sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; BattleAnim_InitLinearTranslationWithDuration(sprite); - sprite->callback = RunLinearTranslation_ThenceSetCBtoStoredInData6; + sprite->callback = AnimTranslateLinear_WithFollowup; sprite->callback(sprite); } @@ -1411,7 +1411,7 @@ static void AnimThrowProjectile_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimSnoreZ(struct Sprite *sprite) +void AnimTravelDiagonally(struct Sprite *sprite) { bool8 r4; u8 battlerId, coordType; From 796d307ffb77910f2a4fce4a026d9756167373c9 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 16 Aug 2022 15:08:16 -0400 Subject: [PATCH 12/38] Sync battle anim - fire --- include/battle_anim.h | 4 +- src/battle_anim_bug.c | 2 +- src/battle_anim_fire.c | 451 +++++++++++++++++++++++---------------- src/battle_anim_ghost.c | 2 +- src/battle_anim_ice.c | 4 +- src/battle_anim_mons.c | 6 +- src/battle_anim_normal.c | 2 +- 7 files changed, 280 insertions(+), 191 deletions(-) diff --git a/include/battle_anim.h b/include/battle_anim.h index 15185b59d..8c8bfbf0f 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -362,7 +362,7 @@ u8 GetBattlerYCoordWithElevation(u8 battlerId); u8 GetAnimBattlerSpriteId(u8 animBattler); void StoreSpriteCallbackInData6(struct Sprite *sprite, SpriteCallback callback); void TranslateSpriteInCircle(struct Sprite *sprite); -void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite); +void TranslateSpriteInGrowingCircle(struct Sprite *sprite); void TranslateSpriteInEllipse(struct Sprite *sprite); void WaitAnimForDuration(struct Sprite *sprite); void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite); @@ -405,7 +405,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite); void PlayerThrowBall_StartAnimLinearTranslation(struct Sprite *sprite); bool8 AnimTranslateLinear(struct Sprite *sprite); void AnimTranslateLinear_WithFollowup(struct Sprite *sprite); -void BattleAnim_InitLinearTranslationWithDuration(struct Sprite *sprite); +void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite); void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite); void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite); bool8 AnimFastTranslateLinear(struct Sprite *sprite); diff --git a/src/battle_anim_bug.c b/src/battle_anim_bug.c index 74e7ae5d5..15e94665b 100644 --- a/src/battle_anim_bug.c +++ b/src/battle_anim_bug.c @@ -264,7 +264,7 @@ static void AnimTranslateWebThread(struct Sprite *sprite) { SetAverageBattlerPositions(gBattleAnimTarget, 1, &sprite->data[2], &sprite->data[4]); } - BattleAnim_InitLinearTranslationWithDuration(sprite); + InitAnimLinearTranslationWithSpeed(sprite); sprite->data[5] = gBattleAnimArgs[3]; sprite->callback = AnimTranslateWebThread_Step; } diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index c46fdf5d8..d89416924 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -10,8 +10,8 @@ static void AnimFireSpiralInward(struct Sprite *sprite); static void AnimFireSpread(struct Sprite *sprite); static void AnimLargeFlame(struct Sprite *sprite); static void AnimFirePlume(struct Sprite *sprite); -static void sub_80ACAA8(struct Sprite *sprite); -static void sub_80ACBB0(struct Sprite *sprite); +static void AnimUnusedSmallEmber(struct Sprite *sprite); +static void AnimSunlight(struct Sprite *sprite); static void AnimEmberFlare(struct Sprite *sprite); static void AnimBurnFlame(struct Sprite *sprite); static void AnimFireRing(struct Sprite *sprite); @@ -21,22 +21,22 @@ static void AnimEruptionLaunchRock(struct Sprite *sprite); static void AnimEruptionFallingRock(struct Sprite *sprite); static void AnimWillOWispOrb(struct Sprite *sprite); static void AnimWillOWispFire(struct Sprite *sprite); -static void sub_80ACA6C(struct Sprite *sprite); -static void sub_80ACB1C(struct Sprite *sprite); +static void AnimLargeFlame_Step(struct Sprite *sprite); +static void AnimUnusedSmallEmber_Step(struct Sprite *sprite); static void AnimFireRing_Step1(struct Sprite *sprite); static void AnimFireRing_Step2(struct Sprite *sprite); static void AnimFireRing_Step3(struct Sprite *sprite); static void UpdateFireRingCircleOffset(struct Sprite *sprite); -static void sub_80ACE28(struct Sprite *sprite); -static void sub_80ACE50(struct Sprite *sprite); +static void AnimFireSpiralOutward_Step1(struct Sprite *sprite); +static void AnimFireSpiralOutward_Step2(struct Sprite *sprite); static void AnimTask_EruptionLaunchRocks_Step(u8 taskId); -static void sub_80AD1F8(u8 spriteId, u8 taskId, u8 a3); -static u16 sub_80AD374(u8 spriteId); -static void sub_80AD3C8(struct Sprite *sprite, s16 x, s16 y); -static void sub_80AD3E4(struct Sprite *sprite); -static void sub_80AD4A8(struct Sprite *sprite); -static void sub_80AD690(struct Sprite *sprite); -static void sub_80AD870(u8 taskId); +static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 a3); +static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId); +static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 x, s16 y); +static void UpdateEruptionLaunchRockPos(struct Sprite *sprite); +static void AnimEruptionFallingRock_Step(struct Sprite *sprite); +static void AnimWillOWispOrb_Step(struct Sprite *sprite); +static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId); static const union AnimCmd sAnim_FireSpiralSpread_0[] = { @@ -160,7 +160,7 @@ const struct SpriteTemplate gFirePlumeSpriteTemplate = .callback = AnimFirePlume, }; -const struct SpriteTemplate gUnknown_83E5CB8 = +static const struct SpriteTemplate sUnusedEmberFirePlumeSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, @@ -171,7 +171,7 @@ const struct SpriteTemplate gUnknown_83E5CB8 = .callback = AnimFirePlume, }; -static const union AnimCmd gUnknown_83E5CD0[] = +static const union AnimCmd sAnim_UnusedSmallEmber[] = { ANIMCMD_FRAME(16, 6), ANIMCMD_FRAME(32, 6), @@ -179,20 +179,20 @@ static const union AnimCmd gUnknown_83E5CD0[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E5CE0[] = +static const union AnimCmd *const sAnims_UnusedSmallEmber[] = { - gUnknown_83E5CD0, + sAnim_UnusedSmallEmber, }; -const struct SpriteTemplate gUnknown_83E5CE4 = +static const struct SpriteTemplate sUnusedSmallEmberSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_EMBER, .paletteTag = ANIM_TAG_SMALL_EMBER, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E5CE0, + .anims = sAnims_UnusedSmallEmber, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80ACAA8, + .callback = AnimUnusedSmallEmber, }; static const union AffineAnimCmd sAffineAnim_SunlightRay[] = @@ -215,7 +215,7 @@ const struct SpriteTemplate gSunlightRaySpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = sAffineAnims_SunlightRay, - .callback = sub_80ACBB0, + .callback = AnimSunlight, }; static const union AnimCmd sAnim_BasicFire[] = @@ -289,22 +289,22 @@ static const union AnimCmd *const sAnims_FireBlastCross[] = sAnim_FireBlastCross, }; -static const union AffineAnimCmd gUnknown_83E5DBC[] = +static const union AffineAnimCmd sAffineAnim_Unused_0[] = { AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 1), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gUnknown_83E5DCC[] = +static const union AffineAnimCmd sAffineAnim_Unused_1[] = { AFFINEANIMCMD_FRAME(0xA0, 0xA0, 0, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const gUnknown_83E5DDC[] = +static const union AffineAnimCmd *const sAffineAnims_Unused[] = { - gUnknown_83E5DBC, - gUnknown_83E5DCC, + sAffineAnim_Unused_0, + sAffineAnim_Unused_1, }; const struct SpriteTemplate gFireBlastCrossSpriteTemplate = @@ -351,7 +351,7 @@ static const struct SpriteTemplate gEruptionLaunchRockSpriteTemplate = .callback = AnimEruptionLaunchRock, }; -static const s16 sEruptionLaunchRockCoords[][2] = +static const s16 sEruptionLaunchRockSpeeds[][2] = { {-2, -5}, {-1, -1}, @@ -457,6 +457,7 @@ static const s8 sShakeDirsPattern1[16] = -1, 0, 1, 0, -1, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, 1, }; +// For the first stage of Fire Punch static void AnimFireSpiralInward(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[0]; @@ -465,10 +466,11 @@ static void AnimFireSpiralInward(struct Sprite *sprite) sprite->data[3] = 0x1E; sprite->data[4] = 0xFE00; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = TranslateSpriteInGrowingCircleOverDuration; + sprite->callback = TranslateSpriteInGrowingCircle; sprite->callback(sprite); } +// For the impact spread of fire sprites for moves like Blaze Kick or Fire Punch static void AnimFireSpread(struct Sprite *sprite) { SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); @@ -498,7 +500,7 @@ static void AnimFirePlume(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[2]; sprite->data[4] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[5]; - sprite->callback = sub_80ACA6C; + sprite->callback = AnimLargeFlame_Step; } static void AnimLargeFlame(struct Sprite *sprite) @@ -518,10 +520,10 @@ static void AnimLargeFlame(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[2]; sprite->data[4] = gBattleAnimArgs[3]; sprite->data[3] = gBattleAnimArgs[5]; - sprite->callback = sub_80ACA6C; + sprite->callback = AnimLargeFlame_Step; } -static void sub_80ACA6C(struct Sprite *sprite) +static void AnimLargeFlame_Step(struct Sprite *sprite) { if (++sprite->data[0] < sprite->data[4]) { @@ -532,7 +534,7 @@ static void sub_80ACA6C(struct Sprite *sprite) DestroySpriteAndMatrix(sprite); } -static void sub_80ACAA8(struct Sprite *sprite) +static void AnimUnusedSmallEmber(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -551,10 +553,10 @@ static void sub_80ACAA8(struct Sprite *sprite) sprite->data[3] = gBattleAnimArgs[5]; sprite->data[4] = gBattleAnimArgs[6]; sprite->data[5] = 0; - sprite->callback = sub_80ACB1C; + sprite->callback = AnimUnusedSmallEmber_Step; } -static void sub_80ACB1C(struct Sprite *sprite) +static void AnimUnusedSmallEmber_Step(struct Sprite *sprite) { if (sprite->data[3]) { @@ -576,8 +578,8 @@ static void sub_80ACB1C(struct Sprite *sprite) } } -//sunlight -static void sub_80ACBB0(struct Sprite *sprite) +// Sunlight from Sunny Day / sunny weather +static void AnimSunlight(struct Sprite *sprite) { sprite->x = 0; sprite->y = 0; @@ -588,8 +590,6 @@ static void sub_80ACBB0(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -//fire 2 - // Animates the secondary effect of MOVE_EMBER, where the flames grow and slide // horizontally a bit. // arg 0: initial x pixel offset @@ -626,7 +626,7 @@ static void AnimBurnFlame(struct Sprite *sprite) //void AnimFireRing(struct Sprite *sprite) static void AnimFireRing(struct Sprite *sprite) { - InitSpritePosToAnimAttacker(sprite, 1); + InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[7] = gBattleAnimArgs[2]; sprite->data[0] = 0; sprite->callback = AnimFireRing_Step1; @@ -706,19 +706,19 @@ static void AnimFireSpiralOutward(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[3]; sprite->invisible = TRUE; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, sub_80ACE28); + StoreSpriteCallbackInData6(sprite, AnimFireSpiralOutward_Step1); } -static void sub_80ACE28(struct Sprite *sprite) +static void AnimFireSpiralOutward_Step1(struct Sprite *sprite) { sprite->invisible = FALSE; sprite->data[0] = sprite->data[1]; sprite->data[1] = 0; - sprite->callback = sub_80ACE50; + sprite->callback = AnimFireSpiralOutward_Step2; sprite->callback(sprite); } -static void sub_80ACE50(struct Sprite *sprite) +static void AnimFireSpiralOutward_Step2(struct Sprite *sprite) { sprite->x2 = Sin(sprite->data[1], sprite->data[2] >> 8); sprite->y2 = Cos(sprite->data[1], sprite->data[2] >> 8); @@ -728,258 +728,337 @@ static void sub_80ACE50(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimTask_EruptionLaunchRocks(u8 taskId) // initialize animation task for Move_ERUPTION? +#define IDX_ACTIVE_SPRITES 6 // Used by the sprite callback to modify the number of active sprites + +#define tState data[0] +#define tTimer1 data[1] +#define tTimer2 data[2] +#define tTimer3 data[3] +#define tAttackerY data[4] +#define tAttackerSide data[5] +#define tActiveSprites data[IDX_ACTIVE_SPRITES] +// data[8]-data[15] used by BattleAnimHelper_SetSpriteSquashParams / BattleAnimHelper_RunSpriteSquash +#define tAttackerSpriteId data[15] + +#define sSpeedDelay data[0] +#define sLaunchStage data[1] +#define sX data[2] +#define sY data[3] +#define sSpeedX data[4] +#define sSpeedY data[5] +#define sTaskId data[6] +#define sActiveSpritesIdx data[7] + +// Animates first stage of Eruption where the attacker squishes and launches rocks away from themself +void AnimTask_EruptionLaunchRocks(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->data[0] = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - task->data[4] = gSprites[task->data[15]].y; - task->data[5] = GetBattlerSide(gBattleAnimAttacker); - task->data[6] = 0; + task->tAttackerSpriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->tState = 0; + task->tTimer1 = 0; + task->tTimer2 = 0; + task->tTimer3 = 0; + task->tAttackerY = gSprites[task->tAttackerSpriteId].y; + task->tAttackerSide = GetBattlerSide(gBattleAnimAttacker); + task->tActiveSprites = 0; PrepareBattlerSpriteForRotScale(task->data[15], ST_OAM_OBJ_NORMAL); task->func = AnimTask_EruptionLaunchRocks_Step; } -static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) // animate Move_ERUPTION? +static void AnimTask_EruptionLaunchRocks_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x100, 0x100, 0xE0, 0x200, 0x20); - ++task->data[0]; - // fall through + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0x100, 0x100, 0xE0, 0x200, 32); + task->tState++; case 1: - if (++task->data[1] > 1) + if (++task->tTimer1 > 1) { - task->data[1] = 0; - if (++task->data[2] & 0x1) - gSprites[task->data[15]].x2 = 3; + task->tTimer1 = 0; + + if (++task->tTimer2 & 1) + gSprites[task->tAttackerSpriteId].x2 = 3; else - gSprites[task->data[15]].x2 = -3; + gSprites[task->tAttackerSpriteId].x2 = -3; } - if (task->data[5]) + + if (task->tAttackerSide != B_SIDE_PLAYER) { - if (++task->data[3] > 4) + if (++task->tTimer3 > 4) { - task->data[3] = 0; - ++gSprites[task->data[15]].y; + task->tTimer3 = 0; + gSprites[task->tAttackerSpriteId].y++; } } + if(!BattleAnimHelper_RunSpriteSquash(task)) { - SetBattlerSpriteYOffsetFromYScale(task->data[15]); - gSprites[task->data[15]].x2 = 0; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - ++task->data[0]; + SetBattlerSpriteYOffsetFromYScale(task->tAttackerSpriteId); + gSprites[task->tAttackerSpriteId].x2 = 0; + + task->tTimer1 = 0; + task->tTimer2 = 0; + task->tTimer3 = 0; + task->tState++; } break; case 2: - if (++task->data[1] > 4) + if (++task->tTimer1 > 4) { - if (task->data[5]) - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0xE0, 0x200, 0x180, 0xF0, 0x6); + if (task->tAttackerSide != B_SIDE_PLAYER) + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xF0, 6); else - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0xE0, 0x200, 0x180, 0xC0, 0x6); - task->data[1] = 0; - ++task->data[0]; + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0xE0, 0x200, 0x180, 0xC0, 6); + + task->tTimer1 = 0; + task->tState++; } break; case 3: if (!BattleAnimHelper_RunSpriteSquash(task)) { - sub_80AD1F8(task->data[15], taskId, 6); - ++task->data[0]; + CreateEruptionLaunchRocks(task->tAttackerSpriteId, taskId, IDX_ACTIVE_SPRITES); + task->tState++; } break; case 4: - if (++task->data[1] > 1) + if (++task->tTimer1 > 1) { - task->data[1] = 0; - if (++task->data[2] & 1) - gSprites[task->data[15]].y2 += 3; + task->tTimer1 = 0; + + if (++task->tTimer2 & 1) + gSprites[task->tAttackerSpriteId].y2 += 3; else - gSprites[task->data[15]].y2 -= 3; + gSprites[task->tAttackerSpriteId].y2 -= 3; } - if (++task->data[3] > 0x18) + + if (++task->tTimer3 > 24) { - if (task->data[5]) - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x180, 0xF0, 0x100, 0x100, 0x8); + if (task->tAttackerSide != B_SIDE_PLAYER) + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0x180, 0xF0, 0x100, 0x100, 8); else - BattleAnimHelper_SetSpriteSquashParams(task, task->data[15], 0x180, 0xC0, 0x100, 0x100, 0x8); - if (task->data[2] & 1) - gSprites[task->data[15]].y2 -= 3; - task->data[1] = 0; - task->data[2] = 0; - task->data[3] = 0; - ++task->data[0]; + BattleAnimHelper_SetSpriteSquashParams(task, task->tAttackerSpriteId, 0x180, 0xC0, 0x100, 0x100, 8); + + if (task->tTimer2 & 1) + gSprites[task->tAttackerSpriteId].y2 -= 3; + + task->tTimer1 = 0; + task->tTimer2 = 0; + task->tTimer3 = 0; + task->tState++; } break; case 5: - if (task->data[5]) - --gSprites[task->data[15]].y; + if (task->tAttackerSide != B_SIDE_PLAYER) + gSprites[task->tAttackerSpriteId].y--; + if (!BattleAnimHelper_RunSpriteSquash(task)) { - gSprites[task->data[15]].y = task->data[4]; - ResetSpriteRotScale(task->data[15]); - - task->data[2] = 0; - ++task->data[0]; + gSprites[task->tAttackerSpriteId].y = task->tAttackerY; + ResetSpriteRotScale(task->tAttackerSpriteId); + task->tTimer2 = 0; + task->tState++; } break; case 6: - if (!task->data[6]) + if (task->tActiveSprites == 0) DestroyAnimVisualTask(taskId); break; + default: + break; } } -static void sub_80AD1F8(u8 spriteId, u8 taskId, u8 a3) +static void CreateEruptionLaunchRocks(u8 spriteId, u8 taskId, u8 activeSpritesIdx) { u16 i, j; s8 sign; - u16 y = sub_80AD374(spriteId); + + u16 y = GetEruptionLaunchRockInitialYPos(spriteId); u16 x = gSprites[spriteId].x; - if(GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + if(!GetBattlerSide(gBattleAnimAttacker)) { - x -= 0xC; + x -= 12; sign = 1; } else { - x += 0x10; + x += 16; sign = -1; } - for (i = 0, j = 0; i <= 6; ++i) + + for (i = 0, j = 0; i <= 6; i++) { u8 spriteId = CreateSprite(&gEruptionLaunchRockSpriteTemplate, x, y, 2); - if (spriteId != 0x40) + if (spriteId != MAX_SPRITES) { gSprites[spriteId].oam.tileNum += j * 4 + 0x40; + if (++j >= 5) j = 0; - sub_80AD3C8(&gSprites[spriteId], sEruptionLaunchRockCoords[i][0] * sign, sEruptionLaunchRockCoords[i][1]); - gSprites[spriteId].data[6] = taskId; - gSprites[spriteId].data[7] = a3; - ++gTasks[taskId].data[a3]; + + InitEruptionLaunchRockCoordData(&gSprites[spriteId], sEruptionLaunchRockSpeeds[i][0] * sign, sEruptionLaunchRockSpeeds[i][1]); + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sActiveSpritesIdx = activeSpritesIdx; + + gTasks[taskId].data[activeSpritesIdx]++; } } } static void AnimEruptionLaunchRock(struct Sprite *sprite) { - sub_80AD3E4(sprite); + UpdateEruptionLaunchRockPos(sprite); + if (sprite->invisible) { - --gTasks[sprite->data[6]].data[sprite->data[7]]; + gTasks[sprite->sTaskId].data[sprite->sActiveSpritesIdx]--; DestroySprite(sprite); } } -static u16 sub_80AD374(u8 spriteId) +static u16 GetEruptionLaunchRockInitialYPos(u8 spriteId) { - u16 var1 = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY; + s16 y = gSprites[spriteId].y + gSprites[spriteId].y2 + gSprites[spriteId].centerToCornerVecY; if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - var1 = ((var1 << 16) + 0x4A0000) >> 16; + y += 74; else - var1 = ((var1 << 16) + 0x2C0000) >> 16; - return var1; + y += 44; + + return y; } -static void sub_80AD3C8(struct Sprite *sprite, s16 x, s16 y) +static void InitEruptionLaunchRockCoordData(struct Sprite *sprite, s16 speedX, s16 speedY) { - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = (u16)sprite->x * 8; - sprite->data[3] = (u16)sprite->y * 8; - sprite->data[4] = x * 8; - sprite->data[5] = y * 8; + sprite->sSpeedDelay = 0; + sprite->sLaunchStage = 0; + sprite->sX = (u16)sprite->x * 8; + sprite->sY = (u16)sprite->y * 8; + sprite->sSpeedX = speedX * 8; + sprite->sSpeedY = speedY * 8; } -static void sub_80AD3E4(struct Sprite *sprite) +static void UpdateEruptionLaunchRockPos(struct Sprite *sprite) { - s32 var1; - - if (++sprite->data[0] > 2) + int extraLaunchSpeed; + if (++sprite->sSpeedDelay > 2) { - sprite->data[0] = 0; - ++sprite->data[1]; - var1 = (u16)sprite->data[1] * (u16)sprite->data[1]; - sprite->data[3] += var1; + sprite->sSpeedDelay = 0; + ++sprite->sLaunchStage; + extraLaunchSpeed = (u16)sprite->sLaunchStage * (u16)sprite->sLaunchStage; + sprite->sY += extraLaunchSpeed; } - sprite->data[2] += sprite->data[4]; - sprite->x = sprite->data[2] >> 3; - sprite->data[3] += sprite->data[5]; - sprite->y = sprite->data[3] >> 3; - if (sprite->x < -8 || sprite->x > 0xf8 || sprite->y < -8 || sprite->y > 120) + + sprite->sX += sprite->sSpeedX; + sprite->x = sprite->sX >> 3; + sprite->sY += sprite->sSpeedY; + sprite->y = sprite->sY >> 3; + + if (sprite->x < -8 || sprite->x > DISPLAY_WIDTH + 8 || sprite->y < -8 || sprite->y > 120) sprite->invisible = TRUE; } +#undef IDX_ACTIVE_SPRITES +#undef tState +#undef tTimer1 +#undef tTimer2 +#undef tTimer3 +#undef tAttackerY +#undef tAttackerSide +#undef tActiveSprites +#undef tAttackerSpriteId +#undef sSpeedDelay +#undef sLaunchStage +#undef sX +#undef sY +#undef sSpeedX +#undef sSpeedY +#undef sTaskId +#undef sActiveSpritesIdx + +#define sState data[0] +#define sBounceTimer data[1] +#define sBounceDir data[2] +#define sEndTimer data[3] +#define sFallDelay data[6] +#define sTargetY data[7] + static void AnimEruptionFallingRock(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1]; - sprite->data[0] = 0; - sprite->data[1] = 0; - sprite->data[2] = 0; - sprite->data[6] = gBattleAnimArgs[2]; - sprite->data[7] = gBattleAnimArgs[3]; + + sprite->sState = 0; + sprite->sBounceTimer = 0; + sprite->sBounceDir = 0; + sprite->sFallDelay = gBattleAnimArgs[2]; + sprite->sTargetY = gBattleAnimArgs[3]; + sprite->oam.tileNum += gBattleAnimArgs[4] * 16; - sprite->callback = sub_80AD4A8; + sprite->callback = AnimEruptionFallingRock_Step; } -static void sub_80AD4A8(struct Sprite *sprite) +static void AnimEruptionFallingRock_Step(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: - if (sprite->data[6] != 0) + // Wait to begin falling + if (sprite->sFallDelay != 0) { - --sprite->data[6]; + sprite->sFallDelay--; return; } - ++sprite->data[0]; + + sprite->sState++; // fall through case 1: + // Rock is falling sprite->y += 8; - if (sprite->y >= sprite->data[7]) + if (sprite->y >= sprite->sTargetY) { - sprite->y = sprite->data[7]; - ++sprite->data[0]; + sprite->y = sprite->sTargetY; + sprite->sState++; } break; case 2: - if (++sprite->data[1] > 1) + // Bounce up and down on landing spot + if (++sprite->sBounceTimer > 1) { - sprite->data[1] = 0; - if ((++sprite->data[2] & 1) != 0) + sprite->sBounceTimer = 0; + if ((++sprite->sBounceDir & 1) != 0) sprite->y2 = -3; else sprite->y2 = 3; } - if (++sprite->data[3] > 16) + + if (++sprite->sEndTimer > 16) DestroyAnimSprite(sprite); break; } } +#undef sState +#undef sBounceTimer +#undef sBounceDir +#undef sEndTimer +#undef sFallDelay +#undef sTargetY + //wisp orb static void AnimWillOWispOrb(struct Sprite *sprite) { switch (sprite->data[0]) { case 0: - InitSpritePosToAnimAttacker(sprite, 0); + InitSpritePosToAnimAttacker(sprite, FALSE); StartSpriteAnim(sprite, gBattleAnimArgs[2]); sprite->data[7] = gBattleAnimArgs[2]; if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -1016,14 +1095,14 @@ static void AnimWillOWispOrb(struct Sprite *sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); sprite->data[3] = sprite->y; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); - BattleAnim_InitLinearTranslationWithDuration(sprite); - sprite->callback = sub_80AD690; + InitAnimLinearTranslationWithSpeed(sprite); + sprite->callback = AnimWillOWispOrb_Step; } break; } } -static void sub_80AD690(struct Sprite *sprite) +static void AnimWillOWispOrb_Step(struct Sprite *sprite) { s16 initialData5, newData5; @@ -1042,7 +1121,6 @@ static void sub_80AD690(struct Sprite *sprite) } } -//wisp fire static void AnimWillOWispFire(struct Sprite *sprite) { if (!sprite->data[0]) @@ -1083,10 +1161,10 @@ void AnimTask_MoveHeatWaveTargets(u8 taskId) task->data[13] = IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK) + 1; task->data[14] = GetAnimBattlerSpriteId(ANIM_TARGET); task->data[15] = GetAnimBattlerSpriteId(ANIM_DEF_PARTNER); - task->func = sub_80AD870; + task->func = AnimTask_MoveHeatWaveTargets_Step; } -static void sub_80AD870(u8 taskId) +static void AnimTask_MoveHeatWaveTargets_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1153,7 +1231,7 @@ static void sub_80AD870(u8 taskId) } } -// Used to add a color mask to the battle interface / HUD in Heat Wave. +// Used to add a color mask to the battle background. // arg 0: opacity // arg 1: color code void AnimTask_BlendBackground(u8 taskId) @@ -1165,29 +1243,40 @@ void AnimTask_BlendBackground(u8 taskId) DestroyAnimVisualTask(taskId); } +#define tShakeNum data[0] +#define tMaxShakes data[1] +#define tShakeOffset data[2] // Never read, gBattleAnimArgs[1] is used directly instead +#define tVertical data[3] +#define tPatternId data[4] + +// Shakes target horizontally or vertically tMaxShakes times, following a set pattern of alternations void AnimTask_ShakeTargetInPattern(u8 taskId) { - s8 unk; + s8 dir; u8 spriteId; - if (gTasks[taskId].data[0] == 0) + if (gTasks[taskId].tShakeNum == 0) { - gTasks[taskId].data[1] = gBattleAnimArgs[0]; - gTasks[taskId].data[2] = gBattleAnimArgs[1]; - gTasks[taskId].data[3] = gBattleAnimArgs[2]; - gTasks[taskId].data[4] = gBattleAnimArgs[3]; + gTasks[taskId].tMaxShakes = gBattleAnimArgs[0]; + gTasks[taskId].tShakeOffset = gBattleAnimArgs[1]; + gTasks[taskId].tVertical = gBattleAnimArgs[2]; + gTasks[taskId].tPatternId = gBattleAnimArgs[3]; } - ++gTasks[taskId].data[0]; + gTasks[taskId].tShakeNum++; + spriteId = gBattlerSpriteIds[gBattleAnimTarget]; - if (!gTasks[taskId].data[4]) - unk = sShakeDirsPattern0[gTasks[taskId].data[0] % 10]; + + if (gTasks[taskId].tPatternId == 0) + dir = sShakeDirsPattern0[gTasks[taskId].tShakeNum % 10]; else - unk = sShakeDirsPattern1[gTasks[taskId].data[0] % 10]; - if (gTasks[taskId].data[3] == 1) - gSprites[spriteId].y2 = gBattleAnimArgs[1] * unk < 0 ? -(gBattleAnimArgs[1] * unk) : gBattleAnimArgs[1] * unk; + dir = sShakeDirsPattern1[gTasks[taskId].tShakeNum % 10]; + + if (gTasks[taskId].tVertical == TRUE) + gSprites[spriteId].y2 = gBattleAnimArgs[1] * dir < 0 ? -(gBattleAnimArgs[1] * dir) : gBattleAnimArgs[1] * dir; else - gSprites[spriteId].x2 = gBattleAnimArgs[1] * unk; - if (gTasks[taskId].data[0] == gTasks[taskId].data[1]) + gSprites[spriteId].x2 = gBattleAnimArgs[1] * dir; + + if (gTasks[taskId].tShakeNum == gTasks[taskId].tMaxShakes) { gSprites[spriteId].x2 = 0; gSprites[spriteId].y2 = 0; diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index 43c451f9f..8bf8cd762 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -226,7 +226,7 @@ static void AnimConfuseRayBallBounce(struct Sprite *sprite) sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); sprite->data[3] = sprite->y; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); - BattleAnim_InitLinearTranslationWithDuration(sprite); + InitAnimLinearTranslationWithSpeed(sprite); sprite->callback = sub_80B52D0; sprite->data[6] = 16; SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL)); diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index 8e09574a9..3e63cdbe9 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -584,7 +584,7 @@ static void AnimIcePunchSwirlingParticle(struct Sprite *sprite) sprite->data[3] = 30; sprite->data[4] = -512; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = TranslateSpriteInGrowingCircleOverDuration; + sprite->callback = TranslateSpriteInGrowingCircle; sprite->callback(sprite); } @@ -1230,7 +1230,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite) sprite->data[2] = -0x10; ++sprite->data[7]; sprite->x2 = sprite->y2 = 0; - BattleAnim_InitLinearTranslationWithDuration(sprite); + InitAnimLinearTranslationWithSpeed(sprite); } break; case 2: diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index c5c88189c..75fd70ae4 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -413,7 +413,7 @@ void TranslateSpriteInCircle(struct Sprite *sprite) // x = (a0 + da * t) * sin(theta0 + dtheta * t) // y = (a0 + da * t) * cos(theta0 + dtheta * t) -void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *sprite) +void TranslateSpriteInGrowingCircle(struct Sprite *sprite) { if (sprite->data[3]) { @@ -1011,7 +1011,7 @@ static void PlayerThrowBall_AnimTranslateLinear_WithFollowup(struct Sprite *spri SetCallbackToStoredInData6(sprite); } -void BattleAnim_InitLinearTranslationWithDuration(struct Sprite *sprite) +void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite) { s32 v1 = abs(sprite->sTransl_DestX - sprite->sTransl_InitX) << 8; @@ -1023,7 +1023,7 @@ void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite) { sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; - BattleAnim_InitLinearTranslationWithDuration(sprite); + InitAnimLinearTranslationWithSpeed(sprite); sprite->callback = AnimTranslateLinear_WithFollowup; sprite->callback(sprite); } diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index 9deb261dc..09efc5354 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -402,7 +402,7 @@ static void sub_80B9B8C(struct Sprite *sprite) sprite->data[4] = 112; sprite->data[5] = 0; StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); - sprite->callback = TranslateSpriteInGrowingCircleOverDuration; + sprite->callback = TranslateSpriteInGrowingCircle; sprite->callback(sprite); } From ba890e57a46c6f8394aea1ef100937fc2d8fb6e9 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 16 Aug 2022 15:27:42 -0400 Subject: [PATCH 13/38] Sync battle anim - ghost --- include/battle_anim.h | 2 +- src/battle_anim.c | 4 +- src/battle_anim_fire.c | 2 +- src/battle_anim_ghost.c | 206 +++++++++++++++++----------------- src/battle_anim_sound_tasks.c | 2 +- 5 files changed, 109 insertions(+), 107 deletions(-) diff --git a/include/battle_anim.h b/include/battle_anim.h index 8c8bfbf0f..f8c9d9c0a 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -60,7 +60,7 @@ extern u8 gBattleAnimTarget; extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT]; extern s32 gAnimMoveDmg; extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT]; -extern u8 gUnknown_2037F24; +extern u8 gAnimCustomPanning; // battle_anim.c extern const struct OamData gOamData_AffineOff_ObjNormal_8x8; diff --git a/src/battle_anim.c b/src/battle_anim.c index b1479a7bb..26246bf5b 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -36,7 +36,7 @@ EWRAM_DATA static u16 sAnimMoveIndex = 0; EWRAM_DATA u8 gBattleAnimAttacker = 0; EWRAM_DATA u8 gBattleAnimTarget = 0; EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0}; -EWRAM_DATA u8 gUnknown_2037F24 = 0; +EWRAM_DATA u8 gAnimCustomPanning = 0; // Function Declarations static void AddSpriteIndex(u16 index); @@ -1809,7 +1809,7 @@ void ClearBattleAnimationVars(void) sAnimMoveIndex = 0; gBattleAnimAttacker = 0; gBattleAnimTarget = 0; - gUnknown_2037F24 = 0; + gAnimCustomPanning = 0; } void DoMoveAnim(u16 move) diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index d89416924..3fd92d0f9 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -1113,7 +1113,7 @@ static void AnimWillOWispOrb_Step(struct Sprite *sprite) sprite->data[5] = (sprite->data[5] + 4) & 0xFF; newData5 = sprite->data[5]; if ((initialData5 == 0 || initialData5 > 196) && newData5 > 0 && sprite->data[7] == 0) - PlaySE12WithPanning(SE_M_FLAME_WHEEL, gUnknown_2037F24); + PlaySE12WithPanning(SE_M_FLAME_WHEEL, gAnimCustomPanning); } else { diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index 8bf8cd762..f808e92f6 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -9,39 +9,39 @@ #include "constants/songs.h" static void AnimConfuseRayBallBounce(struct Sprite *sprite); -static void sub_80B52D0(struct Sprite *sprite); -static void sub_80B5344(struct Sprite *sprite); -static void sub_80B53C0(struct Sprite *sprite); +static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite); +static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite); +static void UpdateConfuseRayBallBlend(struct Sprite *sprite); static void AnimConfuseRayBallSpiral(struct Sprite *sprite); -static void sub_80B5470(struct Sprite *sprite); -static void sub_80B5570(u8 taskId); -static void sub_80B55C8(u8 taskId); +static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite); +static void AnimTask_NightShadeClone_Step1(u8 taskId); +static void AnimTask_NightShadeClone_Step2(u8 taskId); static void AnimShadowBall(struct Sprite *sprite); -static void AnimShadowBallStep(struct Sprite *sprite); +static void AnimShadowBall_Step(struct Sprite *sprite); static void AnimLick(struct Sprite *sprite); -static void sub_80B5810(struct Sprite *sprite); -static void sub_80B59D4(u8 taskId); -static void sub_80B5AD4(u8 taskId); -static void sub_80B5D38(u8 taskId); -static void sub_80B5DCC(u8 taskId); +static void AnimLick_Step(struct Sprite *sprite); +static void AnimTask_NightmareClone_Step(u8 taskId); +static void AnimTask_SpiteTargetShadow_Step1(u8 taskId); +static void AnimTask_SpiteTargetShadow_Step2(u8 taskId); +static void AnimTask_SpiteTargetShadow_Step3(u8 taskId); static void AnimDestinyBondWhiteShadow(struct Sprite *sprite); -static void sub_80B5FE0(struct Sprite *sprite); -static void sub_80B623C(u8 taskId); -static void sub_80B6468(u8 taskId); -static void sub_80B65F0(u8 taskId); +static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite); +static void AnimTask_DestinyBondWhiteShadow_Step(u8 taskId); +static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId); +static void AnimTask_CurseStretchingBlackBg_Step2(u8 taskId); static void AnimCurseNail(struct Sprite *sprite); -static void sub_80B66A8(struct Sprite *sprite); -static void sub_80B6728(struct Sprite *sprite); -static void sub_80B67A0(struct Sprite *sprite); +static void AnimCurseNail_Step1(struct Sprite *sprite); +static void AnimCurseNail_Step2(struct Sprite *sprite); +static void AnimCurseNail_End(struct Sprite *sprite); static void AnimGhostStatusSprite(struct Sprite *sprite); -static void sub_80B68A8(struct Sprite *sprite); -static void sub_80B696C(u8 taskId); +static void AnimGhostStatusSprite_End(struct Sprite *sprite); +static void AnimTask_GrudgeFlames_Step(u8 taskId); static void AnimGrudgeFlame(struct Sprite *sprite); -static void sub_80B7158(struct Sprite *sprite); +static void AnimMonMoveCircular(struct Sprite *sprite); static void sub_80B6BE4(u8 taskId); static void sub_80B6F30(u8 taskId); static void sub_80B6FC4(u8 taskId); -static void sub_80B71B0(struct Sprite *sprite); +static void AnimMonMoveCircular_Step(struct Sprite *sprite); static const union AffineAnimCmd sAffineAnim_ConfuseRayBallBounce[] = { @@ -125,17 +125,15 @@ const struct SpriteTemplate gLickSpriteTemplate = .callback = AnimLick, }; -// not used -static const union AffineAnimCmd gUnknown_83E7654[] = +static const union AffineAnimCmd sAffineAnim_Unused[] = { AFFINEANIMCMD_FRAME(0x200, 0x200, 0, 0), AFFINEANIMCMD_END, }; -// not used -static const union AffineAnimCmd *const gUnknown_83E7664[] = +static const union AffineAnimCmd *const sAffineAnims_Unused[] = { - gUnknown_83E7654, + sAffineAnim_Unused, }; const struct SpriteTemplate gDestinyBondWhiteShadowSpriteTemplate = @@ -207,7 +205,8 @@ const struct SpriteTemplate gGrudgeFlameSpriteTemplate = .callback = AnimGrudgeFlame, }; -const struct SpriteTemplate gUnknown_83E76F8 = +// Unused +static const struct SpriteTemplate sMonMoveCircularSpriteTemplate = { .tileTag = 0, .paletteTag = 0, @@ -215,7 +214,7 @@ const struct SpriteTemplate gUnknown_83E76F8 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B7158, + .callback = AnimMonMoveCircular, }; static void AnimConfuseRayBallBounce(struct Sprite *sprite) @@ -223,24 +222,24 @@ static void AnimConfuseRayBallBounce(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslationWithSpeed(sprite); - sprite->callback = sub_80B52D0; + sprite->callback = AnimConfuseRayBallBounce_Step1; sprite->data[6] = 16; SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL)); SetGpuReg(REG_OFFSET_BLDALPHA, sprite->data[6]); } -static void sub_80B52D0(struct Sprite *sprite) +static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite) { s16 r0, r2; - sub_80B53C0(sprite); + UpdateConfuseRayBallBlend(sprite); if (AnimTranslateLinear(sprite)) { - sprite->callback = sub_80B5344; + sprite->callback = AnimConfuseRayBallBounce_Step2; return; } sprite->x2 += Sin(sprite->data[5], 10); @@ -252,10 +251,10 @@ static void sub_80B52D0(struct Sprite *sprite) return; if (r0 <= 0) return; - PlaySE12WithPanning(SE_M_CONFUSE_RAY, gUnknown_2037F24); + PlaySE12WithPanning(SE_M_CONFUSE_RAY, gAnimCustomPanning); } -static void sub_80B5344(struct Sprite *sprite) +static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite) { s16 r2, r0; @@ -275,11 +274,11 @@ static void sub_80B5344(struct Sprite *sprite) } else { - sub_80B53C0(sprite); + UpdateConfuseRayBallBlend(sprite); } } -static void sub_80B53C0(struct Sprite *sprite) +static void UpdateConfuseRayBallBlend(struct Sprite *sprite) { s16 r0; @@ -309,11 +308,11 @@ static void sub_80B53C0(struct Sprite *sprite) static void AnimConfuseRayBallSpiral(struct Sprite *sprite) { InitSpritePosToAnimTarget(sprite, TRUE); - sprite->callback = sub_80B5470; + sprite->callback = AnimConfuseRayBallSpiral_Step; sprite->callback(sprite); } -static void sub_80B5470(struct Sprite *sprite) +static void AnimConfuseRayBallSpiral_Step(struct Sprite *sprite) { u16 temp1; @@ -332,6 +331,7 @@ static void sub_80B5470(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Creates a large transparent clone of the attacker centered on their position which shrinks to original size void AnimTask_NightShadeClone(u8 taskId) { u8 spriteId; @@ -346,10 +346,10 @@ void AnimTask_NightShadeClone(u8 taskId) gTasks[taskId].data[1] = *gBattleAnimArgs; gTasks[taskId].data[2] = 0; gTasks[taskId].data[3] = 16; - gTasks[taskId].func = sub_80B5570; + gTasks[taskId].func = AnimTask_NightShadeClone_Step1; } -static void sub_80B5570(u8 taskId) +static void AnimTask_NightShadeClone_Step1(u8 taskId) { gTasks[taskId].data[10] += 1; if (gTasks[taskId].data[10] == 3) @@ -360,11 +360,11 @@ static void sub_80B5570(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[2], gTasks[taskId].data[3])); if (gTasks[taskId].data[2] != 9) return; - gTasks[taskId].func = sub_80B55C8; + gTasks[taskId].func = AnimTask_NightShadeClone_Step2; } } -static void sub_80B55C8(u8 taskId) +static void AnimTask_NightShadeClone_Step2(u8 taskId) { u8 spriteId; @@ -398,8 +398,8 @@ static void AnimShadowBall(struct Sprite *sprite) s16 oldPosX = sprite->x; s16 oldPosY = sprite->y; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = 0; sprite->data[1] = gBattleAnimArgs[0]; sprite->data[2] = gBattleAnimArgs[1]; @@ -408,10 +408,10 @@ static void AnimShadowBall(struct Sprite *sprite) sprite->data[5] = sprite->y << 4; sprite->data[6] = ((oldPosX - sprite->x) << 4) / (gBattleAnimArgs[0] << 1); sprite->data[7] = ((oldPosY - sprite->y) << 4) / (gBattleAnimArgs[0] << 1); - sprite->callback = AnimShadowBallStep; + sprite->callback = AnimShadowBall_Step; } -static void AnimShadowBallStep(struct Sprite *sprite) +static void AnimShadowBall_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -429,8 +429,8 @@ static void AnimShadowBallStep(struct Sprite *sprite) sprite->data[2] -= 1; if (sprite->data[2] > 0) break; - sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[4] = sprite->x << 4; sprite->data[5] = sprite->y << 4; sprite->data[6] = ((sprite->data[1] - sprite->x) << 4) / sprite->data[3]; @@ -445,8 +445,8 @@ static void AnimShadowBallStep(struct Sprite *sprite) sprite->data[3] -= 1; if (sprite->data[3] > 0) break; - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] += 1; break; case 3: @@ -458,10 +458,10 @@ static void AnimShadowBallStep(struct Sprite *sprite) static void AnimLick(struct Sprite *sprite) { InitSpritePosToAnimTarget(sprite, TRUE); - sprite->callback = sub_80B5810; + sprite->callback = AnimLick_Step; } -static void sub_80B5810(struct Sprite *sprite) +static void AnimLick_Step(struct Sprite *sprite) { bool8 r5 = FALSE; bool8 r6 = FALSE; @@ -507,12 +507,13 @@ static void sub_80B5810(struct Sprite *sprite) } } +// Creates a transparent clone of the target which drifts up and away to the side void AnimTask_NightmareClone(u8 taskId) { struct Task *task; task = &gTasks[taskId]; - task->data[0] = CloneBattlerSpriteWithBlend(1); + task->data[0] = CloneBattlerSpriteWithBlend(ANIM_TARGET); if (task->data[0] < 0) { DestroyAnimVisualTask(taskId); @@ -539,10 +540,10 @@ void AnimTask_NightmareClone(u8 taskId) gSprites[task->data[0]].data[4] = 0; StoreSpriteCallbackInData6(&gSprites[task->data[0]], SpriteCallbackDummy); gSprites[task->data[0]].callback = TranslateSpriteLinearFixedPoint; - task->func = sub_80B59D4; + task->func = AnimTask_NightmareClone_Step; } -static void sub_80B59D4(u8 taskId) +static void AnimTask_NightmareClone_Step(u8 taskId) { struct Task *task; @@ -579,17 +580,18 @@ static void sub_80B59D4(u8 taskId) } } +// Creates a blended copy of the target that wavers in front of them void AnimTask_SpiteTargetShadow(u8 taskId) { struct Task *task; task = &gTasks[taskId]; task->data[15] = 0; - task->func = sub_80B5AD4; + task->func = AnimTask_SpiteTargetShadow_Step1; task->func(taskId); } -static void sub_80B5AD4(u8 taskId) +static void AnimTask_SpiteTargetShadow_Step1(u8 taskId) { s16 startLine; struct Task *task = &gTasks[taskId]; @@ -670,7 +672,7 @@ static void sub_80B5AD4(u8 taskId) SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); else SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); - task->func = sub_80B5D38; + task->func = AnimTask_SpiteTargetShadow_Step2; ++task->data[15]; break; default: @@ -679,7 +681,7 @@ static void sub_80B5AD4(u8 taskId) } } -static void sub_80B5D38(u8 taskId) +static void AnimTask_SpiteTargetShadow_Step2(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -693,12 +695,12 @@ static void sub_80B5D38(u8 taskId) if (task->data[1] == 128) { task->data[15] = 0; - task->func = sub_80B5DCC; + task->func = AnimTask_SpiteTargetShadow_Step3; task->func(taskId); } } -static void sub_80B5DCC(u8 taskId) +static void AnimTask_SpiteTargetShadow_Step3(u8 taskId) { struct Task *task = &gTasks[taskId]; u8 rank = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget); @@ -740,17 +742,17 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite) if (gBattleAnimArgs[0] == 0) { - battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28; - battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28; + battler1X = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + battler1Y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 28; + battler2X = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + battler2Y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 28; } else { - battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 28; - battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 28; + battler1X = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + battler1Y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 28; + battler2X = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + battler2Y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 28; } yDiff = battler2Y - battler1Y; sprite->data[0] = battler1X * 16; @@ -764,11 +766,11 @@ static void AnimDestinyBondWhiteShadow(struct Sprite *sprite) sprite->oam.priority = 2; sprite->x = battler1X; sprite->y = battler1Y; - sprite->callback = sub_80B5FE0; + sprite->callback = AnimDestinyBondWhiteShadow_Step; sprite->invisible = TRUE; } -static void sub_80B5FE0(struct Sprite *sprite) +static void AnimDestinyBondWhiteShadow_Step(struct Sprite *sprite) { if (sprite->data[4]) { @@ -798,11 +800,11 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) task->data[8] = 0; task->data[9] = 16; task->data[10] = gBattleAnimArgs[0]; - baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + baseX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM); if (!IsContest()) { - for (battler = 0; battler < 4; ++battler) + for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) { if (battler != gBattleAnimAttacker && battler != (gBattleAnimAttacker ^ 2) @@ -811,7 +813,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) spriteId = CreateSprite(&gDestinyBondWhiteShadowSpriteTemplate, baseX, baseY, 55); if (spriteId != MAX_SPRITES) { - x = GetBattlerSpriteCoord(battler, 2); + x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2); y = GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_BOTTOM); gSprites[spriteId].data[0] = baseX << 4; gSprites[spriteId].data[1] = baseY << 4; @@ -820,7 +822,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) gSprites[spriteId].data[4] = gBattleAnimArgs[1]; gSprites[spriteId].data[5] = x; gSprites[spriteId].data[6] = y; - gSprites[spriteId].callback = sub_80B5FE0; + gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step; task->data[task->data[12] + 13] = spriteId; ++task->data[12]; } @@ -841,15 +843,15 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) gSprites[spriteId].data[4] = gBattleAnimArgs[1]; gSprites[spriteId].data[5] = x; gSprites[spriteId].data[6] = y; - gSprites[spriteId].callback = sub_80B5FE0; + gSprites[spriteId].callback = AnimDestinyBondWhiteShadow_Step; task->data[13] = spriteId; task->data[12] = 1; } } - task->func = sub_80B623C; + task->func = AnimTask_DestinyBondWhiteShadow_Step; } -static void sub_80B623C(u8 taskId) +static void AnimTask_DestinyBondWhiteShadow_Step(u8 taskId) { u16 i; struct Task *task = &gTasks[taskId]; @@ -933,7 +935,7 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId) SetGpuReg(REG_OFFSET_WINOUT, ((WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ) | (WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR))); SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_TGT1_BG3 | BLDCNT_EFFECT_DARKEN)); - SetGpuReg(REG_OFFSET_BLDY, 0x10); + SetGpuReg(REG_OFFSET_BLDY, 16); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER || IsContest()) startX = 40; else @@ -951,10 +953,10 @@ void AnimTask_CurseStretchingBlackBg(u8 taskId) gTasks[taskId].data[4] = bottomDistance; gTasks[taskId].data[5] = startX; gTasks[taskId].data[6] = startY; - gTasks[taskId].func = sub_80B6468; + gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step1; } -static void sub_80B6468(u8 taskId) +static void AnimTask_CurseStretchingBlackBg_Step1(u8 taskId) { s16 step, leftDistance, rightDistance, topDistance, bottomDistance, startX, startY; u16 left, right, top, bottom, selectedPalettes; @@ -980,15 +982,15 @@ static void sub_80B6468(u8 taskId) right = 240; top = 0; bottom = 112; - selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); BeginNormalPaletteFade(selectedPalettes, 0, 16, 16, RGB(0, 0, 0)); - gTasks[taskId].func = sub_80B65F0; + gTasks[taskId].func = AnimTask_CurseStretchingBlackBg_Step2; } gBattle_WIN0H = WIN_RANGE(left, right); gBattle_WIN0V = WIN_RANGE(top, bottom); } -static void sub_80B65F0(u8 taskId) +static void AnimTask_CurseStretchingBlackBg_Step2(u8 taskId) { if (!gPaletteFade.active) { @@ -1023,10 +1025,10 @@ static void AnimCurseNail(struct Sprite *sprite) sprite->x += xDelta; sprite->data[1] = xDelta2; sprite->data[0] = 60; - sprite->callback = sub_80B66A8; + sprite->callback = AnimCurseNail_Step1; } -static void sub_80B66A8(struct Sprite *sprite) +static void AnimCurseNail_Step1(struct Sprite *sprite) { u16 var0; @@ -1047,7 +1049,7 @@ static void sub_80B66A8(struct Sprite *sprite) { sprite->data[0] = 30; sprite->callback = WaitAnimForDuration; - StoreSpriteCallbackInData6(sprite, sub_80B6728); + StoreSpriteCallbackInData6(sprite, AnimCurseNail_Step2); } else { @@ -1057,7 +1059,7 @@ static void sub_80B66A8(struct Sprite *sprite) } } -static void sub_80B6728(struct Sprite *sprite) +static void AnimCurseNail_Step2(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -1079,12 +1081,12 @@ static void sub_80B6728(struct Sprite *sprite) if (sprite->data[2] == 16) { sprite->invisible = TRUE; - sprite->callback = sub_80B67A0; + sprite->callback = AnimCurseNail_End; } } } -static void sub_80B67A0(struct Sprite *sprite) +static void AnimCurseNail_End(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -1125,12 +1127,12 @@ static void AnimGhostStatusSprite(struct Sprite *sprite) if (coeffB == 16 && coeffA == 0) { sprite->invisible = TRUE; - sprite->callback = sub_80B68A8; + sprite->callback = AnimGhostStatusSprite_End; } } } -static void sub_80B68A8(struct Sprite *sprite) +static void AnimGhostStatusSprite_End(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); @@ -1143,7 +1145,7 @@ void AnimTask_GrudgeFlames(u8 taskId) task->data[0] = 0; task->data[1] = 16; - task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); + task->data[9] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); task->data[10] = GetBattlerYCoordWithElevation(gBattleAnimAttacker); task->data[11] = (GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2) + 8; task->data[7] = 0; @@ -1154,10 +1156,10 @@ void AnimTask_GrudgeFlames(u8 taskId) SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL)); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0x10)); task->data[8] = 0; - task->func = sub_80B696C; + task->func = AnimTask_GrudgeFlames_Step; } -static void sub_80B696C(u8 taskId) +static void AnimTask_GrudgeFlames_Step(u8 taskId) { u16 i; u8 spriteId; @@ -1447,7 +1449,7 @@ static void sub_80B6FC4(u8 taskId) ++task->data[15]; } -static void sub_80B7158(struct Sprite *sprite) +static void AnimMonMoveCircular(struct Sprite *sprite) { sprite->invisible = TRUE; sprite->data[5] = gBattlerSpriteIds[gBattleAnimAttacker]; @@ -1455,11 +1457,11 @@ static void sub_80B7158(struct Sprite *sprite) sprite->data[1] = 10; sprite->data[2] = gBattleAnimArgs[0]; sprite->data[3] = gBattleAnimArgs[1]; - sprite->callback = sub_80B71B0; + sprite->callback = AnimMonMoveCircular_Step; gSprites[sprite->data[5]].y += 8; } -static void sub_80B71B0(struct Sprite *sprite) +static void AnimMonMoveCircular_Step(struct Sprite *sprite) { if (sprite->data[3]) { diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c index b05819e70..4b660fb7a 100644 --- a/src/battle_anim_sound_tasks.c +++ b/src/battle_anim_sound_tasks.c @@ -307,7 +307,7 @@ static void sub_80DD4D4(u8 taskId) gTasks[taskId].data[11] = panIncrement + oldPan; gTasks[taskId].data[11] = KeepPanInRange(gTasks[taskId].data[11], oldPan); } - gUnknown_2037F24 = gTasks[taskId].data[11]; + gAnimCustomPanning = gTasks[taskId].data[11]; if (gTasks[taskId].data[11] == gTasks[taskId].data[2]) DestroyAnimVisualTask(taskId); } From 3a0cd4180d2974fe1adcf3145c28c35cf0aff8f0 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 16 Aug 2022 15:38:51 -0400 Subject: [PATCH 14/38] Sync battle anim - ground --- src/battle_anim_ground.c | 263 ++++++++++++++++++++++----------------- 1 file changed, 146 insertions(+), 117 deletions(-) diff --git a/src/battle_anim_ground.c b/src/battle_anim_ground.c index 1ed06be1a..955071c22 100644 --- a/src/battle_anim_ground.c +++ b/src/battle_anim_ground.c @@ -9,22 +9,22 @@ static void AnimBonemerangProjectile(struct Sprite *sprite); static void AnimBoneHitProjectile(struct Sprite *sprite); static void AnimDirtScatter(struct Sprite *sprite); static void AnimMudSportDirt(struct Sprite *sprite); -static void AnimFissureDirtPlumeParticle(struct Sprite *sprite); +static void AnimDirtPlumeParticle(struct Sprite *sprite); static void AnimDigDirtMound(struct Sprite *sprite); -static void AnimBonemerangProjectileStep(struct Sprite *sprite); -static void AnimBonemerangProjectileEnd(struct Sprite *sprite); +static void AnimBonemerangProjectile_Step(struct Sprite *sprite); +static void AnimBonemerangProjectile_End(struct Sprite *sprite); static void AnimMudSportDirtRising(struct Sprite *sprite); static void AnimMudSportDirtFalling(struct Sprite *sprite); -static void sub_80B8ED4(u8 taskId); -static void sub_80B908C(u8 taskId); -static void sub_80B92B8(u8 useBg1, s16 y, s16 endY); -static void sub_80B912C(u8 taskId); -static void sub_80B91B0(u8 taskId); -static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite); -static void sub_80B9584(u8 taskId); -static void sub_80B967C(u8 taskId); -static void sub_80B9760(struct Task *task); -static void sub_80B98A8(u8 taskId); +static void AnimTask_DigBounceMovement(u8 taskId); +static void AnimTask_DigDisappear(u8 taskId); +static void SetDigScanlineEffect(u8 useBg1, s16 y, s16 endY); +static void AnimTask_DigSetVisibleUnderground(u8 taskId); +static void AnimTask_DigRiseUpFromHole(u8 taskId); +static void AnimDirtPlumeParticle_Step(struct Sprite *sprite); +static void AnimTask_ShakeTerrain(u8 taskId); +static void AnimTask_ShakeBattlers(u8 taskId); +static void SetBattlersXOffsetForShake(struct Task *task); +static void WaitForFissureCompletion(u8 taskId); static const union AffineAnimCmd sAffineAnim_Bonemerang[] = { @@ -122,7 +122,7 @@ const struct SpriteTemplate gDirtPlumeSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimFissureDirtPlumeParticle, + .callback = AnimDirtPlumeParticle, }; const struct SpriteTemplate gDirtMoundSpriteTemplate = @@ -140,17 +140,17 @@ const struct SpriteTemplate gDirtMoundSpriteTemplate = // a boomerang. After hitting the target mon, it comes back to the user. static void AnimBonemerangProjectile(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[0] = 20; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[5] = -40; InitAnimArcTranslation(sprite); - sprite->callback = AnimBonemerangProjectileStep; + sprite->callback = AnimBonemerangProjectile_Step; } -static void AnimBonemerangProjectileStep(struct Sprite *sprite) +static void AnimBonemerangProjectile_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) { @@ -159,15 +159,15 @@ static void AnimBonemerangProjectileStep(struct Sprite *sprite) sprite->y2 = 0; sprite->x2 = 0; sprite->data[0] = 20; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[5] = 40; InitAnimArcTranslation(sprite); - sprite->callback = AnimBonemerangProjectileEnd; + sprite->callback = AnimBonemerangProjectile_End; } } -static void AnimBonemerangProjectileEnd(struct Sprite *sprite) +static void AnimBonemerangProjectile_End(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -186,8 +186,8 @@ static void AnimBoneHitProjectile(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -204,8 +204,8 @@ static void AnimDirtScatter(struct Sprite *sprite) s16 xOffset, yOffset; InitSpritePosToAnimAttacker(sprite, 1); - targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 2); - targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, 3); + targetXPos = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_X_2); + targetYPos = GetBattlerSpriteCoord2(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); xOffset = Random() & 0x1F; yOffset = Random() & 0x1F; if (xOffset > 16) @@ -229,8 +229,8 @@ static void AnimMudSportDirt(struct Sprite *sprite) ++sprite->oam.tileNum; if (gBattleAnimArgs[0] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[1]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[1] > 0 ? 1 : -1; sprite->callback = AnimMudSportDirtRising; } @@ -283,14 +283,14 @@ void AnimTask_DigDownMovement(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (gBattleAnimArgs[0] == 0) - task->func = sub_80B8ED4; + if (gBattleAnimArgs[0] == FALSE) + task->func = AnimTask_DigBounceMovement; else - task->func = sub_80B908C; + task->func = AnimTask_DigDisappear; task->func(taskId); } -static void sub_80B8ED4(u8 taskId) +static void AnimTask_DigBounceMovement(u8 taskId) { u8 var0; struct Task *task = &gTasks[taskId]; @@ -319,7 +319,7 @@ static void sub_80B8ED4(u8 taskId) ++task->data[0]; break; case 1: - sub_80B92B8(task->data[11], task->data[14], task->data[15]); + SetDigScanlineEffect(task->data[11], task->data[14], task->data[15]); ++task->data[0]; break; case 2: @@ -358,7 +358,7 @@ static void sub_80B8ED4(u8 taskId) } } -static void sub_80B908C(u8 taskId) +static void AnimTask_DigDisappear(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); @@ -376,15 +376,15 @@ void AnimTask_DigUpMovement(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (gBattleAnimArgs[0] == 0) - task->func = sub_80B912C; + if (gBattleAnimArgs[0] == FALSE) + task->func = AnimTask_DigSetVisibleUnderground; else - task->func = sub_80B91B0; + task->func = AnimTask_DigRiseUpFromHole; task->func(taskId); } -static void sub_80B912C(u8 taskId) +static void AnimTask_DigSetVisibleUnderground(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -394,7 +394,7 @@ static void sub_80B912C(u8 taskId) task->data[10] = GetAnimBattlerSpriteId(ANIM_ATTACKER); gSprites[task->data[10]].invisible = FALSE; gSprites[task->data[10]].x2 = 0; - gSprites[task->data[10]].y2 = 160 - gSprites[task->data[10]].y; + gSprites[task->data[10]].y2 = DISPLAY_HEIGHT - gSprites[task->data[10]].y; ++task->data[0]; break; case 1: @@ -402,7 +402,7 @@ static void sub_80B912C(u8 taskId) } } -static void sub_80B91B0(u8 taskId) +static void AnimTask_DigRiseUpFromHole(u8 taskId) { u8 var0; struct Task *task = &gTasks[taskId]; @@ -422,7 +422,7 @@ static void sub_80B91B0(u8 taskId) ++task->data[0]; break; case 1: - sub_80B92B8(task->data[11], 0, task->data[15]); + SetDigScanlineEffect(task->data[11], 0, task->data[15]); ++task->data[0]; break; case 2: @@ -443,7 +443,7 @@ static void sub_80B91B0(u8 taskId) } } -static void sub_80B92B8(u8 useBG1, s16 y, s16 endY) +static void SetDigScanlineEffect(u8 useBG1, s16 y, s16 endY) { s16 bgX; struct ScanlineEffectParams scanlineParams; @@ -485,7 +485,7 @@ static void sub_80B92B8(u8 useBG1, s16 y, s16 endY) // arg 3: target y offset // arg 4: wave amplitude // arg 5: duration -static void AnimFissureDirtPlumeParticle(struct Sprite *sprite) +static void AnimDirtPlumeParticle(struct Sprite *sprite) { s8 battler; s16 xOffset; @@ -500,17 +500,17 @@ static void AnimFissureDirtPlumeParticle(struct Sprite *sprite) xOffset *= -1; gBattleAnimArgs[2] *= -1; } - sprite->x = GetBattlerSpriteCoord(battler, 2) + xOffset; + sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + xOffset; sprite->y = GetBattlerYCoordWithElevation(battler) + 30; sprite->data[0] = gBattleAnimArgs[5]; sprite->data[2] = sprite->x + gBattleAnimArgs[2]; sprite->data[4] = sprite->y + gBattleAnimArgs[3]; sprite->data[5] = gBattleAnimArgs[4]; InitAnimArcTranslation(sprite); - sprite->callback = AnimFissureDirtPlumeParticleStep; + sprite->callback = AnimDirtPlumeParticle_Step; } -static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite) +static void AnimDirtPlumeParticle_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -530,7 +530,7 @@ static void AnimDigDirtMound(struct Sprite *sprite) battler = gBattleAnimAttacker; else battler = gBattleAnimTarget; - sprite->x = GetBattlerSpriteCoord(battler, 0) - 16 + (gBattleAnimArgs[1] * 32); + sprite->x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X) - 16 + (gBattleAnimArgs[1] * 32); sprite->y = GetBattlerYCoordWithElevation(battler) + 32; sprite->oam.tileNum += gBattleAnimArgs[1] * 8; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); @@ -538,151 +538,178 @@ static void AnimDigDirtMound(struct Sprite *sprite) sprite->callback = WaitAnimForDuration; } +#define tState data[0] +#define tDelay data[1] +#define tTimer data[2] +#define tMaxTime data[3] +#define tbattlerSpriteIds(i) data[9 + (i)] +#define tNumBattlers data[13] // AnimTask_ShakeBattlers +#define tInitialX data[13] // AnimTask_ShakeTerrain +#define tHorizOffset data[14] +#define tInitHorizOffset data[15] + +// Shakes battler(s) or the battle terrain back and forth horizontally. Used by e.g. Earthquake, Eruption +// arg0: What to shake. 0-3 for any specific battler, MAX_BATTLERS_COUNT for all battlers, MAX_BATTLERS_COUNT + 1 for the terrain +// arg1: Shake intensity, used to calculate horizontal pixel offset (if 0, use move power instead) +// arg2: Length of time to shake for void AnimTask_HorizontalShake(u8 taskId) { u16 i; struct Task *task = &gTasks[taskId]; - if (gBattleAnimArgs[1]) - task->data[14] = task->data[15] = gBattleAnimArgs[1] + 3; + if (gBattleAnimArgs[1] != 0) + task->tHorizOffset = task->tInitHorizOffset = gBattleAnimArgs[1] + 3; else - task->data[14] = task->data[15] = (gAnimMovePower / 10) + 3; + task->tHorizOffset = task->tInitHorizOffset = (gAnimMovePower / 10) + 3; - task->data[3] = gBattleAnimArgs[2]; + task->tMaxTime = gBattleAnimArgs[2]; switch (gBattleAnimArgs[0]) { - case 5: - task->data[13] = gBattle_BG3_X; - task->func = sub_80B9584; + case MAX_BATTLERS_COUNT + 1: // Shake terrain + task->tInitialX = gBattle_BG3_X; + task->func = AnimTask_ShakeTerrain; break; - case 4: - task->data[13] = 0; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + case MAX_BATTLERS_COUNT: // Shake all battlers + task->tNumBattlers = 0; + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { if (IsBattlerSpriteVisible(i)) { - task->data[task->data[13] + 9] = gBattlerSpriteIds[i]; - ++task->data[13]; + task->tbattlerSpriteIds(task->tNumBattlers) = gBattlerSpriteIds[i]; + task->tNumBattlers++; } } - task->func = sub_80B967C; + task->func = AnimTask_ShakeBattlers; break; - default: - task->data[9] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - if (task->data[9] == 0xFF) + default: // Shake specific battler + task->tbattlerSpriteIds(0) = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + if (task->tbattlerSpriteIds(0) == SPRITE_NONE) { DestroyAnimVisualTask(taskId); } else { - task->data[13] = 1; - task->func = sub_80B967C; + task->tNumBattlers = 1; + task->func = AnimTask_ShakeBattlers; } - break; } } -static void sub_80B9584(u8 taskId) +static void AnimTask_ShakeTerrain(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - if (++task->data[1] > 1) + if (++task->tDelay > 1) { - task->data[1] = 0; - if ((task->data[2] & 1) == 0) - gBattle_BG3_X = task->data[13] + task->data[15]; + task->tDelay = 0; + if ((task->tTimer & 1) == 0) + gBattle_BG3_X = task->tInitialX + task->tInitHorizOffset; else - gBattle_BG3_X = task->data[13] - task->data[15]; + gBattle_BG3_X = task->tInitialX - task->tInitHorizOffset; - if (++task->data[2] == task->data[3]) + if (++task->tTimer == task->tMaxTime) { - task->data[2] = 0; - --task->data[14]; - ++task->data[0]; + task->tTimer = 0; + task->tHorizOffset--; + task->tState++; } } break; case 1: - if (++task->data[1] > 1) + if (++task->tDelay > 1) { - task->data[1] = 0; - if ((task->data[2] & 1) == 0) - gBattle_BG3_X = task->data[13] + task->data[14]; + task->tDelay = 0; + if ((task->tTimer & 1) == 0) + gBattle_BG3_X = task->tInitialX + task->tHorizOffset; else - gBattle_BG3_X = task->data[13] - task->data[14]; + gBattle_BG3_X = task->tInitialX - task->tHorizOffset; - if (++task->data[2] == 4) + if (++task->tTimer == 4) { - task->data[2] = 0; - if (--task->data[14] == 0) - ++task->data[0]; + task->tTimer = 0; + if (--task->tHorizOffset == 0) + task->tState++; } } break; case 2: - gBattle_BG3_X = task->data[13]; + gBattle_BG3_X = task->tInitialX; DestroyAnimVisualTask(taskId); break; } } -static void sub_80B967C(u8 taskId) +static void AnimTask_ShakeBattlers(u8 taskId) { u16 i; struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - if (++task->data[1] > 1) + if (++task->tDelay > 1) { - task->data[1] = 0; - sub_80B9760(task); - if (++task->data[2] == task->data[3]) + task->tDelay = 0; + SetBattlersXOffsetForShake(task); + if (++task->tTimer == task->tMaxTime) { - task->data[2] = 0; - --task->data[14]; - ++task->data[0]; + task->tTimer = 0; + task->tHorizOffset--; + task->tState++; } } break; case 1: - if (++task->data[1] > 1) + if (++task->tDelay > 1) { - task->data[1] = 0; - sub_80B9760(task); - if (++task->data[2] == 4) + task->tDelay = 0; + SetBattlersXOffsetForShake(task); + if (++task->tTimer == 4) { - task->data[2] = 0; - if (--task->data[14] == 0) - ++task->data[0]; + task->tTimer = 0; + if (--task->tHorizOffset == 0) + task->tState++; } } break; case 2: - for (i = 0; i < task->data[13]; ++i) - gSprites[task->data[9 + i]].x2 = 0; + for (i = 0; i < task->tNumBattlers; i++) + gSprites[task->tbattlerSpriteIds(i)].x2 = 0; + DestroyAnimVisualTask(taskId); break; } } -static void sub_80B9760(struct Task *task) +static void SetBattlersXOffsetForShake(struct Task *task) { u16 i, xOffset; - if ((task->data[2] & 1) == 0) - xOffset = (task->data[14] / 2) + (task->data[14] & 1); + if ((task->tTimer & 1) == 0) + xOffset = (task->tHorizOffset / 2) + (task->tHorizOffset & 1); else - xOffset = -(task->data[14] / 2); - for (i = 0; i < task->data[13]; ++i) - gSprites[task->data[9 + i]].x2 = xOffset; + xOffset = -(task->tHorizOffset / 2); + + for (i = 0; i < task->tNumBattlers; i++) + { + gSprites[task->tbattlerSpriteIds(i)].x2 = xOffset; + } } +#undef tState +#undef tDelay +#undef tTimer +#undef tMaxTime +#undef tbattlerSpriteIds +#undef tNumBattlers +#undef tInitialX +#undef tHorizOffset +#undef tInitHorizOffset + void AnimTask_IsPowerOver99(u8 taskId) { gBattleAnimArgs[15] = gAnimMovePower > 99; @@ -696,19 +723,21 @@ void AnimTask_PositionFissureBgOnBattler(u8 taskId) if (gBattleAnimArgs[0] > 1) battler ^= BIT_FLANK; - newTask = &gTasks[CreateTask(sub_80B98A8, gBattleAnimArgs[1])]; - newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, 2)) & 0x1FF; - newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, 3)) & 0xFF; + newTask = &gTasks[CreateTask(WaitForFissureCompletion, gBattleAnimArgs[1])]; + newTask->data[1] = (32 - GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2)) & 0x1FF; + newTask->data[2] = (64 - GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET)) & 0xFF; gBattle_BG3_X = newTask->data[1]; gBattle_BG3_Y = newTask->data[2]; newTask->data[3] = gBattleAnimArgs[2]; DestroyAnimVisualTask(taskId); } -static void sub_80B98A8(u8 taskId) +static void WaitForFissureCompletion(u8 taskId) { struct Task *task = &gTasks[taskId]; + // Holds the BG3 offsets until gBattleAnimArgs[7] + // is set to a special terminator value. if (gBattleAnimArgs[7] == task->data[3]) { gBattle_BG3_X = 0; From 9552ea633061e2eefcebc9b2ccb12fc6e40a94be Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 16 Aug 2022 15:53:59 -0400 Subject: [PATCH 15/38] Sync battle anim - ice --- data/battle_anim_scripts.s | 6 +- include/battle_anim.h | 6 +- src/battle_anim_ice.c | 129 +++++++++++++++++++------------------ 3 files changed, 71 insertions(+), 70 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 93904a4fa..8cb6c3502 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -3571,7 +3571,7 @@ Move_HAIL:: loadspritegfx ANIM_TAG_ICE_CRYSTALS createvisualtask AnimTask_BlendSelected, 10, 1, 3, 0, 6, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_Hail1, 5, + createvisualtask AnimTask_Hail, 5, loopsewithpan SE_M_HAIL, 0, 8, 10 waitforvisualfinish createvisualtask AnimTask_BlendSelected, 10, 1, 3, 6, 0, RGB_BLACK @@ -4049,7 +4049,7 @@ Move_MIST_BALL:: createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 1, 1, 32279, 16, RGB_WHITE, 16 delay 0 playsewithpan SE_M_HAZE, 0 - createvisualtask AnimTask_LoadMistTiles, 5, + createvisualtask AnimTask_MistBallFog, 5, createvisualtask AnimTask_BlendSelected, 10, 4, 3, 0, 16, RGB_WHITE delay 8 createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 70, 0 @@ -7067,7 +7067,7 @@ MistCloud:: Move_HAZE:: waitforvisualfinish playsewithpan SE_M_HAZE, 0 - createvisualtask AnimTask_Haze1, 5, + createvisualtask AnimTask_HazeScrollingFog, 5, delay 30 createvisualtask AnimTask_BlendSelected, 10, 0 | (0xF << 7), 2, 0, 16, RGB_BLACK delay 90 diff --git a/include/battle_anim.h b/include/battle_anim.h index f8c9d9c0a..c5c7626f8 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -546,9 +546,9 @@ void AnimTask_MoveSkyUppercutBg(u8 taskId); // ice.c extern const union AnimCmd *const gAnims_SmallBubblePair[]; -void AnimTask_Haze1(u8 taskId); -void AnimTask_LoadMistTiles(u8 taskId); -void AnimTask_Hail1(u8 taskId); +void AnimTask_HazeScrollingFog(u8 taskId); +void AnimTask_MistBallFog(u8 taskId); +void AnimTask_Hail(u8 taskId); void AnimTask_GetRolloutCounter(u8 taskId); // electric.c diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index 3e63cdbe9..f5e4a32dc 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -9,21 +9,21 @@ struct HailStruct { - s32 unk0:10; - s32 unk1:10; - s32 unk2:8; + s32 x:10; + s32 y:10; + s32 bPosition:8; s32 unk3:4; }; -static void sub_80AF108(struct Sprite *sprite); -static void sub_80AF28C(struct Sprite *sprite); +static void AnimUnusedIceCrystalThrow(struct Sprite *sprite); +static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite); static void AnimIcePunchSwirlingParticle(struct Sprite *sprite); static void AnimIceBeamParticle(struct Sprite *sprite); static void AnimIceEffectParticle(struct Sprite *sprite); static void AnimFlickerIceEffectParticle(struct Sprite *sprite); +static void AnimSwirlingSnowball(struct Sprite *sprite); static void AnimSwirlingSnowball_Step1(struct Sprite *sprite); static void AnimSwirlingSnowball_Step2(struct Sprite *sprite); -static void AnimSwirlingSnowball_Step3(struct Sprite *sprite); static void AnimSwirlingSnowball_End(struct Sprite *sprite); static void AnimMoveParticleBeyondTarget(struct Sprite *sprite); static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite); @@ -39,25 +39,24 @@ static void InitIceBallAnim(struct Sprite *sprite); static void AnimThrowIceBall(struct Sprite *sprite); static void InitIceBallParticle(struct Sprite *sprite); static void AnimIceBallParticle(struct Sprite *sprite); -static void AnimTask_Haze2(u8 taskId); -static void AnimTask_OverlayFogTiles(u8 taskId); +static void AnimTask_HazeScrollingFog_Step(u8 taskId); +static void AnimTask_MistBallFog_Step(u8 taskId); static void AnimTask_Hail2(u8 taskId); static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, u8 c); -static const union AnimCmd gUnknown_83E62C0[] = +static const union AnimCmd sAnim_Unused[] = { ANIMCMD_FRAME(0, 5, .hFlip = TRUE), ANIMCMD_FRAME(1, 5, .hFlip = TRUE), ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E62CC[] = +static const union AnimCmd *const sAnims_Unused[] = { - gUnknown_83E62C0, + sAnim_Unused, }; -// not used -static const struct SpriteTemplate gUnknown_83E62D0 = +static const struct SpriteTemplate sUnusedIceCrystalThrowSpriteTemplate = { .tileTag = ANIM_TAG_ICE_CRYSTALS, .paletteTag = ANIM_TAG_ICE_CRYSTALS, @@ -65,10 +64,10 @@ static const struct SpriteTemplate gUnknown_83E62D0 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80AF108, + .callback = AnimUnusedIceCrystalThrow, }; -static const union AnimCmd gUnknown_83E62E8[] = +static const union AnimCmd sAnim_IceCrystalLargeChunk[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, @@ -105,10 +104,10 @@ static const union AnimCmd sAnim_SmallBubblePair[] = ANIMCMD_JUMP(0), }; -// unused -static const union AnimCmd *const gUnknown_83E631C[] = +// Unused, contains just the top left corner of the large ice crystal +static const union AnimCmd *const sAnims_IceCrystalLargeChunk[] = { - gUnknown_83E62E8, + sAnim_IceCrystalLargeChunk, }; static const union AnimCmd *const sAnims_IceCrystalLarge[] = @@ -245,7 +244,7 @@ const struct SpriteTemplate gSwirlingSnowballSpriteTemplate = .anims = sAnims_Snowball, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimSwirlingSnowball_Step1, + .callback = AnimSwirlingSnowball, }; const struct SpriteTemplate gBlizzardIceCrystalSpriteTemplate = @@ -332,7 +331,7 @@ const struct SpriteTemplate gSmogCloudSpriteTemplate = .callback = InitSwirlingFogAnim, }; -static const u8 gUnknown_83E64D4[] = +static const u8 sHazeBlendAmounts[] = { 0, 1, 2, 2, 2, 2, 3, 4, 4, 4, 5, 6, 6, 6, 6, 7, 8, 8, 8, 9, }; @@ -348,7 +347,7 @@ const struct SpriteTemplate gMistBallSpriteTemplate = .callback = AnimThrowMistBall, }; -static const u8 gUnknown_83E6500[] = +static const u8 sMistBlendAmounts[] = { 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, }; @@ -366,16 +365,16 @@ const struct SpriteTemplate gPoisonGasCloudSpriteTemplate = static const struct HailStruct sHailCoordData[] = { - {100, 120, 0, 2}, - {85, 120, 0, 0}, - {242, 120, 1, 1}, - {66, 120, 2, 1}, - {182, 120, 3, 0}, - {60, 120, 0, 2}, - {214, 120, 1, 0}, - {113, 120, 0, 1}, - {210, 120, 3, 1}, - {38, 120, 2, 0}, + {.x = 100, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 2}, + {.x = 85, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 0}, + {.x = 242, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .unk3 = 1}, + {.x = 66, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .unk3 = 1}, + {.x = 182, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .unk3 = 0}, + {.x = 60, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 2}, + {.x = 214, .y = 120, .bPosition = B_POSITION_OPPONENT_LEFT, .unk3 = 0}, + {.x = 113, .y = 120, .bPosition = B_POSITION_PLAYER_LEFT, .unk3 = 1}, + {.x = 210, .y = 120, .bPosition = B_POSITION_OPPONENT_RIGHT, .unk3 = 1}, + {.x = 38, .y = 120, .bPosition = B_POSITION_PLAYER_RIGHT, .unk3 = 0}, }; static const union AffineAnimCmd sAffineAnim_HailParticle_0[] = @@ -518,8 +517,7 @@ const struct SpriteTemplate gIceBallImpactShardSpriteTemplate = .callback = InitIceBallParticle, }; -// not used -static void sub_80AF108(struct Sprite *sprite) +static void AnimUnusedIceCrystalThrow(struct Sprite *sprite) { s16 targetX, targetY, attackerX, attackerY; @@ -535,11 +533,13 @@ static void sub_80AF108(struct Sprite *sprite) sprite->data[4] = gBattleAnimArgs[3] + targetY; SetupLinearTranslationWithFixedDuration(sprite); // won't match with while loop - for (; (targetX >= -32 && targetX <= 272) && (targetY >= -32 && targetY <= 192); targetX += sprite->data[1], targetY += sprite->data[2]) + for (; (targetX >= -32 && targetX <= DISPLAY_WIDTH + 32) && (targetY >= -32 && targetY <= DISPLAY_HEIGHT + 32); + targetX += sprite->data[1], targetY += sprite->data[2]) ; sprite->data[1] = -sprite->data[1]; sprite->data[2] = -sprite->data[2]; - for (; (attackerX >= -32 && attackerX <= 272) && (attackerY >= -32 && attackerY <= 192); attackerX += sprite->data[1], attackerY += sprite->data[2]) + for (; (attackerX >= -32 && attackerX <= DISPLAY_WIDTH + 32) && (attackerY >= -32 && attackerY <= DISPLAY_HEIGHT + 32); + attackerX += sprite->data[1], attackerY += sprite->data[2]) ; sprite->x = attackerX; sprite->y = attackerY; @@ -551,11 +551,10 @@ static void sub_80AF108(struct Sprite *sprite) SetupLinearTranslationWithFixedDuration(sprite); sprite->data[3] = gBattleAnimArgs[5]; sprite->data[4] = gBattleAnimArgs[6]; - sprite->callback = sub_80AF28C; + sprite->callback = AnimUnusedIceCrystalThrow_Step; } -// not used -static void sub_80AF28C(struct Sprite *sprite) +static void AnimUnusedIceCrystalThrow_Step(struct Sprite *sprite) { if (sprite->data[0] != 0) { @@ -645,7 +644,7 @@ static void AnimFlickerIceEffectParticle(struct Sprite *sprite) // arg 3: target y offset // arg 4: particle speed // arg 5: multiple targets? (boolean) -static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) +static void AnimSwirlingSnowball(struct Sprite *sprite) { s32 i; s16 tempDataHolder[8]; @@ -676,8 +675,9 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) { sprite->data[0] = 1; AnimFastTranslateLinear(sprite); - if ((u32)(sprite->x + sprite->x2 + 16) > 272 - || sprite->y + sprite->y2 > 160 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 + || sprite->x + sprite->x2 < -16 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) break; } @@ -687,10 +687,10 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) for (i = 0; i < 8; ++i) sprite->data[i] = tempDataHolder[i]; sprite->callback = InitAndStartAnimFastLinearTranslationWithSpeed; - StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step2); + StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step1); } -static void AnimSwirlingSnowball_Step2(struct Sprite *sprite) +static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) { s16 tempVar; @@ -703,11 +703,11 @@ static void AnimSwirlingSnowball_Step2(struct Sprite *sprite) sprite->data[3] = Sin(sprite->data[0], tempVar); sprite->data[4] = Cos(sprite->data[0], 0xF); sprite->data[5] = 0; - sprite->callback = AnimSwirlingSnowball_Step3; + sprite->callback = AnimSwirlingSnowball_Step2; sprite->callback(sprite); } -static void AnimSwirlingSnowball_Step3(struct Sprite *sprite) +static void AnimSwirlingSnowball_Step2(struct Sprite *sprite) { s16 tempVar = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 20 : -20; @@ -780,8 +780,9 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite) { sprite->data[0] = 1; AnimFastTranslateLinear(sprite); - if ((u32)(sprite->x + sprite->x2 + 16) > 272 - || sprite->y + sprite->y2 > 160 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 + || sprite->x + sprite->x2 < -16 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) break; } @@ -806,8 +807,9 @@ static void AnimWiggleParticleTowardsTarget(struct Sprite *sprite) sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF; if (sprite->data[0] == 1) { - if ((u32)(sprite->x + sprite->x2 + 16) > 272 - || sprite->y + sprite->y2 > 160 + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 16 + || sprite->x + sprite->x2 < -16 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT || sprite->y + sprite->y2 < -16) DestroyAnimSprite(sprite); } @@ -927,7 +929,7 @@ static void AnimSwirlingFogAnim(struct Sprite *sprite) } // Fades mons to black and places foggy overlay in Haze. -void AnimTask_Haze1(u8 taskId) +void AnimTask_HazeScrollingFog(u8 taskId) { struct BattleAnimBgData animBg; @@ -947,10 +949,10 @@ void AnimTask_Haze1(u8 taskId) LoadPalette(&gDefaultWeatherSpritePalette, animBg.paletteId * 16, 32); if (IsContest()) RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); - gTasks[taskId].func = AnimTask_Haze2; + gTasks[taskId].func = AnimTask_HazeScrollingFog_Step; } -static void AnimTask_Haze2(u8 taskId) +static void AnimTask_HazeScrollingFog_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -962,7 +964,7 @@ static void AnimTask_Haze2(u8 taskId) { gTasks[taskId].data[10] = 0; ++gTasks[taskId].data[9]; - gTasks[taskId].data[11] = gUnknown_83E64D4[gTasks[taskId].data[9]]; + gTasks[taskId].data[11] = sHazeBlendAmounts[gTasks[taskId].data[9]]; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 16 - gTasks[taskId].data[11])); if (gTasks[taskId].data[11] == 9) { @@ -1024,8 +1026,7 @@ static void AnimThrowMistBall(struct Sprite *sprite) sprite->callback = TranslateAnimSpriteToTargetMonLocation; } -// Displays misty background in Mist Ball. -void AnimTask_LoadMistTiles(u8 taskId) +void AnimTask_MistBallFog(u8 taskId) { struct BattleAnimBgData animBg; @@ -1046,10 +1047,10 @@ void AnimTask_LoadMistTiles(u8 taskId) if (IsContest()) RelocateBattleBgPal(animBg.paletteId, animBg.bgTilemap, 0, 0); gTasks[taskId].data[15] = -1; - gTasks[taskId].func = AnimTask_OverlayFogTiles; + gTasks[taskId].func = AnimTask_MistBallFog_Step; } -static void AnimTask_OverlayFogTiles(u8 taskId) +static void AnimTask_MistBallFog_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -1058,7 +1059,7 @@ static void AnimTask_OverlayFogTiles(u8 taskId) { case 0: gTasks[taskId].data[9] += 1; - gTasks[taskId].data[11] = gUnknown_83E6500[gTasks[taskId].data[9]]; + gTasks[taskId].data[11] = sMistBlendAmounts[gTasks[taskId].data[9]]; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[11], 17 - gTasks[taskId].data[11])); if (gTasks[taskId].data[11] == 5) { @@ -1249,7 +1250,7 @@ static void MovePoisonGasCloud(struct Sprite *sprite) } // Creates Hail. -void AnimTask_Hail1(u8 taskId) +void AnimTask_Hail(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1310,7 +1311,7 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, if (unk != 2) { - id = GetBattlerAtPosition(sHailCoordData[hailStructId].unk2); + id = GetBattlerAtPosition(sHailCoordData[hailStructId].bPosition); if (IsBattlerSpriteVisible(id)) { possibleBool = TRUE; @@ -1330,14 +1331,14 @@ static bool8 GenerateHailParticle(u8 hailStructId, u8 affineAnimNum, u8 taskId, } else { - battlerX = (sHailCoordData[hailStructId].unk0); - battlerY = (sHailCoordData[hailStructId].unk1); + battlerX = sHailCoordData[hailStructId].x; + battlerY = sHailCoordData[hailStructId].y; } } else { - battlerX = (sHailCoordData[hailStructId].unk0); - battlerY = (sHailCoordData[hailStructId].unk1); + battlerX = sHailCoordData[hailStructId].x; + battlerY = sHailCoordData[hailStructId].y; } spriteX = battlerX - ((battlerY + 8) / 2); id = CreateSprite(&sHailParticleSpriteTemplate, spriteX, -8, 18); From 1711490e1634a6ba0200f2105dda97eae055da62 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 12:31:28 -0400 Subject: [PATCH 16/38] Sync battle anim - mon movement --- src/battle_anim_mon_movement.c | 217 +++++++++++++++++---------------- 1 file changed, 110 insertions(+), 107 deletions(-) diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index 2ee4697ac..f7a8703ca 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -7,27 +7,27 @@ #undef abs #define abs(x) ((x) < 0 ? -(x) : (x)) -static void AnimTask_ShakeMonStep(u8 taskId); +static void AnimTask_ShakeMon_Step(u8 taskId); static void AnimTask_ShakeMon2Step(u8 taskId); -static void AnimTask_ShakeMonInPlaceStep(u8 taskId); -static void AnimTask_ShakeAndSinkMonStep(u8 taskId); -static void AnimTask_TranslateMonEllipticalStep(u8 taskId); +static void AnimTask_ShakeMonInPlace_Step(u8 taskId); +static void AnimTask_ShakeAndSinkMon_Step(u8 taskId); +static void AnimTask_TranslateMonElliptical_Step(u8 taskId); static void DoHorizontalLunge(struct Sprite *sprite); static void ReverseHorizontalLungeDirection(struct Sprite *sprite); static void DoVerticalDip(struct Sprite *sprite); static void ReverseVerticalDipDirection(struct Sprite *sprite); static void SlideMonToOriginalPos(struct Sprite *sprite); -static void SlideMonToOriginalPosStep(struct Sprite *sprite); +static void SlideMonToOriginalPos_Step(struct Sprite *sprite); static void SlideMonToOffset(struct Sprite *sprite); -static void sub_8099394(struct Sprite *sprite); -static void sub_809946C(struct Sprite *sprite); -static void AnimTask_WindUpLungePart1(u8 taskId); -static void AnimTask_WindUpLungePart2(u8 taskId); -static void sub_80996B8(u8 taskId); -static void AnimTask_SwayMonStep(u8 taskId); -static void AnimTask_ScaleMonAndRestoreStep(u8 taskId); -static void sub_8099B54(u8 taskId); -static void sub_8099CB8(u8 taskId); +static void SlideMonToOffsetAndBack(struct Sprite *sprite); +static void SlideMonToOffsetAndBack_End(struct Sprite *sprite); +static void AnimTask_WindUpLunge_Step1(u8 taskId); +static void AnimTask_WindUpLunge_Step2(u8 taskId); +static void AnimTask_SlideOffScreen_Step(u8 taskId); +static void AnimTask_SwayMon_Step(u8 taskId); +static void AnimTask_ScaleMonAndRestore_Step(u8 taskId); +static void AnimTask_RotateMonSpriteToSide_Step(u8 taskId); +static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId); const struct SpriteTemplate gHorizontalLungeSpriteTemplate = { @@ -81,7 +81,7 @@ const struct SpriteTemplate gSlideMonToOffsetAndBackSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8099394, + .callback = SlideMonToOffsetAndBack, }; // Task to facilitate simple shaking of a pokemon's picture in battle. @@ -95,24 +95,24 @@ void AnimTask_ShakeMon(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - if (spriteId == 0xFF) - DestroyAnimVisualTask(taskId); - else + if (spriteId == SPRITE_NONE) { - gSprites[spriteId].x2 = gBattleAnimArgs[1]; - gSprites[spriteId].y2 = gBattleAnimArgs[2]; - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[1] = gBattleAnimArgs[3]; - gTasks[taskId].data[2] = gBattleAnimArgs[4]; - gTasks[taskId].data[3] = gBattleAnimArgs[4]; - gTasks[taskId].data[4] = gBattleAnimArgs[1]; - gTasks[taskId].data[5] = gBattleAnimArgs[2]; - gTasks[taskId].func = AnimTask_ShakeMonStep; - gTasks[taskId].func(taskId); + DestroyAnimVisualTask(taskId); + return; } + gSprites[spriteId].x2 = gBattleAnimArgs[1]; + gSprites[spriteId].y2 = gBattleAnimArgs[2]; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[1] = gBattleAnimArgs[3]; + gTasks[taskId].data[2] = gBattleAnimArgs[4]; + gTasks[taskId].data[3] = gBattleAnimArgs[4]; + gTasks[taskId].data[4] = gBattleAnimArgs[1]; + gTasks[taskId].data[5] = gBattleAnimArgs[2]; + gTasks[taskId].func = AnimTask_ShakeMon_Step; + gTasks[taskId].func(taskId); } -static void AnimTask_ShakeMonStep(u8 taskId) +static void AnimTask_ShakeMon_Step(u8 taskId) { if (gTasks[taskId].data[3] == 0) { @@ -152,7 +152,7 @@ void AnimTask_ShakeMon2(u8 taskId) if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT) { spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - if (spriteId == 0xFF) + if (spriteId == SPRITE_NONE) abort = TRUE; } else if (gBattleAnimArgs[0] != 8) @@ -178,21 +178,23 @@ void AnimTask_ShakeMon2(u8 taskId) } else spriteId = gBattlerSpriteIds[gBattleAnimAttacker]; + if (abort) - DestroyAnimVisualTask(taskId); - else { - gSprites[spriteId].x2 = gBattleAnimArgs[1]; - gSprites[spriteId].y2 = gBattleAnimArgs[2]; - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[1] = gBattleAnimArgs[3]; - gTasks[taskId].data[2] = gBattleAnimArgs[4]; - gTasks[taskId].data[3] = gBattleAnimArgs[4]; - gTasks[taskId].data[4] = gBattleAnimArgs[1]; - gTasks[taskId].data[5] = gBattleAnimArgs[2]; - gTasks[taskId].func = AnimTask_ShakeMon2Step; - gTasks[taskId].func(taskId); + DestroyAnimVisualTask(taskId); + return; } + + gSprites[spriteId].x2 = gBattleAnimArgs[1]; + gSprites[spriteId].y2 = gBattleAnimArgs[2]; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[1] = gBattleAnimArgs[3]; + gTasks[taskId].data[2] = gBattleAnimArgs[4]; + gTasks[taskId].data[3] = gBattleAnimArgs[4]; + gTasks[taskId].data[4] = gBattleAnimArgs[1]; + gTasks[taskId].data[5] = gBattleAnimArgs[2]; + gTasks[taskId].func = AnimTask_ShakeMon2Step; + gTasks[taskId].func(taskId); } static void AnimTask_ShakeMon2Step(u8 taskId) @@ -231,25 +233,25 @@ void AnimTask_ShakeMonInPlace(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); - if (spriteId == 0xFF) - DestroyAnimVisualTask(taskId); - else + if (spriteId == SPRITE_NONE) { - gSprites[spriteId].x2 += gBattleAnimArgs[1]; - gSprites[spriteId].y2 += gBattleAnimArgs[2]; - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[1] = 0; - gTasks[taskId].data[2] = gBattleAnimArgs[3]; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].data[5] = gBattleAnimArgs[1] * 2; - gTasks[taskId].data[6] = gBattleAnimArgs[2] * 2; - gTasks[taskId].func = AnimTask_ShakeMonInPlaceStep; - gTasks[taskId].func(taskId); + DestroyAnimVisualTask(taskId); + return; } + gSprites[spriteId].x2 += gBattleAnimArgs[1]; + gSprites[spriteId].y2 += gBattleAnimArgs[2]; + gTasks[taskId].data[0] = spriteId; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = gBattleAnimArgs[3]; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = gBattleAnimArgs[4]; + gTasks[taskId].data[5] = gBattleAnimArgs[1] * 2; + gTasks[taskId].data[6] = gBattleAnimArgs[2] * 2; + gTasks[taskId].func = AnimTask_ShakeMonInPlace_Step; + gTasks[taskId].func(taskId); } -static void AnimTask_ShakeMonInPlaceStep(u8 taskId) +static void AnimTask_ShakeMonInPlace_Step(u8 taskId) { if (gTasks[taskId].data[3] == 0) { @@ -299,22 +301,22 @@ void AnimTask_ShakeAndSinkMon(u8 taskId) gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].data[3] = gBattleAnimArgs[3]; gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].func = AnimTask_ShakeAndSinkMonStep; + gTasks[taskId].func = AnimTask_ShakeAndSinkMon_Step; gTasks[taskId].func(taskId); } -static void AnimTask_ShakeAndSinkMonStep(u8 taskId) +static void AnimTask_ShakeAndSinkMon_Step(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; - s16 data1 = gTasks[taskId].data[1]; + s16 x = gTasks[taskId].data[1]; if (gTasks[taskId].data[2] == gTasks[taskId].data[8]++) { gTasks[taskId].data[8] = 0; - if (gSprites[spriteId].x2 == data1) - data1 = -data1; - gSprites[spriteId].x2 += data1; + if (gSprites[spriteId].x2 == x) + x = -x; + gSprites[spriteId].x2 += x; } - gTasks[taskId].data[1] = data1; + gTasks[taskId].data[1] = x; gTasks[taskId].data[9] += gTasks[taskId].data[3]; gSprites[spriteId].y2 = gTasks[taskId].data[9] >> 8; if (--gTasks[taskId].data[4] == 0) @@ -342,11 +344,11 @@ void AnimTask_TranslateMonElliptical(u8 taskId) gTasks[taskId].data[2] = gBattleAnimArgs[2]; gTasks[taskId].data[3] = gBattleAnimArgs[3]; gTasks[taskId].data[4] = wavePeriod; - gTasks[taskId].func = AnimTask_TranslateMonEllipticalStep; + gTasks[taskId].func = AnimTask_TranslateMonElliptical_Step; gTasks[taskId].func(taskId); } -static void AnimTask_TranslateMonEllipticalStep(u8 taskId) +static void AnimTask_TranslateMonElliptical_Step(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gSprites[spriteId].x2 = Sin(gTasks[taskId].data[5], gTasks[taskId].data[1]); @@ -462,19 +464,19 @@ static void SlideMonToOriginalPos(struct Sprite *sprite) sprite->data[1] = 0; sprite->data[7] = gBattleAnimArgs[1]; sprite->data[7] |= spriteId << 8; - sprite->callback = SlideMonToOriginalPosStep; + sprite->callback = SlideMonToOriginalPos_Step; } -static void SlideMonToOriginalPosStep(struct Sprite *sprite) +static void SlideMonToOriginalPos_Step(struct Sprite *sprite) { u8 data7 = sprite->data[7]; - struct Sprite *otherSprite = &gSprites[sprite->data[7] >> 8]; + struct Sprite *monSprite = &gSprites[sprite->data[7] >> 8]; if (sprite->data[0] == 0) { if (data7 == 1 || data7 == 0) - otherSprite->x2 = 0; + monSprite->x2 = 0; if (data7 == 2 || data7 == 0) - otherSprite->y2 = 0; + monSprite->y2 = 0; DestroyAnimSprite(sprite); } else @@ -482,8 +484,8 @@ static void SlideMonToOriginalPosStep(struct Sprite *sprite) sprite->data[0]--; sprite->data[3] += sprite->data[1]; sprite->data[4] += sprite->data[2]; - otherSprite->x2 = (sprite->data[3] >> 8) + sprite->data[5]; - otherSprite->y2 = (sprite->data[4] >> 8) + sprite->data[6]; + monSprite->x2 = (sprite->data[3] >> 8) + sprite->data[5]; + monSprite->y2 = (sprite->data[4] >> 8) + sprite->data[6]; } } @@ -498,12 +500,12 @@ static void SlideMonToOriginalPosStep(struct Sprite *sprite) static void SlideMonToOffset(struct Sprite *sprite) { u8 battlerId; - u8 spriteId; + u8 monSpriteId; if (gBattleAnimArgs[0] == 0) battlerId = gBattleAnimAttacker; else battlerId = gBattleAnimTarget; - spriteId = gBattlerSpriteIds[battlerId]; + monSpriteId = gBattlerSpriteIds[battlerId]; if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) { gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -511,25 +513,25 @@ static void SlideMonToOffset(struct Sprite *sprite) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; } sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[1] = gSprites[spriteId].x; - sprite->data[2] = gSprites[spriteId].x + gBattleAnimArgs[1]; - sprite->data[3] = gSprites[spriteId].y; - sprite->data[4] = gSprites[spriteId].y + gBattleAnimArgs[2]; + sprite->data[1] = gSprites[monSpriteId].x; + sprite->data[2] = gSprites[monSpriteId].x + gBattleAnimArgs[1]; + sprite->data[3] = gSprites[monSpriteId].y; + sprite->data[4] = gSprites[monSpriteId].y + gBattleAnimArgs[2]; InitSpriteDataForLinearTranslation(sprite); sprite->data[3] = 0; sprite->data[4] = 0; - sprite->data[5] = spriteId; + sprite->data[5] = monSpriteId; sprite->invisible = TRUE; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); sprite->callback = TranslateMonSpriteLinearFixedPoint; } -static void sub_8099394(struct Sprite *sprite) +static void SlideMonToOffsetAndBack(struct Sprite *sprite) { u8 battlerId; u8 spriteId; sprite->invisible = TRUE; - if (gBattleAnimArgs[0] == 0) + if (gBattleAnimArgs[0] == ANIM_ATTACKER) battlerId = gBattleAnimAttacker; else battlerId = gBattleAnimTarget; @@ -553,11 +555,11 @@ static void sub_8099394(struct Sprite *sprite) if (gBattleAnimArgs[5] == 0) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); else - StoreSpriteCallbackInData6(sprite, sub_809946C); + StoreSpriteCallbackInData6(sprite, SlideMonToOffsetAndBack_End); sprite->callback = TranslateMonSpriteLinearFixedPoint; } -static void sub_809946C(struct Sprite *sprite) +static void SlideMonToOffsetAndBack_End(struct Sprite *sprite) { gSprites[sprite->data[5]].x2 = 0; gSprites[sprite->data[5]].y2 = 0; @@ -590,10 +592,10 @@ void AnimTask_WindUpLunge(u8 taskId) gTasks[taskId].data[5] = gBattleAnimArgs[5] * 256 / gBattleAnimArgs[6]; gTasks[taskId].data[6] = gBattleAnimArgs[6]; gTasks[taskId].data[7] = wavePeriod; - gTasks[taskId].func = AnimTask_WindUpLungePart1; + gTasks[taskId].func = AnimTask_WindUpLunge_Step1; } -static void AnimTask_WindUpLungePart1(u8 taskId) +static void AnimTask_WindUpLunge_Step1(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gTasks[taskId].data[11] += gTasks[taskId].data[1]; @@ -601,10 +603,10 @@ static void AnimTask_WindUpLungePart1(u8 taskId) gSprites[spriteId].y2 = Sin((u8)(gTasks[taskId].data[10] >> 8), gTasks[taskId].data[2]); gTasks[taskId].data[10] += gTasks[taskId].data[7]; if (--gTasks[taskId].data[3] == 0) - gTasks[taskId].func = AnimTask_WindUpLungePart2; + gTasks[taskId].func = AnimTask_WindUpLunge_Step2; } -static void AnimTask_WindUpLungePart2(u8 taskId) +static void AnimTask_WindUpLunge_Step2(u8 taskId) { u8 spriteId; @@ -620,17 +622,18 @@ static void AnimTask_WindUpLungePart2(u8 taskId) } } +// To move a mon off-screen when pushed out by Roar/Whirlwind void AnimTask_SlideOffScreen(u8 taskId) { u8 spriteId; switch (gBattleAnimArgs[0]) { - case 0: - case 1: + case ANIM_ATTACKER: + case ANIM_TARGET: spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); break; - case 2: + case ANIM_ATK_PARTNER: if (!IsBattlerSpriteVisible(gBattleAnimAttacker ^ BIT_FLANK)) { DestroyAnimVisualTask(taskId); @@ -638,7 +641,7 @@ void AnimTask_SlideOffScreen(u8 taskId) } spriteId = gBattlerSpriteIds[gBattleAnimAttacker ^ BIT_FLANK]; break; - case 3: + case ANIM_DEF_PARTNER: if (!IsBattlerSpriteVisible(gBattleAnimTarget ^ BIT_FLANK)) { DestroyAnimVisualTask(taskId); @@ -655,14 +658,14 @@ void AnimTask_SlideOffScreen(u8 taskId) gTasks[taskId].data[1] = gBattleAnimArgs[1]; else gTasks[taskId].data[1] = -gBattleAnimArgs[1]; - gTasks[taskId].func = sub_80996B8; + gTasks[taskId].func = AnimTask_SlideOffScreen_Step; } -static void sub_80996B8(u8 taskId) +static void AnimTask_SlideOffScreen_Step(u8 taskId) { u8 spriteId = gTasks[taskId].data[0]; gSprites[spriteId].x2 += gTasks[taskId].data[1]; - if (gSprites[spriteId].x2 + gSprites[spriteId].x < -0x20 || gSprites[spriteId].x2 + gSprites[spriteId].x > 0x110) + if (gSprites[spriteId].x2 + gSprites[spriteId].x < -32 || gSprites[spriteId].x2 + gSprites[spriteId].x > DISPLAY_WIDTH + 32) DestroyAnimVisualTask(taskId); } @@ -690,10 +693,10 @@ void AnimTask_SwayMon(u8 taskId) else gTasks[taskId].data[5] = gBattleAnimTarget; gTasks[taskId].data[12] = 1; - gTasks[taskId].func = AnimTask_SwayMonStep; + gTasks[taskId].func = AnimTask_SwayMon_Step; } -static void AnimTask_SwayMonStep(u8 taskId) +static void AnimTask_SwayMon_Step(u8 taskId) { u8 spriteId; u32 waveIndex; @@ -745,10 +748,10 @@ void AnimTask_ScaleMonAndRestore(u8 taskId) gTasks[taskId].data[4] = spriteId; gTasks[taskId].data[10] = 0x100; gTasks[taskId].data[11] = 0x100; - gTasks[taskId].func = AnimTask_ScaleMonAndRestoreStep; + gTasks[taskId].func = AnimTask_ScaleMonAndRestore_Step; } -static void AnimTask_ScaleMonAndRestoreStep(u8 taskId) +static void AnimTask_ScaleMonAndRestore_Step(u8 taskId) { u8 spriteId; gTasks[taskId].data[10] += gTasks[taskId].data[0]; @@ -802,16 +805,17 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId) tmp = gTasks[taskId].data[4]; gTasks[taskId].data[4] = -tmp; } - gTasks[taskId].func = sub_8099B54; + gTasks[taskId].func = AnimTask_RotateMonSpriteToSide_Step; } +// Rotates mon to side and back to original position. For Peck and when a held item activates void AnimTask_RotateMonToSideAndRestore(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[2]); PrepareBattlerSpriteForRotScale(spriteId, 0); gTasks[taskId].data[1] = 0; gTasks[taskId].data[2] = gBattleAnimArgs[0]; - if (gBattleAnimArgs[2] == 0) + if (gBattleAnimArgs[2] == ANIM_ATTACKER) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[1] = -gBattleAnimArgs[1]; @@ -831,16 +835,15 @@ void AnimTask_RotateMonToSideAndRestore(u8 taskId) gTasks[taskId].data[7] = 1; if (gTasks[taskId].data[7] ) { - s16 tmp; - tmp = gTasks[taskId].data[3]; + s16 tmp = gTasks[taskId].data[3]; gTasks[taskId].data[3] = -tmp; tmp = gTasks[taskId].data[4]; gTasks[taskId].data[4] = -tmp; } - gTasks[taskId].func = sub_8099B54; + gTasks[taskId].func = AnimTask_RotateMonSpriteToSide_Step; } -static void sub_8099B54(u8 taskId) +static void AnimTask_RotateMonSpriteToSide_Step(u8 taskId) { gTasks[taskId].data[3] += gTasks[taskId].data[4]; SetSpriteRotScale(gTasks[taskId].data[5], 0x100, 0x100, gTasks[taskId].data[3]); @@ -895,10 +898,10 @@ void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId) gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = gBattleAnimArgs[1]; gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].func = sub_8099CB8; + gTasks[taskId].func = AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step; } -static void sub_8099CB8(u8 taskId) +static void AnimTask_ShakeTargetBasedOnMovePowerOrDmg_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; if (++task->data[0] > task->data[1]) From efa422d6fadb6addd769eadf3d867900cb5b3d84 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 13:14:34 -0400 Subject: [PATCH 17/38] Sync battle anim - mons --- include/battle_anim.h | 26 +- include/data.h | 4 + include/palette.h | 2 +- src/battle_anim.c | 4 +- src/battle_anim_dark.c | 2 +- src/battle_anim_effects_1.c | 6 +- src/battle_anim_effects_2.c | 2 +- src/battle_anim_ice.c | 6 +- src/battle_anim_mon_movement.c | 12 +- src/battle_anim_mons.c | 559 ++++++++++++++++++------------- src/battle_anim_status_effects.c | 14 +- src/battle_anim_utility_funcs.c | 14 +- src/palette.c | 4 +- src/trade.c | 2 +- 14 files changed, 386 insertions(+), 271 deletions(-) diff --git a/include/battle_anim.h b/include/battle_anim.h index c5c7626f8..cd5785871 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -365,11 +365,11 @@ void TranslateSpriteInCircle(struct Sprite *sprite); void TranslateSpriteInGrowingCircle(struct Sprite *sprite); void TranslateSpriteInEllipse(struct Sprite *sprite); void WaitAnimForDuration(struct Sprite *sprite); -void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite); +void ConvertPosDataToTranslateLinearData(struct Sprite *sprite); void TranslateSpriteLinear(struct Sprite *sprite); void TranslateSpriteLinearFixedPoint(struct Sprite *sprite); -void TranslateMonSpriteLinear(struct Sprite *sprite); -void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite); +void TranslateSpriteLinearById(struct Sprite *sprite); +void TranslateSpriteLinearByIdFixedPoint(struct Sprite *sprite); void TranslateSpriteLinearAndFlicker(struct Sprite *sprite); void DestroySpriteAndMatrix(struct Sprite *sprite); void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite); @@ -398,7 +398,7 @@ void InitAnimBgTilemapBuffer(u32 bgId, const void *src); void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src); u8 GetBattleBgPaletteNum(void); void ToggleBg3Mode(bool8 arg0); -void StartSpriteLinearTranslationFromCurrentPos(struct Sprite *sprite); +void TradeMenuBouncePartySprites(struct Sprite *sprite); void InitSpriteDataForLinearTranslation(struct Sprite *sprite); void InitAnimLinearTranslation(struct Sprite *sprite); void StartAnimLinearTranslation(struct Sprite *sprite); @@ -406,11 +406,11 @@ void PlayerThrowBall_StartAnimLinearTranslation(struct Sprite *sprite); bool8 AnimTranslateLinear(struct Sprite *sprite); void AnimTranslateLinear_WithFollowup(struct Sprite *sprite); void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite); -void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite); +void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite); void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite); bool8 AnimFastTranslateLinear(struct Sprite *sprite); void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite); -void InitAndStartAnimFastLinearTranslationWithSpeed(struct Sprite *sprite); +void InitAnimFastLinearTranslationWithSpeedAndPos(struct Sprite *sprite); void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation); void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode); void ResetSpriteRotScale(u8 spriteId); @@ -420,7 +420,7 @@ void TryResetSpriteAffineState(struct Sprite *sprite); u16 ArcTan2Neg(s16 a, s16 b); void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor); u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7); -u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLeft, bool8 foeRight); +u32 GetBattleMonSpritePalettesMask(bool8 playerLeft, bool8 playerRight, bool8 foeLeft, bool8 foeRight); u8 GetSpritePalIdxByBattler(u8 a1); void AnimSpriteOnMonPos(struct Sprite *sprite); void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite); @@ -440,7 +440,7 @@ void *LoadPointerFromVars(s16 lo, s16 hi); void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScale0, s16 yScale0, s16 xScale1, s16 yScale1, u16 duration); u8 BattleAnimHelper_RunSpriteSquash(struct Task *task); void AnimTask_GetFrustrationPowerLevel(u8 taskId); -void ResetSpritePriorityOfAllVisibleBattlers(void); +void InitPrioritiesForVisibleBattlers(void); u8 GetBattlerSpriteSubpriority(u8 battlerId); u8 GetBattlerSpriteBGPriority(u8 battlerId); @@ -451,12 +451,12 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templat void DestroySpriteAndFreeResources_(struct Sprite *sprite); s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr); void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y); -u8 CreateCloneOfSpriteInWindowMode(s32 battlerId, u8 spriteId, s32 species); -void SpriteCB_AnimTranslateSpriteLinearAndFlicker(struct Sprite *sprite); -void SpriteCB_AnimTranslateSpriteLinearAndFlicker2(struct Sprite *sprite); -void SpriteCB_TrackOffsetFromAttackerAndWaitAnim(struct Sprite *sprite); +u8 CreateInvisibleSpriteCopy(s32 battlerId, u8 spriteId, s32 species); +void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite); +void AnimTranslateLinearAndFlicker(struct Sprite *sprite); +void AnimSpinningSparkle(struct Sprite *sprite); void AnimTask_AttackerPunchWithTrace(u8 taskId); -void SpriteCB_WeatherBallUp(struct Sprite *sprite); +void AnimWeatherBallUp(struct Sprite *sprite); void AnimWeatherBallDown(struct Sprite *sprite); // battle_anim_mon_movement.c diff --git a/include/data.h b/include/data.h index 55eda56a4..2fa86fc0d 100644 --- a/include/data.h +++ b/include/data.h @@ -14,6 +14,10 @@ struct MonCoords u8 y_offset; }; +#define MON_COORDS_SIZE(width, height)(DIV_ROUND_UP(width, 8) << 4 | DIV_ROUND_UP(height, 8)) +#define GET_MON_COORDS_WIDTH(size)((size >> 4) * 8) +#define GET_MON_COORDS_HEIGHT(size)((size & 0xF) * 8) + extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1]; extern const u8 gMoveNames[][13]; extern const u16 gUnknown_8251CB8[]; diff --git a/include/palette.h b/include/palette.h index 55054b63d..c510a5d2f 100644 --- a/include/palette.h +++ b/include/palette.h @@ -78,7 +78,7 @@ void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4); void sub_80717A8(u32 a1, s8 a2, u8 a3, u8 a4, u16 a5, u8 a6, u8 a7); bool32 sub_807185C(u8 var); void sub_8071898(void); -void ResetPaletteStructByUid(u16 a1); +void PaletteStruct_ResetById(u16 a1); void ResetPaletteStruct(u8 paletteNum); #endif // GUARD_PALETTE_H diff --git a/src/battle_anim.c b/src/battle_anim.c index 26246bf5b..855059a32 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -1823,7 +1823,7 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo { s32 i; - ResetSpritePriorityOfAllVisibleBattlers(); + InitPrioritiesForVisibleBattlers(); UpdateOamPriorityInAllHealthboxes(0); for (i = 0; i < MAX_BATTLERS_COUNT; i++) { @@ -2128,7 +2128,7 @@ static void ScriptCmd_end(void) if (!continuousAnim) { m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 256); - ResetSpritePriorityOfAllVisibleBattlers(); + InitPrioritiesForVisibleBattlers(); UpdateOamPriorityInAllHealthboxes(1); gAnimScriptActive = FALSE; } diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c index 1923a9dea..7b0a81bb3 100644 --- a/src/battle_anim_dark.c +++ b/src/battle_anim_dark.c @@ -802,7 +802,7 @@ void AnimTask_MetallicShine(u8 taskId) else species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); - newSpriteId = CreateCloneOfSpriteInWindowMode(gBattleAnimAttacker, spriteId, species); + newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species); GetBattleAnimBg1Data(&animBg); AnimLoadCompressedBgTilemap(animBg.bgId, gMetalShineTilemap); AnimLoadCompressedBgGfx(animBg.bgId, gMetalShineGfx, animBg.tilesOffset); diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index d03206ded..3e22541be 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -4418,7 +4418,7 @@ static void AnimBowMon_Step1(struct Sprite* sprite) sprite->data[2] = 0; sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; StoreSpriteCallbackInData6(sprite, AnimBowMon_Step1_Callback); - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; } static void AnimBowMon_Step1_Callback(struct Sprite* sprite) @@ -4448,7 +4448,7 @@ static void AnimBowMon_Step2(struct Sprite* sprite) sprite->data[2] = 0; sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; StoreSpriteCallbackInData6(sprite, AnimBowMon_Step4); - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; } static void AnimBowMon_Step3(struct Sprite* sprite) @@ -4996,7 +4996,7 @@ void AnimTask_FadeScreenBlue(u8 taskId) gTasks[taskId].data[7] = 13; gTasks[taskId].data[8] = 14; gTasks[taskId].data[9] = 15; - b = SelectBattlerSpritePalettes(1, 1, 1, 1); + b = GetBattleMonSpritePalettesMask(1, 1, 1, 1); c = a | b; StorePointerInVars(&gTasks[taskId].data[14], &gTasks[taskId].data[15], (void *)c); b = b | (0x10000 << IndexOfSpritePaletteTag(ANIM_TAG_MOON)); diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index ab870f792..17e58280e 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -1747,7 +1747,7 @@ void AnimCoinThrow(struct Sprite *sprite) sprite->data[0] = gBattleAnimArgs[4]; sprite->data[2] = r6; sprite->data[4] = r7; - sprite->callback = BattleAnim_InitAndRunLinearTranslationWithDuration; + sprite->callback = InitAnimLinearTranslationWithSpeedAndPos; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } diff --git a/src/battle_anim_ice.c b/src/battle_anim_ice.c index f5e4a32dc..f70edfb83 100644 --- a/src/battle_anim_ice.c +++ b/src/battle_anim_ice.c @@ -531,7 +531,7 @@ static void AnimUnusedIceCrystalThrow(struct Sprite *sprite) sprite->data[2] = gBattleAnimArgs[2] + targetX; sprite->data[3] = gBattleAnimArgs[1] + attackerY; sprite->data[4] = gBattleAnimArgs[3] + targetY; - SetupLinearTranslationWithFixedDuration(sprite); + ConvertPosDataToTranslateLinearData(sprite); // won't match with while loop for (; (targetX >= -32 && targetX <= DISPLAY_WIDTH + 32) && (targetY >= -32 && targetY <= DISPLAY_HEIGHT + 32); targetX += sprite->data[1], targetY += sprite->data[2]) @@ -548,7 +548,7 @@ static void AnimUnusedIceCrystalThrow(struct Sprite *sprite) sprite->data[2] = targetX; sprite->data[3] = attackerY; sprite->data[4] = targetY; - SetupLinearTranslationWithFixedDuration(sprite); + ConvertPosDataToTranslateLinearData(sprite); sprite->data[3] = gBattleAnimArgs[5]; sprite->data[4] = gBattleAnimArgs[6]; sprite->callback = AnimUnusedIceCrystalThrow_Step; @@ -686,7 +686,7 @@ static void AnimSwirlingSnowball(struct Sprite *sprite) sprite->x2 = sprite->y2 = 0; for (i = 0; i < 8; ++i) sprite->data[i] = tempDataHolder[i]; - sprite->callback = InitAndStartAnimFastLinearTranslationWithSpeed; + sprite->callback = InitAnimFastLinearTranslationWithSpeedAndPos; StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step1); } diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index f7a8703ca..16114456f 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -397,14 +397,14 @@ static void DoHorizontalLunge(struct Sprite *sprite) sprite->data[3] = gBattlerSpriteIds[gBattleAnimAttacker]; sprite->data[4] = gBattleAnimArgs[0]; StoreSpriteCallbackInData6(sprite, ReverseHorizontalLungeDirection); - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; } static void ReverseHorizontalLungeDirection(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[1] = -sprite->data[1]; - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -424,14 +424,14 @@ static void DoVerticalDip(struct Sprite *sprite) sprite->data[3] = spriteId; sprite->data[4] = gBattleAnimArgs[0]; StoreSpriteCallbackInData6(sprite, ReverseVerticalDipDirection); - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; } static void ReverseVerticalDipDirection(struct Sprite *sprite) { sprite->data[0] = sprite->data[4]; sprite->data[2] = -sprite->data[2]; - sprite->callback = TranslateMonSpriteLinear; + sprite->callback = TranslateSpriteLinearById; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } @@ -523,7 +523,7 @@ static void SlideMonToOffset(struct Sprite *sprite) sprite->data[5] = monSpriteId; sprite->invisible = TRUE; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); - sprite->callback = TranslateMonSpriteLinearFixedPoint; + sprite->callback = TranslateSpriteLinearByIdFixedPoint; } static void SlideMonToOffsetAndBack(struct Sprite *sprite) @@ -556,7 +556,7 @@ static void SlideMonToOffsetAndBack(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); else StoreSpriteCallbackInData6(sprite, SlideMonToOffsetAndBack_End); - sprite->callback = TranslateMonSpriteLinearFixedPoint; + sprite->callback = TranslateSpriteLinearByIdFixedPoint; } static void SlideMonToOffsetAndBack_End(struct Sprite *sprite) diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index 75fd70ae4..c0a7848b7 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -20,30 +20,30 @@ static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3); static void PlayerThrowBall_AnimTranslateLinear_WithFollowup(struct Sprite *sprite); -static void SpriteCB_RunAnimFastLinearTranslation(struct Sprite *sprite); -static bool8 Dummy_ReturnFalse(void); +static void AnimFastTranslateLinearWaitEnd(struct Sprite *sprite); +static bool8 ShouldRotScaleSpeciesBeFlipped(void); static void AnimThrowProjectile_Step(struct Sprite *sprite); static void AnimTask_AlphaFadeIn_Step(u8 taskId); static void AnimTask_BlendMonInAndOutSetup(struct Task *task); -static void AnimTask_BlendMonInAndOutStep(u8 taskId); +static void AnimTask_BlendMonInAndOut_Step(u8 taskId); static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId); static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId); -static void PunchAnim_CreateTraceSprite(struct Task *task, u8 taskId); -static void SpriteCB_PunchTrace(struct Sprite *sprite); -static void SpriteCB_WeatherBallUp_Step(struct Sprite *sprite); +static void CreateBattlerTrace(struct Task *task, u8 taskId); +static void AnimBattlerTrace(struct Sprite *sprite); +static void AnimWeatherBallUp_Step(struct Sprite *sprite); static EWRAM_DATA union AffineAnimCmd *sAnimTaskAffineAnim = NULL; -UNUSED static EWRAM_DATA u32 gUnknown_2037F2C = 0; // not used +static EWRAM_DATA u32 sUnused = 0; -static const struct UCoords8 sBattlerCoords[][4] = +static const struct UCoords8 sBattlerCoords[][MAX_BATTLERS_COUNT] = { - { + { // Single battle { 72, 80 }, { 176, 40 }, { 48, 40 }, { 112, 80 }, }, - { + { // Double battle { 32, 80 }, { 200, 40 }, { 90, 88 }, @@ -52,36 +52,40 @@ static const struct UCoords8 sBattlerCoords[][4] = }; // One entry for each of the four Castform forms. -const struct MonCoords gCastformFrontSpriteCoords[] = +const struct MonCoords gCastformFrontSpriteCoords[NUM_CASTFORM_FORMS] = { - { .size = 0x44, .y_offset = 17 }, // NORMAL - { .size = 0x66, .y_offset = 9 }, // SUN - { .size = 0x46, .y_offset = 9 }, // RAIN - { .size = 0x86, .y_offset = 8 }, // HAIL + [CASTFORM_NORMAL] = { .size = MON_COORDS_SIZE(32, 32), .y_offset = 17 }, + [CASTFORM_FIRE] = { .size = MON_COORDS_SIZE(48, 48), .y_offset = 9 }, + [CASTFORM_WATER] = { .size = MON_COORDS_SIZE(32, 48), .y_offset = 9 }, + [CASTFORM_ICE] = { .size = MON_COORDS_SIZE(64, 48), .y_offset = 8 }, }; -static const u8 sCastformElevations[] = +static const u8 sCastformElevations[NUM_CASTFORM_FORMS] = { - 13, // NORMAL - 14, // SUN - 13, // RAIN - 13, // HAIL + [CASTFORM_NORMAL] = 13, + [CASTFORM_FIRE] = 14, + [CASTFORM_WATER] = 13, + [CASTFORM_ICE] = 13, }; // Y position of the backsprite for each of the four Castform forms. -static const u8 sCastformBackSpriteYCoords[] = +static const u8 sCastformBackSpriteYCoords[NUM_CASTFORM_FORMS] = { - 0, // NORMAL - 0, // SUN - 0, // RAIN - 0, // HAIL + [CASTFORM_NORMAL] = 0, + [CASTFORM_FIRE] = 0, + [CASTFORM_WATER] = 0, + [CASTFORM_ICE] = 0, }; -static const struct SpriteTemplate sSpriteTemplates_AdditionalForAnim[] = +// Placeholders for pokemon sprites to be created for a move animation effect (e.g. Role Play / Snatch) +#define TAG_MOVE_EFFECT_MON_1 55125 +#define TAG_MOVE_EFFECT_MON_2 55126 + +static const struct SpriteTemplate sSpriteTemplates_MoveEffectMons[] = { { - .tileTag = 55125, - .paletteTag = 55125, + .tileTag = TAG_MOVE_EFFECT_MON_1, + .paletteTag = TAG_MOVE_EFFECT_MON_1, .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, @@ -89,8 +93,8 @@ static const struct SpriteTemplate sSpriteTemplates_AdditionalForAnim[] = .callback = SpriteCallbackDummy, }, { - .tileTag = 55126, - .paletteTag = 55126, + .tileTag = TAG_MOVE_EFFECT_MON_2, + .paletteTag = TAG_MOVE_EFFECT_MON_2, .oam = &gOamData_AffineNormal_ObjNormal_64x64, .anims = gDummySpriteAnimTable, .images = NULL, @@ -99,10 +103,10 @@ static const struct SpriteTemplate sSpriteTemplates_AdditionalForAnim[] = } }; -static const struct SpriteSheet sMoveAnimAdtlSprSheets[] = +static const struct SpriteSheet sSpriteSheets_MoveEffectMons[] = { - { gMiscBlank_Gfx, 0x800, 55125 }, - { gMiscBlank_Gfx, 0x800, 55126 }, // unused + { gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_1 }, + { gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2 }, }; u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType) @@ -252,8 +256,8 @@ static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3) { if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) y += 8; - if (y > 104) - y = 104; + if (y > DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8) + y = DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8; } return y; } @@ -346,7 +350,7 @@ u8 GetAnimBattlerSpriteId(u8 animBattler) } else { - return 0xFF; + return SPRITE_NONE; } } else if (animBattler == ANIM_TARGET) @@ -358,13 +362,13 @@ u8 GetAnimBattlerSpriteId(u8 animBattler) } else { - return 0xFF; + return SPRITE_NONE; } } else if (animBattler == ANIM_ATK_PARTNER) { if (!IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) - return 0xFF; + return SPRITE_NONE; else return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]; } @@ -373,7 +377,7 @@ u8 GetAnimBattlerSpriteId(u8 animBattler) if (IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimTarget))) return gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimTarget)]; else - return 0xFF; + return SPRITE_NONE; } } @@ -390,20 +394,40 @@ static void SetCallbackToStoredInData6(struct Sprite *sprite) sprite->callback = (SpriteCallback)callback; } +// Sprite data for TranslateSpriteInCircle/Ellipse and related +#define sCirclePos data[0] +#define sAmplitude data[1] +#define sCircleSpeed data[2] +#define sDuration data[3] + +// TranslateSpriteInGrowingCircle +#define sAmplitudeSpeed data[4] +#define sAmplitudeChange data[5] + +// TranslateSpriteInEllipse +#define sAmplitudeX sAmplitude +#define sAmplitudeY data[4] + +// TranslateSpriteInLissajousCurve +#define sCirclePosX sCirclePos +#define sCircleSpeedX sCircleSpeed +#define sCirclePosY data[4] +#define sCircleSpeedY data[5] + // x = a * sin(theta0 + dtheta * t) // y = a * cos(theta0 + dtheta * t) void TranslateSpriteInCircle(struct Sprite *sprite) { - if (sprite->data[3]) + if (sprite->sDuration) { - sprite->x2 = Sin(sprite->data[0], sprite->data[1]); - sprite->y2 = Cos(sprite->data[0], sprite->data[1]); - sprite->data[0] += sprite->data[2]; - if (sprite->data[0] >= 0x100) - sprite->data[0] -= 0x100; - else if (sprite->data[0] < 0) - sprite->data[0] += 0x100; - --sprite->data[3]; + sprite->x2 = Sin(sprite->sCirclePos, sprite->sAmplitude); + sprite->y2 = Cos(sprite->sCirclePos, sprite->sAmplitude); + sprite->sCirclePos += sprite->sCircleSpeed; + if (sprite->sCirclePos >= 0x100) + sprite->sCirclePos -= 0x100; + else if (sprite->sCirclePos < 0) + sprite->sCirclePos += 0x100; + sprite->sDuration--; } else { @@ -415,17 +439,17 @@ void TranslateSpriteInCircle(struct Sprite *sprite) // y = (a0 + da * t) * cos(theta0 + dtheta * t) void TranslateSpriteInGrowingCircle(struct Sprite *sprite) { - if (sprite->data[3]) + if (sprite->sDuration) { - sprite->x2 = Sin(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); - sprite->y2 = Cos(sprite->data[0], (sprite->data[5] >> 8) + sprite->data[1]); - sprite->data[0] += sprite->data[2]; - sprite->data[5] += sprite->data[4]; - if (sprite->data[0] >= 0x100) - sprite->data[0] -= 0x100; - else if (sprite->data[0] < 0) - sprite->data[0] += 0x100; - --sprite->data[3]; + sprite->x2 = Sin(sprite->sCirclePos, (sprite->sAmplitudeChange >> 8) + sprite->sAmplitude); + sprite->y2 = Cos(sprite->sCirclePos, (sprite->sAmplitudeChange >> 8) + sprite->sAmplitude); + sprite->sCirclePos += sprite->sCircleSpeed; + sprite->sAmplitudeChange += sprite->sAmplitudeSpeed; + if (sprite->sCirclePos >= 0x100) + sprite->sCirclePos -= 0x100; + else if (sprite->sCirclePos < 0) + sprite->sCirclePos += 0x100; + sprite->sDuration--; } else { @@ -433,26 +457,30 @@ void TranslateSpriteInGrowingCircle(struct Sprite *sprite) } } -// not used +// Unused +// Exact shape depends on arguments. Can move in a figure-8-like pattern, or circular, etc. // x = alpl * sin(alpha0 + dalpha * t) // y = ampl * cos(beta0 + dbeta * t) -static void TranslateSpriteInLissajousCurveOverDuration(struct Sprite *sprite) +static void TranslateSpriteInLissajousCurve(struct Sprite *sprite) { - if (sprite->data[3]) + if (sprite->sDuration) { - sprite->x2 = Sin(sprite->data[0], sprite->data[1]); - sprite->y2 = Cos(sprite->data[4], sprite->data[1]); - sprite->data[0] += sprite->data[2]; - sprite->data[4] += sprite->data[5]; - if (sprite->data[0] >= 0x100) - sprite->data[0] -= 0x100; - else if (sprite->data[0] < 0) - sprite->data[0] += 0x100; - if (sprite->data[4] >= 0x100) - sprite->data[4] -= 0x100; - else if (sprite->data[4] < 0) - sprite->data[4] += 0x100; - --sprite->data[3]; + sprite->x2 = Sin(sprite->sCirclePosX, sprite->sAmplitude); + sprite->y2 = Cos(sprite->sCirclePosY, sprite->sAmplitude); + sprite->sCirclePosX += sprite->sCircleSpeedX; + sprite->sCirclePosY += sprite->sCircleSpeedY; + + if (sprite->sCirclePosX >= 0x100) + sprite->sCirclePosX -= 0x100; + else if (sprite->sCirclePosX < 0) + sprite->sCirclePosX += 0x100; + + if (sprite->sCirclePosY >= 0x100) + sprite->sCirclePosY -= 0x100; + else if (sprite->sCirclePosY < 0) + sprite->sCirclePosY += 0x100; + + sprite->sDuration--; } else { @@ -464,16 +492,16 @@ static void TranslateSpriteInLissajousCurveOverDuration(struct Sprite *sprite) // y = b * cos(theta0 + dtheta * t) void TranslateSpriteInEllipse(struct Sprite *sprite) { - if (sprite->data[3]) + if (sprite->sDuration) { - sprite->x2 = Sin(sprite->data[0], sprite->data[1]); - sprite->y2 = Cos(sprite->data[0], sprite->data[4]); - sprite->data[0] += sprite->data[2]; - if (sprite->data[0] >= 0x100) - sprite->data[0] -= 0x100; - else if (sprite->data[0] < 0) - sprite->data[0] += 0x100; - --sprite->data[3]; + sprite->x2 = Sin(sprite->sCirclePos, sprite->sAmplitudeX); + sprite->y2 = Cos(sprite->sCirclePos, sprite->sAmplitudeY); + sprite->sCirclePos += sprite->sCircleSpeed; + if (sprite->sCirclePos >= 0x100) + sprite->sCirclePos -= 0x100; + else if (sprite->sCirclePos < 0) + sprite->sCirclePos += 0x100; + sprite->sDuration--; } else { @@ -481,6 +509,19 @@ void TranslateSpriteInEllipse(struct Sprite *sprite) } } +#undef sCirclePos +#undef sAmplitude +#undef sCircleSpeed +#undef sDuration +#undef sAmplitudeSpeed +#undef sAmplitudeChange +#undef sAmplitudeX +#undef sAmplitudeY +#undef sCirclePosX +#undef sCircleSpeedX +#undef sCirclePosY +#undef sCircleSpeedY + // Simply waits until the sprite's data[0] hits zero. // This is used to let sprite anims or affine anims to run for a designated // duration. @@ -492,34 +533,46 @@ void WaitAnimForDuration(struct Sprite *sprite) SetCallbackToStoredInData6(sprite); } -static void SetupAndStartSpriteLinearTranslation(struct Sprite *sprite) +// Sprite data for ConvertPosDataToTranslateLinearData +#define sStepsX data[0] +#define sStartX data[1] +#define sTargetX data[2] +#define sStartY data[3] +#define sTargetY data[4] + +// Sprite data for TranslateSpriteLinear +#define sMoveSteps data[0] +#define sSpeedX data[1] +#define sSpeedY data[2] + +static void AnimPosToTranslateLinear(struct Sprite *sprite) { - SetupLinearTranslationWithFixedDuration(sprite); + ConvertPosDataToTranslateLinearData(sprite); sprite->callback = TranslateSpriteLinear; sprite->callback(sprite); } -void SetupLinearTranslationWithFixedDuration(struct Sprite *sprite) +void ConvertPosDataToTranslateLinearData(struct Sprite *sprite) { s16 old; - s32 xDiff; + int xDiff; - if (sprite->data[1] > sprite->data[2]) - sprite->data[0] = -sprite->data[0]; - xDiff = sprite->data[2] - sprite->data[1]; - old = sprite->data[0]; - sprite->data[0] = abs(xDiff / sprite->data[0]); - sprite->data[2] = (sprite->data[4] - sprite->data[3]) / sprite->data[0]; - sprite->data[1] = old; + if (sprite->sStartX > sprite->sTargetX) + sprite->sStepsX = -sprite->sStepsX; + xDiff = sprite->sTargetX - sprite->sStartX; + old = sprite->sStepsX; + sprite->sMoveSteps = abs(xDiff / sprite->sStepsX); + sprite->sSpeedY = (sprite->sTargetY - sprite->sStartY) / sprite->sMoveSteps; + sprite->sSpeedX = old; } void TranslateSpriteLinear(struct Sprite *sprite) { - if (sprite->data[0] > 0) + if (sprite->sMoveSteps > 0) { - --sprite->data[0]; - sprite->x2 += sprite->data[1]; - sprite->y2 += sprite->data[2]; + sprite->sMoveSteps--; + sprite->x2 += sprite->sSpeedX; + sprite->y2 += sprite->sSpeedY; } else { @@ -561,17 +614,18 @@ static void TranslateSpriteLinearFixedPointIconFrame(struct Sprite *sprite) UpdateMonIconFrame(sprite); } -// not used -static void SetupAndStartSpriteLinearTranslationToTarget(struct Sprite *sprite) +// Unused +static void TranslateSpriteToBattleTargetPos(struct Sprite *sprite) { sprite->data[1] = sprite->x + sprite->x2; sprite->data[3] = sprite->y + sprite->y2; sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); - sprite->callback = SetupAndStartSpriteLinearTranslation; + sprite->callback = AnimPosToTranslateLinear; } -void TranslateMonSpriteLinear(struct Sprite *sprite) +// Same as TranslateSpriteLinear but takes an id to specify which sprite to move +void TranslateSpriteLinearById(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -585,7 +639,7 @@ void TranslateMonSpriteLinear(struct Sprite *sprite) } } -void TranslateMonSpriteLinearFixedPoint(struct Sprite *sprite) +void TranslateSpriteLinearByIdFixedPoint(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -628,20 +682,26 @@ void DestroySpriteAndMatrix(struct Sprite *sprite) DestroyAnimSprite(sprite); } -// not used +// Unused static void SetupAndStartSpriteLinearTranslationToAttacker(struct Sprite *sprite) { - sprite->data[1] = sprite->x + sprite->x2; - sprite->data[3] = sprite->y + sprite->y2; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); - sprite->callback = SetupAndStartSpriteLinearTranslation; + sprite->sStartX = sprite->x + sprite->x2; + sprite->sStartY = sprite->y + sprite->y2; + sprite->sTargetX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->sTargetY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); + sprite->callback = AnimPosToTranslateLinear; } -// not used -static void SpriteResetPaletteStructAndDestroy(struct Sprite *sprite) +#undef sStepsX +#undef sStartX +#undef sTargetX +#undef sStartY +#undef sTargetY + +// Unused +static void EndUnkPaletteAnim(struct Sprite *sprite) { - ResetPaletteStructByUid(sprite->data[5]); + PaletteStruct_ResetById(sprite->data[5]); DestroySpriteAndMatrix(sprite); } @@ -809,11 +869,14 @@ bool8 IsDoubleBattle(void) return IS_DOUBLE_BATTLE(); } +#define BG_ANIM_PAL_1 8 +#define BG_ANIM_PAL_2 9 + void GetBattleAnimBg1Data(struct BattleAnimBgData *animBgData) { animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer; animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer; - animBgData->paletteId = 8; + animBgData->paletteId = BG_ANIM_PAL_1; animBgData->bgId = 1; animBgData->tilesOffset = 0x200; animBgData->unused = 0; @@ -829,7 +892,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *animBgData, u32 bgId) { animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer; animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer; - animBgData->paletteId = 9; + animBgData->paletteId = BG_ANIM_PAL_2; animBgData->bgId = 2; animBgData->tilesOffset = 0x300; animBgData->unused = 0; @@ -842,14 +905,14 @@ void GetBattleAnimBgDataByPriorityRank(struct BattleAnimBgData *animBgData, u8 u animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer; if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) { - animBgData->paletteId = 8; + animBgData->paletteId = BG_ANIM_PAL_1; animBgData->bgId = 1; animBgData->tilesOffset = 0x200; animBgData->unused = 0; } else { - animBgData->paletteId = 9; + animBgData->paletteId = BG_ANIM_PAL_2; animBgData->bgId = 2; animBgData->tilesOffset = 0x300; animBgData->unused = 0; @@ -888,12 +951,16 @@ void AnimLoadCompressedBgTilemap(u32 bgId, const u32 *src) u8 GetBattleBgPaletteNum(void) { + /* + if (IsContest()) + return 1; + */ return 2; } -void ToggleBg3Mode(bool8 arg0) +void ToggleBg3Mode(bool8 largeScreenSize) { - if (!arg0) + if (!largeScreenSize) { SetAnimBgAttribute(3, BG_ANIM_SCREEN_SIZE, 0); SetAnimBgAttribute(3, BG_ANIM_AREA_OVERFLOW_MODE, 1); @@ -905,7 +972,7 @@ void ToggleBg3Mode(bool8 arg0) } } -void StartSpriteLinearTranslationFromCurrentPos(struct Sprite *sprite) +void TradeMenuBouncePartySprites(struct Sprite *sprite) { sprite->data[1] = sprite->x; sprite->data[3] = sprite->y; @@ -1019,7 +1086,7 @@ void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite) InitAnimLinearTranslation(sprite); } -void BattleAnim_InitAndRunLinearTranslationWithDuration(struct Sprite *sprite) +void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite) { sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; @@ -1058,7 +1125,7 @@ void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite) sprite->sTransl_InitX = sprite->x; sprite->sTransl_InitY = sprite->y; InitAnimFastLinearTranslation(sprite); - sprite->callback = SpriteCB_RunAnimFastLinearTranslation; + sprite->callback = AnimFastTranslateLinearWaitEnd; sprite->callback(sprite); } @@ -1088,7 +1155,7 @@ bool8 AnimFastTranslateLinear(struct Sprite *sprite) return FALSE; } -static void SpriteCB_RunAnimFastLinearTranslation(struct Sprite *sprite) +static void AnimFastTranslateLinearWaitEnd(struct Sprite *sprite) { if (AnimFastTranslateLinear(sprite)) SetCallbackToStoredInData6(sprite); @@ -1102,12 +1169,12 @@ void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite) InitAnimFastLinearTranslation(sprite); } -void InitAndStartAnimFastLinearTranslationWithSpeed(struct Sprite *sprite) +void InitAnimFastLinearTranslationWithSpeedAndPos(struct Sprite *sprite) { sprite->data[1] = sprite->x; sprite->data[3] = sprite->y; InitAnimFastLinearTranslationWithSpeed(sprite); - sprite->callback = SpriteCB_RunAnimFastLinearTranslation; + sprite->callback = AnimFastTranslateLinearWaitEnd; sprite->callback(sprite); } @@ -1120,7 +1187,7 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation) src.xScale = xScale; src.yScale = yScale; src.rotation = rotation; - if (Dummy_ReturnFalse()) + if (ShouldRotScaleSpeciesBeFlipped()) src.xScale = -src.xScale; i = gSprites[spriteId].oam.matrixNum; ObjAffineSet(&src, &matrix, 1, 2); @@ -1130,8 +1197,18 @@ void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation) gOamMatrices[i].d = matrix.d; } -static bool8 Dummy_ReturnFalse(void) +// Pokémon in Contests (except Unown) should be flipped. +static bool8 ShouldRotScaleSpeciesBeFlipped(void) { + /* + if (IsContest()) + { + if (gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].data[2] == SPECIES_UNOWN) + return FALSE; + else + return TRUE; + } + */ return FALSE; } @@ -1185,7 +1262,7 @@ void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 x src.xScale = xScale; src.yScale = yScale; src.rotation = rotation; - if (Dummy_ReturnFalse()) + if (ShouldRotScaleSpeciesBeFlipped()) src.xScale = -src.xScale; i = sprite->oam.matrixNum; ObjAffineSet(&src, &matrix, 1, 2); @@ -1242,14 +1319,14 @@ void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) } } -u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 a6, bool8 a7) +u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, bool8 attackerPartner, bool8 targetPartner, bool8 anim1, bool8 anim2) { u32 selectedPalettes = 0; u32 shift; if (battleBackground) { - selectedPalettes = 0xe; + selectedPalettes = 0xe; // Palettes 1, 2, and 3 } if (attacker) { @@ -1277,27 +1354,25 @@ u32 GetBattlePalettesMask(bool8 battleBackground, bool8 attacker, bool8 target, selectedPalettes |= 1 << shift; } } - if (a6) - { - selectedPalettes |= 0x100; - } - if (a7) - { - selectedPalettes |= 0x200; - } + if (anim1) + selectedPalettes |= 1 << BG_ANIM_PAL_1; + + if (anim2) + selectedPalettes |= 1 << BG_ANIM_PAL_2; + return selectedPalettes; } -u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLeft, bool8 foeRight) +u32 GetBattleMonSpritePalettesMask(bool8 playerLeft, bool8 playerRight, bool8 foeLeft, bool8 foeRight) { - u32 var = 0; + u32 selectedPalettes = 0; u32 shift; if (playerLeft) { if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_PLAYER_LEFT))) { - var |= 1 << (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) + 16); + selectedPalettes |= 1 << (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) + 16); } } if (playerRight) @@ -1305,7 +1380,7 @@ u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLe if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT))) { shift = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT) + 16; - var |= 1 << shift; + selectedPalettes |= 1 << shift; } } if (foeLeft) @@ -1313,7 +1388,7 @@ u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLe if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))) { shift = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT) + 16; - var |= 1 << shift; + selectedPalettes |= 1 << shift; } } if (foeRight) @@ -1321,18 +1396,18 @@ u32 SelectBattlerSpritePalettes(bool8 playerLeft, bool8 playerRight, bool8 foeLe if (IsBattlerSpriteVisible(GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT))) { shift = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT) + 16; - var |= 1 << shift; + selectedPalettes |= 1 << shift; } } - return var; + return selectedPalettes; } -u8 GetSpritePalIdxByBattler(u8 a1) +u8 GetSpritePalIdxByBattler(u8 battler) { - return a1; + return battler; } -// not used +// Unused static u8 GetSpritePalIdxByPosition(u8 position) { return GetBattlerAtPosition(position); @@ -1451,7 +1526,7 @@ s16 CloneBattlerSpriteWithBlend(u8 animBattler) u16 i; u8 spriteId = GetAnimBattlerSpriteId(animBattler); - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) { for (i = 0; i < MAX_SPRITES; ++i) { @@ -1473,6 +1548,7 @@ void DestroySpriteWithActiveSheet(struct Sprite *sprite) DestroySprite(sprite); } +// Only used to fade Moonlight moon sprite in void AnimTask_AlphaFadeIn(u8 taskId) { s16 v1 = 0, v2 = 0; @@ -1553,10 +1629,10 @@ static void AnimTask_BlendMonInAndOutSetup(struct Task *task) task->data[5] = gBattleAnimArgs[3]; task->data[6] = 0; task->data[7] = gBattleAnimArgs[4]; - task->func = AnimTask_BlendMonInAndOutStep; + task->func = AnimTask_BlendMonInAndOut_Step; } -static void AnimTask_BlendMonInAndOutStep(u8 taskId) +static void AnimTask_BlendMonInAndOut_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1591,6 +1667,7 @@ static void AnimTask_BlendMonInAndOutStep(u8 taskId) } } +// See AnimTask_BlendMonInAndOut. Same, but ANIM_TAG_* instead of mon void AnimTask_BlendPalInAndOutByTag(u8 taskId) { u8 palette = IndexOfSpritePaletteTag(gBattleAnimArgs[0]); @@ -1691,12 +1768,12 @@ bool8 RunAffineAnimFromTaskData(struct Task *task) // matrix's scale in the y dimension. void SetBattlerSpriteYOffsetFromYScale(u8 spriteId) { - s32 var = 64 - GetBattlerYDeltaFromSpriteId(spriteId) * 2; + s32 var = MON_PIC_HEIGHT - GetBattlerYDeltaFromSpriteId(spriteId) * 2; u16 matrix = gSprites[spriteId].oam.matrixNum; - s32 var2 = (var << 8) / gOamMatrices[matrix].d; + s32 var2 = SAFE_DIV(var << 8, gOamMatrices[matrix].d); - if (var2 > 128) - var2 = 128; + if (var2 > MON_PIC_HEIGHT * 2) + var2 = MON_PIC_HEIGHT * 2; gSprites[spriteId].y2 = (var - var2) / 2; } @@ -1704,12 +1781,12 @@ void SetBattlerSpriteYOffsetFromYScale(u8 spriteId) // matrix's scale in the y dimension. void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId) { - s32 var = 64 - GetBattlerYDeltaFromSpriteId(otherSpriteId) * 2; + s32 var = MON_PIC_HEIGHT - GetBattlerYDeltaFromSpriteId(otherSpriteId) * 2; u16 matrix = gSprites[spriteId].oam.matrixNum; s32 var2 = SAFE_DIV((var << 8), gOamMatrices[matrix].d); - if (var2 > 128) - var2 = 128; + if (var2 > MON_PIC_HEIGHT * 2) + var2 = MON_PIC_HEIGHT * 2; gSprites[spriteId].y2 = (var - var2) / 2; } @@ -1744,7 +1821,7 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) } } } - return 64; + return MON_PIC_HEIGHT; } void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr) @@ -1758,16 +1835,16 @@ void *LoadPointerFromVars(s16 lo, s16 hi) return (void *)((u16)lo | ((u16)hi << 16)); } -void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScale0, s16 yScale0, s16 xScale1, s16 yScale1, u16 duration) +void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScaleStart, s16 yScaleStart, s16 xScaleEnd, s16 yScaleEnd, u16 duration) { task->data[8] = duration; task->data[15] = spriteId; - task->data[9] = xScale0; - task->data[10] = yScale0; - task->data[13] = xScale1; - task->data[14] = yScale1; - task->data[11] = (xScale1 - xScale0) / duration; - task->data[12] = (yScale1 - yScale0) / duration; + task->data[9] = xScaleStart; + task->data[10] = yScaleStart; + task->data[13] = xScaleEnd; + task->data[14] = yScaleEnd; + task->data[11] = (xScaleEnd - xScaleStart) / duration; + task->data[12] = (yScaleEnd - yScaleStart) / duration; } u8 BattleAnimHelper_RunSpriteSquash(struct Task *task) @@ -1804,12 +1881,12 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId) powerLevel = 2; else powerLevel = 3; - gBattleAnimArgs[7] = powerLevel; + gBattleAnimArgs[ARG_RET_ID] = powerLevel; DestroyAnimVisualTask(taskId); } -// not used -static void SetOamPriorityOfAllVisibleBattlers(u8 priority) +// Unused +static void SetPriorityForVisibleBattlers(u8 priority) { if (IsBattlerSpriteVisible(gBattleAnimTarget)) gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority; @@ -1821,7 +1898,7 @@ static void SetOamPriorityOfAllVisibleBattlers(u8 priority) gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority; } -void ResetSpritePriorityOfAllVisibleBattlers(void) +void InitPrioritiesForVisibleBattlers(void) { s32 i; @@ -1871,11 +1948,12 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId) return 1; } +// Create pokemon sprite to be used for a move animation effect (e.g. Role Play / Snatch) u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templateId, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxys) { u8 spriteId; - u16 sheet = LoadSpriteSheet(&sMoveAnimAdtlSprSheets[templateId]); - u16 palette = AllocSpritePalette(sSpriteTemplates_AdditionalForAnim[templateId].paletteTag); + u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[templateId]); + u16 palette = AllocSpritePalette(sSpriteTemplates_MoveEffectMons[templateId].paletteTag); if (gMonSpritesGfxPtr != NULL && gMonSpritesGfxPtr->multiUseBuffer == NULL) gMonSpritesGfxPtr->multiUseBuffer = AllocZeroed(0x2000); @@ -1914,9 +1992,9 @@ u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templat RequestDma3Copy(gMonSpritesGfxPtr->multiUseBuffer, (void *)(OBJ_VRAM0 + (sheet * 0x20)), 0x800, 1); FREE_AND_SET_NULL(gMonSpritesGfxPtr->multiUseBuffer); if (!isBackpic) - spriteId = CreateSprite(&sSpriteTemplates_AdditionalForAnim[templateId], x, y + gMonFrontPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[templateId], x, y + gMonFrontPicCoords[species].y_offset, subpriority); else - spriteId = CreateSprite(&sSpriteTemplates_AdditionalForAnim[templateId], x, y + gMonBackPicCoords[species].y_offset, subpriority); + spriteId = CreateSprite(&sSpriteTemplates_MoveEffectMons[templateId], x, y + gMonBackPicCoords[species].y_offset, subpriority); return spriteId; } @@ -2005,17 +2083,17 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr) switch (attr) { case BATTLER_COORD_ATTR_HEIGHT: - return (coords->size & 0xf) * 8; + return GET_MON_COORDS_HEIGHT(coords->size); case BATTLER_COORD_ATTR_WIDTH: - return (coords->size >> 4) * 8; + return GET_MON_COORDS_WIDTH(coords->size); case BATTLER_COORD_ATTR_LEFT: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - ((coords->size >> 4) * 4); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - (GET_MON_COORDS_WIDTH(coords->size) / 2); case BATTLER_COORD_ATTR_RIGHT: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + ((coords->size >> 4) * 4); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + (GET_MON_COORDS_WIDTH(coords->size) / 2); case BATTLER_COORD_ATTR_TOP: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - ((coords->size & 0xf) * 4); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - (GET_MON_COORDS_HEIGHT(coords->size) / 2); case BATTLER_COORD_ATTR_BOTTOM: - return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + ((coords->size & 0xf) * 4); + return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + (GET_MON_COORDS_HEIGHT(coords->size) / 2); case BATTLER_COORD_ATTR_RAW_BOTTOM: ret = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 31; return ret - coords->y_offset; @@ -2056,7 +2134,7 @@ void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x *y = (battlerY + partnerY) / 2; } -u8 CreateCloneOfSpriteInWindowMode(s32 battlerId, u8 spriteId, s32 species) +u8 CreateInvisibleSpriteCopy(s32 battlerId, u8 spriteId, s32 species) { u8 newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); @@ -2069,7 +2147,7 @@ u8 CreateCloneOfSpriteInWindowMode(s32 battlerId, u8 spriteId, s32 species) return newSpriteId; } -void SpriteCB_AnimTranslateSpriteLinearAndFlicker(struct Sprite *sprite) +void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -2091,7 +2169,8 @@ void SpriteCB_AnimTranslateSpriteLinearAndFlicker(struct Sprite *sprite) sprite->callback = TranslateSpriteLinearAndFlicker; } -void SpriteCB_AnimTranslateSpriteLinearAndFlicker2(struct Sprite *sprite) +// Used by three different unused battle anim sprite templates. +void AnimTranslateLinearAndFlicker(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { @@ -2112,7 +2191,8 @@ void SpriteCB_AnimTranslateSpriteLinearAndFlicker2(struct Sprite *sprite) sprite->callback = TranslateSpriteLinearAndFlicker; } -void SpriteCB_TrackOffsetFromAttackerAndWaitAnim(struct Sprite *sprite) +// Used by Detect/Disable +void AnimSpinningSparkle(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -2124,26 +2204,43 @@ void SpriteCB_TrackOffsetFromAttackerAndWaitAnim(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } +// Task and sprite data for AnimTask_AttackerPunchWithTrace +#define tBattlerSpriteId data[0] +#define tMoveSpeed data[1] +#define tState data[2] +#define tCounter data[3] +#define tPaletteNum data[4] +#define tNumTracesActive data[5] +#define tPriority data[6] + +#define sActiveTime data[0] +#define sTaskId data[1] +#define sSpriteId data[2] + void AnimTask_AttackerPunchWithTrace(u8 taskId) { u16 src; u16 dest; struct Task *task = &gTasks[taskId]; - task->data[0] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->data[1] = ((GetBattlerSide(gBattleAnimAttacker)) != B_SIDE_PLAYER) ? -8 : 8; - task->data[2] = 0; - task->data[3] = 0; - gSprites[task->data[0]].x2 -= task->data[0]; - task->data[4] = AllocSpritePalette(10097); - task->data[5] = 0; - dest = (task->data[4] + 0x10) * 0x10; - src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10; - task->data[6] = GetBattlerSpriteSubpriority(gBattleAnimAttacker); - if (task->data[6] == 20 || task->data[6] == 40) - task->data[6] = 2; + task->tBattlerSpriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); + task->tMoveSpeed = (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) ? -8 : 8; + task->tState = 0; + task->tCounter = 0; + gSprites[task->tBattlerSpriteId].x2 -= task->tBattlerSpriteId; + task->tPaletteNum = AllocSpritePalette(ANIM_TAG_BENT_SPOON); + task->tNumTracesActive = 0; + + dest = (task->tPaletteNum + 16) * 16; + src = (gSprites[task->tBattlerSpriteId].oam.paletteNum + 0x10) * 0x10; + + // Set trace's priority based on battler's subpriority + task->tPriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); + if (task->tPriority == 20 || task->tPriority == 40) + task->tPriority = 2; else - task->data[6] = 3; + task->tPriority = 3; + CpuCopy32(&gPlttBufferUnfaded[src], &gPlttBufferFaded[dest], 0x20); BlendPalette(dest, 16, gBattleAnimArgs[1], gBattleAnimArgs[0]); task->func = AnimTask_AttackerPunchWithTrace_Step; @@ -2152,28 +2249,30 @@ void AnimTask_AttackerPunchWithTrace(u8 taskId) static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[2]) + switch (task->tState) { case 0: - PunchAnim_CreateTraceSprite(task, taskId); - gSprites[task->data[0]].x2 += task->data[1]; - if (++task->data[3] == 5) + // Move forward + CreateBattlerTrace(task, taskId); + gSprites[task->tBattlerSpriteId].x2 += task->tMoveSpeed; + if (++task->tCounter == 5) { - --task->data[3]; - ++task->data[2]; + task->tCounter--; + task->tState++; } break; case 1: - PunchAnim_CreateTraceSprite(task, taskId); - gSprites[task->data[0]].x2 -= task->data[1]; - if (--task->data[3] == 0) + // Move back (do same number of traces as before) + CreateBattlerTrace(task, taskId); + gSprites[task->tBattlerSpriteId].x2 -= task->tMoveSpeed; + if (--task->tCounter == 0) { - gSprites[task->data[0]].x2 = 0; - ++task->data[2]; + gSprites[task->tBattlerSpriteId].x2 = 0; + task->tState++; } break; case 2: - if (!task->data[5]) + if (task->tNumTracesActive == 0) { FreeSpritePaletteByTag(ANIM_TAG_BENT_SPOON); DestroyAnimVisualTask(taskId); @@ -2182,33 +2281,45 @@ static void AnimTask_AttackerPunchWithTrace_Step(u8 taskId) } } -static void PunchAnim_CreateTraceSprite(struct Task *task, u8 taskId) +static void CreateBattlerTrace(struct Task *task, u8 taskId) { s16 spriteId = CloneBattlerSpriteWithBlend(0); - if (spriteId >= 0) { - gSprites[spriteId].oam.priority = task->data[6]; - gSprites[spriteId].oam.paletteNum = task->data[4]; - gSprites[spriteId].data[0] = 8; - gSprites[spriteId].data[1] = taskId; - gSprites[spriteId].data[2] = spriteId; - gSprites[spriteId].x2 = gSprites[task->data[0]].x2; - gSprites[spriteId].callback = SpriteCB_PunchTrace; - ++task->data[5]; + gSprites[spriteId].oam.priority = task->tPriority; + gSprites[spriteId].oam.paletteNum = task->tPaletteNum; + gSprites[spriteId].sActiveTime = 8; + gSprites[spriteId].sTaskId = taskId; + gSprites[spriteId].sSpriteId = spriteId; + gSprites[spriteId].x2 = gSprites[task->tBattlerSpriteId].x2; + gSprites[spriteId].callback = AnimBattlerTrace; + task->tNumTracesActive++; } } -static void SpriteCB_PunchTrace(struct Sprite *sprite) +// Just waits until destroyed +static void AnimBattlerTrace(struct Sprite *sprite) { - if (--sprite->data[0] == 0) + if (--sprite->sActiveTime == 0) { - --gTasks[sprite->data[1]].data[5]; + gTasks[sprite->sTaskId].tNumTracesActive--; DestroySpriteWithActiveSheet(sprite); } } -void SpriteCB_WeatherBallUp(struct Sprite *sprite) +#undef tBattlerSpriteId +#undef tMoveSpeed +#undef tState +#undef tCounter +#undef tPaletteNum +#undef tNumTracesActive +#undef tPriority + +#undef sActiveTime +#undef sTaskId +#undef sSpriteId + +void AnimWeatherBallUp(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -2217,10 +2328,10 @@ void SpriteCB_WeatherBallUp(struct Sprite *sprite) else sprite->data[0] = -10; sprite->data[1] = -40; - sprite->callback = SpriteCB_WeatherBallUp_Step; + sprite->callback = AnimWeatherBallUp_Step; } -static void SpriteCB_WeatherBallUp_Step(struct Sprite *sprite) +static void AnimWeatherBallUp_Step(struct Sprite *sprite) { sprite->data[2] += sprite->data[0]; sprite->data[3] += sprite->data[1]; diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index 4abcb083a..3e5ed87fa 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -43,7 +43,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF3F8 = .anims = sSpriteAnimTable_83BF3F4, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2, + .callback = AnimTranslateLinearAndFlicker, }; const struct SpriteTemplate gSpriteTemplate_83BF410 = @@ -54,7 +54,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF410 = .anims = sSpriteAnimTable_83BF3F4, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker, + .callback = AnimTranslateLinearAndFlicker_Flipped, }; static const union AnimCmd sUnknown_83BF428[] = @@ -76,7 +76,7 @@ const struct SpriteTemplate gWeatherBallUpSpriteTemplate = .anims = sSpriteAnimTable_83BF430, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_WeatherBallUp, + .callback = AnimWeatherBallUp, }; const struct SpriteTemplate gWeatherBallNormalDownSpriteTemplate = @@ -113,7 +113,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF480 = .anims = sSpriteAnimTable_83BF47C, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_TrackOffsetFromAttackerAndWaitAnim, + .callback = AnimSpinningSparkle, }; const struct SpriteTemplate gSpriteTemplate_83BF498 = @@ -124,7 +124,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF498 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2, + .callback = AnimTranslateLinearAndFlicker, }; static const union AnimCmd sUnknown_83BF4B0[] = @@ -160,7 +160,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF4D4 = .anims = sSpriteAniimTable_83BF4C8, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker2, + .callback = AnimTranslateLinearAndFlicker, }; static const union AnimCmd sUnknown_83BF4EC[] = @@ -194,7 +194,7 @@ const struct SpriteTemplate gSpriteTemplate_83BF514 = .anims = sSpriteAnimTable_83BF4F4, .images = NULL, .affineAnims = sSpriteAffineAnimTable_83BF510, - .callback = SpriteCB_AnimTranslateSpriteLinearAndFlicker, + .callback = AnimTranslateLinearAndFlicker_Flipped, }; static const u8 sUnknown_83BF52C[] = _("TASK OVER\nタスクがオ-バ-しました"); diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 4a44031db..638ac7a6e 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -54,7 +54,7 @@ void AnimTask_BlendSelected(u8 taskId) { u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); - selectedPalettes |= SelectBattlerSpritePalettes( + selectedPalettes |= GetBattleMonSpritePalettesMask( (gBattleAnimArgs[0] >> 7) & 1, (gBattleAnimArgs[0] >> 8) & 1, (gBattleAnimArgs[0] >> 9) & 1, @@ -330,7 +330,7 @@ void AnimTask_SetUpCurseBackground(u8 taskId) else species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES); spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); - newSpriteId = CreateCloneOfSpriteInWindowMode(gBattleAnimAttacker, spriteId, species); + newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species); GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemap(animBgData.bgId, gFile_graphics_battle_anims_masks_curse_tilemap); if (IsContest()) @@ -446,11 +446,11 @@ static void StatsChangeAnimation_Step2(u8 taskId) u8 battlerSpriteId; battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler1]; - spriteId = CreateCloneOfSpriteInWindowMode(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species); + spriteId = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler1, battlerSpriteId, sAnimStatsChangeData->species); if (sAnimStatsChangeData->data[3]) { battlerSpriteId = gBattlerSpriteIds[sAnimStatsChangeData->battler2]; - newSpriteId = CreateCloneOfSpriteInWindowMode(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species); + newSpriteId = CreateInvisibleSpriteCopy(sAnimStatsChangeData->battler2, battlerSpriteId, sAnimStatsChangeData->species); } GetBattleAnimBg1Data(&animBgData); if (sAnimStatsChangeData->data[0] == 0) @@ -580,7 +580,7 @@ static void StatsChangeAnimation_Step3(u8 taskId) void AnimTask_Flash(u8 taskId) { - u32 selectedPalettes = SelectBattlerSpritePalettes(1, 1, 1, 1); + u32 selectedPalettes = GetBattleMonSpritePalettesMask(1, 1, 1, 1); sub_80BB790(selectedPalettes, 0); gTasks[taskId].data[14] = selectedPalettes >> 16; @@ -753,9 +753,9 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); else species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); - spriteId = CreateCloneOfSpriteInWindowMode(battler1, gBattlerSpriteIds[battler1], species); + spriteId = CreateInvisibleSpriteCopy(battler1, gBattlerSpriteIds[battler1], species); if (arg4) - newSpriteId = CreateCloneOfSpriteInWindowMode(battler2, gBattlerSpriteIds[battler2], species); + newSpriteId = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species); GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap); if (IsContest()) diff --git a/src/palette.c b/src/palette.c index 014199a7a..ebb64bb55 100644 --- a/src/palette.c +++ b/src/palette.c @@ -319,7 +319,7 @@ static void sub_80709B4(struct PaletteStruct *a1) return; if (val > 2) return; - ResetPaletteStructByUid(a1->base->uid); + PaletteStruct_ResetById(a1->base->uid); } } else @@ -328,7 +328,7 @@ static void sub_80709B4(struct PaletteStruct *a1) } } -void ResetPaletteStructByUid(u16 a1) +void PaletteStruct_ResetById(u16 a1) { u8 paletteNum = GetPaletteNumByUid(a1); if (paletteNum != 16) diff --git a/src/trade.c b/src/trade.c index 392a23061..c5a580b1b 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2140,7 +2140,7 @@ static void HandleRedrawTradeMenuOnSide(u8 side) gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[4] = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12; StoreSpriteCallbackInData6(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]], SpriteCB_MonIcon); sTradeMenuResourcesPtr->menuRedrawState[side]++; - StartSpriteLinearTranslationFromCurrentPos(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]]); + TradeMenuBouncePartySprites(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]]); CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, side * 15, 0, 15, 17, 0); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); From a1fcfa2f26204531f063e9f147d726c330c2553b Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 13:30:22 -0400 Subject: [PATCH 18/38] Sync battle anim - normal --- data/battle_anim_scripts.s | 86 +++--- include/battle_anim.h | 2 +- src/battle_anim_normal.c | 453 +++++++++++++++++++------------- src/battle_anim_utility_funcs.c | 6 +- 4 files changed, 314 insertions(+), 233 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 8cb6c3502..f456f5cce 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1299,7 +1299,7 @@ Move_REVERSAL:: createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB_WHITE, 8, 0, 0 waitforvisualfinish delay 30 - createvisualtask AnimTask_CurseBlendEffect, 2, 31, 3, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 31, 3, 2, 0, 10, RGB_WHITE delay 10 playsewithpan SE_M_REVERSAL, 192 createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 @@ -1873,7 +1873,7 @@ Move_SAFEGUARD:: createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, waitforvisualfinish playsewithpan SE_SHINY, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 10, 0, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 10, 0, 2, 0, 10, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -1965,7 +1965,7 @@ Move_PAY_DAY:: Move_OUTRAGE:: loadspritegfx ANIM_TAG_SMALL_EMBER loopsewithpan SE_M_DRAGON_RAGE, 192, 8, 3 - createvisualtask AnimTask_CurseBlendEffect, 2, 7, 2, 5, 3, 8, 430 + createvisualtask AnimTask_BlendColorCycle, 2, 7, 2, 5, 3, 8, 430 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 5, 4 delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3 @@ -2012,25 +2012,25 @@ Move_SPARK:: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 5, 5, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, 23551 playsewithpan SE_M_THUNDERBOLT2, 192 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1 delay 0 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 0, 0, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, 23551 delay 10 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 5, 5, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, 23551 playsewithpan SE_M_THUNDERBOLT2, 192 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1 delay 0 createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1 delay 0 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 0, 0, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, 23551 delay 20 - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 7, 7, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 7, 7, 23551 playsewithpan SE_M_THUNDERBOLT2, 192 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0 @@ -2042,14 +2042,14 @@ Move_SPARK:: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0 delay 4 waitforvisualfinish - createvisualtask AnimTask_CurseBlendEffect, 2, 3, -31, 1, 0, 0, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, 23551 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 playsewithpan SE_M_HYPER_BEAM, 63 createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_CurseBlendEffect, 2, 4, -31, 2, 0, 6, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, 4, -31, 2, 0, 6, 23551 call ElectricityEffect waitforvisualfinish end @@ -2080,7 +2080,7 @@ Move_ATTRACT:: createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 112, 256, 90 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 200, 272, 90 delay 75 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 4, 4, 0, 10, 28479 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 4, 4, 0, 10, 28479 end Move_GROWTH:: @@ -2091,7 +2091,7 @@ Move_GROWTH:: end GrowthEffect:: - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE playsewithpan SE_M_TAKE_DOWN, 192 createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, 0, 0 return @@ -3193,7 +3193,7 @@ Move_SPITE:: playsewithpan SE_M_PSYBEAM, 192 waitbgfadein monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 6, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 6, 0, 8, RGB_WHITE createvisualtask AnimTask_SpiteTargetShadow, 2 loopsewithpan SE_M_PSYBEAM, 63, 20, 3 waitforvisualfinish @@ -3280,7 +3280,7 @@ Move_ENDURE:: playsewithpan SE_M_DRAGON_RAGE, 192 call EndureEffect delay 8 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, 31 + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, 31 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 call EndureEffect delay 8 @@ -4722,7 +4722,7 @@ Move_MIND_READER:: createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5, delay 40 playsewithpan SE_M_LEER, 63 - createvisualtask AnimTask_CurseBlendEffect, 2, 1, 1, 2, 0, 10, 0 + createvisualtask AnimTask_BlendColorCycle, 2, 1, 1, 2, 0, 10, 0 call MindReaderEyeSpikeEffect waitforvisualfinish clearmonbg 4 @@ -4805,7 +4805,7 @@ Move_CONFUSION:: call SetPsychicBackground setalpha 8, 8 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE waitforvisualfinish playsewithpan SE_M_SUPERSONIC, 63 createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 15, 1 @@ -4822,7 +4822,7 @@ Move_PSYCHIC:: call SetPsychicBackground setalpha 8, 8 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, 767 + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, 767 waitforvisualfinish loopsewithpan SE_M_SUPERSONIC, 63, 10, 3 createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 15, 1 @@ -4848,7 +4848,7 @@ FutureSight:: call SetPsychicBackground setalpha 8, 8 playsewithpan SE_M_SUPERSONIC, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 0, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -5244,7 +5244,7 @@ Move_SMOG:: call SmogCloud delay 120 loopsewithpan SE_M_TOXIC, 63, 18, 2 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 2, 2, 0, 12, 26650 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, 26650 delay 10 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 15, 1 waitforvisualfinish @@ -5552,7 +5552,7 @@ SolarBeamEnd:: SolarBeamSetUp:: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 1, 4, 0, 11, 12287 + createvisualtask AnimTask_BlendColorCycle, 2, 2, 1, 4, 0, 11, 12287 playsewithpan SE_M_MEGA_KICK, 192 call SolarBeamAbsorbEffect waitforvisualfinish @@ -6032,7 +6032,7 @@ Move_LEECH_LIFE:: Move_SYNTHESIS:: loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_SPARKLE_2 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 16, 19451 + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 16, 19451 playsewithpan SE_M_MEGA_KICK, 192 call GrantingStarsEffect waitforvisualfinish @@ -6072,7 +6072,7 @@ Move_SLUDGE:: createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 waitforvisualfinish createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 1, 2, 0, 12, 31774 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, 31774 call PoisonBubblesEffect waitforvisualfinish end @@ -6090,7 +6090,7 @@ Move_SLUDGE_BOMB:: call SludgeBombProjectile call SludgeBombProjectile createvisualtask AnimTask_ShakeMon2, 5, 1, 3, 0, 15, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 1, 2, 0, 12, 31774 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, 31774 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 @@ -6135,7 +6135,7 @@ Move_ACID:: delay 15 createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 10, 1 createvisualtask AnimTask_ShakeMon2, 5, 3, 2, 0, 10, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 20, 2, 2, 0, 12, 31774 + createvisualtask AnimTask_BlendColorCycle, 2, 20, 2, 2, 0, 12, 31774 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 0, -22, 0, 15, 55 playsewithpan SE_M_BUBBLE, 63 delay 10 @@ -7053,7 +7053,7 @@ Move_MIST:: call MistCloud call MistCloud delay 32 - createvisualtask AnimTask_CurseBlendEffect, 2, 10, 8, 2, 0, 14, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 10, 8, 2, 0, 14, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -7224,7 +7224,7 @@ Move_POISON_GAS:: createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 40 loopsewithpan SE_M_MIST, 63, 28, 6 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 6, 2, 0, 12, 26650 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 6, 2, 0, 12, 26650 waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER @@ -7259,7 +7259,7 @@ Move_PSYBEAM:: call PsybeamRings call PsybeamRings createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 2, 2, 0, 12, 32351 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, 32351 call PsybeamRings call PsybeamRings call PsybeamRings @@ -7285,7 +7285,7 @@ Move_HYPNOSIS:: call HypnosisRings call HypnosisRings call HypnosisRings - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 2, 2, 0, 12, 32351 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, 32351 waitforvisualfinish delay 1 call UnsetPsychicBg @@ -7306,7 +7306,7 @@ Move_PSYWAVE:: createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, -64, 63, 2, 9, 0, 10 call PsywaveRings call PsywaveRings - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 1, 4, 0, 12, 32351 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 4, 0, 12, 32351 call PsywaveRings call PsywaveRings call PsywaveRings @@ -7443,7 +7443,7 @@ Move_NIGHT_SHADE:: createvisualtask AnimTask_NightShadeClone, 5, 85 delay 70 createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 12, 1 - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 0, 2, 0, 13, 0 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 2, 0, 13, 0 waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 @@ -7505,7 +7505,7 @@ Move_FOCUS_ENERGY:: playsewithpan SE_M_DRAGON_RAGE, 192 call EndureEffect delay 8 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_WHITE createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 call EndureEffect delay 8 @@ -7519,7 +7519,7 @@ Move_BIDE:: BattleAnimScript_Bide_Setup:: loopsewithpan SE_M_TAKE_DOWN, 192, 9, 2 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, 31 + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, 31 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 waitforvisualfinish end @@ -7697,7 +7697,7 @@ Move_RECOVER:: monbg ANIM_ATK_PARTNER setalpha 12, 8 loopsewithpan SE_M_MEGA_KICK, 192, 13, 3 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 6, 0, 11, 12287 + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 6, 0, 11, 12287 call RecoverAbsorbEffect call RecoverAbsorbEffect call RecoverAbsorbEffect @@ -7738,7 +7738,7 @@ Move_MIMIC:: setarg 7, 65535 waitforvisualfinish playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE waitforvisualfinish clearmonbg_23 3 blendoff @@ -7807,7 +7807,7 @@ CurseStats:: CurseStats1:: playsewithpan SE_M_DRAGON_RAGE, 192 createvisualtask AnimTask_SetUpCurseBackground, 5, - createvisualtask AnimTask_CurseBlendEffect, 5, 2, 4, 2, 0, 10, 31 + createvisualtask AnimTask_BlendColorCycle, 5, 2, 4, 2, 0, 10, 31 return Move_SOFT_BOILED:: @@ -8055,7 +8055,7 @@ PresentHeal:: Move_BATON_PASS:: loadspritegfx ANIM_TAG_POKEBALL playsewithpan SE_M_BATON_PASS, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 31, 1, 2, 0, 11, 31455 + createvisualtask AnimTask_BlendColorCycle, 2, 31, 1, 2, 0, 11, 31455 createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2, end @@ -8303,7 +8303,7 @@ Move_WISH:: Move_STOCKPILE:: loadspritegfx ANIM_TAG_GRAY_ORB playsewithpan SE_M_MEGA_KICK, 192 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 8, 1, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, 2, 8, 1, 0, 12, RGB_WHITE createvisualtask AnimTask_StockpileDeformMon, 5, call StockpileAbsorb call StockpileAbsorb @@ -8469,7 +8469,7 @@ Move_SWEET_SCENT:: call SweetScentEffect createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0 setpan 63 - createvisualtask AnimTask_CurseBlendEffect, 2, 20, 1, 5, 5, 13, 22207 + createvisualtask AnimTask_BlendColorCycle, 2, 20, 1, 5, 5, 13, 22207 call SweetScentEffect waitforvisualfinish end @@ -8898,7 +8898,7 @@ Move_REVENGE:: playsewithpan SE_M_TAKE_DOWN, 192 createsprite gRevengeSmallScratchSpriteTemplate, ANIM_ATTACKER, 2, 10, -10 waitforvisualfinish - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 0, 4, 2, 8, 31 + createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 4, 2, 8, 31 waitforvisualfinish unloadspritegfx ANIM_TAG_PURPLE_SCRATCH loadspritegfx ANIM_TAG_PURPLE_SWIPE @@ -8928,7 +8928,7 @@ Move_POISON_FANG:: delay 10 createvisualtask AnimTask_ShakeMon, 3, 1, 3, 0, 10, 1 waitforvisualfinish - createvisualtask AnimTask_CurseBlendEffect, 2, 4, 0, 4, 0, 12, 26650 + createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 4, 0, 12, 26650 call PoisonBubblesEffect waitforvisualfinish end @@ -9703,7 +9703,7 @@ Move_PSYCHO_BOOST:: createvisualtask AnimTask_FadeScreenToWhite, 5, waitbgfadein delay 6 - createvisualtask AnimTask_CurseBlendEffect, 2, 1, 2, 8, 0, 10, 0 + createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, 0 delay 0 monbgprio_28 0 setalpha 8, 8 @@ -10438,7 +10438,7 @@ UnsetSolarBeamBg:: Status_Poison:: loopsewithpan SE_M_TOXIC, 63, 13, 6 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 18, 2 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 12, 31774 + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 12, 31774 end Status_Confusion:: @@ -10858,7 +10858,7 @@ General_FocusPunchSetUp:: playsewithpan SE_M_DRAGON_RAGE, 192 call EndureEffect delay 8 - createvisualtask AnimTask_CurseBlendEffect, 2, 2, 2, 2, 0, 11, 31 + createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, 31 createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 call EndureEffect delay 8 diff --git a/include/battle_anim.h b/include/battle_anim.h index cd5785871..ffff805d6 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -478,7 +478,7 @@ void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId); extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate; extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate; extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate; -u32 UnpackSelectedBattleAnimPalettes(s16 selector); +u32 UnpackSelectedBattlePalettes(s16 selector); void AnimTask_CurseBlendEffect(u8 taskId); void AnimTask_BlendColorCycleExclude(u8 taskId); void AnimTask_BlendColorCycleByTag(u8 taskId); diff --git a/src/battle_anim_normal.c b/src/battle_anim_normal.c index 09efc5354..a76ad1fa2 100644 --- a/src/battle_anim_normal.c +++ b/src/battle_anim_normal.c @@ -8,7 +8,7 @@ static void AnimConfusionDuck(struct Sprite *sprite); static void AnimSimplePaletteBlend(struct Sprite *sprite); static void AnimComplexPaletteBlend(struct Sprite *sprite); -static void sub_80B9B8C(struct Sprite *sprite); +static void AnimCirclingSparkle(struct Sprite *sprite); static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite); static void AnimHitSplatBasic(struct Sprite *sprite); static void AnimHitSplatHandleInvert(struct Sprite *sprite); @@ -17,22 +17,22 @@ static void AnimHitSplatOnMonEdge(struct Sprite *sprite); static void AnimCrossImpact(struct Sprite *sprite); static void AnimFlashingHitSplat(struct Sprite *sprite); static void AnimHitSplatPersistent(struct Sprite *sprite); -static void AnimConfusionDuckStep(struct Sprite *sprite); -static void AnimSimplePaletteBlendStep(struct Sprite *sprite); -static void sub_80B9AD0(struct Sprite *sprite); -static void sub_80B9B5C(struct Sprite *sprite); -static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); -static void sub_80B9C7C(u8 taskId); -static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); -static void sub_80B9DF0(u8 taskId); -static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); -static void sub_80B9F04(u8 taskId); -static void sub_80B9FD8(u8 taskId); -static void sub_80BA090(u8 taskId); -static void sub_80BA3CC(void); -static void sub_80BA320(struct Sprite *sprite); -static void sub_80BA4D0(u8 taskId); -static void sub_80BA7BC(struct Sprite *sprite); +static void AnimConfusionDuck_Step(struct Sprite *sprite); +static void AnimSimplePaletteBlend_Step(struct Sprite *sprite); +static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite); +static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite); +static void BlendColorCycle(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); +static void AnimTask_BlendColorCycleLoop(u8 taskId); +static void BlendColorCycleExclude(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); +static void AnimTask_BlendColorCycleExcludeLoop(u8 taskId); +static void BlendColorCycleByTag(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount); +static void AnimTask_BlendColorCycleByTagLoop(u8 taskId); +static void AnimTask_FlashAnimTagWithColor_Step1(u8 taskId); +static void AnimTask_FlashAnimTagWithColor_Step2(u8 taskId); +static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void); +static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite); +static void AnimTask_ShakeBattleTerrain_Step(u8 taskId); +static void AnimFlashingHitSplat_Step(struct Sprite *sprite); static const union AnimCmd sAnim_ConfusionDuck_0[] = @@ -92,7 +92,7 @@ const struct SpriteTemplate gComplexPaletteBlendSpriteTemplate = .callback = AnimComplexPaletteBlend, }; -static const union AnimCmd gUnknown_83E7B54[] = +static const union AnimCmd sAnim_CirclingSparkle[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), @@ -102,20 +102,21 @@ static const union AnimCmd gUnknown_83E7B54[] = ANIMCMD_JUMP(0), }; -static const union AnimCmd *const gUnknown_83E7B6C[] = +static const union AnimCmd *const sAnims_CirclingSparkle[] = { - gUnknown_83E7B54, + sAnim_CirclingSparkle, }; -const struct SpriteTemplate gUnknown_83E7B70 = +// Unused +static const struct SpriteTemplate sCirclingSparkleSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_SPARKLE_4, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = gUnknown_83E7B6C, + .anims = sAnims_CirclingSparkle, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B9B8C, + .callback = AnimCirclingSparkle, }; const struct SpriteTemplate gShakeMonOrTerrainSpriteTemplate = @@ -275,11 +276,11 @@ static void AnimConfusionDuck(struct Sprite *sprite) StartSpriteAnim(sprite, 1); } sprite->data[3] = gBattleAnimArgs[4]; - sprite->callback = AnimConfusionDuckStep; + sprite->callback = AnimConfusionDuck_Step; sprite->callback(sprite); } -static void AnimConfusionDuckStep(struct Sprite *sprite) +static void AnimConfusionDuck_Step(struct Sprite *sprite) { sprite->x2 = Cos(sprite->data[0], 30); sprite->y2 = Sin(sprite->data[0], 10); @@ -300,36 +301,36 @@ static void AnimConfusionDuckStep(struct Sprite *sprite) // arg 4: blend color static void AnimSimplePaletteBlend(struct Sprite *sprite) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); BeginNormalPaletteFade(selectedPalettes, gBattleAnimArgs[1], gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); sprite->invisible = TRUE; - sprite->callback = AnimSimplePaletteBlendStep; + sprite->callback = AnimSimplePaletteBlend_Step; } // Unpacks a bitfield and returns a bitmask of its selected palettes. // Bits 0-6 of the selector parameter result in the following palettes being selected: -// 0: battle background palettes (BG palettes 1, 2, and 3) -// 1: gBattleAnimAttacker OBJ palette -// 2: gBattleAnimTarget OBJ palette -// 3: gBattleAnimAttacker partner OBJ palette -// 4: gBattleAnimTarget partner OBJ palette -// 5: BG palette 4 -// 6: BG palette 5 -u32 UnpackSelectedBattleAnimPalettes(s16 selector) +// 0: F_PAL_BG, battle background palettes (BG palettes 1, 2, and 3) +// 1: F_PAL_ATTACKER, gBattleAnimAttacker OBJ palette +// 2: F_PAL_TARGET, gBattleAnimTarget OBJ palette +// 3: F_PAL_ATK_PARTNER, gBattleAnimAttacker partner OBJ palette +// 4: F_PAL_DEF_PARTNER, gBattleAnimTarget partner OBJ palette +// 5: F_PAL_ANIM_1, BG palette 8 +// 6: F_PAL_ANIM_2, BG palette 9 +u32 UnpackSelectedBattlePalettes(s16 selector) { u8 battleBackground = selector & 1; u8 attacker = (selector >> 1) & 1; u8 target = (selector >> 2) & 1; u8 attackerPartner = (selector >> 3) & 1; u8 targetPartner = (selector >> 4) & 1; - u8 arg5 = (selector >> 5) & 1; - u8 arg6 = (selector >> 6) & 1; + u8 anim1 = (selector >> 5) & 1; + u8 anim2 = (selector >> 6) & 1; - return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, arg5, arg6); + return GetBattlePalettesMask(battleBackground, attacker, target, attackerPartner, targetPartner, anim1, anim2); } -static void AnimSimplePaletteBlendStep(struct Sprite *sprite) +static void AnimSimplePaletteBlend_Step(struct Sprite *sprite) { if (!gPaletteFade.active) DestroyAnimSprite(sprite); @@ -347,13 +348,13 @@ static void AnimComplexPaletteBlend(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[5]; sprite->data[6] = gBattleAnimArgs[6]; sprite->data[7] = gBattleAnimArgs[0]; - selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); BlendPalettes(selectedPalettes, gBattleAnimArgs[4], gBattleAnimArgs[3]); sprite->invisible = TRUE; - sprite->callback = sub_80B9AD0; + sprite->callback = AnimComplexPaletteBlend_Step1; } -static void sub_80B9AD0(struct Sprite *sprite) +static void AnimComplexPaletteBlend_Step1(struct Sprite *sprite) { u32 selectedPalettes; @@ -366,10 +367,10 @@ static void sub_80B9AD0(struct Sprite *sprite) return; if (sprite->data[2] == 0) { - sprite->callback = sub_80B9B5C; + sprite->callback = AnimComplexPaletteBlend_Step2; return; } - selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); if (sprite->data[1] & 0x100) BlendPalettes(selectedPalettes, sprite->data[4], sprite->data[3]); else @@ -379,19 +380,19 @@ static void sub_80B9AD0(struct Sprite *sprite) --sprite->data[2]; } -static void sub_80B9B5C(struct Sprite *sprite) +static void AnimComplexPaletteBlend_Step2(struct Sprite *sprite) { u32 selectedPalettes; if (!gPaletteFade.active) { - selectedPalettes = UnpackSelectedBattleAnimPalettes(sprite->data[7]); + selectedPalettes = UnpackSelectedBattlePalettes(sprite->data[7]); BlendPalettes(selectedPalettes, 0, 0); DestroyAnimSprite(sprite); } } -static void sub_80B9B8C(struct Sprite *sprite) +static void AnimCirclingSparkle(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -406,53 +407,71 @@ static void sub_80B9B8C(struct Sprite *sprite) sprite->callback(sprite); } -void AnimTask_CurseBlendEffect(u8 taskId) +// Task data for AnimTask_BlendColorCycle, AnimTask_BlendColorCycleExclude, and AnimTask_BlendColorCycleByTag +#define tPalSelector data[0] // AnimTask_BlendColorCycle +#define tPalTag data[0] // AnimTask_BlendColorCycleByTag +#define tDelay data[1] +#define tNumBlends data[2] +#define tInitialBlendY data[3] +#define tTargetBlendY data[4] +#define tBlendColor data[5] +#define tRestoreBlend data[8] +#define tPalSelectorHi data[9] +#define tPalSelectorLo data[10] + +// Blends mon/screen to designated color or back alternately tNumBlends times +// Many uses of this task only set a tNumBlends of 2, which has the effect of blending to a color and back once +void AnimTask_BlendColorCycle(u8 taskId) { - gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].data[3] = gBattleAnimArgs[3]; - gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].data[5] = gBattleAnimArgs[5]; - gTasks[taskId].data[8] = 0; - sub_80B9C2C(taskId, 0, gTasks[taskId].data[4]); - gTasks[taskId].func = sub_80B9C7C; + gTasks[taskId].tPalSelector = gBattleAnimArgs[0]; + gTasks[taskId].tDelay = gBattleAnimArgs[1]; + gTasks[taskId].tNumBlends = gBattleAnimArgs[2]; + gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3]; + gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4]; + gTasks[taskId].tBlendColor = gBattleAnimArgs[5]; + gTasks[taskId].tRestoreBlend = FALSE; + BlendColorCycle(taskId, 0, gTasks[taskId].tTargetBlendY); + gTasks[taskId].func = AnimTask_BlendColorCycleLoop; } -static void sub_80B9C2C(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) +static void BlendColorCycle(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gTasks[taskId].data[0]); - - BeginNormalPaletteFade(selectedPalettes, - gTasks[taskId].data[1], - initialBlendAmount, - targetBlendAmount, - gTasks[taskId].data[5]); - --gTasks[taskId].data[2]; - gTasks[taskId].data[8] ^= 1; + u32 selectedPalettes = UnpackSelectedBattlePalettes(gTasks[taskId].tPalSelector); + BeginNormalPaletteFade( + selectedPalettes, + gTasks[taskId].tDelay, + startBlendAmount, + targetBlendAmount, + gTasks[taskId].tBlendColor); + + gTasks[taskId].tNumBlends--; + gTasks[taskId].tRestoreBlend ^= 1; } -static void sub_80B9C7C(u8 taskId) +static void AnimTask_BlendColorCycleLoop(u8 taskId) { - u8 initialBlendAmount, targetBlendAmount; - + u8 startBlendAmount, targetBlendAmount; if (!gPaletteFade.active) { - if (gTasks[taskId].data[2] > 0) + if (gTasks[taskId].tNumBlends > 0) { - if (gTasks[taskId].data[8] == 0) + if (!gTasks[taskId].tRestoreBlend) { - initialBlendAmount = gTasks[taskId].data[3]; - targetBlendAmount = gTasks[taskId].data[4]; + // Blend to designated color + startBlendAmount = gTasks[taskId].tInitialBlendY; + targetBlendAmount = gTasks[taskId].tTargetBlendY; } else { - initialBlendAmount = gTasks[taskId].data[4]; - targetBlendAmount = gTasks[taskId].data[3]; + // Blend back to original color + startBlendAmount = gTasks[taskId].tTargetBlendY; + targetBlendAmount = gTasks[taskId].tInitialBlendY; } - if (gTasks[taskId].data[2] == 1) + + if (gTasks[taskId].tNumBlends == 1) targetBlendAmount = 0; - sub_80B9C2C(taskId, initialBlendAmount, targetBlendAmount); + + BlendColorCycle(taskId, startBlendAmount, targetBlendAmount); } else { @@ -461,64 +480,73 @@ static void sub_80B9C7C(u8 taskId) } } +// See AnimTask_BlendColorCycle. Same, but excludes Attacker and Target void AnimTask_BlendColorCycleExclude(u8 taskId) { - s32 battler; + int battler; u32 selectedPalettes = 0; gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].data[3] = gBattleAnimArgs[3]; - gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].data[5] = gBattleAnimArgs[5]; - gTasks[taskId].data[8] = 0; - for (battler = 0; battler < gBattlersCount; ++battler) + gTasks[taskId].tDelay = gBattleAnimArgs[1]; + gTasks[taskId].tNumBlends = gBattleAnimArgs[2]; + gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3]; + gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4]; + gTasks[taskId].tBlendColor = gBattleAnimArgs[5]; + gTasks[taskId].tRestoreBlend = 0; + + for (battler = 0; battler < gBattlersCount; battler++) + { if (battler != gBattleAnimAttacker && battler != gBattleAnimTarget) selectedPalettes |= 1 << (battler + 16); + } + if (gBattleAnimArgs[0] == 1) selectedPalettes |= 0xE; - gTasks[taskId].data[9] = selectedPalettes >> 16; - gTasks[taskId].data[10] = selectedPalettes & 0xFF; - sub_80B9DA0(taskId, 0, gTasks[taskId].data[4]); - gTasks[taskId].func = sub_80B9DF0; + + gTasks[taskId].tPalSelectorHi = selectedPalettes >> 16; + gTasks[taskId].tPalSelectorLo = selectedPalettes & 0xFF; + BlendColorCycleExclude(taskId, 0, gTasks[taskId].tTargetBlendY); + gTasks[taskId].func = AnimTask_BlendColorCycleExcludeLoop; } -static void sub_80B9DA0(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) +static void BlendColorCycleExclude(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount) { - u32 selectedPalettes = ((u16)gTasks[taskId].data[9] << 16) | (u16)gTasks[taskId].data[10]; - - BeginNormalPaletteFade(selectedPalettes, - gTasks[taskId].data[1], - initialBlendAmount, - targetBlendAmount, - gTasks[taskId].data[5]); - --gTasks[taskId].data[2]; - gTasks[taskId].data[8] ^= 1; + u32 selectedPalettes = ((u16)gTasks[taskId].tPalSelectorHi << 16) | (u16)gTasks[taskId].tPalSelectorLo; + BeginNormalPaletteFade( + selectedPalettes, + gTasks[taskId].tDelay, + startBlendAmount, + targetBlendAmount, + gTasks[taskId].tBlendColor); + + gTasks[taskId].tNumBlends--; + gTasks[taskId].tRestoreBlend ^= 1; } -static void sub_80B9DF0(u8 taskId) +static void AnimTask_BlendColorCycleExcludeLoop(u8 taskId) { - u8 initialBlendAmount, targetBlendAmount; - + u8 startBlendAmount, targetBlendAmount; if (!gPaletteFade.active) { - if (gTasks[taskId].data[2] > 0) + if (gTasks[taskId].tNumBlends > 0) { - if (gTasks[taskId].data[8] == 0) + if (!gTasks[taskId].tRestoreBlend) { - initialBlendAmount = gTasks[taskId].data[3]; - targetBlendAmount = gTasks[taskId].data[4]; + // Blend to designated color + startBlendAmount = gTasks[taskId].tInitialBlendY; + targetBlendAmount = gTasks[taskId].tTargetBlendY; } else { - initialBlendAmount = gTasks[taskId].data[4]; - targetBlendAmount = gTasks[taskId].data[3]; + // Blend back to original color + startBlendAmount = gTasks[taskId].tTargetBlendY; + targetBlendAmount = gTasks[taskId].tInitialBlendY; } - if (gTasks[taskId].data[2] == 1) + if (gTasks[taskId].tNumBlends == 1) targetBlendAmount = 0; - sub_80B9DA0(taskId, initialBlendAmount, targetBlendAmount); + + BlendColorCycleExclude(taskId, startBlendAmount, targetBlendAmount); } else { @@ -527,56 +555,59 @@ static void sub_80B9DF0(u8 taskId) } } +// See AnimTask_BlendColorCycle. Same, but selects palette by ANIM_TAG_* void AnimTask_BlendColorCycleByTag(u8 taskId) { - u8 paletteIndex; + gTasks[taskId].tPalTag = gBattleAnimArgs[0]; + gTasks[taskId].tDelay = gBattleAnimArgs[1]; + gTasks[taskId].tNumBlends = gBattleAnimArgs[2]; + gTasks[taskId].tInitialBlendY = gBattleAnimArgs[3]; + gTasks[taskId].tTargetBlendY = gBattleAnimArgs[4]; + gTasks[taskId].tBlendColor = gBattleAnimArgs[5]; + gTasks[taskId].tRestoreBlend = FALSE; - gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].data[3] = gBattleAnimArgs[3]; - gTasks[taskId].data[4] = gBattleAnimArgs[4]; - gTasks[taskId].data[5] = gBattleAnimArgs[5]; - gTasks[taskId].data[8] = 0; - sub_80B9EA8(taskId, 0, gTasks[taskId].data[4]); - gTasks[taskId].func = sub_80B9F04; + BlendColorCycleByTag(taskId, 0, gTasks[taskId].tTargetBlendY); + gTasks[taskId].func = AnimTask_BlendColorCycleByTagLoop; } -static void sub_80B9EA8(u8 taskId, u8 initialBlendAmount, u8 targetBlendAmount) +static void BlendColorCycleByTag(u8 taskId, u8 startBlendAmount, u8 targetBlendAmount) { - u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].data[0]); - - BeginNormalPaletteFade(1 << (paletteIndex + 16), - gTasks[taskId].data[1], - initialBlendAmount, - targetBlendAmount, - gTasks[taskId].data[5]); - --gTasks[taskId].data[2]; - gTasks[taskId].data[8] ^= 1; + u8 paletteIndex = IndexOfSpritePaletteTag(gTasks[taskId].tPalTag); + BeginNormalPaletteFade( + 1 << (paletteIndex + 16), + gTasks[taskId].tDelay, + startBlendAmount, + targetBlendAmount, + gTasks[taskId].tBlendColor); + + gTasks[taskId].tNumBlends--; + gTasks[taskId].tRestoreBlend ^= 1; } -static void sub_80B9F04(u8 taskId) +static void AnimTask_BlendColorCycleByTagLoop(u8 taskId) { - u8 initialBlendAmount, targetBlendAmount; - + u8 startBlendAmount, targetBlendAmount; if (!gPaletteFade.active) { - if (gTasks[taskId].data[2] > 0) + if (gTasks[taskId].tNumBlends > 0) { - if (gTasks[taskId].data[8] == 0) + if (!gTasks[taskId].tRestoreBlend) { - initialBlendAmount = gTasks[taskId].data[3]; - targetBlendAmount = gTasks[taskId].data[4]; + // Blend to designated color + startBlendAmount = gTasks[taskId].tInitialBlendY; + targetBlendAmount = gTasks[taskId].tTargetBlendY; } else { - initialBlendAmount = gTasks[taskId].data[4]; - targetBlendAmount = gTasks[taskId].data[3]; + // Blend back to original color + startBlendAmount = gTasks[taskId].tTargetBlendY; + targetBlendAmount = gTasks[taskId].tInitialBlendY; } - if (gTasks[taskId].data[2] == 1) + if (gTasks[taskId].tNumBlends == 1) targetBlendAmount = 0; - sub_80B9EA8(taskId, initialBlendAmount, targetBlendAmount); + + BlendColorCycleByTag(taskId, startBlendAmount, targetBlendAmount); } else { @@ -585,6 +616,18 @@ static void sub_80B9F04(u8 taskId) } } +#undef tPalSelector +#undef tPalTag +#undef tDelay +#undef tNumBlends +#undef tInitialBlendY +#undef tTargetBlendY +#undef tBlendColor +#undef tRestoreBlend +#undef tPalSelectorHi +#undef tPalSelectorLo + +// Flashes the specified anim tag with given color. Used e.g. to flash the particles red in Hyper Beam void AnimTask_FlashAnimTagWithColor(u8 taskId) { u8 paletteIndex; @@ -603,10 +646,10 @@ void AnimTask_FlashAnimTagWithColor(u8 taskId) gBattleAnimArgs[4], gBattleAnimArgs[4], gBattleAnimArgs[3]); - gTasks[taskId].func = sub_80B9FD8; + gTasks[taskId].func = AnimTask_FlashAnimTagWithColor_Step1; } -static void sub_80B9FD8(u8 taskId) +static void AnimTask_FlashAnimTagWithColor_Step1(u8 taskId) { u32 selectedPalettes; @@ -619,7 +662,7 @@ static void sub_80B9FD8(u8 taskId) return; if (gTasks[taskId].data[2] == 0) { - gTasks[taskId].func = sub_80BA090; + gTasks[taskId].func = AnimTask_FlashAnimTagWithColor_Step2; return; } selectedPalettes = 1 << (IndexOfSpritePaletteTag(gTasks[taskId].data[7]) + 16); @@ -640,7 +683,7 @@ static void sub_80B9FD8(u8 taskId) --gTasks[taskId].data[2]; } -static void sub_80BA090(u8 taskId) +static void AnimTask_FlashAnimTagWithColor_Step2(u8 taskId) { u32 selectedPalettes; @@ -659,7 +702,7 @@ void AnimTask_InvertScreenColor(u8 taskId) u8 targetBattler = gBattleAnimTarget; if (gBattleAnimArgs[0] & 0x100) - selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); + selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); if (gBattleAnimArgs[1] & 0x100) selectedPalettes |= (0x10000 << attackerBattler); if (gBattleAnimArgs[2] & 0x100) @@ -668,8 +711,16 @@ void AnimTask_InvertScreenColor(u8 taskId) DestroyAnimVisualTask(taskId); } -// not used -static void sub_80BA16C(u8 taskId) +// Unused +#define tTimer data[0] +#define tLength data[1] +#define tFlagsScenery data[2] +#define tFlagsAttacker data[3] +#define tFlagsTarget data[4] +#define tColorR data[5] +#define tColorG data[6] +#define tColorB data[7] +static void AnimTask_TintPalettes(u8 taskId) { u8 attackerBattler; u8 targetBattler; @@ -708,6 +759,15 @@ static void sub_80BA16C(u8 taskId) } } +#undef tTimer +#undef tLength +#undef tFlagsScenery +#undef tFlagsAttacker +#undef tFlagsTarget +#undef tColorR +#undef tColorG +#undef tColorB + static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite) { u16 var0; @@ -737,11 +797,11 @@ static void AnimShakeMonOrBattleTerrain(struct Sprite *sprite) sprite->data[5] = gBattleAnimArgs[3]; var0 = sprite->data[5] - 2; if (var0 < 2) - sub_80BA3CC(); - sprite->callback = sub_80BA320; + AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(); + sprite->callback = AnimShakeMonOrBattleTerrain_Step; } -static void sub_80BA320(struct Sprite *sprite) +static void AnimShakeMonOrBattleTerrain_Step(struct Sprite *sprite) { u8 i; u16 var0; @@ -766,58 +826,70 @@ static void sub_80BA320(struct Sprite *sprite) var0 = sprite->data[5] - 2; if (var0 < 2) for (i = 0; i < gBattlersCount; ++i) - gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = 0; + gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = FALSE; DestroyAnimSprite(sprite); } } -static void sub_80BA3CC(void) +static void AnimShakeMonOrBattleTerrain_UpdateCoordOffsetEnabled(void) { - gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 0; - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 0; + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = FALSE; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = FALSE; if (gBattleAnimArgs[4] == 2) { - gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1; - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1; + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = TRUE; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = TRUE; } else { if (gBattleAnimArgs[4] == 0) - gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = 1; + gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].coordOffsetEnabled = TRUE; else - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = 1; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].coordOffsetEnabled = TRUE; } } +// Task data for AnimTask_ShakeBattleTerrain +#define tXOffset data[0] +#define tYOffset data[1] +#define tNumShakes data[2] +#define tTimer data[3] +#define tShakeDelay data[8] + +// Can shake battle terrain back and forth on the X or down and back to original pos on Y (cant shake up from orig pos) +// arg0: x offset of shake +// arg1: y offset of shake +// arg2: number of shakes +// arg3: time between shakes void AnimTask_ShakeBattleTerrain(u8 taskId) { - gTasks[taskId].data[0] = gBattleAnimArgs[0]; - gTasks[taskId].data[1] = gBattleAnimArgs[1]; - gTasks[taskId].data[2] = gBattleAnimArgs[2]; - gTasks[taskId].data[3] = gBattleAnimArgs[3]; - gTasks[taskId].data[8] = gBattleAnimArgs[3]; + gTasks[taskId].tXOffset = gBattleAnimArgs[0]; + gTasks[taskId].tYOffset = gBattleAnimArgs[1]; + gTasks[taskId].tNumShakes = gBattleAnimArgs[2]; + gTasks[taskId].tTimer = gBattleAnimArgs[3]; + gTasks[taskId].tShakeDelay = gBattleAnimArgs[3]; gBattle_BG3_X = gBattleAnimArgs[0]; gBattle_BG3_Y = gBattleAnimArgs[1]; - gTasks[taskId].func = sub_80BA4D0; + gTasks[taskId].func = AnimTask_ShakeBattleTerrain_Step; gTasks[taskId].func(taskId); } -static void sub_80BA4D0(u8 taskId) +static void AnimTask_ShakeBattleTerrain_Step(u8 taskId) { - if (gTasks[taskId].data[3] == 0) + if (gTasks[taskId].tTimer == 0) { - if (gBattle_BG3_X == gTasks[taskId].data[0]) - gBattle_BG3_X = -gTasks[taskId].data[0]; + if (gBattle_BG3_X == gTasks[taskId].tXOffset) + gBattle_BG3_X = -gTasks[taskId].tXOffset; else - gBattle_BG3_X = gTasks[taskId].data[0]; + gBattle_BG3_X = gTasks[taskId].tXOffset; - if (gBattle_BG3_Y == -gTasks[taskId].data[1]) + if (gBattle_BG3_Y == -gTasks[taskId].tYOffset) gBattle_BG3_Y = 0; else - gBattle_BG3_Y = -gTasks[taskId].data[1]; + gBattle_BG3_Y = -gTasks[taskId].tYOffset; - gTasks[taskId].data[3] = gTasks[taskId].data[8]; - if (--gTasks[taskId].data[2] == 0) + gTasks[taskId].tTimer = gTasks[taskId].tShakeDelay; + if (--gTasks[taskId].tNumShakes == 0) { gBattle_BG3_X = 0; gBattle_BG3_Y = 0; @@ -826,26 +898,33 @@ static void sub_80BA4D0(u8 taskId) } else { - --gTasks[taskId].data[3]; + gTasks[taskId].tTimer--; } } +#undef tXOffset +#undef tYOffset +#undef tNumShakes +#undef tTimer +#undef tShakeDelay + static void AnimHitSplatBasic(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); if (gBattleAnimArgs[2] == 0) - InitSpritePosToAnimAttacker(sprite, 1); + InitSpritePosToAnimAttacker(sprite, TRUE); else InitSpritePosToAnimTarget(sprite, TRUE); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } +// Same as basic hit splat but takes a length of time to persist for (arg4) static void AnimHitSplatPersistent(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); if (gBattleAnimArgs[2] == 0) - InitSpritePosToAnimAttacker(sprite, 1); + InitSpritePosToAnimAttacker(sprite, TRUE); else InitSpritePosToAnimTarget(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[4]; @@ -853,6 +932,8 @@ static void AnimHitSplatPersistent(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSpriteAfterTimer); } +// For paired hit splats whose position is inverted when used by the opponent on the player. +// Used by Twineedle and Spike Cannon static void AnimHitSplatHandleInvert(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER && !IsContest()) @@ -865,8 +946,8 @@ static void AnimHitSplatRandom(struct Sprite *sprite) if (gBattleAnimArgs[1] == -1) gBattleAnimArgs[1] = Random() & 3; StartSpriteAffineAnim(sprite, gBattleAnimArgs[1]); - if (gBattleAnimArgs[0] == 0) - InitSpritePosToAnimAttacker(sprite, 0); + if (gBattleAnimArgs[0] == ANIM_ATTACKER) + InitSpritePosToAnimAttacker(sprite, FALSE); else InitSpritePosToAnimTarget(sprite, FALSE); sprite->x2 += (Random() % 48) - 24; @@ -889,8 +970,8 @@ static void AnimHitSplatOnMonEdge(struct Sprite *sprite) static void AnimCrossImpact(struct Sprite *sprite) { - if (gBattleAnimArgs[2] == 0) - InitSpritePosToAnimAttacker(sprite, 1); + if (gBattleAnimArgs[2] == ANIM_ATTACKER) + InitSpritePosToAnimAttacker(sprite, TRUE); else InitSpritePosToAnimTarget(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[3]; @@ -901,14 +982,14 @@ static void AnimCrossImpact(struct Sprite *sprite) static void AnimFlashingHitSplat(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, gBattleAnimArgs[3]); - if (gBattleAnimArgs[2] == 0) - InitSpritePosToAnimAttacker(sprite, 1); + if (gBattleAnimArgs[2] == ANIM_ATTACKER) + InitSpritePosToAnimAttacker(sprite, TRUE); else InitSpritePosToAnimTarget(sprite, TRUE); - sprite->callback = sub_80BA7BC; + sprite->callback = AnimFlashingHitSplat_Step; } -static void sub_80BA7BC(struct Sprite *sprite) +static void AnimFlashingHitSplat_Step(struct Sprite *sprite) { sprite->invisible ^= 1; if (sprite->data[0]++ > 12) diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 638ac7a6e..5814daa1a 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -52,7 +52,7 @@ const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, RE // 10: Enemy battler right void AnimTask_BlendSelected(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); selectedPalettes |= GetBattleMonSpritePalettesMask( (gBattleAnimArgs[0] >> 7) & 1, @@ -79,7 +79,7 @@ void AnimTask_BlendExcept(u8 taskId) u8 animBattlers[2]; animBattlers[1] = 0xFF; - selectedPalettes = UnpackSelectedBattleAnimPalettes(1); + selectedPalettes = UnpackSelectedBattlePalettes(1); switch (gBattleAnimArgs[0]) { case 2: @@ -122,7 +122,7 @@ void AnimTask_BlendExcept(u8 taskId) void AnimTask_SetCamouflageBlend(u8 taskId) { - u32 selectedPalettes = UnpackSelectedBattleAnimPalettes(gBattleAnimArgs[0]); + u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); switch (gBattleTerrain) { From 96ecc82c9816977a64816b328a06c22e2995c720 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 13:52:24 -0400 Subject: [PATCH 19/38] Sync battle anim - poison, psychic --- src/battle_anim_poison.c | 24 +++++----- src/battle_anim_psychic.c | 97 +++++++++++++++++++++------------------ 2 files changed, 65 insertions(+), 56 deletions(-) diff --git a/src/battle_anim_poison.c b/src/battle_anim_poison.c index 1a617aeaf..1b1934071 100644 --- a/src/battle_anim_poison.c +++ b/src/battle_anim_poison.c @@ -7,10 +7,10 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite); static void AnimSludgeBombHitParticle(struct Sprite *sprite); static void AnimAcidPoisonDroplet(struct Sprite *sprite); static void AnimBubbleEffect(struct Sprite *sprite); -static void sub_80B1684(struct Sprite *sprite); -static void sub_80B1728(struct Sprite *sprite); -static void sub_80B1798(struct Sprite *sprite); -static void AnimBubbleEffectStep(struct Sprite *sprite); +static void AnimSludgeProjectile_Step(struct Sprite *sprite); +static void AnimAcidPoisonBubble_Step(struct Sprite *sprite); +static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite); +static void AnimBubbleEffect_Step(struct Sprite *sprite); static const union AnimCmd sAnim_ToxicBubble[] = { @@ -194,10 +194,10 @@ static void AnimSludgeProjectile(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); sprite->data[5] = -30; InitAnimArcTranslation(sprite); - sprite->callback = sub_80B1684; + sprite->callback = AnimSludgeProjectile_Step; } -static void sub_80B1684(struct Sprite *sprite) +static void AnimSludgeProjectile_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -218,10 +218,10 @@ static void AnimAcidPoisonBubble(struct Sprite *sprite) sprite->data[4] = l2 + gBattleAnimArgs[5]; sprite->data[5] = -30; InitAnimArcTranslation(sprite); - sprite->callback = sub_80B1728; + sprite->callback = AnimAcidPoisonBubble_Step; } -static void sub_80B1728(struct Sprite *sprite) +static void AnimAcidPoisonBubble_Step(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) DestroyAnimSprite(sprite); @@ -237,10 +237,10 @@ static void AnimSludgeBombHitParticle(struct Sprite *sprite) InitSpriteDataForLinearTranslation(sprite); sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2]; sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2]; - sprite->callback = sub_80B1798; + sprite->callback = AnimSludgeBombHitParticle_Step; } -static void sub_80B1798(struct Sprite *sprite) +static void AnimSludgeBombHitParticle_Step(struct Sprite *sprite) { TranslateSpriteLinearFixedPoint(sprite); sprite->data[1] -= sprite->data[5]; @@ -284,10 +284,10 @@ static void AnimBubbleEffect(struct Sprite *sprite) sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; } - sprite->callback = AnimBubbleEffectStep; + sprite->callback = AnimBubbleEffect_Step; } -static void AnimBubbleEffectStep(struct Sprite *sprite) +static void AnimBubbleEffect_Step(struct Sprite *sprite) { sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF; sprite->x2 = Sin(sprite->data[0], 4); diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index 97e1714ba..5125001f0 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -12,18 +12,18 @@ static void AnimQuestionMark(struct Sprite *sprite); static void AnimRedX(struct Sprite *sprite); static void AnimSkillSwapOrb(struct Sprite *sprite); static void AnimPsychoBoost(struct Sprite *sprite); -static void sub_80B300C(struct Sprite *sprite); -static void sub_80B3044(struct Sprite *sprite); -static void sub_80B30B0(struct Sprite *sprite); -static void sub_80B3168(struct Sprite *sprite); -static void sub_80B3384(struct Sprite *sprite); -static void sub_80B33B8(struct Sprite *sprite); -static void sub_80B3454(u8 taskId); -static void sub_80B34DC(u8 taskId); -static void sub_80B3618(u8 taskId); -static void sub_80B3980(u8 taskId); -static void sub_80B3B78(u8 taskId); -static void sub_80B3D78(u8 taskId); +static void AnimDefensiveWall_Step2(struct Sprite *sprite); +static void AnimDefensiveWall_Step3(struct Sprite *sprite); +static void AnimDefensiveWall_Step4(struct Sprite *sprite); +static void AnimDefensiveWall_Step5(struct Sprite *sprite); +static void AnimQuestionMark_Step1(struct Sprite *sprite); +static void AnimQuestionMark_Step2(struct Sprite *sprite); +static void AnimTask_MeditateStretchAttacker_Step(u8 taskId); +static void AnimTask_Teleport_Step(u8 taskId); +static void AnimTask_ImprisonOrbs_Step(u8 taskId); +static void AnimTask_SkillSwap_Step(u8 taskId); +static void AnimTask_ExtrasensoryDistortion_Step(u8 taskId); +static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId); static const union AffineAnimCmd sAffineAnim_PsychUpSpiral[] = { @@ -415,6 +415,7 @@ const struct SpriteTemplate gPsychoBoostOrbSpriteTemplate = .callback = AnimPsychoBoost, }; +// For the rectangular wall sprite used by Reflect, Mirror Coat, etc static void AnimDefensiveWall(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER || IsContest()) @@ -459,20 +460,22 @@ static void AnimDefensiveWall(struct Sprite *sprite) if (IsContest()) sprite->y += 9; sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16; - sprite->callback = sub_80B300C; - sub_80B300C(sprite); + sprite->callback = AnimDefensiveWall_Step2; + sprite->callback(sprite); } -static void sub_80B300C(struct Sprite *sprite) +// AnimDefensiveWall_Step1 is removed in FRLG from the removal of Contest handling + +static void AnimDefensiveWall_Step2(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3])); if (sprite->data[3] == 13) - sprite->callback = sub_80B3044; + sprite->callback = AnimDefensiveWall_Step3; else ++sprite->data[3]; } -static void sub_80B3044(struct Sprite *sprite) +static void AnimDefensiveWall_Step3(struct Sprite *sprite) { u16 color; u16 startOffset; @@ -487,11 +490,11 @@ static void sub_80B3044(struct Sprite *sprite) gPlttBufferFaded[startOffset + i] = gPlttBufferFaded[startOffset + i - 1]; gPlttBufferFaded[startOffset + 1] = color; if (++sprite->data[2] == 16) - sprite->callback = sub_80B30B0; + sprite->callback = AnimDefensiveWall_Step4; } } -static void sub_80B30B0(struct Sprite *sprite) +static void AnimDefensiveWall_Step4(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(sprite->data[3], 16 - sprite->data[3])); if (--sprite->data[3] == -1) @@ -508,11 +511,11 @@ static void sub_80B30B0(struct Sprite *sprite) gSprites[gBattlerSpriteIds[battler]].invisible = FALSE; } sprite->invisible = TRUE; - sprite->callback = sub_80B3168; + sprite->callback = AnimDefensiveWall_Step5; } } -static void sub_80B3168(struct Sprite *sprite) +static void AnimDefensiveWall_Step5(struct Sprite *sprite) { if (!IsContest()) { @@ -531,13 +534,14 @@ static void sub_80B3168(struct Sprite *sprite) sprite->callback = DestroyAnimSprite; } +// Animates the sparkle that appears during Reflect or Light Screen/Mirror Coat static void AnimWallSparkle(struct Sprite *sprite) { if (sprite->data[0] == 0) { - int arg3 = gBattleAnimArgs[3]; + bool32 ignoreOffsets = gBattleAnimArgs[3]; bool8 respectMonPicOffsets = FALSE; - if (arg3 == 0) + if (!ignoreOffsets) respectMonPicOffsets = TRUE; if (!IsContest() && IsDoubleBattle()) { @@ -589,6 +593,7 @@ static void AnimBentSpoon(struct Sprite *sprite) sprite->callback = RunStoredCallbackWhenAnimEnds; } +// Used by Amnesia static void AnimQuestionMark(struct Sprite *sprite) { s16 x = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_WIDTH) / 2; @@ -600,20 +605,20 @@ static void AnimQuestionMark(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + y; if (sprite->y < 16) sprite->y = 16; - StoreSpriteCallbackInData6(sprite, sub_80B3384); + StoreSpriteCallbackInData6(sprite, AnimQuestionMark_Step1); sprite->callback = RunStoredCallbackWhenAnimEnds; } -static void sub_80B3384(struct Sprite *sprite) +static void AnimQuestionMark_Step1(struct Sprite *sprite) { sprite->oam.affineMode = ST_OAM_AFFINE_NORMAL; sprite->affineAnims = sAffineAnims_QuestionMark; sprite->data[0] = 0; InitSpriteAffineAnim(sprite); - sprite->callback = sub_80B33B8; + sprite->callback = AnimQuestionMark_Step2; } -static void sub_80B33B8(struct Sprite *sprite) +static void AnimQuestionMark_Step2(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -640,10 +645,10 @@ void AnimTask_MeditateStretchAttacker(u8 taskId) task->data[0] = spriteId; PrepareAffineAnimInTaskData(task, spriteId, sAffineAnim_MeditateStretchAttacker); - task->func = sub_80B3454; + task->func = AnimTask_MeditateStretchAttacker_Step; } -static void sub_80B3454(u8 taskId) +static void AnimTask_MeditateStretchAttacker_Step(u8 taskId) { if (!RunAffineAnimFromTaskData(&gTasks[taskId])) DestroyAnimVisualTask(taskId); @@ -659,10 +664,10 @@ void AnimTask_Teleport(u8 taskId) task->data[2] = 0; task->data[3] = GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER ? 4 : 8; PrepareAffineAnimInTaskData(task, task->data[0], sAffineAnim_Teleport); - task->func = sub_80B34DC; + task->func = AnimTask_Teleport_Step; } -static void sub_80B34DC(u8 taskId) +static void AnimTask_Teleport_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -682,7 +687,7 @@ static void sub_80B34DC(u8 taskId) else { gSprites[task->data[0]].invisible = TRUE; - gSprites[task->data[0]].x = 272; + gSprites[task->data[0]].x = DISPLAY_WIDTH + 32; ResetSpriteRotScale(task->data[0]); DestroyAnimVisualTask(taskId); } @@ -704,10 +709,10 @@ void AnimTask_ImprisonOrbs(u8 taskId) task->data[12] = var0 > var1 ? var0 : var1; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); - task->func = sub_80B3618; + task->func = AnimTask_ImprisonOrbs_Step; } -static void sub_80B3618(u8 taskId) +static void AnimTask_ImprisonOrbs_Step(u8 taskId) { u16 i; u8 spriteId; @@ -757,7 +762,7 @@ static void sub_80B3618(u8 taskId) if (++task->data[1] == 32) { for (i = 8; i < 13; ++i) - if (task->data[i] != 64) + if (task->data[i] != MAX_SPRITES) DestroySprite(&gSprites[task->data[i]]); ++task->data[0]; } @@ -773,7 +778,7 @@ static void sub_80B3618(u8 taskId) } } -static void sub_80B37A4(struct Sprite *sprite) +static void AnimRedX_Step(struct Sprite *sprite) { if (sprite->data[1] > sprite->data[0] - 10) sprite->invisible = sprite->data[1] & 1; @@ -790,7 +795,7 @@ static void AnimRedX(struct Sprite *sprite) sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); } sprite->data[0] = gBattleAnimArgs[1]; - sprite->callback = sub_80B37A4; + sprite->callback = AnimRedX_Step; } void AnimTask_SkillSwap(u8 taskId) @@ -799,7 +804,7 @@ void AnimTask_SkillSwap(u8 taskId) if (IsContest()) { - if (gBattleAnimArgs[0] == 1) + if (gBattleAnimArgs[0] == ANIM_TARGET) { task->data[10] = -10; task->data[11] = GetBattlerSpriteCoordAttr(gBattleAnimTarget, BATTLER_COORD_ATTR_RIGHT) - 8; @@ -836,10 +841,10 @@ void AnimTask_SkillSwap(u8 taskId) } } task->data[1] = 6; - task->func = sub_80B3980; + task->func = AnimTask_SkillSwap_Step; } -static void sub_80B3980(u8 taskId) +static void AnimTask_SkillSwap_Step(u8 taskId) { u8 spriteId; struct Task *task = &gTasks[taskId]; @@ -881,6 +886,8 @@ static void AnimSkillSwapOrb(struct Sprite *sprite) } } +// The scanline effect that distorts the target during Extrasensory by segmenting the mon vertically and shifting the slices +// arg0: Stage. Stage 0 is a slight right distortion, 1 is a medium left distortion, and 2 is a severe right distortion void AnimTask_ExtrasensoryDistortion(u8 taskId) { s16 i; @@ -932,10 +939,10 @@ void AnimTask_ExtrasensoryDistortion(u8 taskId) scanlineParams.initState = 1; scanlineParams.unused9 = 0; ScanlineEffect_SetParams(scanlineParams); - task->func = sub_80B3B78; + task->func = AnimTask_ExtrasensoryDistortion_Step; } -static void sub_80B3B78(u8 taskId) +static void AnimTask_ExtrasensoryDistortion_Step(u8 taskId) { s16 sineIndex, i; struct Task *task = &gTasks[taskId]; @@ -969,6 +976,8 @@ static void sub_80B3B78(u8 taskId) } } +// Creates a cloned transparent sprite of the battler that grows and then shrinks back to original size. Used by Extrasensory +// arg0: battler void AnimTask_TransparentCloneGrowAndShrink(u8 taskId) { s16 spriteId; @@ -998,10 +1007,10 @@ void AnimTask_TransparentCloneGrowAndShrink(u8 taskId) task->data[13] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); task->data[14] = matrixNum; task->data[15] = spriteId; - task->func = sub_80B3D78; + task->func = AnimTask_TransparentCloneGrowAndShrink_Step; } -static void sub_80B3D78(u8 taskId) +static void AnimTask_TransparentCloneGrowAndShrink_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; From f47680654770c200a41ea51e0973a48fca7d3aed Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 14:18:30 -0400 Subject: [PATCH 20/38] Sync battle anim - rock --- src/battle_anim_rock.c | 152 ++++++++++++++++++++--------------------- 1 file changed, 73 insertions(+), 79 deletions(-) diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index 2690e4237..d7b8057ef 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -8,21 +8,21 @@ static void AnimFallingRock(struct Sprite *sprite); static void AnimRockFragment(struct Sprite *sprite); -static void AnimDirtParticleAcrossScreen(struct Sprite *sprite); +static void AnimFlyingSandCrescent(struct Sprite *sprite); static void AnimRaiseSprite(struct Sprite *sprite); -static void sub_80B4D00(u8 taskId); +static void AnimTask_Rollout_Step(u8 taskId); static void AnimRolloutParticle(struct Sprite *sprite); static void AnimRockTomb(struct Sprite *sprite); static void AnimRockBlastRock(struct Sprite *sprite); static void AnimRockScatter(struct Sprite *sprite); static void AnimParticleInVortex(struct Sprite *sprite); -static void sub_80B46B4(struct Sprite *sprite); -static void sub_80B47C4(struct Sprite *sprite); -static void sub_80B490C(u8 taskId); -static void sub_80B4E70(struct Task *task); -static u8 sub_80B4FB8(void); -static void sub_80B5024(struct Sprite *sprite); -static void sub_80B50F8(struct Sprite *sprite); +static void AnimFallingRock_Step(struct Sprite *sprite); +static void AnimParticleInVortex_Step(struct Sprite *sprite); +static void AnimTask_LoadSandstormBackground_Step(u8 taskId); +static void CreateRolloutDirtSprite(struct Task *task); +static u8 GetRolloutCounter(void); +static void AnimRockTomb_Step(struct Sprite *sprite); +static void AnimRockScatter_Step(struct Sprite *sprite); static const union AnimCmd sAnim_FlyingRock_0[] = { @@ -125,7 +125,7 @@ const struct SpriteTemplate gFlyingSandCrescentSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimDirtParticleAcrossScreen, + .callback = AnimFlyingSandCrescent, }; static const struct Subsprite sFlyingSandSubsprites[] = @@ -133,16 +133,16 @@ static const struct Subsprite sFlyingSandSubsprites[] = { .x = -16, .y = 0, - .shape = ST_OAM_H_RECTANGLE, - .size = 2, + .shape = SPRITE_SHAPE(32x16), + .size = SPRITE_SIZE(32x16), .tileOffset = 0, .priority = 1, }, { .x = 16, .y = 0, - .shape = ST_OAM_H_RECTANGLE, - .size = 2, + .shape = SPRITE_SHAPE(32x16), + .size = SPRITE_SIZE(32x16), .tileOffset = 8, .priority = 1, }, @@ -153,37 +153,37 @@ static const struct SubspriteTable sFlyingSandSubspriteTable[] = { NELEMS(sFlyingSandSubsprites), sFlyingSandSubsprites }, }; -static const union AnimCmd sAnim_BasicRock_0[] = +static const union AnimCmd sAnim_Rock_Biggest[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_BasicRock_1[] = +static const union AnimCmd sAnim_Rock_Bigger[] = { ANIMCMD_FRAME(16, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_WeatherBallRockDown_0[] = +static const union AnimCmd sAnim_Rock_Big[] = { ANIMCMD_FRAME(32, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_WeatherBallRockDown_1[] = +static const union AnimCmd sAnim_Rock_Small[] = { ANIMCMD_FRAME(48, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_TwisterRock_0[] = +static const union AnimCmd sAnim_Rock_Smaller[] = { ANIMCMD_FRAME(64, 1), ANIMCMD_END, }; -static const union AnimCmd sAnim_TwisterRock_1[] = +static const union AnimCmd sAnim_Rock_Smallest[] = { ANIMCMD_FRAME(80, 1), ANIMCMD_END, @@ -191,20 +191,12 @@ static const union AnimCmd sAnim_TwisterRock_1[] = static const union AnimCmd *const sAnims_BasicRock[] = { - sAnim_BasicRock_0, - sAnim_BasicRock_1, -}; - -static const union AnimCmd *const sAnims_WeatherBallRockDown[] = -{ - sAnim_WeatherBallRockDown_0, - sAnim_WeatherBallRockDown_1, -}; - -static const union AnimCmd *const sAnims_TwisterRock[] = -{ - sAnim_TwisterRock_0, - sAnim_TwisterRock_1, + sAnim_Rock_Biggest, + sAnim_Rock_Bigger, + sAnim_Rock_Big, + sAnim_Rock_Small, + sAnim_Rock_Smaller, + sAnim_Rock_Smallest, }; const struct SpriteTemplate gAncientPowerRockSpriteTemplate = @@ -229,7 +221,7 @@ const struct SpriteTemplate gRolloutMudSpriteTemplate = .callback = AnimRolloutParticle, }; -const struct SpriteTemplate gUnknown_83E74F0 = +const struct SpriteTemplate gRolloutRockSpriteTemplate = { .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, @@ -296,7 +288,7 @@ const struct SpriteTemplate gTwisterRockSpriteTemplate = .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sAnims_TwisterRock, + .anims = &sAnims_BasicRock[4], .images = NULL, .affineAnims = sAffineAnims_BasicRock, .callback = AnimMoveTwisterParticle, @@ -307,7 +299,7 @@ const struct SpriteTemplate gWeatherBallRockDownSpriteTemplate = .tileTag = ANIM_TAG_ROCKS, .paletteTag = ANIM_TAG_ROCKS, .oam = &gOamData_AffineNormal_ObjNormal_32x32, - .anims = sAnims_WeatherBallRockDown, + .anims = &sAnims_BasicRock[2], .images = NULL, .affineAnims = sAffineAnims_BasicRock, .callback = AnimWeatherBallDown, @@ -327,12 +319,12 @@ static void AnimFallingRock(struct Sprite *sprite) sprite->data[3] = 16; sprite->data[4] = -70; sprite->data[5] = gBattleAnimArgs[2]; - StoreSpriteCallbackInData6(sprite, sub_80B46B4); + StoreSpriteCallbackInData6(sprite, AnimFallingRock_Step); sprite->callback = TranslateSpriteInEllipse; sprite->callback(sprite); } -static void sub_80B46B4(struct Sprite *sprite) +static void AnimFallingRock_Step(struct Sprite *sprite) { sprite->x += sprite->data[5]; sprite->data[0] = 192; @@ -345,6 +337,7 @@ static void sub_80B46B4(struct Sprite *sprite) sprite->callback(sprite); } +// Animates the rock particles that are shown on the impact for Rock Blast / Rock Smash static void AnimRockFragment(struct Sprite *sprite) { StartSpriteAnim(sprite, gBattleAnimArgs[5]); @@ -366,6 +359,7 @@ static void AnimRockFragment(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroySpriteAndMatrix); } +// Swirls particle in vortex. Used for moves like Fire Spin or Sand Tomb static void AnimParticleInVortex(struct Sprite *sprite) { if (gBattleAnimArgs[6] == 0) @@ -376,10 +370,10 @@ static void AnimParticleInVortex(struct Sprite *sprite) sprite->data[1] = gBattleAnimArgs[2]; sprite->data[2] = gBattleAnimArgs[4]; sprite->data[3] = gBattleAnimArgs[5]; - sprite->callback = sub_80B47C4; + sprite->callback = AnimParticleInVortex_Step; } -static void sub_80B47C4(struct Sprite *sprite) +static void AnimParticleInVortex_Step(struct Sprite *sprite) { sprite->data[4] += sprite->data[1]; sprite->y2 = -(sprite->data[4] >> 8); @@ -416,10 +410,10 @@ void AnimTask_LoadSandstormBackground(u8 taskId) if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) var0 = 1; gTasks[taskId].data[0] = var0; - gTasks[taskId].func = sub_80B490C; + gTasks[taskId].func = AnimTask_LoadSandstormBackground_Step; } -static void sub_80B490C(u8 taskId) +static void AnimTask_LoadSandstormBackground_Step(u8 taskId) { struct BattleAnimBgData animBg; @@ -487,7 +481,7 @@ static void sub_80B490C(u8 taskId) // arg 1: projectile speed // arg 2: y pixel drop // arg 3: ??? unknown (possibly a color bit) -static void AnimDirtParticleAcrossScreen(struct Sprite *sprite) +static void AnimFlyingSandCrescent(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -518,7 +512,7 @@ static void AnimDirtParticleAcrossScreen(struct Sprite *sprite) sprite->data[4] &= 0xFF; if (sprite->data[5] == 0) { - if (sprite->x + sprite->x2 > 272) + if (sprite->x + sprite->x2 > DISPLAY_WIDTH + 32) { sprite->callback = DestroyAnimSprite; } @@ -550,23 +544,23 @@ static void AnimRaiseSprite(struct Sprite *sprite) void AnimTask_Rollout(u8 taskId) { u16 var0, var1, var2, var3; - u8 var4; + u8 rolloutCounter; s32 var5; s16 pan1, pan2; struct Task *task; task = &gTasks[taskId]; - var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 24; - var2 = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - var3 = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 24; + var0 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + var1 = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 24; + var2 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + var3 = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 24; if (BATTLE_PARTNER(gBattleAnimAttacker) == gBattleAnimTarget) var3 = var1; - var4 = sub_80B4FB8(); - if (var4 == 1) + rolloutCounter = GetRolloutCounter(); + if (rolloutCounter == 1) task->data[8] = 32; else - task->data[8] = 48 - (var4 * 8); + task->data[8] = 48 - (rolloutCounter * 8); task->data[0] = 0; task->data[11] = 0; task->data[9] = 0; @@ -585,12 +579,12 @@ void AnimTask_Rollout(u8 taskId) pan2 = BattleAnimAdjustPanning(SOUND_PAN_TARGET); task->data[13] = pan1; task->data[14] = (pan2 - pan1) / task->data[8]; - task->data[1] = var4; + task->data[1] = rolloutCounter; task->data[15] = GetAnimBattlerSpriteId(ANIM_ATTACKER); - task->func = sub_80B4D00; + task->func = AnimTask_Rollout_Step; } -static void sub_80B4D00(u8 taskId) +static void AnimTask_Rollout_Step(u8 taskId) { struct Task *task; @@ -634,7 +628,7 @@ static void sub_80B4D00(u8 taskId) if (++task->data[9] >= task->data[10]) { task->data[9] = 0; - sub_80B4E70(task); + CreateRolloutDirtSprite(task); task->data[13] += task->data[14]; PlaySE12WithPanning(SE_M_DIG, task->data[13]); } @@ -650,10 +644,10 @@ static void sub_80B4D00(u8 taskId) } } -static void sub_80B4E70(struct Task *task) +static void CreateRolloutDirtSprite(struct Task *task) { const struct SpriteTemplate *spriteTemplate; - s32 var0; + s32 tileOffset; u16 x, y; u8 spriteId; @@ -661,20 +655,20 @@ static void sub_80B4E70(struct Task *task) { case 1: spriteTemplate = &gRolloutMudSpriteTemplate; - var0 = 0; + tileOffset = 0; break; case 2: case 3: - spriteTemplate = &gUnknown_83E74F0; - var0 = 80; + spriteTemplate = &gRolloutRockSpriteTemplate; + tileOffset = 80; break; case 4: - spriteTemplate = &gUnknown_83E74F0; - var0 = 64; + spriteTemplate = &gRolloutRockSpriteTemplate; + tileOffset = 64; break; case 5: - spriteTemplate = &gUnknown_83E74F0; - var0 = 48; + spriteTemplate = &gRolloutRockSpriteTemplate; + tileOffset = 48; break; default: return; @@ -689,7 +683,7 @@ static void sub_80B4E70(struct Task *task) gSprites[spriteId].data[2] = ((task->data[12] * 20) + x) + (task->data[1] * 3); gSprites[spriteId].data[4] = y; gSprites[spriteId].data[5] = -16 - (task->data[1] * 2); - gSprites[spriteId].oam.tileNum += var0; + gSprites[spriteId].oam.tileNum += tileOffset; InitAnimArcTranslation(&gSprites[spriteId]); ++task->data[11]; } @@ -700,15 +694,15 @@ static void AnimRolloutParticle(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) { - u8 taskId = FindTaskIdByFunc(sub_80B4D00); + u8 taskId = FindTaskIdByFunc(AnimTask_Rollout_Step); - if (taskId != TAIL_SENTINEL) + if (taskId != TASK_NONE) --gTasks[taskId].data[11]; DestroySprite(sprite); } } -static u8 sub_80B4FB8(void) +static u8 GetRolloutCounter(void) { u8 retVal = gAnimDisableStructPtr->rolloutTimerStartValue - gAnimDisableStructPtr->rolloutTimer; u8 var0 = retVal - 1; @@ -726,11 +720,11 @@ static void AnimRockTomb(struct Sprite *sprite) sprite->data[3] -= gBattleAnimArgs[2]; sprite->data[0] = 3; sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = sub_80B5024; + sprite->callback = AnimRockTomb_Step; sprite->invisible = TRUE; } -static void sub_80B5024(struct Sprite *sprite) +static void AnimRockTomb_Step(struct Sprite *sprite) { sprite->invisible = FALSE; if (sprite->data[3] != 0) @@ -758,18 +752,18 @@ static void AnimRockBlastRock(struct Sprite *sprite) static void AnimRockScatter(struct Sprite *sprite) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; sprite->data[1] = gBattleAnimArgs[0]; sprite->data[2] = gBattleAnimArgs[1]; sprite->data[5] = gBattleAnimArgs[2]; StartSpriteAnim(sprite, gBattleAnimArgs[3]); - sprite->callback = sub_80B50F8; + sprite->callback = AnimRockScatter_Step; } -static void sub_80B50F8(struct Sprite *sprite) +static void AnimRockScatter_Step(struct Sprite *sprite) { sprite->data[0] += 8; sprite->data[3] += sprite->data[1]; @@ -783,11 +777,11 @@ static void sub_80B50F8(struct Sprite *sprite) void AnimTask_GetSeismicTossDamageLevel(u8 taskId) { if (gAnimMoveDmg < 33) - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = 0; if ((u32)gAnimMoveDmg - 33 < 33) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = 1; if (gAnimMoveDmg > 65) - gBattleAnimArgs[7] = 2; + gBattleAnimArgs[ARG_RET_ID] = 2; DestroyAnimVisualTask(taskId); } From 8601b4fff39cce00d6143782ed1957121cafa74e Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 14:27:42 -0400 Subject: [PATCH 21/38] Sync battle anim - smokescreen --- data/battle_anim_smokescreen.s | 55 ---------- include/graphics.h | 4 + ld_script.txt | 2 +- src/battle_anim_smokescreen.c | 182 +++++++++++++++++++++++++++------ src/graphics.c | 2 +- 5 files changed, 159 insertions(+), 86 deletions(-) delete mode 100644 data/battle_anim_smokescreen.s diff --git a/data/battle_anim_smokescreen.s b/data/battle_anim_smokescreen.s deleted file mode 100644 index 3a4a46558..000000000 --- a/data/battle_anim_smokescreen.s +++ /dev/null @@ -1,55 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - .align 2 - -gSmokescreenImpactSpriteSheet:: - obj_tiles gSmokescreenImpactTiles, 0x0180, 55019 - -gSmokescreenImpactSpritePalette:: - obj_pal gSmokescreenImpactPalette, 55019 - -gOamData_835099C:: - .4byte 0x40000000, 0x00000400 - -gAnimCmd_82509A4:: - obj_image_anim_frame 0, 4 - obj_image_anim_frame 4, 4 - obj_image_anim_frame 8, 4 - obj_image_anim_end - -gAnimCmd_82509B4:: - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP - obj_image_anim_end - -gAnimCmd_82509C4:: - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gAnimCmd_82509D4:: - obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP - obj_image_anim_end - -gSpriteAnimTable_82509E4:: - .4byte gAnimCmd_82509A4 - .4byte gAnimCmd_82509B4 - .4byte gAnimCmd_82509C4 - .4byte gAnimCmd_82509D4 - -gSmokescreenImpactSpriteTemplate:: - spr_template 55019, 55019, gOamData_835099C, gSpriteAnimTable_82509E4, NULL, gDummySpriteAffineAnimTable, SpriteCB_DestroySprite - -gSpriteSheet_EnemyShadow:: - obj_tiles gFile_graphics_battle_interface_enemy_mon_shadow_sheet, 0x0080, 55129 - -gOamData_8250A14:: - .4byte 0x40004000, 0x00000c00 - -gSpriteTemplate_EnemyShadow:: - spr_template 55129, 55039, gOamData_8250A14, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCB_SetInvisible diff --git a/include/graphics.h b/include/graphics.h index f26373307..d520741dc 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3687,6 +3687,10 @@ extern const u32 gBattleStatMask8_Pal[]; extern const u32 gBattleStatMask1_Tilemap[]; extern const u32 gBattleStatMask2_Tilemap[]; +extern const u32 gSmokescreenImpactTiles[]; +extern const u32 gSmokescreenImpactPalette[]; +extern const u32 gEnemyMonShadow_Gfx[]; + // battle anim particle gfx extern const u32 gBattleAnimSpriteGfx_Bone[]; extern const u32 gBattleAnimSpriteGfx_Spark[]; diff --git a/ld_script.txt b/ld_script.txt index 7006d3094..e3048c656 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -409,7 +409,7 @@ SECTIONS { src/battle_util.o(.rodata); src/battle_script_commands.o(.rodata); src/battle_controller_player.o(.rodata); - data/battle_anim_smokescreen.o(.rodata); + src/battle_anim_smokescreen.o(.rodata); src/battle_controller_opponent.o(.rodata); src/battle_controller_link_opponent.o(.rodata); src/pokemon.o(.rodata); diff --git a/src/battle_anim_smokescreen.c b/src/battle_anim_smokescreen.c index c1d30a347..821884baa 100644 --- a/src/battle_anim_smokescreen.c +++ b/src/battle_anim_smokescreen.c @@ -1,73 +1,197 @@ #include "global.h" +#include "battle_gfx_sfx_util.h" #include "decompress.h" +#include "graphics.h" #include "util.h" -static void SmokescreenImpact_Callback(struct Sprite *sprite); +#define TAG_SMOKESCREEN 55019 -extern const struct CompressedSpriteSheet gSmokescreenImpactSpriteSheet; -extern const struct CompressedSpritePalette gSmokescreenImpactSpritePalette; -extern const struct SpriteTemplate gSmokescreenImpactSpriteTemplate; +#define PALTAG_SHADOW 55039 +#define GFXTAG_SHADOW 55129 -u8 SmokescreenImpact(s16 x, s16 y, u8 a3) +static void SpriteCB_SmokescreenImpactMain(struct Sprite *); +static void SpriteCB_SmokescreenImpact(struct Sprite *); + +static const struct CompressedSpriteSheet sSmokescreenImpactSpriteSheet = +{ + .data = gSmokescreenImpactTiles, .size = 0x180, .tag = TAG_SMOKESCREEN +}; + +static const struct CompressedSpritePalette sSmokescreenImpactSpritePalette = +{ + .data = gSmokescreenImpactPalette, .tag = TAG_SMOKESCREEN +}; + +static const struct OamData sOamData_SmokescreenImpact = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0 +}; + +static const union AnimCmd sAnim_SmokescreenImpact_0[] = +{ + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(4, 4), + ANIMCMD_FRAME(8, 4), + ANIMCMD_END +}; + +static const union AnimCmd sAnim_SmokescreenImpact_1[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE), + ANIMCMD_FRAME(4, 4, .hFlip = TRUE), + ANIMCMD_FRAME(8, 4, .hFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sAnim_SmokescreenImpact_2[] = +{ + ANIMCMD_FRAME(0, 4, .vFlip = TRUE), + ANIMCMD_FRAME(4, 4, .vFlip = TRUE), + ANIMCMD_FRAME(8, 4, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd sAnim_SmokescreenImpact_3[] = +{ + ANIMCMD_FRAME(0, 4, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(4, 4, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_FRAME(8, 4, .hFlip = TRUE, .vFlip = TRUE), + ANIMCMD_END +}; + +static const union AnimCmd *const sAnims_SmokescreenImpact[] = +{ + sAnim_SmokescreenImpact_0, + sAnim_SmokescreenImpact_1, + sAnim_SmokescreenImpact_2, + sAnim_SmokescreenImpact_3, +}; + +static const struct SpriteTemplate sSmokescreenImpactSpriteTemplate = +{ + .tileTag = TAG_SMOKESCREEN, + .paletteTag = TAG_SMOKESCREEN, + .oam = &sOamData_SmokescreenImpact, + .anims = sAnims_SmokescreenImpact, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SmokescreenImpact +}; + +const struct CompressedSpriteSheet gSpriteSheet_EnemyShadow = +{ + .data = gEnemyMonShadow_Gfx, .size = 0x80, .tag = GFXTAG_SHADOW +}; + +static const struct OamData sOamData_EnemyShadow = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .mosaic = FALSE, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .matrixNum = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 3, + .paletteNum = 0, + .affineParam = 0 +}; + +const struct SpriteTemplate gSpriteTemplate_EnemyShadow = +{ + .tileTag = GFXTAG_SHADOW, + .paletteTag = PALTAG_SHADOW, + .oam = &sOamData_EnemyShadow, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCB_SetInvisible +}; + +#define sActiveSprites data[0] +#define sPersist data[1] + +#define sMainSpriteId data[0] + +u8 SmokescreenImpact(s16 x, s16 y, bool8 persist) { u8 mainSpriteId; u8 spriteId1, spriteId2, spriteId3, spriteId4; struct Sprite *mainSprite; - if (GetSpriteTileStartByTag(gSmokescreenImpactSpriteSheet.tag) == 0xFFFF) + if (GetSpriteTileStartByTag(sSmokescreenImpactSpriteSheet.tag) == 0xFFFF) { - LoadCompressedSpriteSheetUsingHeap(&gSmokescreenImpactSpriteSheet); - LoadCompressedSpritePaletteUsingHeap(&gSmokescreenImpactSpritePalette); + LoadCompressedSpriteSheetUsingHeap(&sSmokescreenImpactSpriteSheet); + LoadCompressedSpritePaletteUsingHeap(&sSmokescreenImpactSpritePalette); } - mainSpriteId = CreateInvisibleSpriteWithCallback(SmokescreenImpact_Callback); + mainSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_SmokescreenImpactMain); mainSprite = &gSprites[mainSpriteId]; - mainSprite->data[1] = a3; + mainSprite->sPersist = persist; - spriteId1 = CreateSprite(&gSmokescreenImpactSpriteTemplate, x - 16, y - 16, 2); - gSprites[spriteId1].data[0] = mainSpriteId; - mainSprite->data[0]++; + // Top left sprite + spriteId1 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y - 16, 2); + gSprites[spriteId1].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; AnimateSprite(&gSprites[spriteId1]); - spriteId2 = CreateSprite(&gSmokescreenImpactSpriteTemplate, x, y - 16, 2); - gSprites[spriteId2].data[0] = mainSpriteId; - mainSprite->data[0]++; + // Top right sprite + spriteId2 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y - 16, 2); + gSprites[spriteId2].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; StartSpriteAnim(&gSprites[spriteId2], 1); AnimateSprite(&gSprites[spriteId2]); - spriteId3 = CreateSprite(&gSmokescreenImpactSpriteTemplate, x - 16, y, 2); - gSprites[spriteId3].data[0] = mainSpriteId; - mainSprite->data[0]++; + // Bottom left sprite + spriteId3 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x - 16, y, 2); + gSprites[spriteId3].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; StartSpriteAnim(&gSprites[spriteId3], 2); AnimateSprite(&gSprites[spriteId3]); - spriteId4 = CreateSprite(&gSmokescreenImpactSpriteTemplate, x, y, 2); - gSprites[spriteId4].data[0] = mainSpriteId; - mainSprite->data[0]++; + // Bottom right sprite + spriteId4 = CreateSprite(&sSmokescreenImpactSpriteTemplate, x, y, 2); + gSprites[spriteId4].sMainSpriteId = mainSpriteId; + mainSprite->sActiveSprites++; StartSpriteAnim(&gSprites[spriteId4], 3); AnimateSprite(&gSprites[spriteId4]); return mainSpriteId; } -static void SmokescreenImpact_Callback(struct Sprite *sprite) +static void SpriteCB_SmokescreenImpactMain(struct Sprite *sprite) { - if (!sprite->data[0]) + if (sprite->sActiveSprites == 0) { - FreeSpriteTilesByTag(gSmokescreenImpactSpriteSheet.tag); - FreeSpritePaletteByTag(gSmokescreenImpactSpritePalette.tag); - if (!sprite->data[1]) + FreeSpriteTilesByTag(sSmokescreenImpactSpriteSheet.tag); + FreeSpritePaletteByTag(sSmokescreenImpactSpritePalette.tag); + if (!sprite->sPersist) DestroySprite(sprite); else sprite->callback = SpriteCallbackDummy; } } -void SpriteCB_DestroySprite(struct Sprite *sprite) +static void SpriteCB_SmokescreenImpact(struct Sprite *sprite) { if (sprite->animEnded) { - gSprites[sprite->data[0]].data[0]--; + gSprites[sprite->sMainSpriteId].sActiveSprites--; DestroySprite(sprite); } } diff --git a/src/graphics.c b/src/graphics.c index b7694f158..85405cc35 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1021,7 +1021,7 @@ const u32 gBattleAnimSpritePal_Protect[] = INCBIN_U32("graphics/battle_anims/spr const u32 gBattleAnimBgPalette_MuddyWater[] = INCBIN_U32("graphics/battle_anims/backgrounds/water_muddy.gbapal.lz"); -const u32 gFile_graphics_battle_interface_enemy_mon_shadow_sheet[] = INCBIN_U32("graphics/battle_interface/enemy_mon_shadow.4bpp.lz"); +const u32 gEnemyMonShadow_Gfx[] = INCBIN_U32("graphics/battle_interface/enemy_mon_shadow.4bpp.lz"); const u32 gFile_graphics_battle_interface_ball_status_bar_sheet[] = INCBIN_U32("graphics/battle_interface/ball_status_bar.4bpp.lz"); From 4e106d86e361d3329874eb01da96c96a588d15f2 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 14:44:26 -0400 Subject: [PATCH 22/38] Sync battle anim - sound tasks --- data/battle_anim_scripts.s | 4 +- src/battle_anim_sound_tasks.c | 89 +++++++++++++++++++++-------------- 2 files changed, 56 insertions(+), 37 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index f456f5cce..d88c65b87 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -891,7 +891,7 @@ Move_TWINEEDLE:: Move_FIRE_BLAST:: loadspritegfx ANIM_TAG_SMALL_EMBER - createsoundtask sub_80DCE10, SE_M_FLAME_WHEEL, SE_M_FLAME_WHEEL2 + createsoundtask SoundTask_FireBlast, SE_M_FLAME_WHEEL, SE_M_FLAME_WHEEL2 call FireBlastRing call FireBlastRing call FireBlastRing @@ -8656,7 +8656,7 @@ Move_HYPER_VOICE:: end HyperVoiceEffect:: - createvisualtask sub_80DD334, 5 + createvisualtask SoundTask_PlayCryWithEcho, 5 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, 1023 createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, 0, 0 createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 diff --git a/src/battle_anim_sound_tasks.c b/src/battle_anim_sound_tasks.c index 4b660fb7a..87dc92b15 100644 --- a/src/battle_anim_sound_tasks.c +++ b/src/battle_anim_sound_tasks.c @@ -6,14 +6,21 @@ #include "constants/battle_anim.h" #include "constants/sound.h" -static void sub_80DCE78(u8 taskId); -static void sub_80DCEE4(u8 taskId); -static void sub_80DCFE8(u8 taskId); -static void sub_80DD270(u8 taskId); -static void sub_80DD390(u8 taskId); -static void sub_80DD4D4(u8 taskId); +static void SoundTask_FireBlast_Step1(u8 taskId); +static void SoundTask_FireBlast_Step2(u8 taskId); +static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId); +static void SoundTask_PlayDoubleCry_Step(u8 taskId); +static void SoundTask_PlayCryWithEcho_Step(u8 taskId); +static void SoundTask_AdjustPanningVar_Step(u8 taskId); -void sub_80DCE10(u8 taskId) +// Loops the specified sound effect and pans from the +// attacker to the target. The second specified sound effect +// is played at the very end. This task is effectively +// hardcoded to the move FIRE_BLAST due to the baked-in +// durations. +// arg 0: looped sound effect +// arg 1: ending sound effect +void SoundTask_FireBlast(u8 taskId) { s8 pan1, pan2, panIncrement; @@ -26,10 +33,10 @@ void sub_80DCE10(u8 taskId) gTasks[taskId].data[3] = pan2; gTasks[taskId].data[4] = panIncrement; gTasks[taskId].data[10] = 10; - gTasks[taskId].func = sub_80DCE78; + gTasks[taskId].func = SoundTask_FireBlast_Step1; } -static void sub_80DCE78(u8 taskId) +static void SoundTask_FireBlast_Step1(u8 taskId) { s16 pan = gTasks[taskId].data[2]; s8 panIncrement = gTasks[taskId].data[4]; @@ -38,7 +45,7 @@ static void sub_80DCE78(u8 taskId) { gTasks[taskId].data[10] = 5; gTasks[taskId].data[11] = 0; - gTasks[taskId].func = sub_80DCEE4; + gTasks[taskId].func = SoundTask_FireBlast_Step2; } else { @@ -52,7 +59,7 @@ static void sub_80DCE78(u8 taskId) } } -static void sub_80DCEE4(u8 taskId) +static void SoundTask_FireBlast_Step2(u8 taskId) { if (++gTasks[taskId].data[10] == 6) { @@ -88,11 +95,11 @@ void SoundTask_LoopSEAdjustPanning(u8 taskId) gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = sourcePan; gTasks[taskId].data[12] = r9; - gTasks[taskId].func = sub_80DCFE8; - sub_80DCFE8(taskId); + gTasks[taskId].func = SoundTask_LoopSEAdjustPanning_Step; + gTasks[taskId].func(taskId); } -static void sub_80DCFE8(u8 taskId) +static void SoundTask_LoopSEAdjustPanning_Step(u8 taskId) { if (gTasks[taskId].data[12]++ == gTasks[taskId].data[6]) { @@ -131,6 +138,7 @@ void SoundTask_PlayCryHighPitch(u8 taskId) battlerId = BATTLE_PARTNER(gBattleAnimAttacker); else battlerId = BATTLE_PARTNER(gBattleAnimTarget); + // Check if battler is visible. if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battlerId)) @@ -182,7 +190,7 @@ void SoundTask_PlayDoubleCry(u8 taskId) PlayCry_ByMode(species, pan, CRY_MODE_GROWL_1); else // DOUBLE_CRY_ROAR PlayCry_ByMode(species, pan, CRY_MODE_ROAR_1); - gTasks[taskId].func = sub_80DD270; + gTasks[taskId].func = SoundTask_PlayDoubleCry_Step; } else { @@ -190,7 +198,7 @@ void SoundTask_PlayDoubleCry(u8 taskId) } } -static void sub_80DD270(u8 taskId) +static void SoundTask_PlayDoubleCry_Step(u8 taskId) { u16 species = gTasks[taskId].data[1]; s8 pan = gTasks[taskId].data[2]; @@ -199,7 +207,7 @@ static void sub_80DD270(u8 taskId) { ++gTasks[taskId].data[9]; } - else if (gTasks[taskId].data[0] == TAIL_SENTINEL) + else if (gTasks[taskId].data[0] == DOUBLE_CRY_GROWL) { if (!IsCryPlaying()) { @@ -207,10 +215,13 @@ static void sub_80DD270(u8 taskId) DestroyAnimVisualTask(taskId); } } - else if (!IsCryPlaying()) + else // DOUBLE_CRY_ROAR { - PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2); - DestroyAnimVisualTask(taskId); + if (!IsCryPlaying()) + { + PlayCry_ByMode(species, pan, CRY_MODE_ROAR_2); + DestroyAnimVisualTask(taskId); + } } } @@ -222,19 +233,21 @@ void SoundTask_WaitForCry(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_80DD334(u8 taskId) +#define tSpecies data[1] +#define tPan data[2] +#define tState data[9] + +void SoundTask_PlayCryWithEcho(u8 taskId) { u16 species; - s8 pan; - - pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); + s8 pan = BattleAnimAdjustPanning(SOUND_PAN_ATTACKER); species = gAnimBattlerSpecies[gBattleAnimAttacker]; - gTasks[taskId].data[1] = species; - gTasks[taskId].data[2] = pan; + gTasks[taskId].tSpecies = species; + gTasks[taskId].tPan = pan; if (species != SPECIES_NONE) { PlayCry_ByMode(species, pan, CRY_MODE_ECHO_START); - gTasks[taskId].func = sub_80DD390; + gTasks[taskId].func = SoundTask_PlayCryWithEcho_Step; } else { @@ -242,23 +255,27 @@ void sub_80DD334(u8 taskId) } } -static void sub_80DD390(u8 taskId) +static void SoundTask_PlayCryWithEcho_Step(u8 taskId) { - if (gTasks[taskId].data[9] < 2) + if (gTasks[taskId].tState < 2) { - ++gTasks[taskId].data[9]; + gTasks[taskId].tState++; } else if (!IsCryPlaying()) { - u16 species = gTasks[taskId].data[1]; - s8 pan = gTasks[taskId].data[2]; + u16 species = gTasks[taskId].tSpecies; + s8 pan = gTasks[taskId].tPan; PlayCry_ByMode(species, pan, CRY_MODE_ECHO_END); DestroyAnimVisualTask(taskId); } } +#undef tSpecies +#undef tPan +#undef tState + void SoundTask_PlaySE1WithPanning(u8 taskId) { u16 songId = gBattleAnimArgs[0]; @@ -277,6 +294,8 @@ void SoundTask_PlaySE2WithPanning(u8 taskId) DestroyAnimVisualTask(taskId); } +// Adjusts panning and assigns it to gAnimCustomPanning. Doesnt play sound. +// Used by Confuse Ray and Will-O-Wisp (see uses of gAnimCustomPanning) void SoundTask_AdjustPanningVar(u8 taskId) { s8 targetPan = gBattleAnimArgs[1]; @@ -292,11 +311,11 @@ void SoundTask_AdjustPanningVar(u8 taskId) gTasks[taskId].data[5] = r9; gTasks[taskId].data[10] = 0; gTasks[taskId].data[11] = sourcePan; - gTasks[taskId].func = sub_80DD4D4; - sub_80DD4D4(taskId); + gTasks[taskId].func = SoundTask_AdjustPanningVar_Step; + gTasks[taskId].func(taskId); } -static void sub_80DD4D4(u8 taskId) +static void SoundTask_AdjustPanningVar_Step(u8 taskId) { u16 oldPan, panIncrement = gTasks[taskId].data[3]; From c0b0e87f688fa89fcf8d41110348e9feddf4b280 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 15:14:30 -0400 Subject: [PATCH 23/38] Sync battle anim - status effects --- data/battle_anim_scripts.s | 4 +- include/graphics.h | 4 +- src/battle_anim_special.c | 4 +- src/battle_anim_status_effects.c | 160 ++++++++++++++++--------------- src/graphics.c | 4 +- 5 files changed, 90 insertions(+), 86 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index d88c65b87..faf540352 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1744,7 +1744,7 @@ Move_DETECT:: createvisualtask AnimTask_BlendSelected, 10, 2, 1, 0, 9, RGB_WHITE delay 18 playsewithpan SE_M_DETECT, 192 - createsprite gSpriteTemplate_83BF480, ANIM_ATTACKER, 13, 20, -20 + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 20, -20 waitforvisualfinish delay 10 createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 9, 0, 0 @@ -7681,7 +7681,7 @@ Move_DISABLE:: monbgprio_28 1 setalpha 8, 8 playsewithpan SE_M_DETECT, 192 - createsprite gSpriteTemplate_83BF480, ANIM_ATTACKER, 13, 24, -16 + createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 24, -16 waitforvisualfinish createvisualtask AnimTask_GrowAndGreyscale, 5, loopsewithpan SE_M_BIND, 63, 15, 4 diff --git a/include/graphics.h b/include/graphics.h index d520741dc..2f0af329a 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4219,8 +4219,8 @@ extern const u32 gBattleAnimSpritePal_WhipHit[]; extern const u32 gBattleAnimSpritePal_BlueRing2[]; // battle anim task -extern const u32 gUnknown_D2EC24_Gfx[]; -extern const u32 gUnknown_D2EC24_Tilemap[]; +extern const u32 gUnusedLevelupAnimationGfx[]; +extern const u32 gUnusedLevelupAnimationTilemap[]; extern const u32 gCureBubblesGfx[]; extern const u32 gCureBubblesPal[]; extern const u32 gCureBubblesTilemap[]; diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c index 677200b90..e7dbe6394 100644 --- a/src/battle_anim_special.c +++ b/src/battle_anim_special.c @@ -442,8 +442,8 @@ UNUSED void AnimTask_UnusedLevelUpHealthBox(u8 taskId) gSprites[spriteId3].callback = SpriteCallbackDummy; gSprites[spriteId4].callback = SpriteCallbackDummy; GetBattleAnimBg1Data(&animBgData); - AnimLoadCompressedBgTilemap(animBgData.bgId, gUnknown_D2EC24_Tilemap); - AnimLoadCompressedBgGfx(animBgData.bgId, gUnknown_D2EC24_Gfx, animBgData.tilesOffset); + AnimLoadCompressedBgTilemap(animBgData.bgId, gUnusedLevelupAnimationTilemap); + AnimLoadCompressedBgGfx(animBgData.bgId, gUnusedLevelupAnimationGfx, animBgData.tilesOffset); LoadCompressedPalette(gCureBubblesPal, animBgData.paletteId << 4, 32); gBattle_BG1_X = -gSprites[spriteId3].x + 32; gBattle_BG1_Y = -gSprites[spriteId3].y - 32; diff --git a/src/battle_anim_status_effects.c b/src/battle_anim_status_effects.c index 3e5ed87fa..8307d1786 100644 --- a/src/battle_anim_status_effects.c +++ b/src/battle_anim_status_effects.c @@ -9,19 +9,17 @@ #include "constants/battle_anim.h" #include "constants/pokemon.h" -// Function Declarations -static u8 sub_8078178(u8 battlerId, bool8 b); -static void sub_80782BC(u8 taskId); -static void sub_80784D8(u8 taskId); -static void sub_8078528(u8 taskId); -static void sub_80785D8(u8 taskId); -static void sub_807862C(u8 taskId); +static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 b); +static void Task_UpdateFlashingCircleImpacts(u8 taskId); +static void AnimTask_FrozenIceCube_Step1(u8 taskId); +static void AnimTask_FrozenIceCube_Step2(u8 taskId); +static void AnimTask_FrozenIceCube_Step3(u8 taskId); +static void AnimTask_FrozenIceCube_Step4(u8 taskId); static void Task_DoStatusAnimation(u8 taskId); -static void sub_807834C(struct Sprite *sprite); -static void sub_8078380(struct Sprite *sprite); +static void AnimFlashingCircleImpact(struct Sprite *sprite); +static void AnimFlashingCircleImpact_Step(struct Sprite *sprite); -// Data -static const union AnimCmd sUnknown_83BF3E0[] = +static const union AnimCmd sAnim_FlickeringOrb[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(4, 3), @@ -30,42 +28,44 @@ static const union AnimCmd sUnknown_83BF3E0[] = ANIMCMD_JUMP(0) }; -static const union AnimCmd *const sSpriteAnimTable_83BF3F4[] = +static const union AnimCmd *const sAnims_FlickeringOrb[] = { - sUnknown_83BF3E0 + sAnim_FlickeringOrb }; -const struct SpriteTemplate gSpriteTemplate_83BF3F8 = +// Unused +static const struct SpriteTemplate sFlickeringOrbSpriteTemplate = { .tileTag = ANIM_TAG_ORB, .paletteTag = ANIM_TAG_ORB, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sSpriteAnimTable_83BF3F4, + .anims = sAnims_FlickeringOrb, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimTranslateLinearAndFlicker, }; -const struct SpriteTemplate gSpriteTemplate_83BF410 = +// Unused +static const struct SpriteTemplate sFlickeringOrbFlippedSpriteTemplate = { .tileTag = ANIM_TAG_ORB, .paletteTag = ANIM_TAG_ORB, .oam = &gOamData_AffineOff_ObjNormal_16x16, - .anims = sSpriteAnimTable_83BF3F4, + .anims = sAnims_FlickeringOrb, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimTranslateLinearAndFlicker_Flipped, }; -static const union AnimCmd sUnknown_83BF428[] = +static const union AnimCmd sAnim_WeatherBallNormal[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const sSpriteAnimTable_83BF430[] = +static const union AnimCmd *const sAnims_WeatherBallNormal[] = { - sUnknown_83BF428 + sAnim_WeatherBallNormal }; const struct SpriteTemplate gWeatherBallUpSpriteTemplate = @@ -73,7 +73,7 @@ const struct SpriteTemplate gWeatherBallUpSpriteTemplate = .tileTag = ANIM_TAG_WEATHER_BALL, .paletteTag = ANIM_TAG_WEATHER_BALL, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sSpriteAnimTable_83BF430, + .anims = sAnims_WeatherBallNormal, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimWeatherBallUp, @@ -84,13 +84,13 @@ const struct SpriteTemplate gWeatherBallNormalDownSpriteTemplate = .tileTag = ANIM_TAG_WEATHER_BALL, .paletteTag = ANIM_TAG_WEATHER_BALL, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sSpriteAnimTable_83BF430, + .anims = sAnims_WeatherBallNormal, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimWeatherBallDown, }; -static const union AnimCmd sUnknown_83BF464[] = +static const union AnimCmd sAnim_SpinningSparkle[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(16, 3), @@ -100,23 +100,24 @@ static const union AnimCmd sUnknown_83BF464[] = ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_83BF47C[] = +static const union AnimCmd *const sAnims_SpinningSparkle[] = { - sUnknown_83BF464 + sAnim_SpinningSparkle }; -const struct SpriteTemplate gSpriteTemplate_83BF480 = +const struct SpriteTemplate gSpinningSparkleSpriteTemplate = { .tileTag = ANIM_TAG_SPARKLE_4, .paletteTag = ANIM_TAG_SPARKLE_4, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sSpriteAnimTable_83BF47C, + .anims = sAnims_SpinningSparkle, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimSpinningSparkle, }; -const struct SpriteTemplate gSpriteTemplate_83BF498 = +// Unused +static const struct SpriteTemplate sFlickeringFootSpriteTemplate = { .tileTag = ANIM_TAG_MONSTER_FOOT, .paletteTag = ANIM_TAG_MONSTER_FOOT, @@ -127,92 +128,95 @@ const struct SpriteTemplate gSpriteTemplate_83BF498 = .callback = AnimTranslateLinearAndFlicker, }; -static const union AnimCmd sUnknown_83BF4B0[] = +static const union AnimCmd sAnim_FlickeringImpact_0[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_JUMP(0) }; -static const union AnimCmd sUnknown_83BF4B8[] = +static const union AnimCmd sAnim_FlickeringImpact_1[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_JUMP(0) }; -static const union AnimCmd sUnknown_83BF4C0[] = +static const union AnimCmd sAnim_FlickeringImpact_2[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const sSpriteAniimTable_83BF4C8[] = +static const union AnimCmd *const sAnims_FlickeringImpact[] = { - sUnknown_83BF4B0, - sUnknown_83BF4B8, - sUnknown_83BF4C0 + sAnim_FlickeringImpact_0, + sAnim_FlickeringImpact_1, + sAnim_FlickeringImpact_2 }; -const struct SpriteTemplate gSpriteTemplate_83BF4D4 = +// Unused +static const struct SpriteTemplate sFlickeringImpactSpriteTemplate = { .tileTag = ANIM_TAG_IMPACT, .paletteTag = ANIM_TAG_IMPACT, .oam = &gOamData_AffineOff_ObjNormal_32x32, - .anims = sSpriteAniimTable_83BF4C8, + .anims = sAnims_FlickeringImpact, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = AnimTranslateLinearAndFlicker, }; -static const union AnimCmd sUnknown_83BF4EC[] = +static const union AnimCmd sAnim_FlickeringShrinkOrb[] = { ANIMCMD_FRAME(0, 15), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const sSpriteAnimTable_83BF4F4[] = +static const union AnimCmd *const sAnims_FlickeringShrinkOrb[] = { - sUnknown_83BF4EC + sAnim_FlickeringShrinkOrb }; -static const union AffineAnimCmd sUnknown_83BF4F8[] = +static const union AffineAnimCmd sAffineAnim_FlickeringShrinkOrb[] = { AFFINEANIMCMD_FRAME(96, 96, 0, 0), AFFINEANIMCMD_FRAME(2, 2, 0, 1), AFFINEANIMCMD_JUMP(1) }; -static const union AffineAnimCmd *const sSpriteAffineAnimTable_83BF510[] = +static const union AffineAnimCmd *const sAffineAnims_FlickeringShrinkOrb[] = { - sUnknown_83BF4F8 + sAffineAnim_FlickeringShrinkOrb }; -const struct SpriteTemplate gSpriteTemplate_83BF514 = +// Unused +static const struct SpriteTemplate sFlickeringShrinkOrbSpriteTemplate = { .tileTag = ANIM_TAG_ORB, .paletteTag = ANIM_TAG_ORB, .oam = &gOamData_AffineDouble_ObjNormal_16x16, - .anims = sSpriteAnimTable_83BF4F4, + .anims = sAnims_FlickeringShrinkOrb, .images = NULL, - .affineAnims = sSpriteAffineAnimTable_83BF510, + .affineAnims = sAffineAnims_FlickeringShrinkOrb, .callback = AnimTranslateLinearAndFlicker_Flipped, }; -static const u8 sUnknown_83BF52C[] = _("TASK OVER\nタスクがオ-バ-しました"); +// Presumably some debug text +static const u8 sText_TaskOver[] = _("TASK OVER\nタスクがオ-バ-しました"); -static const struct Subsprite sSubsprites_83BF544[] = +static const struct Subsprite sFrozenIceCubeSubsprites[] = { - {.x = -16, .y = -16, .shape = SPRITE_SHAPE(8x8), .size = 3, .tileOffset = 0, .priority = 2}, - {.x = -16, .y = 48, .shape = SPRITE_SHAPE(16x8), .size = 3, .tileOffset = 64, .priority = 2}, - {.x = 48, .y = -16, .shape = SPRITE_SHAPE(8x16), .size = 3, .tileOffset = 96, .priority = 2}, - {.x = 48, .y = 48, .shape = SPRITE_SHAPE(8x8), .size = 2, .tileOffset = 128, .priority = 2}, + {.x = -16, .y = -16, .shape = SPRITE_SHAPE(64x64), .size = SPRITE_SIZE(64x64), .tileOffset = 0, .priority = 2}, + {.x = -16, .y = 48, .shape = SPRITE_SHAPE(64x32), .size = SPRITE_SIZE(64x32), .tileOffset = 64, .priority = 2}, + {.x = 48, .y = -16, .shape = SPRITE_SHAPE(32x64), .size = SPRITE_SIZE(32x64), .tileOffset = 96, .priority = 2}, + {.x = 48, .y = 48, .shape = SPRITE_SHAPE(32x32), .size = SPRITE_SIZE(32x32), .tileOffset = 128, .priority = 2}, }; -static const struct SubspriteTable sUnknown_83BF554[] = +static const struct SubspriteTable sFrozenIceCubeSubspriteTable[] = { - {NELEMS(sSubsprites_83BF544), sSubsprites_83BF544}, + {NELEMS(sFrozenIceCubeSubsprites), sFrozenIceCubeSubsprites}, }; -static const struct SpriteTemplate sUnknown_83BF55C = +static const struct SpriteTemplate sFrozenIceCubeSpriteTemplate = { .tileTag = ANIM_TAG_ICE_CUBE, .paletteTag = ANIM_TAG_ICE_CUBE, @@ -223,7 +227,7 @@ static const struct SpriteTemplate sUnknown_83BF55C = .callback = SpriteCallbackDummy, }; -static const struct SpriteTemplate sUnknown_83BF574 = +static const struct SpriteTemplate sFlashingCircleImpactSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_IMPACT, .paletteTag = ANIM_TAG_CIRCLE_IMPACT, @@ -231,14 +235,14 @@ static const struct SpriteTemplate sUnknown_83BF574 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_807834C, + .callback = AnimFlashingCircleImpact, }; -// Functions -static u8 sub_8078178(u8 battlerId, bool8 b) +// Unused +static u8 Task_FlashingCircleImpacts(u8 battlerId, bool8 b) { u8 battlerSpriteId = gBattlerSpriteIds[battlerId]; - u8 taskId = CreateTask(sub_80782BC, 10); + u8 taskId = CreateTask(Task_UpdateFlashingCircleImpacts, 10); u8 spriteId2; u8 i; @@ -250,7 +254,7 @@ static u8 sub_8078178(u8 battlerId, bool8 b) gTasks[taskId].data[1] = RGB_RED; for (i = 0; i < 10; i++) { - spriteId2 = CreateSprite(&sUnknown_83BF574, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y + 32, 0); + spriteId2 = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y + 32, 0); gSprites[spriteId2].data[0] = i * 51; gSprites[spriteId2].data[1] = -256; gSprites[spriteId2].invisible = TRUE; @@ -263,7 +267,7 @@ static u8 sub_8078178(u8 battlerId, bool8 b) gTasks[taskId].data[1] = RGB_BLUE; for (i = 0; i < 10; i++) { - spriteId2 = CreateSprite(&sUnknown_83BF574, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y - 32, 0); + spriteId2 = CreateSprite(&sFlashingCircleImpactSpriteTemplate, gSprites[battlerSpriteId].x, gSprites[battlerSpriteId].y - 32, 0); gSprites[spriteId2].data[0] = i * 51; gSprites[spriteId2].data[1] = 256; gSprites[spriteId2].invisible = TRUE; @@ -275,7 +279,7 @@ static u8 sub_8078178(u8 battlerId, bool8 b) return taskId; } -static void sub_80782BC(u8 taskId) +static void Task_UpdateFlashingCircleImpacts(u8 taskId) { if (gTasks[taskId].data[2] == 2) { @@ -308,13 +312,13 @@ static void sub_80782BC(u8 taskId) } } -static void sub_807834C(struct Sprite *sprite) +static void AnimFlashingCircleImpact(struct Sprite *sprite) { if (sprite->data[6] == 0) { sprite->invisible = FALSE; - sprite->callback = sub_8078380; - sub_8078380(sprite); + sprite->callback = AnimFlashingCircleImpact_Step; + sprite->callback(sprite); } else { @@ -322,7 +326,7 @@ static void sub_807834C(struct Sprite *sprite) } } -static void sub_8078380(struct Sprite *sprite) +static void AnimFlashingCircleImpact_Step(struct Sprite *sprite) { sprite->x2 = Cos(sprite->data[0], 32); sprite->y2 = Sin(sprite->data[0], 8); @@ -354,21 +358,21 @@ void AnimTask_FrozenIceCube(u8 taskId) SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); - spriteId = CreateSprite(&sUnknown_83BF55C, x, y, 4); - if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == TAG_NONE) + spriteId = CreateSprite(&sFrozenIceCubeSpriteTemplate, x, y, 4); + if (GetSpriteTileStartByTag(ANIM_TAG_ICE_CUBE) == 0xFFFF) gSprites[spriteId].invisible = TRUE; - SetSubspriteTables(&gSprites[spriteId], sUnknown_83BF554); + SetSubspriteTables(&gSprites[spriteId], sFrozenIceCubeSubspriteTable); gTasks[taskId].data[15] = spriteId; - gTasks[taskId].func = sub_80784D8; + gTasks[taskId].func = AnimTask_FrozenIceCube_Step1; } -static void sub_80784D8(u8 taskId) +static void AnimTask_FrozenIceCube_Step1(u8 taskId) { gTasks[taskId].data[1]++; if (gTasks[taskId].data[1] == 10) { - gTasks[taskId].func = sub_8078528; + gTasks[taskId].func = AnimTask_FrozenIceCube_Step2; gTasks[taskId].data[1] = 0; } else @@ -379,7 +383,7 @@ static void sub_80784D8(u8 taskId) } } -static void sub_8078528(u8 taskId) +static void AnimTask_FrozenIceCube_Step2(u8 taskId) { u8 palIndex = IndexOfSpritePaletteTag(ANIM_TAG_ICE_CUBE); @@ -405,19 +409,19 @@ static void sub_8078528(u8 taskId) if (gTasks[taskId].data[4] == 2) { gTasks[taskId].data[1] = 9; - gTasks[taskId].func = sub_80785D8; + gTasks[taskId].func = AnimTask_FrozenIceCube_Step3; } } } } } -static void sub_80785D8(u8 taskId) +static void AnimTask_FrozenIceCube_Step3(u8 taskId) { gTasks[taskId].data[1]--; if (gTasks[taskId].data[1] == -1) { - gTasks[taskId].func = sub_807862C; + gTasks[taskId].func = AnimTask_FrozenIceCube_Step4; gTasks[taskId].data[1] = 0; } else @@ -428,7 +432,7 @@ static void sub_80785D8(u8 taskId) } } -static void sub_807862C(u8 taskId) +static void AnimTask_FrozenIceCube_Step4(u8 taskId) { gTasks[taskId].data[1]++; if (gTasks[taskId].data[1] == 37) diff --git a/src/graphics.c b/src/graphics.c index 85405cc35..705288081 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -915,8 +915,8 @@ const u32 gBattleAnimSpriteGfx_TagHand[] = INCBIN_U32("graphics/battle_anims/spr const u32 gBattleAnimSpriteGfx_NoiseLine[] = INCBIN_U32("graphics/battle_anims/sprites/noise_line.4bpp.lz"); -const u32 gUnknown_D2EC24_Gfx[] = INCBIN_U32("graphics/battle_anims/masks/unknown_D2EC24.4bpp.lz"); -const u32 gUnknown_D2EC24_Tilemap[] = INCBIN_U32("graphics/battle_anims/masks/unknown_D2EC24.bin.lz"); +const u32 gUnusedLevelupAnimationGfx[] = INCBIN_U32("graphics/battle_anims/masks/unknown_D2EC24.4bpp.lz"); +const u32 gUnusedLevelupAnimationTilemap[] = INCBIN_U32("graphics/battle_anims/masks/unknown_D2EC24.bin.lz"); const u32 gBattleAnimSpriteGfx_SmallRedEye[] = INCBIN_U32("graphics/battle_anims/sprites/small_red_eye.4bpp.lz"); const u32 gBattleAnimSpritePal_SmallRedEye[] = INCBIN_U32("graphics/battle_anims/sprites/small_red_eye.gbapal.lz"); From 5813cb43c2e75e915eb03c35a124ae3a5f5fb2c3 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 17 Aug 2022 15:57:46 -0400 Subject: [PATCH 24/38] Sync battle anim.c --- data/battle_anim_scripts.s | 16 +- include/constants/battle_anim.h | 4 +- include/graphics.h | 4 +- src/battle_anim.c | 1920 +++---------------------------- src/battle_anim_utility_funcs.c | 95 +- src/battle_anim_water.c | 51 +- src/data/battle_anim.h | 1625 ++++++++++++++++++++++++++ src/graphics.c | 4 +- 8 files changed, 1859 insertions(+), 1860 deletions(-) create mode 100644 src/data/battle_anim.h diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index faf540352..85691c3a6 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -2783,7 +2783,7 @@ Move_AGILITY:: monbg ANIM_ATK_PARTNER setalpha 12, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 4, 4 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 7, 10 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 10 playsewithpan SE_M_DOUBLE_TEAM, 192 delay 12 playsewithpan SE_M_DOUBLE_TEAM, 192 @@ -2805,7 +2805,7 @@ Move_QUICK_ATTACK:: monbg ANIM_ATK_PARTNER setalpha 12, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 7, 3 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3 playsewithpan SE_M_JUMP_KICK, 192 delay 4 createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 @@ -4438,7 +4438,7 @@ Move_AERIAL_ACE:: monbg 1 setalpha 12, 8 createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 7, 3 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3 createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 playsewithpan SE_M_RAZOR_WIND2, 192 delay 5 @@ -7806,7 +7806,7 @@ CurseStats:: CurseStats1:: playsewithpan SE_M_DRAGON_RAGE, 192 - createvisualtask AnimTask_SetUpCurseBackground, 5, + createvisualtask AnimTask_DrawFallingWhiteLinesOnAttacker, 5, createvisualtask AnimTask_BlendColorCycle, 5, 2, 4, 2, 0, 10, 31 return @@ -9167,13 +9167,13 @@ ReturnStrongest:: createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 waitforvisualfinish delay 2 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 0 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 waitforvisualfinish createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 2, 0 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 @@ -9181,7 +9181,7 @@ ReturnStrongest:: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 waitforvisualfinish call ReturnStrongestHit call ReturnStrongestHit @@ -9209,7 +9209,7 @@ ReturnStrongestHit:: createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 - createvisualtask AnimTask_CloneBattlerSpriteWithBlend, 2, 0, 4, 5, 1 + createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 waitforvisualfinish return diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 3ea251966..57d7c4abd 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -276,7 +276,7 @@ #define ANIM_TAG_GREEN_SPIKE (ANIM_SPRITES_START + 266) #define ANIM_TAG_WHITE_CIRCLE_OF_LIGHT (ANIM_SPRITES_START + 267) #define ANIM_TAG_GLOWY_BLUE_ORB (ANIM_SPRITES_START + 268) -#define ANIM_TAG_SAFARI_BAIT (ANIM_SPRITES_START + 269) +#define ANIM_TAG_SAFARI_BAIT (ANIM_SPRITES_START + 269) #define ANIM_TAG_WHITE_FEATHER (ANIM_SPRITES_START + 270) #define ANIM_TAG_SPARKLE_6 (ANIM_SPRITES_START + 271) #define ANIM_TAG_SPLASH (ANIM_SPRITES_START + 272) @@ -318,7 +318,7 @@ #define SOUND_PAN_TARGET 63 // move background ids -#define BG_DARK_ 0 // the same as BG_DARK but is unused +#define BG_NONE 0 // the same as BG_DARK #define BG_DARK 1 #define BG_GHOST 2 #define BG_PSYCHIC 3 diff --git a/include/graphics.h b/include/graphics.h index 2f0af329a..78efad0cf 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3912,7 +3912,7 @@ extern const u32 gBattleAnimSpriteGfx_Pokeball[]; extern const u32 gBattleAnimSpriteGfx_Spotlight[]; extern const u32 gBattleAnimSpriteGfx_LetterZ[]; extern const u32 gBattleAnimSpriteGfx_RapidSpin[]; -extern const u32 gBattleAnimSpriteGfx_TriForceTriangle[]; +extern const u32 gBattleAnimSpriteGfx_TriAttackTriangle[]; extern const u32 gBattleAnimSpriteGfx_WispOrb[]; extern const u32 gBattleAnimSpriteGfx_WispFire[]; extern const u32 gBattleAnimSpriteGfx_GoldStars[]; @@ -4165,7 +4165,7 @@ extern const u32 gBattleAnimSpritePal_JaggedMusicNote[]; extern const u32 gBattleAnimSpritePal_Pokeball[]; extern const u32 gBattleAnimSpritePal_LetterZ[]; extern const u32 gBattleAnimSpritePal_RapidSpin[]; -extern const u32 gBattleAnimSpritePal_TriForceTriangle[]; +extern const u32 gBattleAnimSpritePal_TriAttackTriangle[]; extern const u32 gBattleAnimSpritePal_WispOrb[]; extern const u32 gBattleAnimSpritePal_GoldStars[]; extern const u32 gBattleAnimSpritePal_EclipsingOrb[]; diff --git a/src/battle_anim.c b/src/battle_anim.c index 855059a32..0fb2dfbf9 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -13,7 +13,6 @@ #define ANIM_SPRITE_INDEX_COUNT 8 -// RAM EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL; EWRAM_DATA static const u8 *sBattleAnimScriptRetAddr = NULL; EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL; @@ -32,13 +31,12 @@ EWRAM_DATA static u16 sSoundAnimFramesToWait = 0; EWRAM_DATA static u8 sMonAnimTaskIdArray[2] = {0}; EWRAM_DATA u8 gAnimMoveTurn = 0; EWRAM_DATA static u8 sAnimBackgroundFadeState = 0; -EWRAM_DATA static u16 sAnimMoveIndex = 0; +EWRAM_DATA static u16 sAnimMoveIndex = 0; // Set but unused. EWRAM_DATA u8 gBattleAnimAttacker = 0; EWRAM_DATA u8 gBattleAnimTarget = 0; EWRAM_DATA u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gAnimCustomPanning = 0; -// Function Declarations static void AddSpriteIndex(u16 index); static void ClearSpriteIndex(u16 index); static void WaitAnimFrameCount(void); @@ -53,1731 +51,107 @@ static void Task_LoopAndPlaySE(u8 taskId); static void Task_WaitAndPlaySE(u8 taskId); static void sub_807331C(u8 taskId); -static void ScriptCmd_loadspritegfx(void); -static void ScriptCmd_unloadspritegfx(void); -static void ScriptCmd_createsprite(void); -static void ScriptCmd_createvisualtask(void); -static void ScriptCmd_delay(void); -static void ScriptCmd_waitforvisualfinish(void); -static void ScriptCmd_hang1(void); -static void ScriptCmd_hang2(void); -static void ScriptCmd_end(void); -static void ScriptCmd_playse(void); -static void ScriptCmd_monbg(void); -static void ScriptCmd_clearmonbg(void); -static void ScriptCmd_setalpha(void); -static void ScriptCmd_blendoff(void); -static void ScriptCmd_call(void); -static void ScriptCmd_return(void); -static void ScriptCmd_setarg(void); -static void ScriptCmd_choosetwoturnanim(void); -static void ScriptCmd_jumpifmoveturn(void); -static void ScriptCmd_goto(void); -static void ScriptCmd_fadetobg(void); -static void ScriptCmd_restorebg(void); -static void ScriptCmd_waitbgfadeout(void); -static void ScriptCmd_waitbgfadein(void); -static void ScriptCmd_changebg(void); -static void ScriptCmd_playsewithpan(void); -static void ScriptCmd_setpan(void); -static void ScriptCmd_panse_1B(void); -static void ScriptCmd_loopsewithpan(void); -static void ScriptCmd_waitplaysewithpan(void); -static void ScriptCmd_setbldcnt(void); -static void ScriptCmd_createsoundtask(void); -static void ScriptCmd_waitsound(void); -static void ScriptCmd_jumpargeq(void); -static void ScriptCmd_monbg_22(void); -static void ScriptCmd_clearmonbg_23(void); -static void ScriptCmd_jumpifcontest(void); -static void ScriptCmd_fadetobgfromset(void); -static void ScriptCmd_panse_26(void); -static void ScriptCmd_panse_27(void); -static void ScriptCmd_monbgprio_28(void); -static void ScriptCmd_monbgprio_29(void); -static void ScriptCmd_monbgprio_2A(void); -static void ScriptCmd_invisible(void); -static void ScriptCmd_visible(void); -static void ScriptCmd_doublebattle_2D(void); -static void ScriptCmd_doublebattle_2E(void); -static void ScriptCmd_stopsound(void); - -// Data -const struct OamData gOamData_AffineOff_ObjNormal_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjNormal_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjNormal_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjNormal_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_NORMAL, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineOff_ObjBlend_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_OFF, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineNormal_ObjBlend_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_NORMAL, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_8x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x8), - .x = 0, - .size = SPRITE_SIZE(8x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_16x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x16), - .x = 0, - .size = SPRITE_SIZE(16x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_32x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x32), - .x = 0, - .size = SPRITE_SIZE(32x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_64x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x64), - .x = 0, - .size = SPRITE_SIZE(64x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_16x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x8), - .x = 0, - .size = SPRITE_SIZE(16x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_32x8 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x8), - .x = 0, - .size = SPRITE_SIZE(32x8), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_32x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x16), - .x = 0, - .size = SPRITE_SIZE(32x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_64x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(64x32), - .x = 0, - .size = SPRITE_SIZE(64x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_8x16 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x16), - .x = 0, - .size = SPRITE_SIZE(8x16), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_8x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(8x32), - .x = 0, - .size = SPRITE_SIZE(8x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_16x32 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(16x32), - .x = 0, - .size = SPRITE_SIZE(16x32), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct OamData gOamData_AffineDouble_ObjBlend_32x64 = -{ - .y = 0, - .affineMode = ST_OAM_AFFINE_DOUBLE, - .objMode = ST_OAM_OBJ_BLEND, - .bpp = ST_OAM_4BPP, - .shape = SPRITE_SHAPE(32x64), - .x = 0, - .size = SPRITE_SIZE(32x64), - .tileNum = 0, - .priority = 2, - .paletteNum = 0, -}; - -const struct CompressedSpriteSheet gBattleAnimPicTable[] = -{ - {gBattleAnimSpriteGfx_Bone, 0x0200, ANIM_TAG_BONE}, - {gBattleAnimSpriteGfx_Spark, 0x0300, ANIM_TAG_SPARK}, - {gBattleAnimSpriteGfx_Pencil, 0x0200, ANIM_TAG_PENCIL}, - {gBattleAnimSpriteGfx_AirWave, 0x0100, ANIM_TAG_AIR_WAVE}, - {gBattleAnimSpriteGfx_Orb, 0x0200, ANIM_TAG_ORB}, - {gBattleAnimSpriteGfx_Sword, 0x0400, ANIM_TAG_SWORD}, - {gBattleAnimSpriteGfx_Seed, 0x0180, ANIM_TAG_SEED}, - {gBattleAnimSpriteGfx_Explosion6, 0x0800, ANIM_TAG_EXPLOSION_6}, - {gBattleAnimSpriteGfx_PinkOrb, 0x0020, ANIM_TAG_PINK_ORB}, - {gBattleAnimSpriteGfx_Gust, 0x0400, ANIM_TAG_GUST}, - {gBattleAnimSpriteGfx_IceCube, 0x1200, ANIM_TAG_ICE_CUBE}, - {gBattleAnimSpriteGfx_Spark2, 0x0180, ANIM_TAG_SPARK_2}, - {gBattleAnimSpriteGfx_Orange, 0x0080, ANIM_TAG_ORANGE}, - {gBattleAnimSpriteGfx_YellowBall, 0x0080, ANIM_TAG_YELLOW_BALL}, - {gBattleAnimSpriteGfx_LockOn, 0x0280, ANIM_TAG_LOCK_ON}, - {gBattleAnimSpriteGfx_TiedBag, 0x0080, ANIM_TAG_TIED_BAG}, - {gBattleAnimSpriteGfx_BlackSmoke, 0x0100, ANIM_TAG_BLACK_SMOKE}, - {gBattleAnimSpriteGfx_BlackBall, 0x0020, ANIM_TAG_BLACK_BALL}, - {gBattleAnimSpriteGfx_Conversion, 0x0080, ANIM_TAG_CONVERSION}, - {gBattleAnimSpriteGfx_Glass, 0x0400, ANIM_TAG_GLASS}, - {gBattleAnimSpriteGfx_HornHit, 0x0200, ANIM_TAG_HORN_HIT}, - {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT}, - {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT_2}, - {gBattleAnimSpriteGfx_BlueShards, 0x0380, ANIM_TAG_BLUE_SHARDS}, - {gBattleAnimSpriteGfx_ClosingEye, 0x0300, ANIM_TAG_CLOSING_EYE}, - {gBattleAnimSpriteGfx_WavingHand, 0x0A00, ANIM_TAG_WAVING_HAND}, - {gBattleAnimSpriteGfx_HitDuplicate, 0x0A00, ANIM_TAG_HIT_DUPLICATE}, - {gBattleAnimSpriteGfx_Leer, 0x0A00, ANIM_TAG_LEER}, - {gBattleAnimSpriteGfx_BlueBurst, 0x0A00, ANIM_TAG_BLUE_BURST}, - {gBattleAnimSpriteGfx_SmallEmber, 0x0A00, ANIM_TAG_SMALL_EMBER}, - {gBattleAnimSpriteGfx_GraySmoke, 0x0A00, ANIM_TAG_GRAY_SMOKE}, - {gBattleAnimSpriteGfx_BlueStar, 0x0E00, ANIM_TAG_BLUE_STAR}, - {gBattleAnimSpriteGfx_BubbleBurst, 0x0380, ANIM_TAG_BUBBLE_BURST}, - {gBattleAnimSpriteGfx_Fire, 0x1000, ANIM_TAG_FIRE}, - {gBattleAnimSpriteGfx_SpinningFire, 0x0800, ANIM_TAG_SPINNING_FIRE}, - {gBattleAnimSpriteGfx_FirePlume, 0x0A00, ANIM_TAG_FIRE_PLUME}, - {gBattleAnimSpriteGfx_Lightning2, 0x0800, ANIM_TAG_LIGHTNING_2}, - {gBattleAnimSpriteGfx_Lightning, 0x0A00, ANIM_TAG_LIGHTNING}, - {gBattleAnimSpriteGfx_ClawSlash2, 0x0A00, ANIM_TAG_CLAW_SLASH_2}, - {gBattleAnimSpriteGfx_ClawSlash, 0x0A00, ANIM_TAG_CLAW_SLASH}, - {gBattleAnimSpriteGfx_Scratch3, 0x0A00, ANIM_TAG_SCRATCH_3}, - {gBattleAnimSpriteGfx_Scratch2, 0x0A00, ANIM_TAG_SCRATCH_2}, - {gBattleAnimSpriteGfx_BubbleBurst2, 0x0A00, ANIM_TAG_BUBBLE_BURST_2}, - {gBattleAnimSpriteGfx_IceChunk, 0x0A00, ANIM_TAG_ICE_CHUNK}, - {gBattleAnimSpriteGfx_Glass2, 0x0A00, ANIM_TAG_GLASS_2}, - {gBattleAnimSpriteGfx_PinkHeart2, 0x0A00, ANIM_TAG_PINK_HEART_2}, - {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP}, - {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP_2}, - {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_1}, - {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_2}, - {gBattleAnimSpriteGfx_HumanoidFoot, 0x0200, ANIM_TAG_HUMANOID_FOOT}, - {gBattleAnimSpriteGfx_MonsterFoot, 0x0200, ANIM_TAG_MONSTER_FOOT}, - {gBattleAnimSpriteGfx_HumanoidHand, 0x0200, ANIM_TAG_HUMANOID_HAND}, - {gBattleAnimSpriteGfx_NoiseLine, 0x0800, ANIM_TAG_NOISE_LINE}, - {gBattleAnimSpriteGfx_YellowUnk, 0x0080, ANIM_TAG_YELLOW_UNK}, - {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST}, - {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT}, - {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING}, - {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS}, - {gBattleAnimSpriteGfx_Z, 0x0100, ANIM_TAG_Z}, - {gBattleAnimSpriteGfx_YellowUnk2, 0x0040, ANIM_TAG_YELLOW_UNK_2}, - {gBattleAnimSpriteGfx_AirSlash, 0x0180, ANIM_TAG_AIR_SLASH}, - {gBattleAnimSpriteGfx_SpinningGreenOrbs, 0x0800, ANIM_TAG_SPINNING_GREEN_ORBS}, - {gBattleAnimSpriteGfx_Leaf, 0x0480, ANIM_TAG_LEAF}, - {gBattleAnimSpriteGfx_Finger, 0x0200, ANIM_TAG_FINGER}, - {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POISON_POWDER}, - {gBattleAnimSpriteGfx_BrownTriangle, 0x0100, ANIM_TAG_BROWN_TRIANGLE}, - {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_SLEEP_POWDER}, - {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_STUN_SPORE}, - {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POWDER}, - {gBattleAnimSpriteGfx_Sparkle3, 0x0200, ANIM_TAG_SPARKLE_3}, - {gBattleAnimSpriteGfx_Sparkle4, 0x0A00, ANIM_TAG_SPARKLE_4}, - {gBattleAnimSpriteGfx_MusicNotes, 0x0300, ANIM_TAG_MUSIC_NOTES}, - {gBattleAnimSpriteGfx_Duck, 0x0180, ANIM_TAG_DUCK}, - {gBattleAnimSpriteGfx_MudSand, 0x00A0, ANIM_TAG_MUD_SAND}, - {gBattleAnimSpriteGfx_Alert, 0x0700, ANIM_TAG_ALERT}, - {gBattleAnimSpriteGfx_BlueFlames, 0x0400, ANIM_TAG_BLUE_FLAMES}, - {gBattleAnimSpriteGfx_BlueFlames2, 0x0200, ANIM_TAG_BLUE_FLAMES_2}, - {gBattleAnimSpriteGfx_Shock4, 0x0300, ANIM_TAG_SHOCK_4}, - {gBattleAnimSpriteGfx_Shock, 0x0C00, ANIM_TAG_SHOCK}, - {gBattleAnimSpriteGfx_Bell2, 0x0A00, ANIM_TAG_BELL_2}, - {gBattleAnimSpriteGfx_PinkGlove, 0x0080, ANIM_TAG_PINK_GLOVE}, - {gBattleAnimSpriteGfx_BlueLines, 0x0040, ANIM_TAG_BLUE_LINES}, - {gBattleAnimSpriteGfx_Impact3, 0x0E00, ANIM_TAG_IMPACT_3}, - {gBattleAnimSpriteGfx_Impact2, 0x0E00, ANIM_TAG_IMPACT_2}, - {gBattleAnimSpriteGfx_Reticle, 0x0280, ANIM_TAG_RETICLE}, - {gBattleAnimSpriteGfx_Breath, 0x0200, ANIM_TAG_BREATH}, - {gBattleAnimSpriteGfx_Anger, 0x0080, ANIM_TAG_ANGER}, - {gBattleAnimSpriteGfx_Snowball, 0x00C0, ANIM_TAG_SNOWBALL}, - {gBattleAnimSpriteGfx_Vine, 0x0A00, ANIM_TAG_VINE}, - {gBattleAnimSpriteGfx_Sword2, 0x0200, ANIM_TAG_SWORD_2}, - {gBattleAnimSpriteGfx_Clapping, 0x0180, ANIM_TAG_CLAPPING}, - {gBattleAnimSpriteGfx_RedTube, 0x0080, ANIM_TAG_RED_TUBE}, - {gBattleAnimSpriteGfx_Amnesia, 0x1000, ANIM_TAG_AMNESIA}, - {gBattleAnimSpriteGfx_String2, 0x0A00, ANIM_TAG_STRING_2}, - {gBattleAnimSpriteGfx_Pencil2, 0x0180, ANIM_TAG_PENCIL_2}, - {gBattleAnimSpriteGfx_Petal, 0x0380, ANIM_TAG_PETAL}, - {gBattleAnimSpriteGfx_BentSpoon, 0x0C00, ANIM_TAG_BENT_SPOON}, - {gBattleAnimSpriteGfx_Web, 0x0200, ANIM_TAG_WEB}, - {gBattleAnimSpriteGfx_MilkBottle, 0x0200, ANIM_TAG_MILK_BOTTLE}, - {gBattleAnimSpriteGfx_Coin, 0x0200, ANIM_TAG_COIN}, - {gBattleAnimSpriteGfx_CrackedEgg, 0x0200, ANIM_TAG_CRACKED_EGG}, - {gBattleAnimSpriteGfx_HatchedEgg, 0x0400, ANIM_TAG_HATCHED_EGG}, - {gBattleAnimSpriteGfx_FreshEgg, 0x0080, ANIM_TAG_FRESH_EGG}, - {gBattleAnimSpriteGfx_Fangs, 0x0400, ANIM_TAG_FANGS}, - {gBattleAnimSpriteGfx_Explosion2, 0x0c00, ANIM_TAG_EXPLOSION_2}, - {gBattleAnimSpriteGfx_Explosion3, 0x0200, ANIM_TAG_EXPLOSION_3}, - {gBattleAnimSpriteGfx_WaterDroplet, 0x1000, ANIM_TAG_WATER_DROPLET}, - {gBattleAnimSpriteGfx_WaterDroplet2, 0x0a00, ANIM_TAG_WATER_DROPLET_2}, - {gBattleAnimSpriteGfx_Seed2, 0x0020, ANIM_TAG_SEED_2}, - {gBattleAnimSpriteGfx_Sprout, 0x0e00, ANIM_TAG_SPROUT}, - {gBattleAnimSpriteGfx_RedWand, 0x0080, ANIM_TAG_RED_WAND}, - {gBattleAnimSpriteGfx_PurpleGreenUnk, 0x0a00, ANIM_TAG_PURPLE_GREEN_UNK}, - {gBattleAnimSpriteGfx_WaterColumn, 0x0400, ANIM_TAG_WATER_COLUMN}, - {gBattleAnimSpriteGfx_MudUnk, 0x0200, ANIM_TAG_MUD_UNK}, - {gBattleAnimSpriteGfx_RainDrops, 0x0700, ANIM_TAG_RAIN_DROPS}, - {gBattleAnimSpriteGfx_FurySwipes, 0x0800, ANIM_TAG_FURY_SWIPES}, - {gBattleAnimSpriteGfx_Vine2, 0x0a00, ANIM_TAG_VINE_2}, - {gBattleAnimSpriteGfx_Teeth, 0x0600, ANIM_TAG_TEETH}, - {gBattleAnimSpriteGfx_Bone2, 0x0800, ANIM_TAG_BONE_2}, - {gBattleAnimSpriteGfx_WhiteBag, 0x0200, ANIM_TAG_WHITE_BAG}, - {gBattleAnimSpriteGfx_Unknown, 0x0040, ANIM_TAG_UNKNOWN}, - {gBattleAnimSpriteGfx_PurpleCoral, 0x0180, ANIM_TAG_PURPLE_CORAL}, - {gBattleAnimSpriteGfx_PurpleDroplet, 0x0600, ANIM_TAG_PURPLE_DROPLET}, - {gBattleAnimSpriteGfx_Shock2, 0x0600, ANIM_TAG_SHOCK_2}, - {gBattleAnimSpriteGfx_ClosingEye2, 0x0200, ANIM_TAG_CLOSING_EYE_2}, - {gBattleAnimSpriteGfx_MetalBall, 0x0080, ANIM_TAG_METAL_BALL}, - {gBattleAnimSpriteGfx_MonsterDoll, 0x0200, ANIM_TAG_MONSTER_DOLL}, - {gBattleAnimSpriteGfx_Whirlwind, 0x0800, ANIM_TAG_WHIRLWIND}, - {gBattleAnimSpriteGfx_Whirlwind2, 0x0080, ANIM_TAG_WHIRLWIND_2}, - {gBattleAnimSpriteGfx_Explosion4, 0x0a00, ANIM_TAG_EXPLOSION_4}, - {gBattleAnimSpriteGfx_Explosion5, 0x0280, ANIM_TAG_EXPLOSION_5}, - {gBattleAnimSpriteGfx_Tongue, 0x0280, ANIM_TAG_TONGUE}, - {gBattleAnimSpriteGfx_Smoke, 0x0100, ANIM_TAG_SMOKE}, - {gBattleAnimSpriteGfx_Smoke2, 0x0200, ANIM_TAG_SMOKE_2}, - {gBattleAnimSpriteGfx_Impact, 0x0200, ANIM_TAG_IMPACT}, - {gBattleAnimSpriteGfx_CircleImpact, 0x0020, ANIM_TAG_CIRCLE_IMPACT}, - {gBattleAnimSpriteGfx_Scratch, 0x0a00, ANIM_TAG_SCRATCH}, - {gBattleAnimSpriteGfx_Cut, 0x0800, ANIM_TAG_CUT}, - {gBattleAnimSpriteGfx_SharpTeeth, 0x0800, ANIM_TAG_SHARP_TEETH}, - {gBattleAnimSpriteGfx_RainbowRings, 0x00c0, ANIM_TAG_RAINBOW_RINGS}, - {gBattleAnimSpriteGfx_IceCrystals, 0x01c0, ANIM_TAG_ICE_CRYSTALS}, - {gBattleAnimSpriteGfx_IceSpikes, 0x0100, ANIM_TAG_ICE_SPIKES}, - {gBattleAnimSpriteGfx_HandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET}, - {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_MIST_CLOUD}, - {gBattleAnimSpriteGfx_Clamp, 0x0800, ANIM_TAG_CLAMP}, - {gBattleAnimSpriteGfx_Bubble, 0x0180, ANIM_TAG_BUBBLE}, - {gBattleAnimSpriteGfx_Orbs, 0x0180, ANIM_TAG_ORBS}, - {gBattleAnimSpriteGfx_WaterImpact, 0x0200, ANIM_TAG_WATER_IMPACT}, - {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_WATER_ORB}, - {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_POISON_BUBBLE}, - {gBattleAnimSpriteGfx_ToxicBubble, 0x0400, ANIM_TAG_TOXIC_BUBBLE}, - {gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_SPIKES}, - {gBattleAnimSpriteGfx_HornHit2, 0x0100, ANIM_TAG_HORN_HIT_2}, - {gBattleAnimSpriteGfx_AirWave2, 0x0100, ANIM_TAG_AIR_WAVE_2}, - {gBattleAnimSpriteGfx_SmallBubbles, 0x0140, ANIM_TAG_SMALL_BUBBLES}, - {gBattleAnimSpriteGfx_RoundShadow, 0x0800, ANIM_TAG_ROUND_SHADOW}, - {gBattleAnimSpriteGfx_Sunlight, 0x0200, ANIM_TAG_SUNLIGHT}, - {gBattleAnimSpriteGfx_Spore, 0x0100, ANIM_TAG_SPORE}, - {gBattleAnimSpriteGfx_Flower, 0x00a0, ANIM_TAG_FLOWER}, - {gBattleAnimSpriteGfx_RazorLeaf, 0x0100, ANIM_TAG_RAZOR_LEAF}, - {gBattleAnimSpriteGfx_Needle, 0x0080, ANIM_TAG_NEEDLE}, - {gBattleAnimSpriteGfx_WhirlwindLines, 0x0300, ANIM_TAG_WHIRLWIND_LINES}, - {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_GOLD_RING}, - {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_PURPLE_RING}, - {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_RED_LIGHT_WALL}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL}, - {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL}, - {gBattleAnimSpriteGfx_BlackBall2, 0x0080, ANIM_TAG_BLACK_BALL_2}, - {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD}, - {gBattleAnimSpriteGfx_SparkH, 0x0200, ANIM_TAG_SPARK_H}, - {gBattleAnimSpriteGfx_YellowStar, 0x0200, ANIM_TAG_YELLOW_STAR}, - {gBattleAnimSpriteGfx_LargeFreshEgg, 0x0080, ANIM_TAG_LARGE_FRESH_EGG}, - {gBattleAnimSpriteGfx_ShadowBall, 0x0200, ANIM_TAG_SHADOW_BALL}, - {gBattleAnimSpriteGfx_Lick, 0x0500, ANIM_TAG_LICK}, - {gBattleAnimSpriteGfx_VoidLines, 0x0800, ANIM_TAG_VOID_LINES}, - {gBattleAnimSpriteGfx_String, 0x0400, ANIM_TAG_STRING}, - {gBattleAnimSpriteGfx_WebThread, 0x0020, ANIM_TAG_WEB_THREAD}, - {gBattleAnimSpriteGfx_SpiderWeb, 0x0800, ANIM_TAG_SPIDER_WEB}, - {gBattleAnimSpriteGfx_Lightbulb, 0x0100, ANIM_TAG_LIGHTBULB}, - {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH}, - {gBattleAnimSpriteGfx_FocusEnergy, 0x0400, ANIM_TAG_FOCUS_ENERGY}, - {gBattleAnimSpriteGfx_SphereToCube, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE}, - {gBattleAnimSpriteGfx_Tendrils, 0x1000, ANIM_TAG_TENDRILS}, - {gBattleAnimSpriteGfx_Eye, 0x0800, ANIM_TAG_EYE}, - {gBattleAnimSpriteGfx_WhiteShadow, 0x0400, ANIM_TAG_WHITE_SHADOW}, - {gBattleAnimSpriteGfx_TealAlert, 0x0200, ANIM_TAG_TEAL_ALERT}, - {gBattleAnimSpriteGfx_OpeningEye, 0x0800, ANIM_TAG_OPENING_EYE}, - {gBattleAnimSpriteGfx_RoundWhiteHalo, 0x0800, ANIM_TAG_ROUND_WHITE_HALO}, - {gBattleAnimSpriteGfx_FangAttack, 0x0800, ANIM_TAG_FANG_ATTACK}, - {gBattleAnimSpriteGfx_PurpleHandOutline, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE}, - {gBattleAnimSpriteGfx_Moon, 0x0800, ANIM_TAG_MOON}, - {gBattleAnimSpriteGfx_GreenSparkle, 0x0200, ANIM_TAG_GREEN_SPARKLE}, - {gBattleAnimSpriteGfx_Spiral, 0x0800, ANIM_TAG_SPIRAL}, - {gBattleAnimSpriteGfx_SnoreZ, 0x0200, ANIM_TAG_SNORE_Z}, - {gBattleAnimSpriteGfx_Explosion, 0x0800, ANIM_TAG_EXPLOSION}, - {gBattleAnimSpriteGfx_Nail, 0x0400, ANIM_TAG_NAIL}, - {gBattleAnimSpriteGfx_GhostlySpirit, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT}, - {gBattleAnimSpriteGfx_WarmRock, 0x0a80, ANIM_TAG_WARM_ROCK}, - {gBattleAnimSpriteGfx_BreakingEgg, 0x0600, ANIM_TAG_BREAKING_EGG}, - {gBattleAnimSpriteGfx_ThinRing, 0x0800, ANIM_TAG_THIN_RING}, - {gBattleAnimSpriteGfx_PunchImpact, 0x0200, ANIM_TAG_PUNCH_IMPACT}, - {gBattleAnimSpriteGfx_Bell, 0x0600, ANIM_TAG_BELL}, - {gBattleAnimSpriteGfx_MusicNotes2, 0x0800, ANIM_TAG_MUSIC_NOTES_2}, - {gBattleAnimSpriteGfx_SpeedDust, 0x0180, ANIM_TAG_SPEED_DUST}, - {gBattleAnimSpriteGfx_TornMetal, 0x0800, ANIM_TAG_TORN_METAL}, - {gBattleAnimSpriteGfx_ThoughtBubble, 0x0800, ANIM_TAG_THOUGHT_BUBBLE}, - {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_MAGENTA_HEART}, - {gBattleAnimSpriteGfx_ElectricOrbs, 0x0080, ANIM_TAG_ELECTRIC_ORBS}, - {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT}, - {gBattleAnimSpriteGfx_Electricity, 0x0800, ANIM_TAG_ELECTRICITY}, - {gBattleAnimSpriteGfx_Finger2, 0x0600, ANIM_TAG_FINGER_2}, - {gBattleAnimSpriteGfx_MovementWaves, 0x0600, ANIM_TAG_MOVEMENT_WAVES}, - {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_RED_HEART}, - {gBattleAnimSpriteGfx_RedOrb, 0x0080, ANIM_TAG_RED_ORB}, - {gBattleAnimSpriteGfx_EyeSparkle, 0x0180, ANIM_TAG_EYE_SPARKLE}, - {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_PINK_HEART}, - {gBattleAnimSpriteGfx_Angel, 0x0200, ANIM_TAG_ANGEL}, - {gBattleAnimSpriteGfx_Devil, 0x0400, ANIM_TAG_DEVIL}, - {gBattleAnimSpriteGfx_Swipe, 0x0a00, ANIM_TAG_SWIPE}, - {gBattleAnimSpriteGfx_Roots, 0x0800, ANIM_TAG_ROOTS}, - {gBattleAnimSpriteGfx_ItemBag, 0x0200, ANIM_TAG_ITEM_BAG}, - {gBattleAnimSpriteGfx_JaggedMusicNote, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE}, - {gBattleAnimSpriteGfx_Pokeball, 0x0080, ANIM_TAG_POKEBALL}, - {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT}, - {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z}, - {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN}, - {gBattleAnimSpriteGfx_TriForceTriangle, 0x0800, ANIM_TAG_TRI_ATTACK_TRIANGLE}, - {gBattleAnimSpriteGfx_WispOrb, 0x0380, ANIM_TAG_WISP_ORB}, - {gBattleAnimSpriteGfx_WispFire, 0x0800, ANIM_TAG_WISP_FIRE}, - {gBattleAnimSpriteGfx_GoldStars, 0x00c0, ANIM_TAG_GOLD_STARS}, - {gBattleAnimSpriteGfx_EclipsingOrb, 0x0800, ANIM_TAG_ECLIPSING_ORB}, - {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_GRAY_ORB}, - {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_BLUE_ORB}, - {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_RED_ORB_2}, - {gBattleAnimSpriteGfx_PinkPetal, 0x0080, ANIM_TAG_PINK_PETAL}, - {gBattleAnimSpriteGfx_PainSplit, 0x0180, ANIM_TAG_PAIN_SPLIT}, - {gBattleAnimSpriteGfx_Confetti, 0x0180, ANIM_TAG_CONFETTI}, - {gBattleAnimSpriteGfx_GreenStar, 0x0200, ANIM_TAG_GREEN_STAR}, - {gBattleAnimSpriteGfx_PinkCloud, 0x0200, ANIM_TAG_PINK_CLOUD}, - {gBattleAnimSpriteGfx_SweatDrop, 0x0020, ANIM_TAG_SWEAT_DROP}, - {gBattleAnimSpriteGfx_GuardRing, 0x0400, ANIM_TAG_GUARD_RING}, - {gBattleAnimSpriteGfx_PurpleScratch, 0x0600, ANIM_TAG_PURPLE_SCRATCH}, - {gBattleAnimSpriteGfx_PurpleSwipe, 0x1000, ANIM_TAG_PURPLE_SWIPE}, - {gBattleAnimSpriteGfx_TagHand, 0x0400, ANIM_TAG_TAG_HAND}, - {gBattleAnimSpriteGfx_SmallRedEye, 0x0020, ANIM_TAG_SMALL_RED_EYE}, - {gBattleAnimSpriteGfx_HollowOrb, 0x0080, ANIM_TAG_HOLLOW_ORB}, - {gBattleAnimSpriteGfx_XSign, 0x0800, ANIM_TAG_X_SIGN}, - {gBattleAnimSpriteGfx_BluegreenOrb, 0x0080, ANIM_TAG_BLUEGREEN_ORB}, - {gBattleAnimSpriteGfx_PawPrint, 0x0200, ANIM_TAG_PAW_PRINT}, - {gBattleAnimSpriteGfx_PurpleFlame, 0x0400, ANIM_TAG_PURPLE_FLAME}, - {gBattleAnimSpriteGfx_RedBall, 0x0200, ANIM_TAG_RED_BALL}, - {gBattleAnimSpriteGfx_SmellingsaltEffect, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT}, - {gBattleAnimSpriteGfx_Meteor, 0x0800, ANIM_TAG_METEOR}, - {gBattleAnimSpriteGfx_FlatRock, 0x0280, ANIM_TAG_FLAT_ROCK}, - {gBattleAnimSpriteGfx_MagnifyingGlass, 0x0200, ANIM_TAG_MAGNIFYING_GLASS}, - {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_BROWN_ORB}, - {gBattleAnimSpriteGfx_MetalSoundWaves, 0x0400, ANIM_TAG_METAL_SOUND_WAVES}, - {gBattleAnimSpriteGfx_FlyingDirt, 0x0200, ANIM_TAG_FLYING_DIRT}, - {gBattleAnimSpriteGfx_IcicleSpear, 0x0200, ANIM_TAG_ICICLE_SPEAR}, - {gBattleAnimSpriteGfx_Hail, 0x0080, ANIM_TAG_HAIL}, - {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_RED_ORB}, - {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB}, - {gBattleAnimSpriteGfx_GreenSpike, 0x0080, ANIM_TAG_GREEN_SPIKE}, - {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, - {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB}, - {gBattleAnimSpriteGfx_SafariBait, 0x0080, ANIM_TAG_SAFARI_BAIT}, - {gBattleAnimSpriteGfx_WhiteFeather, 0x0400, ANIM_TAG_WHITE_FEATHER}, - {gBattleAnimSpriteGfx_Sparkle6, 0x0080, ANIM_TAG_SPARKLE_6}, - {gBattleAnimSpriteGfx_Splash, 0x0800, ANIM_TAG_SPLASH}, - {gBattleAnimSpriteGfx_SweatBead, 0x0020, ANIM_TAG_SWEAT_BEAD}, - {gBattleAnimSpriteGfx_Gem1, 0x0800, ANIM_TAG_GEM_1}, - {gBattleAnimSpriteGfx_Gem2, 0x0800, ANIM_TAG_GEM_2}, - {gBattleAnimSpriteGfx_Gem3, 0x0800, ANIM_TAG_GEM_3}, - {gBattleAnimSpriteGfx_SlamHit2, 0x1000, ANIM_TAG_SLAM_HIT_2}, - {gBattleAnimSpriteGfx_Recycle, 0x0800, ANIM_TAG_RECYCLE}, - {gBattleAnimSpriteGfx_RedParticles, 0x00a0, ANIM_TAG_RED_PARTICLES}, - {gBattleAnimSpriteGfx_Protect, 0x0800, ANIM_TAG_PROTECT}, - {gBattleAnimSpriteGfx_DirtMound, 0x0200, ANIM_TAG_DIRT_MOUND}, - {gBattleAnimSpriteGfx_Shock3, 0x0600, ANIM_TAG_SHOCK_3}, - {gBattleAnimSpriteGfx_WeatherBall, 0x0200, ANIM_TAG_WEATHER_BALL}, - {gBattleAnimSpriteGfx_Bird, 0x0800, ANIM_TAG_BIRD}, - {gBattleAnimSpriteGfx_CrossImpact, 0x0200, ANIM_TAG_CROSS_IMPACT}, - {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH_2}, - {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_WHIP_HIT}, - {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING_2}, -}; - -const struct CompressedSpritePalette gBattleAnimPaletteTable[] = -{ - {gBattleAnimSpritePal_Bone, ANIM_TAG_BONE}, - {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK}, - {gBattleAnimSpritePal_Pencil, ANIM_TAG_PENCIL}, - {gBattleAnimSpritePal_AirWave, ANIM_TAG_AIR_WAVE}, - {gBattleAnimSpritePal_Orb, ANIM_TAG_ORB}, - {gBattleAnimSpritePal_Sword, ANIM_TAG_SWORD}, - {gBattleAnimSpritePal_Seed, ANIM_TAG_SEED}, - {gBattleAnimSpritePal_Explosion6, ANIM_TAG_EXPLOSION_6}, - {gBattleAnimSpritePal_PinkOrb, ANIM_TAG_PINK_ORB}, - {gBattleAnimSpritePal_Gust, ANIM_TAG_GUST}, - {gBattleAnimSpritePal_IceCube, ANIM_TAG_ICE_CUBE}, - {gBattleAnimSpritePal_Spark2, ANIM_TAG_SPARK_2}, - {gBattleAnimSpritePal_Orange, ANIM_TAG_ORANGE}, - {gBattleAnimSpritePal_YellowBall, ANIM_TAG_YELLOW_BALL}, - {gBattleAnimSpritePal_LockOn, ANIM_TAG_LOCK_ON}, - {gBattleAnimSpritePal_TiedBag, ANIM_TAG_TIED_BAG}, - {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_SMOKE}, - {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_BALL}, - {gBattleAnimSpritePal_Conversion, ANIM_TAG_CONVERSION}, - {gBattleAnimSpritePal_Glass, ANIM_TAG_GLASS}, - {gBattleAnimSpritePal_HornHit, ANIM_TAG_HORN_HIT}, - {gBattleAnimSpritePal_Hit, ANIM_TAG_HIT}, - {gBattleAnimSpritePal_Hit2, ANIM_TAG_HIT_2}, - {gBattleAnimSpritePal_BlueShards, ANIM_TAG_BLUE_SHARDS}, - {gBattleAnimSpritePal_ClosingEye, ANIM_TAG_CLOSING_EYE}, - {gBattleAnimSpritePal_WavingHand, ANIM_TAG_WAVING_HAND}, - {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_HIT_DUPLICATE}, - {gBattleAnimSpritePal_Leer, ANIM_TAG_LEER}, - {gBattleAnimSpritePal_BlueBurst, ANIM_TAG_BLUE_BURST}, - {gBattleAnimSpritePal_SmallEmber, ANIM_TAG_SMALL_EMBER}, - {gBattleAnimSpritePal_GraySmoke, ANIM_TAG_GRAY_SMOKE}, - {gBattleAnimSpritePal_BlueStar, ANIM_TAG_BLUE_STAR}, - {gBattleAnimSpritePal_BubbleBurst, ANIM_TAG_BUBBLE_BURST}, - {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE}, - {gBattleAnimSpritePal_Fire, ANIM_TAG_SPINNING_FIRE}, - {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE_PLUME}, - {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING_2}, - {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING}, - {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_CLAW_SLASH_2}, - {gBattleAnimSpritePal_ClawSlash, ANIM_TAG_CLAW_SLASH}, - {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_3}, - {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_2}, - {gBattleAnimSpritePal_BubbleBurst2, ANIM_TAG_BUBBLE_BURST_2}, - {gBattleAnimSpritePal_IceChunk, ANIM_TAG_ICE_CHUNK}, - {gBattleAnimSpritePal_Glass2, ANIM_TAG_GLASS_2}, - {gBattleAnimSpritePal_PinkHeart2, ANIM_TAG_PINK_HEART_2}, - {gBattleAnimSpritePal_SapDrip, ANIM_TAG_SAP_DRIP}, - {gBattleAnimSpritePal_SapDrip2, ANIM_TAG_SAP_DRIP}, - {gBattleAnimSpritePal_Sparkle1, ANIM_TAG_SPARKLE_1}, - {gBattleAnimSpritePal_Sparkle2, ANIM_TAG_SPARKLE_2}, - {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_FOOT}, - {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_MONSTER_FOOT}, - {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_HAND}, - {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_NOISE_LINE}, - {gBattleAnimSpritePal_YellowUnk, ANIM_TAG_YELLOW_UNK}, - {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST}, - {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT}, - {gBattleAnimSpritePal_Ring, ANIM_TAG_RING}, - {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS}, - {gBattleAnimSpritePal_Z, ANIM_TAG_Z}, - {gBattleAnimSpritePal_YellowUnk2, ANIM_TAG_YELLOW_UNK_2}, - {gBattleAnimSpritePal_AirSlash, ANIM_TAG_AIR_SLASH}, - {gBattleAnimSpritePal_SpinningGreenOrbs, ANIM_TAG_SPINNING_GREEN_ORBS}, - {gBattleAnimSpritePal_Leaf, ANIM_TAG_LEAF}, - {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER}, - {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POISON_POWDER}, - {gBattleAnimSpritePal_BrownTriangle, ANIM_TAG_BROWN_TRIANGLE}, - {gBattleAnimSpritePal_SleepPowder, ANIM_TAG_SLEEP_POWDER}, - {gBattleAnimSpritePal_StunSpore, ANIM_TAG_STUN_SPORE}, - {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POWDER}, - {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_3}, - {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_4}, - {gBattleAnimSpritePal_MusicNotes, ANIM_TAG_MUSIC_NOTES}, - {gBattleAnimSpritePal_Duck, ANIM_TAG_DUCK}, - {gBattleAnimSpritePal_MudSand, ANIM_TAG_MUD_SAND}, - {gBattleAnimSpritePal_Alert, ANIM_TAG_ALERT}, - {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES}, - {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES_2}, - {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK_4}, - {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK}, - {gBattleAnimSpritePal_Bell2, ANIM_TAG_BELL_2}, - {gBattleAnimSpritePal_PinkGlove, ANIM_TAG_PINK_GLOVE}, - {gBattleAnimSpritePal_BlueLines, ANIM_TAG_BLUE_LINES}, - {gBattleAnimSpritePal_Impact3, ANIM_TAG_IMPACT_3}, - {gBattleAnimSpritePal_Impact2, ANIM_TAG_IMPACT_2}, - {gBattleAnimSpritePal_Reticle, ANIM_TAG_RETICLE}, - {gBattleAnimSpritePal_Breath, ANIM_TAG_BREATH}, - {gBattleAnimSpritePal_Anger, ANIM_TAG_ANGER}, - {gBattleAnimSpritePal_Snowball, ANIM_TAG_SNOWBALL}, - {gBattleAnimSpritePal_Vine, ANIM_TAG_VINE}, - {gBattleAnimSpritePal_Sword2, ANIM_TAG_SWORD_2}, - {gBattleAnimSpritePal_Clapping, ANIM_TAG_CLAPPING}, - {gBattleAnimSpritePal_RedTube, ANIM_TAG_RED_TUBE}, - {gBattleAnimSpritePal_Amnesia, ANIM_TAG_AMNESIA}, - {gBattleAnimSpritePal_String2, ANIM_TAG_STRING_2}, - {gBattleAnimSpritePal_Pencil2, ANIM_TAG_PENCIL_2}, - {gBattleAnimSpritePal_Petal, ANIM_TAG_PETAL}, - {gBattleAnimSpritePal_BentSpoon, ANIM_TAG_BENT_SPOON}, - {gBattleAnimSpritePal_String2, ANIM_TAG_WEB}, - {gBattleAnimSpritePal_MilkBottle, ANIM_TAG_MILK_BOTTLE}, - {gBattleAnimSpritePal_Coin, ANIM_TAG_COIN}, - {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_CRACKED_EGG}, - {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_HATCHED_EGG}, - {gBattleAnimSpritePal_FreshEgg, ANIM_TAG_FRESH_EGG}, - {gBattleAnimSpritePal_Fangs, ANIM_TAG_FANGS}, - {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_2}, - {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_3}, - {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET}, - {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET_2}, - {gBattleAnimSpritePal_Seed2, ANIM_TAG_SEED_2}, - {gBattleAnimSpritePal_Seed2, ANIM_TAG_SPROUT}, - {gBattleAnimSpritePal_RedWand, ANIM_TAG_RED_WAND}, - {gBattleAnimSpritePal_PurpleGreenUnk, ANIM_TAG_PURPLE_GREEN_UNK}, - {gBattleAnimSpritePal_WaterColumn, ANIM_TAG_WATER_COLUMN}, - {gBattleAnimSpritePal_MudUnk, ANIM_TAG_MUD_UNK}, - {gBattleAnimSpritePal_RainDrops, ANIM_TAG_RAIN_DROPS}, - {gBattleAnimSpritePal_FurySwipes, ANIM_TAG_FURY_SWIPES}, - {gBattleAnimSpritePal_Vine2, ANIM_TAG_VINE_2}, - {gBattleAnimSpritePal_Teeth, ANIM_TAG_TEETH}, - {gBattleAnimSpritePal_Bone2, ANIM_TAG_BONE_2}, - {gBattleAnimSpritePal_WhiteBag, ANIM_TAG_WHITE_BAG}, - {gBattleAnimSpritePal_Unknown, ANIM_TAG_UNKNOWN}, - {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_CORAL}, - {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_DROPLET}, - {gBattleAnimSpritePal_Shock2, ANIM_TAG_SHOCK_2}, - {gBattleAnimSpritePal_ClosingEye2, ANIM_TAG_CLOSING_EYE_2}, - {gBattleAnimSpritePal_MetalBall, ANIM_TAG_METAL_BALL}, - {gBattleAnimSpritePal_MonsterDoll, ANIM_TAG_MONSTER_DOLL}, - {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND}, - {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND_2}, - {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_4}, - {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_5}, - {gBattleAnimSpritePal_Tongue, ANIM_TAG_TONGUE}, - {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE}, - {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE_2}, - {gBattleAnimSpritePal_Impact, ANIM_TAG_IMPACT}, - {gBattleAnimSpritePal_CircleImpact, ANIM_TAG_CIRCLE_IMPACT}, - {gBattleAnimSpritePal_Impact, ANIM_TAG_SCRATCH}, - {gBattleAnimSpritePal_Impact, ANIM_TAG_CUT}, - {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_SHARP_TEETH}, - {gBattleAnimSpritePal_RainbowRings, ANIM_TAG_RAINBOW_RINGS}, - {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_CRYSTALS}, - {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_SPIKES}, - {gBattleAnimSpritePal_HandsAndFeet, ANIM_TAG_HANDS_AND_FEET}, - {gBattleAnimSpritePal_MistCloud, ANIM_TAG_MIST_CLOUD}, - {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_CLAMP}, - {gBattleAnimSpritePal_RainDrops, ANIM_TAG_BUBBLE}, - {gBattleAnimSpritePal_Orbs, ANIM_TAG_ORBS}, - {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_IMPACT}, - {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_ORB}, - {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_POISON_BUBBLE}, - {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_TOXIC_BUBBLE}, - {gBattleAnimSpritePal_Spikes, ANIM_TAG_SPIKES}, - {gBattleAnimSpritePal_HornHit2, ANIM_TAG_HORN_HIT_2}, - {gBattleAnimSpritePal_AirWave2, ANIM_TAG_AIR_WAVE_2}, - {gBattleAnimSpritePal_SmallBubbles, ANIM_TAG_SMALL_BUBBLES}, - {gBattleAnimSpritePal_RoundShadow, ANIM_TAG_ROUND_SHADOW}, - {gBattleAnimSpritePal_Sunlight, ANIM_TAG_SUNLIGHT}, - {gBattleAnimSpritePal_Spore, ANIM_TAG_SPORE}, - {gBattleAnimSpritePal_Flower, ANIM_TAG_FLOWER}, - {gBattleAnimSpritePal_RazorLeaf, ANIM_TAG_RAZOR_LEAF}, - {gBattleAnimSpritePal_Needle, ANIM_TAG_NEEDLE}, - {gBattleAnimSpritePal_WhirlwindLines, ANIM_TAG_WHIRLWIND_LINES}, - {gBattleAnimSpritePal_GoldRing, ANIM_TAG_GOLD_RING}, - {gBattleAnimSpritePal_PurpleRing, ANIM_TAG_PURPLE_RING}, - {gBattleAnimSpritePal_BlueRing, ANIM_TAG_BLUE_RING}, - {gBattleAnimSpritePal_GreenLightWall, ANIM_TAG_GREEN_LIGHT_WALL}, - {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_BLUE_LIGHT_WALL}, - {gBattleAnimSpritePal_RedLightWall, ANIM_TAG_RED_LIGHT_WALL}, - {gBattleAnimSpritePal_GrayLightWall, ANIM_TAG_GRAY_LIGHT_WALL}, - {gBattleAnimSpritePal_OrangeLightWall, ANIM_TAG_ORANGE_LIGHT_WALL}, - {gBattleAnimSpritePal_BlackBall2, ANIM_TAG_BLACK_BALL_2}, - {gBattleAnimSpritePal_PurpleGasCloud, ANIM_TAG_PURPLE_GAS_CLOUD}, - {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK_H}, - {gBattleAnimSpritePal_YellowStar, ANIM_TAG_YELLOW_STAR}, - {gBattleAnimSpritePal_LargeFreshEgg, ANIM_TAG_LARGE_FRESH_EGG}, - {gBattleAnimSpritePal_ShadowBall, ANIM_TAG_SHADOW_BALL}, - {gBattleAnimSpritePal_Lick, ANIM_TAG_LICK}, - {gBattleAnimSpritePal_VoidLines, ANIM_TAG_VOID_LINES}, - {gBattleAnimSpritePal_String, ANIM_TAG_STRING}, - {gBattleAnimSpritePal_String, ANIM_TAG_WEB_THREAD}, - {gBattleAnimSpritePal_String, ANIM_TAG_SPIDER_WEB}, - {gBattleAnimSpritePal_Lightbulb, ANIM_TAG_LIGHTBULB}, - {gBattleAnimSpritePal_Slash, ANIM_TAG_SLASH}, - {gBattleAnimSpritePal_FocusEnergy, ANIM_TAG_FOCUS_ENERGY}, - {gBattleAnimSpritePal_SphereToCube, ANIM_TAG_SPHERE_TO_CUBE}, - {gBattleAnimSpritePal_Tendrils, ANIM_TAG_TENDRILS}, - {gBattleAnimSpritePal_Eye, ANIM_TAG_EYE}, - {gBattleAnimSpritePal_WhiteShadow, ANIM_TAG_WHITE_SHADOW}, - {gBattleAnimSpritePal_TealAlert, ANIM_TAG_TEAL_ALERT}, - {gBattleAnimSpritePal_OpeningEye, ANIM_TAG_OPENING_EYE}, - {gBattleAnimSpritePal_RoundWhiteHalo, ANIM_TAG_ROUND_WHITE_HALO}, - {gBattleAnimSpritePal_FangAttack, ANIM_TAG_FANG_ATTACK}, - {gBattleAnimSpritePal_PurpleHandOutline, ANIM_TAG_PURPLE_HAND_OUTLINE}, - {gBattleAnimSpritePal_Moon, ANIM_TAG_MOON}, - {gBattleAnimSpritePal_GreenSparkle, ANIM_TAG_GREEN_SPARKLE}, - {gBattleAnimSpritePal_Spiral, ANIM_TAG_SPIRAL}, - {gBattleAnimSpritePal_SnoreZ, ANIM_TAG_SNORE_Z}, - {gBattleAnimSpritePal_Explosion, ANIM_TAG_EXPLOSION}, - {gBattleAnimSpritePal_Nail, ANIM_TAG_NAIL}, - {gBattleAnimSpritePal_GhostlySpirit, ANIM_TAG_GHOSTLY_SPIRIT}, - {gBattleAnimSpritePal_WarmRock, ANIM_TAG_WARM_ROCK}, - {gBattleAnimSpritePal_BreakingEgg, ANIM_TAG_BREAKING_EGG}, - {gBattleAnimSpritePal_ThinRing, ANIM_TAG_THIN_RING}, - {gBattleAnimSpritePal_PunchImpact, ANIM_TAG_PUNCH_IMPACT}, - {gBattleAnimSpritePal_Bell, ANIM_TAG_BELL}, - {gBattleAnimSpritePal_MusicNotes2, ANIM_TAG_MUSIC_NOTES_2}, - {gBattleAnimSpritePal_SpeedDust, ANIM_TAG_SPEED_DUST}, - {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_TORN_METAL}, - {gBattleAnimSpritePal_ThoughtBubble, ANIM_TAG_THOUGHT_BUBBLE}, - {gBattleAnimSpritePal_MagentaHeart, ANIM_TAG_MAGENTA_HEART}, - {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRIC_ORBS}, - {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_CIRCLE_OF_LIGHT}, - {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRICITY}, - {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER_2}, - {gBattleAnimSpritePal_MovementWaves, ANIM_TAG_MOVEMENT_WAVES}, - {gBattleAnimSpritePal_RedHeart, ANIM_TAG_RED_HEART}, - {gBattleAnimSpritePal_RedOrb, ANIM_TAG_RED_ORB}, - {gBattleAnimSpritePal_EyeSparkle, ANIM_TAG_EYE_SPARKLE}, - {gBattleAnimSpritePal_PinkHeart, ANIM_TAG_PINK_HEART}, - {gBattleAnimSpritePal_Angel, ANIM_TAG_ANGEL}, - {gBattleAnimSpritePal_Devil, ANIM_TAG_DEVIL}, - {gBattleAnimSpritePal_Swipe, ANIM_TAG_SWIPE}, - {gBattleAnimSpritePal_Roots, ANIM_TAG_ROOTS}, - {gBattleAnimSpritePal_ItemBag, ANIM_TAG_ITEM_BAG}, - {gBattleAnimSpritePal_JaggedMusicNote, ANIM_TAG_JAGGED_MUSIC_NOTE}, - {gBattleAnimSpritePal_Pokeball, ANIM_TAG_POKEBALL}, - {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT}, - {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z}, - {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN}, - {gBattleAnimSpritePal_TriForceTriangle, ANIM_TAG_TRI_ATTACK_TRIANGLE}, - {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_ORB}, - {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_FIRE}, - {gBattleAnimSpritePal_GoldStars, ANIM_TAG_GOLD_STARS}, - {gBattleAnimSpritePal_EclipsingOrb, ANIM_TAG_ECLIPSING_ORB}, - {gBattleAnimSpritePal_GrayOrb, ANIM_TAG_GRAY_ORB}, - {gBattleAnimSpritePal_BlueOrb, ANIM_TAG_BLUE_ORB}, - {gBattleAnimSpritePal_RedOrb2, ANIM_TAG_RED_ORB_2}, - {gBattleAnimSpritePal_PinkPetal, ANIM_TAG_PINK_PETAL}, - {gBattleAnimSpritePal_PainSplit, ANIM_TAG_PAIN_SPLIT}, - {gBattleAnimSpritePal_Confetti, ANIM_TAG_CONFETTI}, - {gBattleAnimSpritePal_GreenStar, ANIM_TAG_GREEN_STAR}, - {gBattleAnimSpritePal_PinkCloud, ANIM_TAG_PINK_CLOUD}, - {gBattleAnimSpritePal_SweatDrop, ANIM_TAG_SWEAT_DROP}, - {gBattleAnimSpritePal_GuardRing, ANIM_TAG_GUARD_RING}, - {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SCRATCH}, - {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SWIPE}, - {gBattleAnimSpritePal_Finger, ANIM_TAG_TAG_HAND}, - {gBattleAnimSpritePal_SmallRedEye, ANIM_TAG_SMALL_RED_EYE}, - {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_HOLLOW_ORB}, - {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_X_SIGN}, - {gBattleAnimSpritePal_BluegreenOrb, ANIM_TAG_BLUEGREEN_ORB}, - {gBattleAnimSpritePal_PawPrint, ANIM_TAG_PAW_PRINT}, - {gBattleAnimSpritePal_PurpleFlame, ANIM_TAG_PURPLE_FLAME}, - {gBattleAnimSpritePal_RedBall, ANIM_TAG_RED_BALL}, - {gBattleAnimSpritePal_SmellingsaltEffect, ANIM_TAG_SMELLINGSALT_EFFECT}, - {gBattleAnimSpritePal_Meteor, ANIM_TAG_METEOR}, - {gBattleAnimSpritePal_FlatRock, ANIM_TAG_FLAT_ROCK}, - {gBattleAnimSpritePal_MagnifyingGlass, ANIM_TAG_MAGNIFYING_GLASS}, - {gBattleAnimSpritePal_BrownOrb, ANIM_TAG_BROWN_ORB}, - {gBattleAnimSpritePal_MetalSoundWaves, ANIM_TAG_METAL_SOUND_WAVES}, - {gBattleAnimSpritePal_FlyingDirt, ANIM_TAG_FLYING_DIRT}, - {gBattleAnimSpritePal_IcicleSpear, ANIM_TAG_ICICLE_SPEAR}, - {gBattleAnimSpritePal_Hail, ANIM_TAG_HAIL}, - {gBattleAnimSpritePal_GlowyRedOrb, ANIM_TAG_GLOWY_RED_ORB}, - {gBattleAnimSpritePal_GlowyGreenOrb, ANIM_TAG_GLOWY_GREEN_ORB}, - {gBattleAnimSpritePal_GreenSpike, ANIM_TAG_GREEN_SPIKE}, - {gBattleAnimSpritePal_WhiteCircleOfLight, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, - {gBattleAnimSpritePal_GlowyBlueOrb, ANIM_TAG_GLOWY_BLUE_ORB}, - {gBattleAnimSpritePal_SafariBait, ANIM_TAG_SAFARI_BAIT}, - {gBattleAnimSpritePal_WhiteFeather, ANIM_TAG_WHITE_FEATHER}, - {gBattleAnimSpritePal_Sparkle6, ANIM_TAG_SPARKLE_6}, - {gBattleAnimSpritePal_Splash, ANIM_TAG_SPLASH}, - {gBattleAnimSpritePal_Splash, ANIM_TAG_SWEAT_BEAD}, - {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_1}, - {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_2}, - {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_3}, - {gBattleAnimSpritePal_SlamHit2, ANIM_TAG_SLAM_HIT_2}, - {gBattleAnimSpritePal_Recycle, ANIM_TAG_RECYCLE}, - {gBattleAnimSpritePal_RedParticles, ANIM_TAG_RED_PARTICLES}, - {gBattleAnimSpritePal_Protect, ANIM_TAG_PROTECT}, - {gBattleAnimSpritePal_DirtMound, ANIM_TAG_DIRT_MOUND}, - {gBattleAnimSpritePal_Shock3, ANIM_TAG_SHOCK_3}, - {gBattleAnimSpritePal_WeatherBall, ANIM_TAG_WEATHER_BALL}, - {gBattleAnimSpritePal_Bird, ANIM_TAG_BIRD}, - {gBattleAnimSpritePal_CrossImpact, ANIM_TAG_CROSS_IMPACT}, - {gBattleAnimSpritePal_Slash2, ANIM_TAG_SLASH_2}, - {gBattleAnimSpritePal_WhipHit, ANIM_TAG_WHIP_HIT}, - {gBattleAnimSpritePal_BlueRing2, ANIM_TAG_BLUE_RING_2}, -}; - -const struct BattleAnimBackground gBattleAnimBackgroundTable[] = -{ - [BG_DARK_] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, - [BG_DARK] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, - [BG_GHOST] = {gBattleAnimBgImage_Ghost, gBattleAnimBgPalette_Ghost, gBattleAnimBgTilemap_Ghost}, - [BG_PSYCHIC] = {gBattleAnimBgImage_Psychic, gBattleAnimBgPalette_Psychic, gBattleAnimBgTilemap_Psychic}, - [BG_IMPACT_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactOpponent}, - [BG_IMPACT_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactPlayer}, - [BG_IMPACT_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactContests}, - [BG_DRILL] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_Drill}, - [BG_DRILL_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_DrillContests}, - [BG_HIGHSPEED_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedOpponent}, - [BG_HIGHSPEED_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedPlayer}, - [BG_THUNDER] = {gBattleAnimBgImage_Thunder, gBattleAnimBgPalette_Thunder, gBattleAnimBgTilemap_Thunder}, - [BG_GUILLOTINE_OPPONENT] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineOpponent}, - [BG_GUILLOTINE_PLAYER] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotinePlayer}, - [BG_GUILLOTINE_CONTESTS] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineContests}, - [BG_ICE] = {gBattleAnimBgImage_Ice, gBattleAnimBgPalette_Ice, gBattleAnimBgTilemap_Ice}, - [BG_COSMIC] = {gBattleAnimBgImage_Cosmic, gBattleAnimBgPalette_Cosmic, gBattleAnimBgTilemap_Cosmic}, - [BG_IN_AIR] = {gBattleAnimBgImage_InAir, gBattleAnimBgPalette_InAir, gBattleAnimBgTilemap_InAir}, - [BG_SKY] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_Drill}, - [BG_SKY_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_DrillContests}, - [BG_AURORA] = {gBattleAnimBgImage_Aurora, gBattleAnimBgPalette_Aurora, gBattleAnimBgTilemap_Aurora}, - [BG_FISSURE] = {gBattleAnimBgImage_Fissure, gBattleAnimBgPalette_Fissure, gBattleAnimBgTilemap_Fissure}, - [BG_BUG_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedOpponent}, - [BG_BUG_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedPlayer}, - [BG_SOLAR_BEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactOpponent}, - [BG_SOLAR_BEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactPlayer}, - [BG_SOLAR_BEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactContests}, -}; +static void Cmd_loadspritegfx(void); +static void Cmd_unloadspritegfx(void); +static void Cmd_createsprite(void); +static void Cmd_createvisualtask(void); +static void Cmd_delay(void); +static void Cmd_waitforvisualfinish(void); +static void Cmd_hang1(void); +static void Cmd_hang2(void); +static void Cmd_end(void); +static void Cmd_playse(void); +static void Cmd_monbg(void); +static void Cmd_clearmonbg(void); +static void Cmd_setalpha(void); +static void Cmd_blendoff(void); +static void Cmd_call(void); +static void Cmd_return(void); +static void Cmd_setarg(void); +static void Cmd_choosetwoturnanim(void); +static void Cmd_jumpifmoveturn(void); +static void Cmd_goto(void); +static void Cmd_fadetobg(void); +static void Cmd_restorebg(void); +static void Cmd_waitbgfadeout(void); +static void Cmd_waitbgfadein(void); +static void Cmd_changebg(void); +static void Cmd_playsewithpan(void); +static void Cmd_setpan(void); +static void Cmd_panse_1B(void); +static void Cmd_loopsewithpan(void); +static void Cmd_waitplaysewithpan(void); +static void Cmd_setbldcnt(void); +static void Cmd_createsoundtask(void); +static void Cmd_waitsound(void); +static void Cmd_jumpargeq(void); +static void Cmd_monbg_22(void); +static void Cmd_clearmonbg_23(void); +static void Cmd_jumpifcontest(void); +static void Cmd_fadetobgfromset(void); +static void Cmd_panse_26(void); +static void Cmd_panse_27(void); +static void Cmd_monbgprio_28(void); +static void Cmd_monbgprio_29(void); +static void Cmd_monbgprio_2A(void); +static void Cmd_invisible(void); +static void Cmd_visible(void); +static void Cmd_doublebattle_2D(void); +static void Cmd_doublebattle_2E(void); +static void Cmd_stopsound(void); + +#include "data/battle_anim.h" static void (*const sScriptCmdTable[])(void) = { - ScriptCmd_loadspritegfx, - ScriptCmd_unloadspritegfx, - ScriptCmd_createsprite, - ScriptCmd_createvisualtask, - ScriptCmd_delay, - ScriptCmd_waitforvisualfinish, - ScriptCmd_hang1, - ScriptCmd_hang2, - ScriptCmd_end, - ScriptCmd_playse, - ScriptCmd_monbg, - ScriptCmd_clearmonbg, - ScriptCmd_setalpha, - ScriptCmd_blendoff, - ScriptCmd_call, - ScriptCmd_return, - ScriptCmd_setarg, - ScriptCmd_choosetwoturnanim, - ScriptCmd_jumpifmoveturn, - ScriptCmd_goto, - ScriptCmd_fadetobg, - ScriptCmd_restorebg, - ScriptCmd_waitbgfadeout, - ScriptCmd_waitbgfadein, - ScriptCmd_changebg, - ScriptCmd_playsewithpan, - ScriptCmd_setpan, - ScriptCmd_panse_1B, - ScriptCmd_loopsewithpan, - ScriptCmd_waitplaysewithpan, - ScriptCmd_setbldcnt, - ScriptCmd_createsoundtask, - ScriptCmd_waitsound, - ScriptCmd_jumpargeq, - ScriptCmd_monbg_22, - ScriptCmd_clearmonbg_23, - ScriptCmd_jumpifcontest, - ScriptCmd_fadetobgfromset, - ScriptCmd_panse_26, - ScriptCmd_panse_27, - ScriptCmd_monbgprio_28, - ScriptCmd_monbgprio_29, - ScriptCmd_monbgprio_2A, - ScriptCmd_invisible, - ScriptCmd_visible, - ScriptCmd_doublebattle_2D, - ScriptCmd_doublebattle_2E, - ScriptCmd_stopsound + Cmd_loadspritegfx, + Cmd_unloadspritegfx, + Cmd_createsprite, + Cmd_createvisualtask, + Cmd_delay, + Cmd_waitforvisualfinish, + Cmd_hang1, + Cmd_hang2, + Cmd_end, + Cmd_playse, + Cmd_monbg, + Cmd_clearmonbg, + Cmd_setalpha, + Cmd_blendoff, + Cmd_call, + Cmd_return, + Cmd_setarg, + Cmd_choosetwoturnanim, + Cmd_jumpifmoveturn, + Cmd_goto, + Cmd_fadetobg, + Cmd_restorebg, + Cmd_waitbgfadeout, + Cmd_waitbgfadein, + Cmd_changebg, + Cmd_playsewithpan, + Cmd_setpan, + Cmd_panse_1B, + Cmd_loopsewithpan, + Cmd_waitplaysewithpan, + Cmd_setbldcnt, + Cmd_createsoundtask, + Cmd_waitsound, + Cmd_jumpargeq, + Cmd_monbg_22, + Cmd_clearmonbg_23, + Cmd_jumpifcontest, + Cmd_fadetobgfromset, + Cmd_panse_26, + Cmd_panse_27, + Cmd_monbgprio_28, + Cmd_monbgprio_29, + Cmd_monbgprio_2A, + Cmd_invisible, + Cmd_visible, + Cmd_doublebattle_2D, + Cmd_doublebattle_2E, + Cmd_stopsound }; // Functions @@ -1937,7 +311,7 @@ static void RunAnimScriptCommand(void) } while (sAnimFramesToWait == 0 && gAnimScriptActive); } -static void ScriptCmd_loadspritegfx(void) +static void Cmd_loadspritegfx(void) { u16 index; @@ -1951,7 +325,7 @@ static void ScriptCmd_loadspritegfx(void) gAnimScriptCallback = WaitAnimFrameCount; } -static void ScriptCmd_unloadspritegfx(void) +static void Cmd_unloadspritegfx(void) { u16 index; @@ -1968,7 +342,7 @@ static void ScriptCmd_unloadspritegfx(void) // flags: // - bits 0-6: subpriority mod (signed) // - bit 7: target if set else attacker -static void ScriptCmd_createsprite(void) +static void Cmd_createsprite(void) { s32 i; const struct SpriteTemplate *template; @@ -2022,7 +396,7 @@ static void ScriptCmd_createsprite(void) gAnimVisualTaskCount++; } -static void ScriptCmd_createvisualtask(void) +static void Cmd_createvisualtask(void) { TaskFunc taskFunc; u8 taskPriority; @@ -2052,7 +426,7 @@ static void ScriptCmd_createvisualtask(void) gAnimVisualTaskCount++; } -static void ScriptCmd_delay(void) +static void Cmd_delay(void) { sBattleAnimScriptPtr++; sAnimFramesToWait = sBattleAnimScriptPtr[0]; @@ -2062,7 +436,7 @@ static void ScriptCmd_delay(void) gAnimScriptCallback = WaitAnimFrameCount; } -static void ScriptCmd_waitforvisualfinish(void) +static void Cmd_waitforvisualfinish(void) { if (gAnimVisualTaskCount == 0) { @@ -2075,15 +449,15 @@ static void ScriptCmd_waitforvisualfinish(void) } } -static void ScriptCmd_hang1(void) +static void Cmd_hang1(void) { } -static void ScriptCmd_hang2(void) +static void Cmd_hang2(void) { } -static void ScriptCmd_end(void) +static void Cmd_end(void) { s32 i; bool32 continuousAnim = FALSE; @@ -2134,7 +508,7 @@ static void ScriptCmd_end(void) } } -static void ScriptCmd_playse(void) +static void Cmd_playse(void) { sBattleAnimScriptPtr++; PlaySE(T1_READ_16(sBattleAnimScriptPtr)); @@ -2150,7 +524,7 @@ static void ScriptCmd_playse(void) #define t2_MON_IN_BG2 5 #define t2_MONBG_BATTLER 6 -static void ScriptCmd_monbg(void) +static void Cmd_monbg(void) { bool8 toBG_2; u8 taskId; @@ -2382,7 +756,7 @@ static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) } } -static void ScriptCmd_clearmonbg(void) +static void Cmd_clearmonbg(void) { u8 animBattlerId; u8 battlerId; @@ -2444,7 +818,7 @@ static void sub_807331C(u8 taskId) } } -static void ScriptCmd_monbg_22(void) +static void Cmd_monbg_22(void) { bool8 toBG_2; u8 battlerId; @@ -2491,7 +865,7 @@ static void ScriptCmd_monbg_22(void) sBattleAnimScriptPtr++; } -static void ScriptCmd_clearmonbg_23(void) +static void Cmd_clearmonbg_23(void) { u8 animBattlerId; u8 battlerId; @@ -2560,7 +934,7 @@ static void sub_8073558(u8 taskId) #undef t2_MON_IN_BG2 #undef t2_MONBG_BATTLER -static void ScriptCmd_setalpha(void) +static void Cmd_setalpha(void) { u16 half1, half2; @@ -2571,7 +945,7 @@ static void ScriptCmd_setalpha(void) SetGpuReg(REG_OFFSET_BLDALPHA, half1 | half2); } -static void ScriptCmd_setbldcnt(void) +static void Cmd_setbldcnt(void) { u16 half1, half2; @@ -2581,26 +955,26 @@ static void ScriptCmd_setbldcnt(void) SetGpuReg(REG_OFFSET_BLDCNT, half1 | half2); } -static void ScriptCmd_blendoff(void) +static void Cmd_blendoff(void) { sBattleAnimScriptPtr++; SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); } -static void ScriptCmd_call(void) +static void Cmd_call(void) { sBattleAnimScriptPtr++; sBattleAnimScriptRetAddr = sBattleAnimScriptPtr + 4; sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); } -static void ScriptCmd_return(void) +static void Cmd_return(void) { sBattleAnimScriptPtr = sBattleAnimScriptRetAddr; } -static void ScriptCmd_setarg(void) +static void Cmd_setarg(void) { const u8 *addr = sBattleAnimScriptPtr; u16 value; @@ -2614,7 +988,7 @@ static void ScriptCmd_setarg(void) gBattleAnimArgs[argId] = value; } -static void ScriptCmd_choosetwoturnanim(void) +static void Cmd_choosetwoturnanim(void) { sBattleAnimScriptPtr++; if (gAnimMoveTurn & 1) @@ -2622,7 +996,7 @@ static void ScriptCmd_choosetwoturnanim(void) sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); } -static void ScriptCmd_jumpifmoveturn(void) +static void Cmd_jumpifmoveturn(void) { u8 toCheck; @@ -2636,7 +1010,7 @@ static void ScriptCmd_jumpifmoveturn(void) sBattleAnimScriptPtr += 4; } -static void ScriptCmd_goto(void) +static void Cmd_goto(void) { sBattleAnimScriptPtr++; sBattleAnimScriptPtr = T2_READ_PTR(sBattleAnimScriptPtr); @@ -2659,7 +1033,7 @@ static bool8 sub_807378C(u16 a) #define tBackgroundId data[0] #define tState data[10] -static void ScriptCmd_fadetobg(void) +static void Cmd_fadetobg(void) { u8 backgroundId; u8 taskId; @@ -2672,7 +1046,7 @@ static void ScriptCmd_fadetobg(void) sAnimBackgroundFadeState = 1; } -static void ScriptCmd_fadetobgfromset(void) +static void Cmd_fadetobgfromset(void) { u8 bg1, bg2, bg3; u8 taskId; @@ -2741,7 +1115,7 @@ static void LoadDefaultBg(void) DrawMainBattleBackground(); } -static void ScriptCmd_restorebg(void) +static void Cmd_restorebg(void) { u8 taskId; @@ -2754,7 +1128,7 @@ static void ScriptCmd_restorebg(void) #undef tBackgroundId #undef tState -static void ScriptCmd_waitbgfadeout(void) +static void Cmd_waitbgfadeout(void) { if (sAnimBackgroundFadeState == 2) { @@ -2767,7 +1141,7 @@ static void ScriptCmd_waitbgfadeout(void) } } -static void ScriptCmd_waitbgfadein(void) +static void Cmd_waitbgfadein(void) { if (sAnimBackgroundFadeState == 0) { @@ -2780,7 +1154,7 @@ static void ScriptCmd_waitbgfadein(void) } } -static void ScriptCmd_changebg(void) +static void Cmd_changebg(void) { sBattleAnimScriptPtr++; LoadMoveBg(sBattleAnimScriptPtr[0]); @@ -2867,7 +1241,7 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan) return ret; } -static void ScriptCmd_playsewithpan(void) +static void Cmd_playsewithpan(void) { u16 songId; s8 pan; @@ -2879,7 +1253,7 @@ static void ScriptCmd_playsewithpan(void) sBattleAnimScriptPtr += 3; } -static void ScriptCmd_setpan(void) +static void Cmd_setpan(void) { s8 pan; @@ -2896,7 +1270,7 @@ static void ScriptCmd_setpan(void) #define tCurrentPan data[4] #define tFrameCounter data[8] -static void ScriptCmd_panse_1B(void) +static void Cmd_panse_1B(void) { u16 songNum; s8 currentPanArg, incrementPan, incrementPanArg, currentPan, targetPan; @@ -2968,7 +1342,7 @@ static void Task_PanFromInitialToTarget(u8 taskId) } } -static void ScriptCmd_panse_26(void) +static void Cmd_panse_26(void) { u16 songId; s8 currentPan, targetPan, incrementPan; @@ -2995,7 +1369,7 @@ static void ScriptCmd_panse_26(void) sBattleAnimScriptPtr += 6; } -static void ScriptCmd_panse_27(void) +static void Cmd_panse_27(void) { u16 songId; s8 targetPanArg, incrementPanArg, currentPanArg, currentPan, targetPan, incrementPan; @@ -3039,7 +1413,7 @@ static void ScriptCmd_panse_27(void) #define tNumberOfPlays data[3] #define tFrameCounter data[8] -static void ScriptCmd_loopsewithpan(void) +static void Cmd_loopsewithpan(void) { u16 songId; s8 panningArg, panning; @@ -3096,7 +1470,7 @@ static void Task_LoopAndPlaySE(u8 taskId) #define tPanning data[1] #define tFramesToWait data[2] -static void ScriptCmd_waitplaysewithpan(void) +static void Cmd_waitplaysewithpan(void) { u16 songId; s8 panningArg, panning; @@ -3132,7 +1506,7 @@ static void Task_WaitAndPlaySE(u8 taskId) #undef tPanning #undef tFramesToWait -static void ScriptCmd_createsoundtask(void) +static void Cmd_createsoundtask(void) { TaskFunc func; u8 numArgs, taskId; @@ -3153,7 +1527,7 @@ static void ScriptCmd_createsoundtask(void) gAnimSoundTaskCount++; } -static void ScriptCmd_waitsound(void) +static void Cmd_waitsound(void) { if (gAnimSoundTaskCount != 0) { @@ -3181,7 +1555,7 @@ static void ScriptCmd_waitsound(void) } } -static void ScriptCmd_jumpargeq(void) +static void Cmd_jumpargeq(void) { u8 argId; s16 valueToCheck; @@ -3196,12 +1570,12 @@ static void ScriptCmd_jumpargeq(void) sBattleAnimScriptPtr += 7; } -static void ScriptCmd_jumpifcontest(void) +static void Cmd_jumpifcontest(void) { sBattleAnimScriptPtr += 5; } -static void ScriptCmd_monbgprio_28(void) +static void Cmd_monbgprio_28(void) { u8 wantedBattler; u8 battlerId; @@ -3223,14 +1597,14 @@ static void ScriptCmd_monbgprio_28(void) } } -static void ScriptCmd_monbgprio_29(void) +static void Cmd_monbgprio_29(void) { sBattleAnimScriptPtr++; SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); } -static void ScriptCmd_monbgprio_2A(void) +static void Cmd_monbgprio_2A(void) { u8 wantedBattler; u8 battlerPosition; @@ -3254,7 +1628,7 @@ static void ScriptCmd_monbgprio_2A(void) } } -static void ScriptCmd_invisible(void) +static void Cmd_invisible(void) { u8 spriteId; @@ -3265,7 +1639,7 @@ static void ScriptCmd_invisible(void) sBattleAnimScriptPtr += 2; } -static void ScriptCmd_visible(void) +static void Cmd_visible(void) { u8 spriteId; @@ -3276,7 +1650,7 @@ static void ScriptCmd_visible(void) sBattleAnimScriptPtr += 2; } -static void ScriptCmd_doublebattle_2D(void) +static void Cmd_doublebattle_2D(void) { u8 wantedBattler; u8 priority; @@ -3311,7 +1685,7 @@ static void ScriptCmd_doublebattle_2D(void) } } -static void ScriptCmd_doublebattle_2E(void) +static void Cmd_doublebattle_2E(void) { u8 wantedBattler; u8 priority; @@ -3338,7 +1712,7 @@ static void ScriptCmd_doublebattle_2E(void) } } -static void ScriptCmd_stopsound(void) +static void Cmd_stopsound(void) { m4aMPlayStop(&gMPlayInfo_SE1); m4aMPlayStop(&gMPlayInfo_SE2); diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 5814daa1a..9b4c8ddfa 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -18,22 +18,22 @@ struct AnimStatsChangeData static void StartBlendAnimSpriteColor(u8 taskId, u32 selectedPalettes); static void AnimTask_BlendSpriteColor_Step2(u8 taskId); -static void Task_WaitHardwarePaletteFade(u8 taskId); -static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId); -static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite); +static void AnimTask_HardwarePaletteFade_Step(u8 taskId); +static void AnimTask_TraceMonBlended_Step(u8 taskId); +static void AnimMonTrace(struct Sprite *sprite); static void AnimTask_DrawFallingWhiteLinesOnAttacker_Step(u8 taskId); static void StatsChangeAnimation_Step1(u8 taskId); static void StatsChangeAnimation_Step2(u8 taskId); static void StatsChangeAnimation_Step3(u8 taskId); -static void sub_80BB6CC(u8 taskId); -static void sub_80BB790(u32 selectedPalettes, u16 color); -static void sub_80BB8A4(u8 taskId); -static void sub_80BBC2C(u8 taskId); -static void sub_80BC19C(u8 taskId); +static void AnimTask_Flash_Step(u8 taskId); +static void SetPalettesToColor(u32 selectedPalettes, u16 color); +static void AnimTask_UpdateSlidingBg(u8 taskId); +static void UpdateMonScrollingBgMask(u8 taskId); +static void AnimTask_WaitAndRestoreVisibility(u8 taskId); static EWRAM_DATA struct AnimStatsChangeData *sAnimStatsChangeData = NULL; -static const u16 sRgbWhite[] = { RGB(31, 31, 31) }; +static const u16 sRgbWhite[] = { RGB_WHITE }; const u8 gBattleAnimRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT }; const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, REG_OFFSET_BG2CNT, REG_OFFSET_BG3CNT }; @@ -85,13 +85,13 @@ void AnimTask_BlendExcept(u8 taskId) case 2: selectedPalettes = 0; // fall through - case 0: + case ANIM_ATTACKER: animBattlers[0] = gBattleAnimAttacker; break; case 3: selectedPalettes = 0; // fall through - case 1: + case ANIM_TARGET: animBattlers[0] = gBattleAnimTarget; break; case 4: @@ -217,16 +217,17 @@ void AnimTask_HardwarePaletteFade(u8 taskId) gBattleAnimArgs[2], gBattleAnimArgs[3], gBattleAnimArgs[4]); - gTasks[taskId].func = Task_WaitHardwarePaletteFade; + gTasks[taskId].func = AnimTask_HardwarePaletteFade_Step; } -static void Task_WaitHardwarePaletteFade(u8 taskId) +static void AnimTask_HardwarePaletteFade_Step(u8 taskId) { if (!gPaletteFade.active) DestroyAnimVisualTask(taskId); } -void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId) +// Used to leave blended traces of a mon, usually to imply speed as in Agility or Aerial Ace +void AnimTask_TraceMonBlended(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -236,9 +237,9 @@ void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId) task->data[3] = gBattleAnimArgs[2]; task->data[4] = gBattleAnimArgs[3]; task->data[5] = 0; - task->func = Task_DoCloneBattlerSpriteWithBlend; + task->func = AnimTask_TraceMonBlended_Step; } -static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId) +static void AnimTask_TraceMonBlended_Step(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -257,7 +258,7 @@ static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId) gSprites[task->data[6]].data[0] = task->data[3]; gSprites[task->data[6]].data[1] = taskId; gSprites[task->data[6]].data[2] = 5; - gSprites[task->data[6]].callback = Task_FinishCloneBattlerSpriteWithBlend; + gSprites[task->data[6]].callback = AnimMonTrace; ++task->data[5]; } --task->data[4]; @@ -270,7 +271,7 @@ static void Task_DoCloneBattlerSpriteWithBlend(u8 taskId) } } -static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite) +static void AnimMonTrace(struct Sprite *sprite) { if (sprite->data[0]) { @@ -283,7 +284,8 @@ static void Task_FinishCloneBattlerSpriteWithBlend(struct Sprite *sprite) } } -void AnimTask_SetUpCurseBackground(u8 taskId) +// Only used by Curse for non-Ghost mons +void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId) { u16 species; s32 newSpriteId; @@ -582,17 +584,17 @@ void AnimTask_Flash(u8 taskId) { u32 selectedPalettes = GetBattleMonSpritePalettesMask(1, 1, 1, 1); - sub_80BB790(selectedPalettes, 0); + SetPalettesToColor(selectedPalettes, 0); gTasks[taskId].data[14] = selectedPalettes >> 16; selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0) & 0xFFFF; - sub_80BB790(selectedPalettes, 0xFFFF); + SetPalettesToColor(selectedPalettes, 0xFFFF); gTasks[taskId].data[15] = selectedPalettes; gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 0; - gTasks[taskId].func = sub_80BB6CC; + gTasks[taskId].func = AnimTask_Flash_Step; } -static void sub_80BB6CC(u8 taskId) +static void AnimTask_Flash_Step(u8 taskId) { u16 i; struct Task *task = &gTasks[taskId]; @@ -637,7 +639,7 @@ static void sub_80BB6CC(u8 taskId) } } -static void sub_80BB790(u32 selectedPalettes, u16 color) +static void SetPalettesToColor(u32 selectedPalettes, u16 color) { u16 i, curOffset, paletteOffset; @@ -665,7 +667,7 @@ void AnimTask_StartSlidingBg(u8 taskId) u8 newTaskId; ToggleBg3Mode(0); - newTaskId = CreateTask(sub_80BB8A4, 5); + newTaskId = CreateTask(AnimTask_UpdateSlidingBg, 5); if (gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -678,7 +680,7 @@ void AnimTask_StartSlidingBg(u8 taskId) DestroyAnimVisualTask(taskId); } -static void sub_80BB8A4(u8 taskId) +static void AnimTask_UpdateSlidingBg(u8 taskId) { gTasks[taskId].data[10] += gTasks[taskId].data[1]; gTasks[taskId].data[11] += gTasks[taskId].data[2]; @@ -713,6 +715,7 @@ void AnimTask_GetTargetIsAttackerPartner(u8 taskId) DestroyAnimVisualTask(taskId); } +// For hiding or subsequently revealing all other battlers void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) { u16 battler; @@ -723,7 +726,7 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) DestroyAnimVisualTask(taskId); } -void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette) +void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 scrollSpeed, u8 battler1, bool8 includePartner, u8 numFadeSteps, u8 fadeStepDelay, u8 duration, const u32 *gfx, const u32 *tilemap, const u32 *palette) { u16 species; u8 spriteId, newSpriteId = 0; @@ -731,8 +734,8 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar struct BattleAnimBgData animBgData; u8 battler2 = BATTLE_PARTNER(battler1); - if (IsContest() || (arg4 && !IsBattlerSpriteVisible(battler2))) - arg4 = 0; + if (IsContest() || (includePartner && !IsBattlerSpriteVisible(battler2))) + includePartner = FALSE; gBattle_WIN0H = 0; gBattle_WIN0V = 0; SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR @@ -754,7 +757,7 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar else species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler1]], MON_DATA_SPECIES); spriteId = CreateInvisibleSpriteCopy(battler1, gBattlerSpriteIds[battler1], species); - if (arg4) + if (includePartner) newSpriteId = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species); GetBattleAnimBg1Data(&animBgData); AnimLoadCompressedBgTilemap(animBgData.bgId, tilemap); @@ -764,17 +767,17 @@ void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 ar LoadCompressedPalette(palette, animBgData.paletteId * 16, 32); gBattle_BG1_X = 0; gBattle_BG1_Y = 0; - gTasks[taskId].data[1] = arg2; - gTasks[taskId].data[4] = arg5; - gTasks[taskId].data[5] = arg7; - gTasks[taskId].data[6] = arg6; + gTasks[taskId].data[1] = scrollSpeed; + gTasks[taskId].data[4] = numFadeSteps; + gTasks[taskId].data[5] = duration; + gTasks[taskId].data[6] = fadeStepDelay; gTasks[taskId].data[0] = spriteId; - gTasks[taskId].data[2] = arg4; + gTasks[taskId].data[2] = includePartner; gTasks[taskId].data[3] = newSpriteId; - gTasks[taskId].func = sub_80BBC2C; + gTasks[taskId].func = UpdateMonScrollingBgMask; } -static void sub_80BBC2C(u8 taskId) +static void UpdateMonScrollingBgMask(u8 taskId) { gTasks[taskId].data[13] += gTasks[taskId].data[1] < 0 ? -gTasks[taskId].data[1] : gTasks[taskId].data[1]; if (gTasks[taskId].data[1] < 0) @@ -856,7 +859,7 @@ void AnimTask_CopyPalUnfadedToBackup(u8 taskId) s32 paletteIndex = 0; if (gBattleAnimArgs[0] == 0) - for (selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); + for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); (selectedPalettes & 1) == 0; ++paletteIndex) selectedPalettes >>= 1; @@ -874,7 +877,7 @@ void AnimTask_CopyPalUnfadedFromBackup(u8 taskId) s32 paletteIndex = 0; if (gBattleAnimArgs[0] == 0) - for (selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); + for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); (selectedPalettes & 1) == 0; ++paletteIndex) selectedPalettes >>= 1; @@ -892,7 +895,7 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) s32 paletteIndex = 0; if (gBattleAnimArgs[0] == 0) - for (selectedPalettes = GetBattlePalettesMask(1, 0, 0, 0, 0, 0, 0); + for (selectedPalettes = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); (selectedPalettes & 1) == 0; ++paletteIndex) selectedPalettes >>= 1; @@ -907,9 +910,9 @@ void AnimTask_CopyPalFadedToUnfaded(u8 taskId) void AnimTask_IsContest(u8 taskId) { if (IsContest()) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; else - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; DestroyAnimVisualTask(taskId); } @@ -923,9 +926,9 @@ void AnimTask_SetAnimAttackerAndTargetForEffectTgt(u8 taskId) void AnimTask_IsTargetSameSide(u8 taskId) { if (GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) - gBattleAnimArgs[7] = 1; + gBattleAnimArgs[ARG_RET_ID] = TRUE; else - gBattleAnimArgs[7] = 0; + gBattleAnimArgs[ARG_RET_ID] = FALSE; DestroyAnimVisualTask(taskId); } @@ -952,12 +955,12 @@ void AnimTask_SetAttackerInvisibleWaitForSignal(u8 taskId) { gTasks[taskId].data[0] = gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible; gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].invisible = 1; - gTasks[taskId].func = sub_80BC19C; + gTasks[taskId].func = AnimTask_WaitAndRestoreVisibility; --gAnimVisualTaskCount; } } -static void sub_80BC19C(u8 taskId) +static void AnimTask_WaitAndRestoreVisibility(u8 taskId) { if (gBattleAnimArgs[7] == 0x1000) { diff --git a/src/battle_anim_water.c b/src/battle_anim_water.c index 75ea6c7fa..03d65358d 100644 --- a/src/battle_anim_water.c +++ b/src/battle_anim_water.c @@ -12,8 +12,6 @@ #include "trig.h" #include "util.h" -#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345) - static void AnimRainDrop(struct Sprite *); static void AnimRainDrop_Step(struct Sprite *); static void AnimWaterBubbleProjectile(struct Sprite *); @@ -55,9 +53,8 @@ static void AnimTask_WaterSport_Step(u8); static void CreateWaterSportDroplet(struct Task *); static void CreateWaterPulseRingBubbles(struct Sprite *, s32, s32); -// Both unused? Comment copied from pokeemerald -static const u8 gUnknown_83E44F4[] = INCBIN_U8("graphics/battle_anims/unk_83E44F4.4bpp"); -static const u8 gUnknown_83E4874[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.bin"); +static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unk_83E44F4.4bpp"); +static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.bin"); static const union AnimCmd sAnim_RainDrop[] = { @@ -488,8 +485,8 @@ void AnimTask_CreateRaindrops(u8 taskId) gTasks[taskId].data[0]++; if (gTasks[taskId].data[0] % gTasks[taskId].data[2] == 1) { - x = Random() % 240; - y = Random() % 80; + x = Random() % DISPLAY_WIDTH; + y = Random() % (DISPLAY_HEIGHT / 2); CreateSprite(&gRainDropSpriteTemplate, x, y, 4); } if (gTasks[taskId].data[0] == gTasks[taskId].data[3]) @@ -521,23 +518,23 @@ static void AnimWaterBubbleProjectile(struct Sprite *sprite) if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) - gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) - gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; sprite->animPaused = TRUE; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[0]; - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[1]; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[1]; sprite->animPaused = TRUE; } if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[6]; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); spriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy); sprite->data[5] = spriteId; @@ -599,9 +596,9 @@ static void AnimAuroraBeamRings(struct Sprite *sprite) unkArg = gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + unkArg; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + unkArg; sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[3]; + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; InitAnimLinearTranslation(sprite); sprite->callback = AnimAuroraBeamRings_Step; sprite->affineAnimPaused = TRUE; @@ -653,9 +650,9 @@ static void AnimToTargetInSinWave(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = 30; sprite->data[1] = sprite->x; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->data[3] = sprite->y; - sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); sprite->data[5] = 0xD200 / sprite->data[0]; sprite->data[7] = gBattleAnimArgs[3]; @@ -708,8 +705,8 @@ static void AnimHydroCannonCharge(struct Sprite *sprite) { u8 priority; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); sprite->y2 = -10; priority = GetBattlerSpriteSubpriority(gBattleAnimAttacker); if (!IsContest()) @@ -755,14 +752,14 @@ static void AnimHydroCannonBeam(struct Sprite *sprite) else animType = FALSE; if ((u8)gBattleAnimArgs[5] == 0) - coordType = 3; + coordType = BATTLER_COORD_Y_PIC_OFFSET; else coordType = 1; InitSpritePosToAnimAttacker(sprite, animType); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) gBattleAnimArgs[2] = -gBattleAnimArgs[2]; sprite->data[0] = gBattleAnimArgs[4]; - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[2]; + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + gBattleAnimArgs[2]; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, coordType) + gBattleAnimArgs[3]; sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); @@ -1173,8 +1170,8 @@ static u8 GetWaterSpoutPowerForAnim(void) static void CreateWaterSpoutLaunchDroplets(struct Task *task, u8 taskId) { s16 i; - s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + s16 attackerCoordX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + s16 attackerCoordY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); s16 trigIndex = 172; u8 subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1; s16 increment = 4 - task->data[1]; @@ -1347,8 +1344,8 @@ void AnimTask_WaterSport(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + task->data[4] = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); task->data[7] = (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) ? 1 : -1; if (IsContest()) task->data[7] *= -1; @@ -1520,8 +1517,8 @@ static void AnimWaterPulseRingBubble(struct Sprite *sprite) void AnimWaterPulseRing(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); - sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 2); - sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 3); + sprite->data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); + sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[3] = gBattleAnimArgs[2]; sprite->data[4] = gBattleAnimArgs[3]; sprite->callback = AnimWaterPulseRing_Step; diff --git a/src/data/battle_anim.h b/src/data/battle_anim.h new file mode 100644 index 000000000..ec8dc3de7 --- /dev/null +++ b/src/data/battle_anim.h @@ -0,0 +1,1625 @@ +const struct OamData gOamData_AffineOff_ObjNormal_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + + +const struct OamData gOamData_AffineOff_ObjNormal_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjNormal_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjNormal_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjNormal_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_NORMAL, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineOff_ObjBlend_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_OFF, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineNormal_ObjBlend_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_8x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x8), + .x = 0, + .size = SPRITE_SIZE(8x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_16x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x16), + .x = 0, + .size = SPRITE_SIZE(16x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x32), + .x = 0, + .size = SPRITE_SIZE(32x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_64x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x64), + .x = 0, + .size = SPRITE_SIZE(64x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_16x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x8), + .x = 0, + .size = SPRITE_SIZE(16x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x8 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x8), + .x = 0, + .size = SPRITE_SIZE(32x8), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x16), + .x = 0, + .size = SPRITE_SIZE(32x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_64x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(64x32), + .x = 0, + .size = SPRITE_SIZE(64x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_8x16 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x16), + .x = 0, + .size = SPRITE_SIZE(8x16), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_8x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(8x32), + .x = 0, + .size = SPRITE_SIZE(8x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_16x32 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(16x32), + .x = 0, + .size = SPRITE_SIZE(16x32), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct OamData gOamData_AffineDouble_ObjBlend_32x64 = +{ + .y = 0, + .affineMode = ST_OAM_AFFINE_DOUBLE, + .objMode = ST_OAM_OBJ_BLEND, + .bpp = ST_OAM_4BPP, + .shape = SPRITE_SHAPE(32x64), + .x = 0, + .size = SPRITE_SIZE(32x64), + .tileNum = 0, + .priority = 2, + .paletteNum = 0, +}; + +const struct CompressedSpriteSheet gBattleAnimPicTable[] = +{ + {gBattleAnimSpriteGfx_Bone, 0x0200, ANIM_TAG_BONE}, + {gBattleAnimSpriteGfx_Spark, 0x0300, ANIM_TAG_SPARK}, + {gBattleAnimSpriteGfx_Pencil, 0x0200, ANIM_TAG_PENCIL}, + {gBattleAnimSpriteGfx_AirWave, 0x0100, ANIM_TAG_AIR_WAVE}, + {gBattleAnimSpriteGfx_Orb, 0x0200, ANIM_TAG_ORB}, + {gBattleAnimSpriteGfx_Sword, 0x0400, ANIM_TAG_SWORD}, + {gBattleAnimSpriteGfx_Seed, 0x0180, ANIM_TAG_SEED}, + {gBattleAnimSpriteGfx_Explosion6, 0x0800, ANIM_TAG_EXPLOSION_6}, + {gBattleAnimSpriteGfx_PinkOrb, 0x0020, ANIM_TAG_PINK_ORB}, + {gBattleAnimSpriteGfx_Gust, 0x0400, ANIM_TAG_GUST}, + {gBattleAnimSpriteGfx_IceCube, 0x1200, ANIM_TAG_ICE_CUBE}, + {gBattleAnimSpriteGfx_Spark2, 0x0180, ANIM_TAG_SPARK_2}, + {gBattleAnimSpriteGfx_Orange, 0x0080, ANIM_TAG_ORANGE}, + {gBattleAnimSpriteGfx_YellowBall, 0x0080, ANIM_TAG_YELLOW_BALL}, + {gBattleAnimSpriteGfx_LockOn, 0x0280, ANIM_TAG_LOCK_ON}, + {gBattleAnimSpriteGfx_TiedBag, 0x0080, ANIM_TAG_TIED_BAG}, + {gBattleAnimSpriteGfx_BlackSmoke, 0x0100, ANIM_TAG_BLACK_SMOKE}, + {gBattleAnimSpriteGfx_BlackBall, 0x0020, ANIM_TAG_BLACK_BALL}, + {gBattleAnimSpriteGfx_Conversion, 0x0080, ANIM_TAG_CONVERSION}, + {gBattleAnimSpriteGfx_Glass, 0x0400, ANIM_TAG_GLASS}, + {gBattleAnimSpriteGfx_HornHit, 0x0200, ANIM_TAG_HORN_HIT}, + {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT}, + {gBattleAnimSpriteGfx_Hit, 0x0A00, ANIM_TAG_HIT_2}, + {gBattleAnimSpriteGfx_BlueShards, 0x0380, ANIM_TAG_BLUE_SHARDS}, + {gBattleAnimSpriteGfx_ClosingEye, 0x0300, ANIM_TAG_CLOSING_EYE}, + {gBattleAnimSpriteGfx_WavingHand, 0x0A00, ANIM_TAG_WAVING_HAND}, + {gBattleAnimSpriteGfx_HitDuplicate, 0x0A00, ANIM_TAG_HIT_DUPLICATE}, + {gBattleAnimSpriteGfx_Leer, 0x0A00, ANIM_TAG_LEER}, + {gBattleAnimSpriteGfx_BlueBurst, 0x0A00, ANIM_TAG_BLUE_BURST}, + {gBattleAnimSpriteGfx_SmallEmber, 0x0A00, ANIM_TAG_SMALL_EMBER}, + {gBattleAnimSpriteGfx_GraySmoke, 0x0A00, ANIM_TAG_GRAY_SMOKE}, + {gBattleAnimSpriteGfx_BlueStar, 0x0E00, ANIM_TAG_BLUE_STAR}, + {gBattleAnimSpriteGfx_BubbleBurst, 0x0380, ANIM_TAG_BUBBLE_BURST}, + {gBattleAnimSpriteGfx_Fire, 0x1000, ANIM_TAG_FIRE}, + {gBattleAnimSpriteGfx_SpinningFire, 0x0800, ANIM_TAG_SPINNING_FIRE}, + {gBattleAnimSpriteGfx_FirePlume, 0x0A00, ANIM_TAG_FIRE_PLUME}, + {gBattleAnimSpriteGfx_Lightning2, 0x0800, ANIM_TAG_LIGHTNING_2}, + {gBattleAnimSpriteGfx_Lightning, 0x0A00, ANIM_TAG_LIGHTNING}, + {gBattleAnimSpriteGfx_ClawSlash2, 0x0A00, ANIM_TAG_CLAW_SLASH_2}, + {gBattleAnimSpriteGfx_ClawSlash, 0x0A00, ANIM_TAG_CLAW_SLASH}, + {gBattleAnimSpriteGfx_Scratch3, 0x0A00, ANIM_TAG_SCRATCH_3}, + {gBattleAnimSpriteGfx_Scratch2, 0x0A00, ANIM_TAG_SCRATCH_2}, + {gBattleAnimSpriteGfx_BubbleBurst2, 0x0A00, ANIM_TAG_BUBBLE_BURST_2}, + {gBattleAnimSpriteGfx_IceChunk, 0x0A00, ANIM_TAG_ICE_CHUNK}, + {gBattleAnimSpriteGfx_Glass2, 0x0A00, ANIM_TAG_GLASS_2}, + {gBattleAnimSpriteGfx_PinkHeart2, 0x0A00, ANIM_TAG_PINK_HEART_2}, + {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP}, + {gBattleAnimSpriteGfx_SapDrip, 0x1000, ANIM_TAG_SAP_DRIP_2}, + {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_1}, + {gBattleAnimSpriteGfx_Sparkle1, 0x1000, ANIM_TAG_SPARKLE_2}, + {gBattleAnimSpriteGfx_HumanoidFoot, 0x0200, ANIM_TAG_HUMANOID_FOOT}, + {gBattleAnimSpriteGfx_MonsterFoot, 0x0200, ANIM_TAG_MONSTER_FOOT}, + {gBattleAnimSpriteGfx_HumanoidHand, 0x0200, ANIM_TAG_HUMANOID_HAND}, + {gBattleAnimSpriteGfx_NoiseLine, 0x0800, ANIM_TAG_NOISE_LINE}, + {gBattleAnimSpriteGfx_YellowUnk, 0x0080, ANIM_TAG_YELLOW_UNK}, + {gBattleAnimSpriteGfx_RedFist, 0x0200, ANIM_TAG_RED_FIST}, + {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_SLAM_HIT}, + {gBattleAnimSpriteGfx_Ring, 0x0180, ANIM_TAG_RING}, + {gBattleAnimSpriteGfx_Rocks, 0x0C00, ANIM_TAG_ROCKS}, + {gBattleAnimSpriteGfx_Z, 0x0100, ANIM_TAG_Z}, + {gBattleAnimSpriteGfx_YellowUnk2, 0x0040, ANIM_TAG_YELLOW_UNK_2}, + {gBattleAnimSpriteGfx_AirSlash, 0x0180, ANIM_TAG_AIR_SLASH}, + {gBattleAnimSpriteGfx_SpinningGreenOrbs, 0x0800, ANIM_TAG_SPINNING_GREEN_ORBS}, + {gBattleAnimSpriteGfx_Leaf, 0x0480, ANIM_TAG_LEAF}, + {gBattleAnimSpriteGfx_Finger, 0x0200, ANIM_TAG_FINGER}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POISON_POWDER}, + {gBattleAnimSpriteGfx_BrownTriangle, 0x0100, ANIM_TAG_BROWN_TRIANGLE}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_SLEEP_POWDER}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_STUN_SPORE}, + {gBattleAnimSpriteGfx_PoisonPowder, 0x0200, ANIM_TAG_POWDER}, + {gBattleAnimSpriteGfx_Sparkle3, 0x0200, ANIM_TAG_SPARKLE_3}, + {gBattleAnimSpriteGfx_Sparkle4, 0x0A00, ANIM_TAG_SPARKLE_4}, + {gBattleAnimSpriteGfx_MusicNotes, 0x0300, ANIM_TAG_MUSIC_NOTES}, + {gBattleAnimSpriteGfx_Duck, 0x0180, ANIM_TAG_DUCK}, + {gBattleAnimSpriteGfx_MudSand, 0x00A0, ANIM_TAG_MUD_SAND}, + {gBattleAnimSpriteGfx_Alert, 0x0700, ANIM_TAG_ALERT}, + {gBattleAnimSpriteGfx_BlueFlames, 0x0400, ANIM_TAG_BLUE_FLAMES}, + {gBattleAnimSpriteGfx_BlueFlames2, 0x0200, ANIM_TAG_BLUE_FLAMES_2}, + {gBattleAnimSpriteGfx_Shock4, 0x0300, ANIM_TAG_SHOCK_4}, + {gBattleAnimSpriteGfx_Shock, 0x0C00, ANIM_TAG_SHOCK}, + {gBattleAnimSpriteGfx_Bell2, 0x0A00, ANIM_TAG_BELL_2}, + {gBattleAnimSpriteGfx_PinkGlove, 0x0080, ANIM_TAG_PINK_GLOVE}, + {gBattleAnimSpriteGfx_BlueLines, 0x0040, ANIM_TAG_BLUE_LINES}, + {gBattleAnimSpriteGfx_Impact3, 0x0E00, ANIM_TAG_IMPACT_3}, + {gBattleAnimSpriteGfx_Impact2, 0x0E00, ANIM_TAG_IMPACT_2}, + {gBattleAnimSpriteGfx_Reticle, 0x0280, ANIM_TAG_RETICLE}, + {gBattleAnimSpriteGfx_Breath, 0x0200, ANIM_TAG_BREATH}, + {gBattleAnimSpriteGfx_Anger, 0x0080, ANIM_TAG_ANGER}, + {gBattleAnimSpriteGfx_Snowball, 0x00C0, ANIM_TAG_SNOWBALL}, + {gBattleAnimSpriteGfx_Vine, 0x0A00, ANIM_TAG_VINE}, + {gBattleAnimSpriteGfx_Sword2, 0x0200, ANIM_TAG_SWORD_2}, + {gBattleAnimSpriteGfx_Clapping, 0x0180, ANIM_TAG_CLAPPING}, + {gBattleAnimSpriteGfx_RedTube, 0x0080, ANIM_TAG_RED_TUBE}, + {gBattleAnimSpriteGfx_Amnesia, 0x1000, ANIM_TAG_AMNESIA}, + {gBattleAnimSpriteGfx_String2, 0x0A00, ANIM_TAG_STRING_2}, + {gBattleAnimSpriteGfx_Pencil2, 0x0180, ANIM_TAG_PENCIL_2}, + {gBattleAnimSpriteGfx_Petal, 0x0380, ANIM_TAG_PETAL}, + {gBattleAnimSpriteGfx_BentSpoon, 0x0C00, ANIM_TAG_BENT_SPOON}, + {gBattleAnimSpriteGfx_Web, 0x0200, ANIM_TAG_WEB}, + {gBattleAnimSpriteGfx_MilkBottle, 0x0200, ANIM_TAG_MILK_BOTTLE}, + {gBattleAnimSpriteGfx_Coin, 0x0200, ANIM_TAG_COIN}, + {gBattleAnimSpriteGfx_CrackedEgg, 0x0200, ANIM_TAG_CRACKED_EGG}, + {gBattleAnimSpriteGfx_HatchedEgg, 0x0400, ANIM_TAG_HATCHED_EGG}, + {gBattleAnimSpriteGfx_FreshEgg, 0x0080, ANIM_TAG_FRESH_EGG}, + {gBattleAnimSpriteGfx_Fangs, 0x0400, ANIM_TAG_FANGS}, + {gBattleAnimSpriteGfx_Explosion2, 0x0c00, ANIM_TAG_EXPLOSION_2}, + {gBattleAnimSpriteGfx_Explosion3, 0x0200, ANIM_TAG_EXPLOSION_3}, + {gBattleAnimSpriteGfx_WaterDroplet, 0x1000, ANIM_TAG_WATER_DROPLET}, + {gBattleAnimSpriteGfx_WaterDroplet2, 0x0a00, ANIM_TAG_WATER_DROPLET_2}, + {gBattleAnimSpriteGfx_Seed2, 0x0020, ANIM_TAG_SEED_2}, + {gBattleAnimSpriteGfx_Sprout, 0x0e00, ANIM_TAG_SPROUT}, + {gBattleAnimSpriteGfx_RedWand, 0x0080, ANIM_TAG_RED_WAND}, + {gBattleAnimSpriteGfx_PurpleGreenUnk, 0x0a00, ANIM_TAG_PURPLE_GREEN_UNK}, + {gBattleAnimSpriteGfx_WaterColumn, 0x0400, ANIM_TAG_WATER_COLUMN}, + {gBattleAnimSpriteGfx_MudUnk, 0x0200, ANIM_TAG_MUD_UNK}, + {gBattleAnimSpriteGfx_RainDrops, 0x0700, ANIM_TAG_RAIN_DROPS}, + {gBattleAnimSpriteGfx_FurySwipes, 0x0800, ANIM_TAG_FURY_SWIPES}, + {gBattleAnimSpriteGfx_Vine2, 0x0a00, ANIM_TAG_VINE_2}, + {gBattleAnimSpriteGfx_Teeth, 0x0600, ANIM_TAG_TEETH}, + {gBattleAnimSpriteGfx_Bone2, 0x0800, ANIM_TAG_BONE_2}, + {gBattleAnimSpriteGfx_WhiteBag, 0x0200, ANIM_TAG_WHITE_BAG}, + {gBattleAnimSpriteGfx_Unknown, 0x0040, ANIM_TAG_UNKNOWN}, + {gBattleAnimSpriteGfx_PurpleCoral, 0x0180, ANIM_TAG_PURPLE_CORAL}, + {gBattleAnimSpriteGfx_PurpleDroplet, 0x0600, ANIM_TAG_PURPLE_DROPLET}, + {gBattleAnimSpriteGfx_Shock2, 0x0600, ANIM_TAG_SHOCK_2}, + {gBattleAnimSpriteGfx_ClosingEye2, 0x0200, ANIM_TAG_CLOSING_EYE_2}, + {gBattleAnimSpriteGfx_MetalBall, 0x0080, ANIM_TAG_METAL_BALL}, + {gBattleAnimSpriteGfx_MonsterDoll, 0x0200, ANIM_TAG_MONSTER_DOLL}, + {gBattleAnimSpriteGfx_Whirlwind, 0x0800, ANIM_TAG_WHIRLWIND}, + {gBattleAnimSpriteGfx_Whirlwind2, 0x0080, ANIM_TAG_WHIRLWIND_2}, + {gBattleAnimSpriteGfx_Explosion4, 0x0a00, ANIM_TAG_EXPLOSION_4}, + {gBattleAnimSpriteGfx_Explosion5, 0x0280, ANIM_TAG_EXPLOSION_5}, + {gBattleAnimSpriteGfx_Tongue, 0x0280, ANIM_TAG_TONGUE}, + {gBattleAnimSpriteGfx_Smoke, 0x0100, ANIM_TAG_SMOKE}, + {gBattleAnimSpriteGfx_Smoke2, 0x0200, ANIM_TAG_SMOKE_2}, + {gBattleAnimSpriteGfx_Impact, 0x0200, ANIM_TAG_IMPACT}, + {gBattleAnimSpriteGfx_CircleImpact, 0x0020, ANIM_TAG_CIRCLE_IMPACT}, + {gBattleAnimSpriteGfx_Scratch, 0x0a00, ANIM_TAG_SCRATCH}, + {gBattleAnimSpriteGfx_Cut, 0x0800, ANIM_TAG_CUT}, + {gBattleAnimSpriteGfx_SharpTeeth, 0x0800, ANIM_TAG_SHARP_TEETH}, + {gBattleAnimSpriteGfx_RainbowRings, 0x00c0, ANIM_TAG_RAINBOW_RINGS}, + {gBattleAnimSpriteGfx_IceCrystals, 0x01c0, ANIM_TAG_ICE_CRYSTALS}, + {gBattleAnimSpriteGfx_IceSpikes, 0x0100, ANIM_TAG_ICE_SPIKES}, + {gBattleAnimSpriteGfx_HandsAndFeet, 0x0800, ANIM_TAG_HANDS_AND_FEET}, + {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_MIST_CLOUD}, + {gBattleAnimSpriteGfx_Clamp, 0x0800, ANIM_TAG_CLAMP}, + {gBattleAnimSpriteGfx_Bubble, 0x0180, ANIM_TAG_BUBBLE}, + {gBattleAnimSpriteGfx_Orbs, 0x0180, ANIM_TAG_ORBS}, + {gBattleAnimSpriteGfx_WaterImpact, 0x0200, ANIM_TAG_WATER_IMPACT}, + {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_WATER_ORB}, + {gBattleAnimSpriteGfx_PoisonBubble, 0x0180, ANIM_TAG_POISON_BUBBLE}, + {gBattleAnimSpriteGfx_ToxicBubble, 0x0400, ANIM_TAG_TOXIC_BUBBLE}, + {gBattleAnimSpriteGfx_Spikes, 0x0080, ANIM_TAG_SPIKES}, + {gBattleAnimSpriteGfx_HornHit2, 0x0100, ANIM_TAG_HORN_HIT_2}, + {gBattleAnimSpriteGfx_AirWave2, 0x0100, ANIM_TAG_AIR_WAVE_2}, + {gBattleAnimSpriteGfx_SmallBubbles, 0x0140, ANIM_TAG_SMALL_BUBBLES}, + {gBattleAnimSpriteGfx_RoundShadow, 0x0800, ANIM_TAG_ROUND_SHADOW}, + {gBattleAnimSpriteGfx_Sunlight, 0x0200, ANIM_TAG_SUNLIGHT}, + {gBattleAnimSpriteGfx_Spore, 0x0100, ANIM_TAG_SPORE}, + {gBattleAnimSpriteGfx_Flower, 0x00a0, ANIM_TAG_FLOWER}, + {gBattleAnimSpriteGfx_RazorLeaf, 0x0100, ANIM_TAG_RAZOR_LEAF}, + {gBattleAnimSpriteGfx_Needle, 0x0080, ANIM_TAG_NEEDLE}, + {gBattleAnimSpriteGfx_WhirlwindLines, 0x0300, ANIM_TAG_WHIRLWIND_LINES}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_GOLD_RING}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_PURPLE_RING}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GREEN_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_BLUE_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_RED_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_GRAY_LIGHT_WALL}, + {gBattleAnimSpriteGfx_GreenLightWall, 0x0800, ANIM_TAG_ORANGE_LIGHT_WALL}, + {gBattleAnimSpriteGfx_BlackBall2, 0x0080, ANIM_TAG_BLACK_BALL_2}, + {gBattleAnimSpriteGfx_MistCloud, 0x0200, ANIM_TAG_PURPLE_GAS_CLOUD}, + {gBattleAnimSpriteGfx_SparkH, 0x0200, ANIM_TAG_SPARK_H}, + {gBattleAnimSpriteGfx_YellowStar, 0x0200, ANIM_TAG_YELLOW_STAR}, + {gBattleAnimSpriteGfx_LargeFreshEgg, 0x0080, ANIM_TAG_LARGE_FRESH_EGG}, + {gBattleAnimSpriteGfx_ShadowBall, 0x0200, ANIM_TAG_SHADOW_BALL}, + {gBattleAnimSpriteGfx_Lick, 0x0500, ANIM_TAG_LICK}, + {gBattleAnimSpriteGfx_VoidLines, 0x0800, ANIM_TAG_VOID_LINES}, + {gBattleAnimSpriteGfx_String, 0x0400, ANIM_TAG_STRING}, + {gBattleAnimSpriteGfx_WebThread, 0x0020, ANIM_TAG_WEB_THREAD}, + {gBattleAnimSpriteGfx_SpiderWeb, 0x0800, ANIM_TAG_SPIDER_WEB}, + {gBattleAnimSpriteGfx_Lightbulb, 0x0100, ANIM_TAG_LIGHTBULB}, + {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH}, + {gBattleAnimSpriteGfx_FocusEnergy, 0x0400, ANIM_TAG_FOCUS_ENERGY}, + {gBattleAnimSpriteGfx_SphereToCube, 0x0a00, ANIM_TAG_SPHERE_TO_CUBE}, + {gBattleAnimSpriteGfx_Tendrils, 0x1000, ANIM_TAG_TENDRILS}, + {gBattleAnimSpriteGfx_Eye, 0x0800, ANIM_TAG_EYE}, + {gBattleAnimSpriteGfx_WhiteShadow, 0x0400, ANIM_TAG_WHITE_SHADOW}, + {gBattleAnimSpriteGfx_TealAlert, 0x0200, ANIM_TAG_TEAL_ALERT}, + {gBattleAnimSpriteGfx_OpeningEye, 0x0800, ANIM_TAG_OPENING_EYE}, + {gBattleAnimSpriteGfx_RoundWhiteHalo, 0x0800, ANIM_TAG_ROUND_WHITE_HALO}, + {gBattleAnimSpriteGfx_FangAttack, 0x0800, ANIM_TAG_FANG_ATTACK}, + {gBattleAnimSpriteGfx_PurpleHandOutline, 0x0200, ANIM_TAG_PURPLE_HAND_OUTLINE}, + {gBattleAnimSpriteGfx_Moon, 0x0800, ANIM_TAG_MOON}, + {gBattleAnimSpriteGfx_GreenSparkle, 0x0200, ANIM_TAG_GREEN_SPARKLE}, + {gBattleAnimSpriteGfx_Spiral, 0x0800, ANIM_TAG_SPIRAL}, + {gBattleAnimSpriteGfx_SnoreZ, 0x0200, ANIM_TAG_SNORE_Z}, + {gBattleAnimSpriteGfx_Explosion, 0x0800, ANIM_TAG_EXPLOSION}, + {gBattleAnimSpriteGfx_Nail, 0x0400, ANIM_TAG_NAIL}, + {gBattleAnimSpriteGfx_GhostlySpirit, 0x0200, ANIM_TAG_GHOSTLY_SPIRIT}, + {gBattleAnimSpriteGfx_WarmRock, 0x0a80, ANIM_TAG_WARM_ROCK}, + {gBattleAnimSpriteGfx_BreakingEgg, 0x0600, ANIM_TAG_BREAKING_EGG}, + {gBattleAnimSpriteGfx_ThinRing, 0x0800, ANIM_TAG_THIN_RING}, + {gBattleAnimSpriteGfx_PunchImpact, 0x0200, ANIM_TAG_PUNCH_IMPACT}, + {gBattleAnimSpriteGfx_Bell, 0x0600, ANIM_TAG_BELL}, + {gBattleAnimSpriteGfx_MusicNotes2, 0x0800, ANIM_TAG_MUSIC_NOTES_2}, + {gBattleAnimSpriteGfx_SpeedDust, 0x0180, ANIM_TAG_SPEED_DUST}, + {gBattleAnimSpriteGfx_TornMetal, 0x0800, ANIM_TAG_TORN_METAL}, + {gBattleAnimSpriteGfx_ThoughtBubble, 0x0800, ANIM_TAG_THOUGHT_BUBBLE}, + {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_MAGENTA_HEART}, + {gBattleAnimSpriteGfx_ElectricOrbs, 0x0080, ANIM_TAG_ELECTRIC_ORBS}, + {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_CIRCLE_OF_LIGHT}, + {gBattleAnimSpriteGfx_Electricity, 0x0800, ANIM_TAG_ELECTRICITY}, + {gBattleAnimSpriteGfx_Finger2, 0x0600, ANIM_TAG_FINGER_2}, + {gBattleAnimSpriteGfx_MovementWaves, 0x0600, ANIM_TAG_MOVEMENT_WAVES}, + {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_RED_HEART}, + {gBattleAnimSpriteGfx_RedOrb, 0x0080, ANIM_TAG_RED_ORB}, + {gBattleAnimSpriteGfx_EyeSparkle, 0x0180, ANIM_TAG_EYE_SPARKLE}, + {gBattleAnimSpriteGfx_MagentaHeart, 0x0080, ANIM_TAG_PINK_HEART}, + {gBattleAnimSpriteGfx_Angel, 0x0200, ANIM_TAG_ANGEL}, + {gBattleAnimSpriteGfx_Devil, 0x0400, ANIM_TAG_DEVIL}, + {gBattleAnimSpriteGfx_Swipe, 0x0a00, ANIM_TAG_SWIPE}, + {gBattleAnimSpriteGfx_Roots, 0x0800, ANIM_TAG_ROOTS}, + {gBattleAnimSpriteGfx_ItemBag, 0x0200, ANIM_TAG_ITEM_BAG}, + {gBattleAnimSpriteGfx_JaggedMusicNote, 0x0400, ANIM_TAG_JAGGED_MUSIC_NOTE}, + {gBattleAnimSpriteGfx_Pokeball, 0x0080, ANIM_TAG_POKEBALL}, + {gBattleAnimSpriteGfx_Spotlight, 0x0800, ANIM_TAG_SPOTLIGHT}, + {gBattleAnimSpriteGfx_LetterZ, 0x0200, ANIM_TAG_LETTER_Z}, + {gBattleAnimSpriteGfx_RapidSpin, 0x0300, ANIM_TAG_RAPID_SPIN}, + {gBattleAnimSpriteGfx_TriAttackTriangle, 0x0800, ANIM_TAG_TRI_ATTACK_TRIANGLE}, + {gBattleAnimSpriteGfx_WispOrb, 0x0380, ANIM_TAG_WISP_ORB}, + {gBattleAnimSpriteGfx_WispFire, 0x0800, ANIM_TAG_WISP_FIRE}, + {gBattleAnimSpriteGfx_GoldStars, 0x00c0, ANIM_TAG_GOLD_STARS}, + {gBattleAnimSpriteGfx_EclipsingOrb, 0x0800, ANIM_TAG_ECLIPSING_ORB}, + {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_GRAY_ORB}, + {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_BLUE_ORB}, + {gBattleAnimSpriteGfx_GrayOrb, 0x0060, ANIM_TAG_RED_ORB_2}, + {gBattleAnimSpriteGfx_PinkPetal, 0x0080, ANIM_TAG_PINK_PETAL}, + {gBattleAnimSpriteGfx_PainSplit, 0x0180, ANIM_TAG_PAIN_SPLIT}, + {gBattleAnimSpriteGfx_Confetti, 0x0180, ANIM_TAG_CONFETTI}, + {gBattleAnimSpriteGfx_GreenStar, 0x0200, ANIM_TAG_GREEN_STAR}, + {gBattleAnimSpriteGfx_PinkCloud, 0x0200, ANIM_TAG_PINK_CLOUD}, + {gBattleAnimSpriteGfx_SweatDrop, 0x0020, ANIM_TAG_SWEAT_DROP}, + {gBattleAnimSpriteGfx_GuardRing, 0x0400, ANIM_TAG_GUARD_RING}, + {gBattleAnimSpriteGfx_PurpleScratch, 0x0600, ANIM_TAG_PURPLE_SCRATCH}, + {gBattleAnimSpriteGfx_PurpleSwipe, 0x1000, ANIM_TAG_PURPLE_SWIPE}, + {gBattleAnimSpriteGfx_TagHand, 0x0400, ANIM_TAG_TAG_HAND}, + {gBattleAnimSpriteGfx_SmallRedEye, 0x0020, ANIM_TAG_SMALL_RED_EYE}, + {gBattleAnimSpriteGfx_HollowOrb, 0x0080, ANIM_TAG_HOLLOW_ORB}, + {gBattleAnimSpriteGfx_XSign, 0x0800, ANIM_TAG_X_SIGN}, + {gBattleAnimSpriteGfx_BluegreenOrb, 0x0080, ANIM_TAG_BLUEGREEN_ORB}, + {gBattleAnimSpriteGfx_PawPrint, 0x0200, ANIM_TAG_PAW_PRINT}, + {gBattleAnimSpriteGfx_PurpleFlame, 0x0400, ANIM_TAG_PURPLE_FLAME}, + {gBattleAnimSpriteGfx_RedBall, 0x0200, ANIM_TAG_RED_BALL}, + {gBattleAnimSpriteGfx_SmellingsaltEffect, 0x0200, ANIM_TAG_SMELLINGSALT_EFFECT}, + {gBattleAnimSpriteGfx_Meteor, 0x0800, ANIM_TAG_METEOR}, + {gBattleAnimSpriteGfx_FlatRock, 0x0280, ANIM_TAG_FLAT_ROCK}, + {gBattleAnimSpriteGfx_MagnifyingGlass, 0x0200, ANIM_TAG_MAGNIFYING_GLASS}, + {gBattleAnimSpriteGfx_WaterOrb, 0x0200, ANIM_TAG_BROWN_ORB}, + {gBattleAnimSpriteGfx_MetalSoundWaves, 0x0400, ANIM_TAG_METAL_SOUND_WAVES}, + {gBattleAnimSpriteGfx_FlyingDirt, 0x0200, ANIM_TAG_FLYING_DIRT}, + {gBattleAnimSpriteGfx_IcicleSpear, 0x0200, ANIM_TAG_ICICLE_SPEAR}, + {gBattleAnimSpriteGfx_Hail, 0x0080, ANIM_TAG_HAIL}, + {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_RED_ORB}, + {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_GREEN_ORB}, + {gBattleAnimSpriteGfx_GreenSpike, 0x0080, ANIM_TAG_GREEN_SPIKE}, + {gBattleAnimSpriteGfx_CircleOfLight, 0x0800, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, + {gBattleAnimSpriteGfx_GlowyRedOrb, 0x0020, ANIM_TAG_GLOWY_BLUE_ORB}, + {gBattleAnimSpriteGfx_SafariBait, 0x0080, ANIM_TAG_SAFARI_BAIT}, + {gBattleAnimSpriteGfx_WhiteFeather, 0x0400, ANIM_TAG_WHITE_FEATHER}, + {gBattleAnimSpriteGfx_Sparkle6, 0x0080, ANIM_TAG_SPARKLE_6}, + {gBattleAnimSpriteGfx_Splash, 0x0800, ANIM_TAG_SPLASH}, + {gBattleAnimSpriteGfx_SweatBead, 0x0020, ANIM_TAG_SWEAT_BEAD}, + {gBattleAnimSpriteGfx_Gem1, 0x0800, ANIM_TAG_GEM_1}, + {gBattleAnimSpriteGfx_Gem2, 0x0800, ANIM_TAG_GEM_2}, + {gBattleAnimSpriteGfx_Gem3, 0x0800, ANIM_TAG_GEM_3}, + {gBattleAnimSpriteGfx_SlamHit2, 0x1000, ANIM_TAG_SLAM_HIT_2}, + {gBattleAnimSpriteGfx_Recycle, 0x0800, ANIM_TAG_RECYCLE}, + {gBattleAnimSpriteGfx_RedParticles, 0x00a0, ANIM_TAG_RED_PARTICLES}, + {gBattleAnimSpriteGfx_Protect, 0x0800, ANIM_TAG_PROTECT}, + {gBattleAnimSpriteGfx_DirtMound, 0x0200, ANIM_TAG_DIRT_MOUND}, + {gBattleAnimSpriteGfx_Shock3, 0x0600, ANIM_TAG_SHOCK_3}, + {gBattleAnimSpriteGfx_WeatherBall, 0x0200, ANIM_TAG_WEATHER_BALL}, + {gBattleAnimSpriteGfx_Bird, 0x0800, ANIM_TAG_BIRD}, + {gBattleAnimSpriteGfx_CrossImpact, 0x0200, ANIM_TAG_CROSS_IMPACT}, + {gBattleAnimSpriteGfx_Slash, 0x0800, ANIM_TAG_SLASH_2}, + {gBattleAnimSpriteGfx_SlamHit, 0x1000, ANIM_TAG_WHIP_HIT}, + {gBattleAnimSpriteGfx_GoldRing, 0x0100, ANIM_TAG_BLUE_RING_2}, +}; + +const struct CompressedSpritePalette gBattleAnimPaletteTable[] = +{ + {gBattleAnimSpritePal_Bone, ANIM_TAG_BONE}, + {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK}, + {gBattleAnimSpritePal_Pencil, ANIM_TAG_PENCIL}, + {gBattleAnimSpritePal_AirWave, ANIM_TAG_AIR_WAVE}, + {gBattleAnimSpritePal_Orb, ANIM_TAG_ORB}, + {gBattleAnimSpritePal_Sword, ANIM_TAG_SWORD}, + {gBattleAnimSpritePal_Seed, ANIM_TAG_SEED}, + {gBattleAnimSpritePal_Explosion6, ANIM_TAG_EXPLOSION_6}, + {gBattleAnimSpritePal_PinkOrb, ANIM_TAG_PINK_ORB}, + {gBattleAnimSpritePal_Gust, ANIM_TAG_GUST}, + {gBattleAnimSpritePal_IceCube, ANIM_TAG_ICE_CUBE}, + {gBattleAnimSpritePal_Spark2, ANIM_TAG_SPARK_2}, + {gBattleAnimSpritePal_Orange, ANIM_TAG_ORANGE}, + {gBattleAnimSpritePal_YellowBall, ANIM_TAG_YELLOW_BALL}, + {gBattleAnimSpritePal_LockOn, ANIM_TAG_LOCK_ON}, + {gBattleAnimSpritePal_TiedBag, ANIM_TAG_TIED_BAG}, + {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_SMOKE}, + {gBattleAnimSpritePal_BlackSmoke, ANIM_TAG_BLACK_BALL}, + {gBattleAnimSpritePal_Conversion, ANIM_TAG_CONVERSION}, + {gBattleAnimSpritePal_Glass, ANIM_TAG_GLASS}, + {gBattleAnimSpritePal_HornHit, ANIM_TAG_HORN_HIT}, + {gBattleAnimSpritePal_Hit, ANIM_TAG_HIT}, + {gBattleAnimSpritePal_Hit2, ANIM_TAG_HIT_2}, + {gBattleAnimSpritePal_BlueShards, ANIM_TAG_BLUE_SHARDS}, + {gBattleAnimSpritePal_ClosingEye, ANIM_TAG_CLOSING_EYE}, + {gBattleAnimSpritePal_WavingHand, ANIM_TAG_WAVING_HAND}, + {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_HIT_DUPLICATE}, + {gBattleAnimSpritePal_Leer, ANIM_TAG_LEER}, + {gBattleAnimSpritePal_BlueBurst, ANIM_TAG_BLUE_BURST}, + {gBattleAnimSpritePal_SmallEmber, ANIM_TAG_SMALL_EMBER}, + {gBattleAnimSpritePal_GraySmoke, ANIM_TAG_GRAY_SMOKE}, + {gBattleAnimSpritePal_BlueStar, ANIM_TAG_BLUE_STAR}, + {gBattleAnimSpritePal_BubbleBurst, ANIM_TAG_BUBBLE_BURST}, + {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE}, + {gBattleAnimSpritePal_Fire, ANIM_TAG_SPINNING_FIRE}, + {gBattleAnimSpritePal_Fire, ANIM_TAG_FIRE_PLUME}, + {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING_2}, + {gBattleAnimSpritePal_Lightning2, ANIM_TAG_LIGHTNING}, + {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_CLAW_SLASH_2}, + {gBattleAnimSpritePal_ClawSlash, ANIM_TAG_CLAW_SLASH}, + {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_3}, + {gBattleAnimSpritePal_ClawSlash2, ANIM_TAG_SCRATCH_2}, + {gBattleAnimSpritePal_BubbleBurst2, ANIM_TAG_BUBBLE_BURST_2}, + {gBattleAnimSpritePal_IceChunk, ANIM_TAG_ICE_CHUNK}, + {gBattleAnimSpritePal_Glass2, ANIM_TAG_GLASS_2}, + {gBattleAnimSpritePal_PinkHeart2, ANIM_TAG_PINK_HEART_2}, + {gBattleAnimSpritePal_SapDrip, ANIM_TAG_SAP_DRIP}, + {gBattleAnimSpritePal_SapDrip2, ANIM_TAG_SAP_DRIP}, + {gBattleAnimSpritePal_Sparkle1, ANIM_TAG_SPARKLE_1}, + {gBattleAnimSpritePal_Sparkle2, ANIM_TAG_SPARKLE_2}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_FOOT}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_MONSTER_FOOT}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_HUMANOID_HAND}, + {gBattleAnimSpritePal_HitDuplicate, ANIM_TAG_NOISE_LINE}, + {gBattleAnimSpritePal_YellowUnk, ANIM_TAG_YELLOW_UNK}, + {gBattleAnimSpritePal_HumanoidFoot, ANIM_TAG_RED_FIST}, + {gBattleAnimSpritePal_SlamHit, ANIM_TAG_SLAM_HIT}, + {gBattleAnimSpritePal_Ring, ANIM_TAG_RING}, + {gBattleAnimSpritePal_Rocks, ANIM_TAG_ROCKS}, + {gBattleAnimSpritePal_Z, ANIM_TAG_Z}, + {gBattleAnimSpritePal_YellowUnk2, ANIM_TAG_YELLOW_UNK_2}, + {gBattleAnimSpritePal_AirSlash, ANIM_TAG_AIR_SLASH}, + {gBattleAnimSpritePal_SpinningGreenOrbs, ANIM_TAG_SPINNING_GREEN_ORBS}, + {gBattleAnimSpritePal_Leaf, ANIM_TAG_LEAF}, + {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER}, + {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POISON_POWDER}, + {gBattleAnimSpritePal_BrownTriangle, ANIM_TAG_BROWN_TRIANGLE}, + {gBattleAnimSpritePal_SleepPowder, ANIM_TAG_SLEEP_POWDER}, + {gBattleAnimSpritePal_StunSpore, ANIM_TAG_STUN_SPORE}, + {gBattleAnimSpritePal_PoisonPowder, ANIM_TAG_POWDER}, + {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_3}, + {gBattleAnimSpritePal_Sparkle3, ANIM_TAG_SPARKLE_4}, + {gBattleAnimSpritePal_MusicNotes, ANIM_TAG_MUSIC_NOTES}, + {gBattleAnimSpritePal_Duck, ANIM_TAG_DUCK}, + {gBattleAnimSpritePal_MudSand, ANIM_TAG_MUD_SAND}, + {gBattleAnimSpritePal_Alert, ANIM_TAG_ALERT}, + {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES}, + {gBattleAnimSpritePal_BlueFlames, ANIM_TAG_BLUE_FLAMES_2}, + {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK_4}, + {gBattleAnimSpritePal_Shock4, ANIM_TAG_SHOCK}, + {gBattleAnimSpritePal_Bell2, ANIM_TAG_BELL_2}, + {gBattleAnimSpritePal_PinkGlove, ANIM_TAG_PINK_GLOVE}, + {gBattleAnimSpritePal_BlueLines, ANIM_TAG_BLUE_LINES}, + {gBattleAnimSpritePal_Impact3, ANIM_TAG_IMPACT_3}, + {gBattleAnimSpritePal_Impact2, ANIM_TAG_IMPACT_2}, + {gBattleAnimSpritePal_Reticle, ANIM_TAG_RETICLE}, + {gBattleAnimSpritePal_Breath, ANIM_TAG_BREATH}, + {gBattleAnimSpritePal_Anger, ANIM_TAG_ANGER}, + {gBattleAnimSpritePal_Snowball, ANIM_TAG_SNOWBALL}, + {gBattleAnimSpritePal_Vine, ANIM_TAG_VINE}, + {gBattleAnimSpritePal_Sword2, ANIM_TAG_SWORD_2}, + {gBattleAnimSpritePal_Clapping, ANIM_TAG_CLAPPING}, + {gBattleAnimSpritePal_RedTube, ANIM_TAG_RED_TUBE}, + {gBattleAnimSpritePal_Amnesia, ANIM_TAG_AMNESIA}, + {gBattleAnimSpritePal_String2, ANIM_TAG_STRING_2}, + {gBattleAnimSpritePal_Pencil2, ANIM_TAG_PENCIL_2}, + {gBattleAnimSpritePal_Petal, ANIM_TAG_PETAL}, + {gBattleAnimSpritePal_BentSpoon, ANIM_TAG_BENT_SPOON}, + {gBattleAnimSpritePal_String2, ANIM_TAG_WEB}, + {gBattleAnimSpritePal_MilkBottle, ANIM_TAG_MILK_BOTTLE}, + {gBattleAnimSpritePal_Coin, ANIM_TAG_COIN}, + {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_CRACKED_EGG}, + {gBattleAnimSpritePal_CrackedEgg, ANIM_TAG_HATCHED_EGG}, + {gBattleAnimSpritePal_FreshEgg, ANIM_TAG_FRESH_EGG}, + {gBattleAnimSpritePal_Fangs, ANIM_TAG_FANGS}, + {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_2}, + {gBattleAnimSpritePal_Explosion2, ANIM_TAG_EXPLOSION_3}, + {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET}, + {gBattleAnimSpritePal_WaterDroplet, ANIM_TAG_WATER_DROPLET_2}, + {gBattleAnimSpritePal_Seed2, ANIM_TAG_SEED_2}, + {gBattleAnimSpritePal_Seed2, ANIM_TAG_SPROUT}, + {gBattleAnimSpritePal_RedWand, ANIM_TAG_RED_WAND}, + {gBattleAnimSpritePal_PurpleGreenUnk, ANIM_TAG_PURPLE_GREEN_UNK}, + {gBattleAnimSpritePal_WaterColumn, ANIM_TAG_WATER_COLUMN}, + {gBattleAnimSpritePal_MudUnk, ANIM_TAG_MUD_UNK}, + {gBattleAnimSpritePal_RainDrops, ANIM_TAG_RAIN_DROPS}, + {gBattleAnimSpritePal_FurySwipes, ANIM_TAG_FURY_SWIPES}, + {gBattleAnimSpritePal_Vine2, ANIM_TAG_VINE_2}, + {gBattleAnimSpritePal_Teeth, ANIM_TAG_TEETH}, + {gBattleAnimSpritePal_Bone2, ANIM_TAG_BONE_2}, + {gBattleAnimSpritePal_WhiteBag, ANIM_TAG_WHITE_BAG}, + {gBattleAnimSpritePal_Unknown, ANIM_TAG_UNKNOWN}, + {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_CORAL}, + {gBattleAnimSpritePal_PurpleCoral, ANIM_TAG_PURPLE_DROPLET}, + {gBattleAnimSpritePal_Shock2, ANIM_TAG_SHOCK_2}, + {gBattleAnimSpritePal_ClosingEye2, ANIM_TAG_CLOSING_EYE_2}, + {gBattleAnimSpritePal_MetalBall, ANIM_TAG_METAL_BALL}, + {gBattleAnimSpritePal_MonsterDoll, ANIM_TAG_MONSTER_DOLL}, + {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND}, + {gBattleAnimSpritePal_Whirlwind, ANIM_TAG_WHIRLWIND_2}, + {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_4}, + {gBattleAnimSpritePal_Explosion4, ANIM_TAG_EXPLOSION_5}, + {gBattleAnimSpritePal_Tongue, ANIM_TAG_TONGUE}, + {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE}, + {gBattleAnimSpritePal_Smoke, ANIM_TAG_SMOKE_2}, + {gBattleAnimSpritePal_Impact, ANIM_TAG_IMPACT}, + {gBattleAnimSpritePal_CircleImpact, ANIM_TAG_CIRCLE_IMPACT}, + {gBattleAnimSpritePal_Impact, ANIM_TAG_SCRATCH}, + {gBattleAnimSpritePal_Impact, ANIM_TAG_CUT}, + {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_SHARP_TEETH}, + {gBattleAnimSpritePal_RainbowRings, ANIM_TAG_RAINBOW_RINGS}, + {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_CRYSTALS}, + {gBattleAnimSpritePal_IceCrystals, ANIM_TAG_ICE_SPIKES}, + {gBattleAnimSpritePal_HandsAndFeet, ANIM_TAG_HANDS_AND_FEET}, + {gBattleAnimSpritePal_MistCloud, ANIM_TAG_MIST_CLOUD}, + {gBattleAnimSpritePal_SharpTeeth, ANIM_TAG_CLAMP}, + {gBattleAnimSpritePal_RainDrops, ANIM_TAG_BUBBLE}, + {gBattleAnimSpritePal_Orbs, ANIM_TAG_ORBS}, + {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_IMPACT}, + {gBattleAnimSpritePal_WaterImpact, ANIM_TAG_WATER_ORB}, + {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_POISON_BUBBLE}, + {gBattleAnimSpritePal_PoisonBubble, ANIM_TAG_TOXIC_BUBBLE}, + {gBattleAnimSpritePal_Spikes, ANIM_TAG_SPIKES}, + {gBattleAnimSpritePal_HornHit2, ANIM_TAG_HORN_HIT_2}, + {gBattleAnimSpritePal_AirWave2, ANIM_TAG_AIR_WAVE_2}, + {gBattleAnimSpritePal_SmallBubbles, ANIM_TAG_SMALL_BUBBLES}, + {gBattleAnimSpritePal_RoundShadow, ANIM_TAG_ROUND_SHADOW}, + {gBattleAnimSpritePal_Sunlight, ANIM_TAG_SUNLIGHT}, + {gBattleAnimSpritePal_Spore, ANIM_TAG_SPORE}, + {gBattleAnimSpritePal_Flower, ANIM_TAG_FLOWER}, + {gBattleAnimSpritePal_RazorLeaf, ANIM_TAG_RAZOR_LEAF}, + {gBattleAnimSpritePal_Needle, ANIM_TAG_NEEDLE}, + {gBattleAnimSpritePal_WhirlwindLines, ANIM_TAG_WHIRLWIND_LINES}, + {gBattleAnimSpritePal_GoldRing, ANIM_TAG_GOLD_RING}, + {gBattleAnimSpritePal_PurpleRing, ANIM_TAG_PURPLE_RING}, + {gBattleAnimSpritePal_BlueRing, ANIM_TAG_BLUE_RING}, + {gBattleAnimSpritePal_GreenLightWall, ANIM_TAG_GREEN_LIGHT_WALL}, + {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_BLUE_LIGHT_WALL}, + {gBattleAnimSpritePal_RedLightWall, ANIM_TAG_RED_LIGHT_WALL}, + {gBattleAnimSpritePal_GrayLightWall, ANIM_TAG_GRAY_LIGHT_WALL}, + {gBattleAnimSpritePal_OrangeLightWall, ANIM_TAG_ORANGE_LIGHT_WALL}, + {gBattleAnimSpritePal_BlackBall2, ANIM_TAG_BLACK_BALL_2}, + {gBattleAnimSpritePal_PurpleGasCloud, ANIM_TAG_PURPLE_GAS_CLOUD}, + {gBattleAnimSpritePal_Spark, ANIM_TAG_SPARK_H}, + {gBattleAnimSpritePal_YellowStar, ANIM_TAG_YELLOW_STAR}, + {gBattleAnimSpritePal_LargeFreshEgg, ANIM_TAG_LARGE_FRESH_EGG}, + {gBattleAnimSpritePal_ShadowBall, ANIM_TAG_SHADOW_BALL}, + {gBattleAnimSpritePal_Lick, ANIM_TAG_LICK}, + {gBattleAnimSpritePal_VoidLines, ANIM_TAG_VOID_LINES}, + {gBattleAnimSpritePal_String, ANIM_TAG_STRING}, + {gBattleAnimSpritePal_String, ANIM_TAG_WEB_THREAD}, + {gBattleAnimSpritePal_String, ANIM_TAG_SPIDER_WEB}, + {gBattleAnimSpritePal_Lightbulb, ANIM_TAG_LIGHTBULB}, + {gBattleAnimSpritePal_Slash, ANIM_TAG_SLASH}, + {gBattleAnimSpritePal_FocusEnergy, ANIM_TAG_FOCUS_ENERGY}, + {gBattleAnimSpritePal_SphereToCube, ANIM_TAG_SPHERE_TO_CUBE}, + {gBattleAnimSpritePal_Tendrils, ANIM_TAG_TENDRILS}, + {gBattleAnimSpritePal_Eye, ANIM_TAG_EYE}, + {gBattleAnimSpritePal_WhiteShadow, ANIM_TAG_WHITE_SHADOW}, + {gBattleAnimSpritePal_TealAlert, ANIM_TAG_TEAL_ALERT}, + {gBattleAnimSpritePal_OpeningEye, ANIM_TAG_OPENING_EYE}, + {gBattleAnimSpritePal_RoundWhiteHalo, ANIM_TAG_ROUND_WHITE_HALO}, + {gBattleAnimSpritePal_FangAttack, ANIM_TAG_FANG_ATTACK}, + {gBattleAnimSpritePal_PurpleHandOutline, ANIM_TAG_PURPLE_HAND_OUTLINE}, + {gBattleAnimSpritePal_Moon, ANIM_TAG_MOON}, + {gBattleAnimSpritePal_GreenSparkle, ANIM_TAG_GREEN_SPARKLE}, + {gBattleAnimSpritePal_Spiral, ANIM_TAG_SPIRAL}, + {gBattleAnimSpritePal_SnoreZ, ANIM_TAG_SNORE_Z}, + {gBattleAnimSpritePal_Explosion, ANIM_TAG_EXPLOSION}, + {gBattleAnimSpritePal_Nail, ANIM_TAG_NAIL}, + {gBattleAnimSpritePal_GhostlySpirit, ANIM_TAG_GHOSTLY_SPIRIT}, + {gBattleAnimSpritePal_WarmRock, ANIM_TAG_WARM_ROCK}, + {gBattleAnimSpritePal_BreakingEgg, ANIM_TAG_BREAKING_EGG}, + {gBattleAnimSpritePal_ThinRing, ANIM_TAG_THIN_RING}, + {gBattleAnimSpritePal_PunchImpact, ANIM_TAG_PUNCH_IMPACT}, + {gBattleAnimSpritePal_Bell, ANIM_TAG_BELL}, + {gBattleAnimSpritePal_MusicNotes2, ANIM_TAG_MUSIC_NOTES_2}, + {gBattleAnimSpritePal_SpeedDust, ANIM_TAG_SPEED_DUST}, + {gBattleAnimSpritePal_BlueLightWall, ANIM_TAG_TORN_METAL}, + {gBattleAnimSpritePal_ThoughtBubble, ANIM_TAG_THOUGHT_BUBBLE}, + {gBattleAnimSpritePal_MagentaHeart, ANIM_TAG_MAGENTA_HEART}, + {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRIC_ORBS}, + {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_CIRCLE_OF_LIGHT}, + {gBattleAnimSpritePal_ElectricOrbs, ANIM_TAG_ELECTRICITY}, + {gBattleAnimSpritePal_Finger, ANIM_TAG_FINGER_2}, + {gBattleAnimSpritePal_MovementWaves, ANIM_TAG_MOVEMENT_WAVES}, + {gBattleAnimSpritePal_RedHeart, ANIM_TAG_RED_HEART}, + {gBattleAnimSpritePal_RedOrb, ANIM_TAG_RED_ORB}, + {gBattleAnimSpritePal_EyeSparkle, ANIM_TAG_EYE_SPARKLE}, + {gBattleAnimSpritePal_PinkHeart, ANIM_TAG_PINK_HEART}, + {gBattleAnimSpritePal_Angel, ANIM_TAG_ANGEL}, + {gBattleAnimSpritePal_Devil, ANIM_TAG_DEVIL}, + {gBattleAnimSpritePal_Swipe, ANIM_TAG_SWIPE}, + {gBattleAnimSpritePal_Roots, ANIM_TAG_ROOTS}, + {gBattleAnimSpritePal_ItemBag, ANIM_TAG_ITEM_BAG}, + {gBattleAnimSpritePal_JaggedMusicNote, ANIM_TAG_JAGGED_MUSIC_NOTE}, + {gBattleAnimSpritePal_Pokeball, ANIM_TAG_POKEBALL}, + {gBattleAnimSpritePal_Pokeball, ANIM_TAG_SPOTLIGHT}, + {gBattleAnimSpritePal_LetterZ, ANIM_TAG_LETTER_Z}, + {gBattleAnimSpritePal_RapidSpin, ANIM_TAG_RAPID_SPIN}, + {gBattleAnimSpritePal_TriAttackTriangle, ANIM_TAG_TRI_ATTACK_TRIANGLE}, + {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_ORB}, + {gBattleAnimSpritePal_WispOrb, ANIM_TAG_WISP_FIRE}, + {gBattleAnimSpritePal_GoldStars, ANIM_TAG_GOLD_STARS}, + {gBattleAnimSpritePal_EclipsingOrb, ANIM_TAG_ECLIPSING_ORB}, + {gBattleAnimSpritePal_GrayOrb, ANIM_TAG_GRAY_ORB}, + {gBattleAnimSpritePal_BlueOrb, ANIM_TAG_BLUE_ORB}, + {gBattleAnimSpritePal_RedOrb2, ANIM_TAG_RED_ORB_2}, + {gBattleAnimSpritePal_PinkPetal, ANIM_TAG_PINK_PETAL}, + {gBattleAnimSpritePal_PainSplit, ANIM_TAG_PAIN_SPLIT}, + {gBattleAnimSpritePal_Confetti, ANIM_TAG_CONFETTI}, + {gBattleAnimSpritePal_GreenStar, ANIM_TAG_GREEN_STAR}, + {gBattleAnimSpritePal_PinkCloud, ANIM_TAG_PINK_CLOUD}, + {gBattleAnimSpritePal_SweatDrop, ANIM_TAG_SWEAT_DROP}, + {gBattleAnimSpritePal_GuardRing, ANIM_TAG_GUARD_RING}, + {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SCRATCH}, + {gBattleAnimSpritePal_PurpleScratch, ANIM_TAG_PURPLE_SWIPE}, + {gBattleAnimSpritePal_Finger, ANIM_TAG_TAG_HAND}, + {gBattleAnimSpritePal_SmallRedEye, ANIM_TAG_SMALL_RED_EYE}, + {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_HOLLOW_ORB}, + {gBattleAnimSpritePal_HollowOrb, ANIM_TAG_X_SIGN}, + {gBattleAnimSpritePal_BluegreenOrb, ANIM_TAG_BLUEGREEN_ORB}, + {gBattleAnimSpritePal_PawPrint, ANIM_TAG_PAW_PRINT}, + {gBattleAnimSpritePal_PurpleFlame, ANIM_TAG_PURPLE_FLAME}, + {gBattleAnimSpritePal_RedBall, ANIM_TAG_RED_BALL}, + {gBattleAnimSpritePal_SmellingsaltEffect, ANIM_TAG_SMELLINGSALT_EFFECT}, + {gBattleAnimSpritePal_Meteor, ANIM_TAG_METEOR}, + {gBattleAnimSpritePal_FlatRock, ANIM_TAG_FLAT_ROCK}, + {gBattleAnimSpritePal_MagnifyingGlass, ANIM_TAG_MAGNIFYING_GLASS}, + {gBattleAnimSpritePal_BrownOrb, ANIM_TAG_BROWN_ORB}, + {gBattleAnimSpritePal_MetalSoundWaves, ANIM_TAG_METAL_SOUND_WAVES}, + {gBattleAnimSpritePal_FlyingDirt, ANIM_TAG_FLYING_DIRT}, + {gBattleAnimSpritePal_IcicleSpear, ANIM_TAG_ICICLE_SPEAR}, + {gBattleAnimSpritePal_Hail, ANIM_TAG_HAIL}, + {gBattleAnimSpritePal_GlowyRedOrb, ANIM_TAG_GLOWY_RED_ORB}, + {gBattleAnimSpritePal_GlowyGreenOrb, ANIM_TAG_GLOWY_GREEN_ORB}, + {gBattleAnimSpritePal_GreenSpike, ANIM_TAG_GREEN_SPIKE}, + {gBattleAnimSpritePal_WhiteCircleOfLight, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT}, + {gBattleAnimSpritePal_GlowyBlueOrb, ANIM_TAG_GLOWY_BLUE_ORB}, + {gBattleAnimSpritePal_SafariBait, ANIM_TAG_SAFARI_BAIT}, + {gBattleAnimSpritePal_WhiteFeather, ANIM_TAG_WHITE_FEATHER}, + {gBattleAnimSpritePal_Sparkle6, ANIM_TAG_SPARKLE_6}, + {gBattleAnimSpritePal_Splash, ANIM_TAG_SPLASH}, + {gBattleAnimSpritePal_Splash, ANIM_TAG_SWEAT_BEAD}, + {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_1}, + {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_2}, + {gBattleAnimSpritePal_Gem1, ANIM_TAG_GEM_3}, + {gBattleAnimSpritePal_SlamHit2, ANIM_TAG_SLAM_HIT_2}, + {gBattleAnimSpritePal_Recycle, ANIM_TAG_RECYCLE}, + {gBattleAnimSpritePal_RedParticles, ANIM_TAG_RED_PARTICLES}, + {gBattleAnimSpritePal_Protect, ANIM_TAG_PROTECT}, + {gBattleAnimSpritePal_DirtMound, ANIM_TAG_DIRT_MOUND}, + {gBattleAnimSpritePal_Shock3, ANIM_TAG_SHOCK_3}, + {gBattleAnimSpritePal_WeatherBall, ANIM_TAG_WEATHER_BALL}, + {gBattleAnimSpritePal_Bird, ANIM_TAG_BIRD}, + {gBattleAnimSpritePal_CrossImpact, ANIM_TAG_CROSS_IMPACT}, + {gBattleAnimSpritePal_Slash2, ANIM_TAG_SLASH_2}, + {gBattleAnimSpritePal_WhipHit, ANIM_TAG_WHIP_HIT}, + {gBattleAnimSpritePal_BlueRing2, ANIM_TAG_BLUE_RING_2}, +}; + +const struct BattleAnimBackground gBattleAnimBackgroundTable[] = +{ + [BG_NONE] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, + [BG_DARK] = {gBattleAnimBgImage_Dark, gBattleAnimBgPalette_Dark, gBattleAnimBgTilemap_Dark}, + [BG_GHOST] = {gBattleAnimBgImage_Ghost, gBattleAnimBgPalette_Ghost, gBattleAnimBgTilemap_Ghost}, + [BG_PSYCHIC] = {gBattleAnimBgImage_Psychic, gBattleAnimBgPalette_Psychic, gBattleAnimBgTilemap_Psychic}, + [BG_IMPACT_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactOpponent}, + [BG_IMPACT_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactPlayer}, + [BG_IMPACT_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_Impact, gBattleAnimBgTilemap_ImpactContests}, + [BG_DRILL] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_Drill}, + [BG_DRILL_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Drill, gBattleAnimBgTilemap_DrillContests}, + [BG_HIGHSPEED_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedOpponent}, + [BG_HIGHSPEED_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Highspeed, gBattleAnimBgTilemap_HighspeedPlayer}, + [BG_THUNDER] = {gBattleAnimBgImage_Thunder, gBattleAnimBgPalette_Thunder, gBattleAnimBgTilemap_Thunder}, + [BG_GUILLOTINE_OPPONENT] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineOpponent}, + [BG_GUILLOTINE_PLAYER] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotinePlayer}, + [BG_GUILLOTINE_CONTESTS] = {gBattleAnimBgImage_Guillotine, gBattleAnimBgPalette_Guillotine, gBattleAnimBgTilemap_GuillotineContests}, + [BG_ICE] = {gBattleAnimBgImage_Ice, gBattleAnimBgPalette_Ice, gBattleAnimBgTilemap_Ice}, + [BG_COSMIC] = {gBattleAnimBgImage_Cosmic, gBattleAnimBgPalette_Cosmic, gBattleAnimBgTilemap_Cosmic}, + [BG_IN_AIR] = {gBattleAnimBgImage_InAir, gBattleAnimBgPalette_InAir, gBattleAnimBgTilemap_InAir}, + [BG_SKY] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_Drill}, + [BG_SKY_CONTESTS] = {gBattleAnimBgImage_Drill, gBattleAnimBgPalette_Sky, gBattleAnimBgTilemap_DrillContests}, + [BG_AURORA] = {gBattleAnimBgImage_Aurora, gBattleAnimBgPalette_Aurora, gBattleAnimBgTilemap_Aurora}, + [BG_FISSURE] = {gBattleAnimBgImage_Fissure, gBattleAnimBgPalette_Fissure, gBattleAnimBgTilemap_Fissure}, + [BG_BUG_OPPONENT] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedOpponent}, + [BG_BUG_PLAYER] = {gBattleAnimBgImage_Highspeed, gBattleAnimBgPalette_Bug, gBattleAnimBgTilemap_HighspeedPlayer}, + [BG_SOLAR_BEAM_OPPONENT] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactOpponent}, + [BG_SOLAR_BEAM_PLAYER] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactPlayer}, + [BG_SOLAR_BEAM_CONTESTS] = {gBattleAnimBgImage_Impact, gBattleAnimBgPalette_SolarBeam, gBattleAnimBgTilemap_ImpactContests}, +}; diff --git a/src/graphics.c b/src/graphics.c index 705288081..69ffa7f2c 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -779,8 +779,8 @@ const u32 gBattleAnimSpriteGfx_Roots[] = INCBIN_U32("graphics/battle_anims/sprit const u32 gBattleAnimSpritePal_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.gbapal.lz"); const u32 gBattleAnimSpriteGfx_ItemBag[] = INCBIN_U32("graphics/battle_anims/sprites/item_bag.4bpp.lz"); -const u32 gBattleAnimSpritePal_TriForceTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.gbapal.lz"); -const u32 gBattleAnimSpriteGfx_TriForceTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.4bpp.lz"); +const u32 gBattleAnimSpritePal_TriAttackTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.gbapal.lz"); +const u32 gBattleAnimSpriteGfx_TriAttackTriangle[] = INCBIN_U32("graphics/battle_anims/sprites/tri_attack_triangle.4bpp.lz"); const u32 gBattleAnimSpritePal_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.gbapal.lz"); const u32 gBattleAnimSpriteGfx_LetterZ[] = INCBIN_U32("graphics/battle_anims/sprites/letter_z.4bpp.lz"); From a3c2108af71044e277a7a500819e1f1cd1632114 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 18 Aug 2022 12:31:06 -0400 Subject: [PATCH 25/38] Sync battle anim - flying, header cleanup --- Makefile | 2 +- include/battle_anim.h | 390 ++++--------------------- ld_script.txt | 4 +- src/battle_anim_effects_1.c | 184 ++++++++---- src/battle_anim_effects_2.c | 120 +++++--- src/battle_anim_effects_3.c | 117 +++++--- src/{flying.c => battle_anim_flying.c} | 149 +++++----- 7 files changed, 407 insertions(+), 559 deletions(-) rename src/{flying.c => battle_anim_flying.c} (89%) diff --git a/Makefile b/Makefile index 785d95df7..ec560f765 100644 --- a/Makefile +++ b/Makefile @@ -245,7 +245,7 @@ $(C_BUILDDIR)/isagbprn.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE) $(C_BUILDDIR)/isagbprn.o: CFLAGS := -mthumb-interwork $(C_BUILDDIR)/trainer_tower.o: CFLAGS += -ffreestanding -$(C_BUILDDIR)/flying.o: CFLAGS += -ffreestanding +$(C_BUILDDIR)/battle_anim_flying.o: CFLAGS += -ffreestanding $(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE) $(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet diff --git a/include/battle_anim.h b/include/battle_anim.h index ffff805d6..120935880 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -17,6 +17,36 @@ enum BG_ANIM_SCREEN_BASE_BLOCK }; +enum +{ + BATTLER_COORD_X, + BATTLER_COORD_Y, + BATTLER_COORD_X_2, + BATTLER_COORD_Y_PIC_OFFSET, + BATTLER_COORD_Y_PIC_OFFSET_DEFAULT, +}; + +enum +{ + BATTLER_COORD_ATTR_HEIGHT, + BATTLER_COORD_ATTR_WIDTH, + BATTLER_COORD_ATTR_TOP, + BATTLER_COORD_ATTR_BOTTOM, + BATTLER_COORD_ATTR_LEFT, + BATTLER_COORD_ATTR_RIGHT, + BATTLER_COORD_ATTR_RAW_BOTTOM, +}; + +// battle_anim_status_effects.s +#define STAT_ANIM_PLUS1 15 +#define STAT_ANIM_PLUS2 39 +#define STAT_ANIM_MINUS1 22 +#define STAT_ANIM_MINUS2 46 +#define STAT_ANIM_MULTIPLE_PLUS1 55 +#define STAT_ANIM_MULTIPLE_PLUS2 56 +#define STAT_ANIM_MULTIPLE_MINUS1 57 +#define STAT_ANIM_MULTIPLE_MINUS2 58 + struct BattleAnimBgData { u8 *bgTiles; @@ -62,7 +92,6 @@ extern s32 gAnimMoveDmg; extern u16 gAnimBattlerSpecies[MAX_BATTLERS_COUNT]; extern u8 gAnimCustomPanning; -// battle_anim.c extern const struct OamData gOamData_AffineOff_ObjNormal_8x8; extern const struct OamData gOamData_AffineOff_ObjNormal_16x16; extern const struct OamData gOamData_AffineOff_ObjNormal_32x32; @@ -135,8 +164,27 @@ extern const struct OamData gOamData_AffineDouble_ObjBlend_8x16; extern const struct OamData gOamData_AffineDouble_ObjBlend_8x32; extern const struct OamData gOamData_AffineDouble_ObjBlend_16x32; extern const struct OamData gOamData_AffineDouble_ObjBlend_32x64; +extern const struct MonCoords gCastformFrontSpriteCoords[]; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; +extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate; +extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate; +extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate; +extern const struct SpriteTemplate gWishStarSpriteTemplate; +extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate; +extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate; +extern const union AffineAnimCmd *const gAffineAnims_Bite[]; +extern const union AffineAnimCmd *const gAffineAnims_Droplet[]; +extern const union AffineAnimCmd *const gGrowingRingAffineAnimTable[]; +extern const union AnimCmd *const gAnims_SmallBubblePair[]; +extern const union AnimCmd *const gAnims_BasicFire[]; +extern const union AnimCmd *const gAnims_WaterMudOrb[]; +extern const union AnimCmd *const gAnims_WaterBubble[]; +extern const union AnimCmd *const gMusicNotesAnimTable[]; +extern const u8 *const gBattleAnims_StatusConditions[]; +extern const u8 *const gBattleAnims_Moves[]; +extern const u16 gMovesWithQuietBGM[]; + void MoveBattlerSpriteToBG(u8 battlerId, u8); void ResetBattleAnimBg(u8); void ClearBattleAnimationVars(void); @@ -152,207 +200,19 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan); bool8 IsBattlerSpriteVisible(u8 battlerId); s16 KeepPanInRange(s16 a, s32 oldPan); void RelocateBattleBgPal(u16 paletteNum, u16 *dest, s32 offset, u8 largeScreen); - -// battle_intro.c void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value); s32 GetAnimBgAttribute(u8 bgId, u8 attributeId); void HandleIntroSlide(u8 terrain); void BattleIntroSlideEnd(u8 taskId); void CopyBattlerSpriteToBg(s32 bgId, u8 x, u8 y, u8 battlerPosition, u8 palno, u8 *tilesDest, u16 *tilemapDest, u16 tilesOffset); - -// battle_anim_effects_1.c -extern const union AnimCmd *const gMusicNotesAnimTable[]; -extern const struct SpriteTemplate gThoughtBubbleSpriteTemplate; -void AnimMovePowderParticle(struct Sprite *); -void AnimPowerAbsorptionOrb(struct Sprite *); -void AnimSolarBeamBigOrb(struct Sprite *); -void AnimSolarBeamSmallOrb(struct Sprite *); -void AnimAbsorptionOrb(struct Sprite *); -void AnimHyperBeamOrb(struct Sprite *); -void AnimSporeParticle(struct Sprite *); -void AnimPetalDanceBigFlower(struct Sprite *); -void AnimPetalDanceSmallFlower(struct Sprite *); -void AnimRazorLeafParticle(struct Sprite *); -void AnimLeechSeed(struct Sprite *); -void AnimTranslateLinearSingleSineWave(struct Sprite *); -void AnimMoveTwisterParticle(struct Sprite *); -void AnimConstrictBinding(struct Sprite *); -void AnimMimicOrb(struct Sprite *); -void AnimIngrainRoot(struct Sprite *); -void AnimFrenzyPlantRoot(struct Sprite *); -void AnimIngrainOrb(struct Sprite *); -void AnimPresent(struct Sprite *); -void AnimKnockOffItem(struct Sprite *); -void AnimPresentHealParticle(struct Sprite *); -void AnimItemSteal(struct Sprite *); -void AnimTrickBag(struct Sprite *); -void AnimFlyingParticle(struct Sprite *); -void AnimNeedleArmSpike(struct Sprite *); -void AnimSlidingHit(struct Sprite *); -void AnimWhipHit(struct Sprite *); -void AnimFlickeringPunch(struct Sprite *); -void AnimCuttingSlice(struct Sprite *); -void AnimAirCutterSlice(struct Sprite *); -void AnimCirclingMusicNote(struct Sprite *); -void AnimProtect(struct Sprite *); -void AnimMilkBottle(struct Sprite *); -void AnimGrantingStars(struct Sprite *); -void AnimSparkingStars(struct Sprite *); -void AnimBubbleBurst(struct Sprite *); -void AnimSleepLetterZ(struct Sprite *); -void AnimLockOnTarget(struct Sprite *); -void AnimLockOnMoveTarget(struct Sprite *); -void AnimBowMon(struct Sprite *); -void AnimTipMon(struct Sprite *); -void AnimSlashSlice(struct Sprite *); -void AnimFalseSwipeSlice(struct Sprite *); -void AnimFalseSwipePositionedSlice(struct Sprite *); -void AnimEndureEnergy(struct Sprite *); -void AnimSharpenSphere(struct Sprite *); -void AnimConversion(struct Sprite *); -void AnimConversion2(struct Sprite *); -void AnimMoon(struct Sprite *); -void AnimMoonlightSparkle(struct Sprite *); -void AnimHornHit(struct Sprite *); -void AnimSuperFang(struct Sprite *); -void AnimFlyingMusicNotes(struct Sprite *); -void AnimBellyDrumHand(struct Sprite *); -void AnimSlowFlyingMusicNotes(struct Sprite *); -void AnimThoughtBubble(struct Sprite *); -void AnimMetronomeFinger(struct Sprite *); -void AnimFollowMeFinger(struct Sprite *); -void AnimTauntFinger(struct Sprite *); void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite); -void AnimTask_ShrinkTargetCopy(u8 taskId); - -// battle_anim_effects_2.c -extern const union AffineAnimCmd *const gGrowingRingAffineAnimTable[]; -void AnimCirclingFinger(struct Sprite *); -void AnimBouncingMusicNote(struct Sprite *); -void AnimVibrateBattlerBack(struct Sprite *); -void AnimMovingClamp(struct Sprite *); -void AnimKinesisZapEnergy(struct Sprite *); -void AnimSwordsDanceBlade(struct Sprite *); -void AnimSonicBoomProjectile(struct Sprite *); -void AnimAirWaveProjectile(struct Sprite *); -void AnimVoidLines(struct Sprite *); -void AnimCoinThrow(struct Sprite *); -void AnimFallingCoin(struct Sprite *); -void AnimBulletSeed(struct Sprite *); -void AnimRazorWindTornado(struct Sprite *); -void AnimViceGripPincer(struct Sprite *); -void AnimGuillotinePincer(struct Sprite *); -void AnimBreathPuff(struct Sprite *); -void AnimAngerMark(struct Sprite *); -void AnimPencil(struct Sprite *); -void AnimBlendThinRing(struct Sprite *); -void AnimHyperVoiceRing(struct Sprite *); -void AnimUproarRing(struct Sprite *); -void AnimSoftBoiledEgg(struct Sprite *); -void AnimSpeedDust(struct Sprite *); -void AnimHealBellMusicNote(struct Sprite *); -void AnimMagentaHeart(struct Sprite *); -void AnimRedHeartProjectile(struct Sprite *); -void AnimParticleBurst(struct Sprite *); -void AnimRedHeartRising(struct Sprite *); -void AnimOrbitFast(struct Sprite *); -void AnimOrbitScatter(struct Sprite *); -void AnimSpitUpOrb(struct Sprite *); -void AnimEyeSparkle(struct Sprite *); -void AnimAngel(struct Sprite *); -void AnimPinkHeart(struct Sprite *); -void AnimDevil(struct Sprite *); -void AnimFurySwipes(struct Sprite *); -void AnimMovementWaves(struct Sprite *); -void AnimJaggedMusicNote(struct Sprite *); -void AnimPerishSongMusicNote2(struct Sprite *); -void AnimPerishSongMusicNote(struct Sprite *); -void AnimGuardRing(struct Sprite *); - -// battle_anim_effects_3.c -extern const struct SpriteTemplate gWishStarSpriteTemplate; -extern const struct SpriteTemplate gMiniTwinklingStarSpriteTemplate; -void AnimBlackSmoke(struct Sprite *); -void AnimWhiteHalo(struct Sprite *); -void AnimTealAlert(struct Sprite *); -void AnimMeanLookEye(struct Sprite *); -void AnimSpikes(struct Sprite *); -void AnimLeer(struct Sprite *); -void AnimLetterZ(struct Sprite *); -void AnimFang(struct Sprite *); -void AnimSpotlight(struct Sprite *); -void AnimClappingHand(struct Sprite *); -void AnimClappingHand2(struct Sprite *); -void AnimRapidSpin(struct Sprite *); -void AnimTriAttackTriangle(struct Sprite *); -void AnimBatonPassPokeball(struct Sprite *); -void AnimWishStar(struct Sprite *); -void AnimMiniTwinklingStar(struct Sprite *); -void AnimSwallowBlueOrb(struct Sprite *); -void AnimGreenStar(struct Sprite *); -void AnimWeakFrustrationAngerMark(struct Sprite *); -void AnimSweetScentPetal(struct Sprite *); -void AnimPainSplitProjectile(struct Sprite *); -void AnimFlatterConfetti(struct Sprite *); -void AnimFlatterSpotlight(struct Sprite *); -void AnimReversalOrb(struct Sprite *); -void AnimYawnCloud(struct Sprite *); -void AnimSmokeBallEscapeCloud(struct Sprite *); -void AnimFacadeSweatDrop(struct Sprite *); -void AnimRoarNoiseLine(struct Sprite *); -void AnimGlareEyeDot(struct Sprite *); -void AnimAssistPawprint(struct Sprite *); -void AnimSmellingSaltsHand(struct Sprite *); -void AnimSmellingSaltExclamation(struct Sprite *); -void AnimHelpingHandClap(struct Sprite *); -void AnimForesightMagnifyingGlass(struct Sprite *); -void AnimMeteorMashStar(struct Sprite *); -void AnimBlockX(struct Sprite *); -void AnimUnusedItemBagSteal(struct Sprite *); -void AnimKnockOffStrike(struct Sprite *); -void AnimRecycle(struct Sprite *); - -// battle_anim_special.c void TryShinyAnimation(u8 battler, struct Pokemon *mon); u8 ItemIdToBallId(u16 itemId); u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); void DoLoadHealthboxPalsForLevelUp(u8 *, u8 *, u8 battlerId); void DoFreeHealthboxPalsForLevelUp(u8 batterId); - -enum -{ - BATTLER_COORD_X, - BATTLER_COORD_Y, - BATTLER_COORD_X_2, - BATTLER_COORD_Y_PIC_OFFSET, - BATTLER_COORD_Y_PIC_OFFSET_DEFAULT, -}; - -enum -{ - BATTLER_COORD_ATTR_HEIGHT, - BATTLER_COORD_ATTR_WIDTH, - BATTLER_COORD_ATTR_TOP, - BATTLER_COORD_ATTR_BOTTOM, - BATTLER_COORD_ATTR_LEFT, - BATTLER_COORD_ATTR_RIGHT, - BATTLER_COORD_ATTR_RAW_BOTTOM, -}; - -// battle_anim_status_effects.s -#define STAT_ANIM_PLUS1 15 -#define STAT_ANIM_PLUS2 39 -#define STAT_ANIM_MINUS1 22 -#define STAT_ANIM_MINUS2 46 -#define STAT_ANIM_MULTIPLE_PLUS1 55 -#define STAT_ANIM_MULTIPLE_PLUS2 56 -#define STAT_ANIM_MULTIPLE_MINUS1 57 -#define STAT_ANIM_MULTIPLE_MINUS2 58 void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId); - -// battle_anim_mons.c -extern const struct MonCoords gCastformFrontSpriteCoords[]; u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType); u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType); u8 GetBattlerSpriteDefault_Y(u8 battlerId); @@ -428,9 +288,6 @@ void AnimThrowProjectile(struct Sprite *sprite); void AnimTravelDiagonally(struct Sprite *sprite); s16 CloneBattlerSpriteWithBlend(u8 animBattler); void DestroySpriteWithActiveSheet(struct Sprite *sprite); -void AnimTask_AlphaFadeIn(u8 taskId); -void AnimTask_BlendMonInAndOut(u8 task); -void AnimTask_BlendPalInAndOutByTag(u8 taskId); void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds); bool8 RunAffineAnimFromTaskData(struct Task *task); void SetBattlerSpriteYOffsetFromYScale(u8 spriteId); @@ -439,13 +296,9 @@ void StorePointerInVars(s16 *lo, s16 *hi, const void *ptr); void *LoadPointerFromVars(s16 lo, s16 hi); void BattleAnimHelper_SetSpriteSquashParams(struct Task *task, u8 spriteId, s16 xScale0, s16 yScale0, s16 xScale1, s16 yScale1, u16 duration); u8 BattleAnimHelper_RunSpriteSquash(struct Task *task); -void AnimTask_GetFrustrationPowerLevel(u8 taskId); void InitPrioritiesForVisibleBattlers(void); u8 GetBattlerSpriteSubpriority(u8 battlerId); u8 GetBattlerSpriteBGPriority(u8 battlerId); - -// Returns 2 if player left or opp right -// Returns 1 if player right or opp left u8 GetBattlerSpriteBGPriorityRank(u8 battlerId); u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 templateId, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 ignoreDeoxys); void DestroySpriteAndFreeResources_(struct Sprite *sprite); @@ -455,157 +308,16 @@ u8 CreateInvisibleSpriteCopy(s32 battlerId, u8 spriteId, s32 species); void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite); void AnimTranslateLinearAndFlicker(struct Sprite *sprite); void AnimSpinningSparkle(struct Sprite *sprite); -void AnimTask_AttackerPunchWithTrace(u8 taskId); void AnimWeatherBallUp(struct Sprite *sprite); void AnimWeatherBallDown(struct Sprite *sprite); - -// battle_anim_mon_movement.c -void AnimTask_ShakeMon(u8 taskId); -void AnimTask_ShakeMon2(u8 taskId); -void AnimTask_ShakeMonInPlace(u8 taskId); -void AnimTask_ShakeAndSinkMon(u8 taskId); -void AnimTask_TranslateMonElliptical(u8 taskId); -void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId); -void AnimTask_WindUpLunge(u8 taskId); -void AnimTask_SlideOffScreen(u8 taskId); -void AnimTask_SwayMon(u8 taskId); -void AnimTask_ScaleMonAndRestore(u8 taskId); -void AnimTask_RotateMonSpriteToSide(u8 taskId); -void AnimTask_RotateMonToSideAndRestore(u8 taskId); -void AnimTask_ShakeTargetBasedOnMovePowerOrDmg(u8 taskId); - -// normal.c -extern const struct SpriteTemplate gFlashingHitSplatSpriteTemplate; -extern const struct SpriteTemplate gBasicHitSplatSpriteTemplate; -extern const struct SpriteTemplate gWaterHitSplatSpriteTemplate; +void AnimParticleBurst(struct Sprite *); +void AnimMoveTwisterParticle(struct Sprite *); u32 UnpackSelectedBattlePalettes(s16 selector); -void AnimTask_CurseBlendEffect(u8 taskId); -void AnimTask_BlendColorCycleExclude(u8 taskId); -void AnimTask_BlendColorCycleByTag(u8 taskId); -void AnimTask_FlashAnimTagWithColor(u8 taskId); -void AnimTask_InvertScreenColor(u8 taskId); -void AnimTask_ShakeBattleTerrain(u8 taskId); - -// ground.c -void AnimTask_DigDownMovement(u8 taskId); -void AnimTask_DigUpMovement(u8 taskId); void AnimTask_HorizontalShake(u8 taskId); -void AnimTask_IsPowerOver99(u8 taskId); -void AnimTask_PositionFissureBgOnBattler(u8 taskId); - -// dragon.c -void AnimTask_DragonDanceWaver(u8 taskId); - -// ghost.c -void AnimTask_NightShadeClone(u8 taskId); -void AnimTask_NightmareClone(u8 taskId); -void AnimTask_SpiteTargetShadow(u8 taskId); -void AnimTask_DestinyBondWhiteShadow(u8 taskId); -void AnimTask_CurseStretchingBlackBg(u8 taskId); -void AnimTask_GrudgeFlames(u8 taskId); -void sub_80B6BBC(u8 taskId); - -// rock.c -void AnimTask_LoadSandstormBackground(u8 taskId); -void AnimTask_Rollout(u8 taskId); -void AnimTask_GetSeismicTossDamageLevel(u8 taskId); -void AnimTask_MoveSeismicTossBg(u8 taskId); -void AnimTask_SeismicTossBgAccelerateDownAtEnd(u8 taskId); - -// psychic.c -void AnimTask_MeditateStretchAttacker(u8 taskId); -void AnimTask_Teleport(u8 taskId); -void AnimTask_ImprisonOrbs(u8 taskId); -void AnimTask_SkillSwap(u8 taskId); -void AnimTask_ExtrasensoryDistortion(u8 taskId); -void AnimTask_TransparentCloneGrowAndShrink(u8 taskId); - -// dark.c -extern const union AffineAnimCmd *const gAffineAnims_Bite[]; -void AnimTask_AttackerFadeToInvisible(u8 taskId); -void AnimTask_AttackerFadeFromInvisible(u8 taskId); -void AnimTask_InitAttackerFadeFromInvisible(u8 taskId); -void AnimTask_MoveAttackerMementoShadow(u8 taskId); -void AnimTask_MoveTargetMementoShadow(u8 taskId); -void AnimTask_InitMementoShadow(u8 taskId); -void AnimTask_MementoHandleBg(u8 taskId); -void AnimTask_MetallicShine(u8 taskId); -void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId); -void GetIsDoomDesireHitTurn(u8 taskId); - -// flying.c -void AnimTask_AnimateGustTornadoPalette(u8 taskId); void DestroyAnimSpriteAfterTimer(struct Sprite *sprite); -void AnimTask_DrillPeckHitSplats(u8 taskId); - -// poison.c -extern const union AffineAnimCmd *const gAffineAnims_Droplet[]; - -// fighting.c -void AnimTask_MoveSkyUppercutBg(u8 taskId); - -// ice.c -extern const union AnimCmd *const gAnims_SmallBubblePair[]; -void AnimTask_HazeScrollingFog(u8 taskId); -void AnimTask_MistBallFog(u8 taskId); -void AnimTask_Hail(u8 taskId); -void AnimTask_GetRolloutCounter(u8 taskId); - -// electric.c -void AnimTask_ElectricBolt(u8 taskId); -void AnimTask_ElectricChargingParticles(u8 taskId); -void AnimTask_VoltTackleAttackerReappear(u8 taskId); -void AnimTask_VoltTackleBolt(u8 taskId); -void AnimTask_ShockWaveProgressingBolt(u8 taskId); -void AnimTask_ShockWaveLightning(u8 taskId); - -// fire.c -extern const union AnimCmd *const gAnims_BasicFire[]; -void AnimTask_EruptionLaunchRocks(u8 taskId); -void AnimTask_ShakeTargetInPattern(u8 taskId); -void AnimTask_BlendBackground(u8 taskId); -void AnimTask_MoveHeatWaveTargets(u8 taskId); - -// water.c -extern const union AnimCmd *const gAnims_WaterMudOrb[]; -extern const union AnimCmd *const gAnims_WaterBubble[]; void AnimWaterPulseRing(struct Sprite *sprite); - -// smokescreen.c u8 SmokescreenImpact(s16 x, s16 y, u8 a3); - -// battle_anim_utility_funcs.c -void AnimTask_BlendSelected(u8 taskId); -void AnimTask_BlendExcept(u8 taskId); -void AnimTask_SetCamouflageBlend(u8 taskId); -void AnimTask_BlendParticle(u8 taskId); -void AnimTask_HardwarePaletteFade(u8 taskId); -void AnimTask_CloneBattlerSpriteWithBlend(u8 taskId); -void AnimTask_SetUpCurseBackground(u8 taskId); void InitStatsChangeAnimation(u8 taskId); -void AnimTask_BlendNonAttackerPalettes(u8 taskId); -void AnimTask_StartSlidingBg(u8 taskId); -void AnimTask_GetAttackerSide(u8 taskId); -void AnimTask_GetTargetSide(u8 taskId); -void AnimTask_GetTargetIsAttackerPartner(u8 taskId); -void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId); void StartMonScrollingBgMask(u8 taskId, s32 unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u32 *gfx, const u32 *tilemap, const u32 *palette); -void AnimTask_GetBattleTerrain(u8 taskId); -void AnimTask_AllocBackupPalBuffer(u8 taskId); -void AnimTask_FreeBackupPalBuffer(u8 taskId); -void AnimTask_CopyPalUnfadedToBackup(u8 taskId); -void AnimTask_CopyPalUnfadedFromBackup(u8 taskId); -void AnimTask_CopyPalFadedToUnfaded(u8 taskId); -void AnimTask_IsContest(u8 taskId); -void AnimTask_SetAnimAttackerAndTargetForEffectTgt(u8 taskId); -void AnimTask_IsTargetSameSide(u8 taskId); -void AnimTask_SetAnimTargetToBattlerTarget(u8 taskId); -void AnimTask_SetAnimAttackerAndTargetForEffectAtk(u8 taskId); -void AnimTask_SetAttackerInvisibleWaitForSignal(u8 taskId); - -// battle_anim_scripts.s -extern const u8 *const gBattleAnims_StatusConditions[]; -extern const u16 gMovesWithQuietBGM[]; -extern const u8 *const gBattleAnims_Moves[]; #endif // GUARD_BATTLE_ANIM_H diff --git a/ld_script.txt b/ld_script.txt index e3048c656..21538a7ba 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -168,7 +168,7 @@ SECTIONS { src/battle_anim_ice.o(.text); src/battle_anim_fight.o(.text); src/battle_anim_poison.o(.text); - src/flying.o(.text); + src/battle_anim_flying.o(.text); src/battle_anim_psychic.o(.text); src/battle_anim_bug.o(.text); src/battle_anim_rock.o(.text); @@ -480,7 +480,7 @@ SECTIONS { src/battle_anim_ice.o(.rodata); src/battle_anim_fight.o(.rodata); src/battle_anim_poison.o(.rodata); - src/flying.o(.rodata); + src/battle_anim_flying.o(.rodata); src/battle_anim_psychic.o(.rodata); src/battle_anim_bug.o(.rodata); src/battle_anim_rock.o(.rodata); diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 3e22541be..c4df329a3 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -14,25 +14,47 @@ struct { s16 targetY; } static EWRAM_DATA sFrenzyPlantRootData = {0}; // Debug? Written to but never read. +static void AnimMovePowderParticle(struct Sprite *); static void AnimMovePowderParticle_Step(struct Sprite *); +static void AnimSolarBeamSmallOrb(struct Sprite *); static void AnimSolarBeamSmallOrb_Step(struct Sprite *); +static void AnimSolarBeamBigOrb(struct Sprite *); +static void AnimPowerAbsorptionOrb(struct Sprite *); +static void AnimAbsorptionOrb(struct Sprite *); static void AnimAbsorptionOrb_Step(struct Sprite *); +static void AnimHyperBeamOrb(struct Sprite *); static void AnimHyperBeamOrb_Step(struct Sprite *); +static void AnimMimicOrb(struct Sprite *); +static void AnimLeechSeed(struct Sprite *); static void AnimLeechSeed_Step(struct Sprite *); static void AnimLeechSeedSprouts(struct Sprite *); +static void AnimSporeParticle(struct Sprite *); static void AnimSporeParticle_Step(struct Sprite *); +static void AnimPetalDanceBigFlower(struct Sprite *); static void AnimPetalDanceBigFlower_Step(struct Sprite *); +static void AnimPetalDanceSmallFlower(struct Sprite *); static void AnimPetalDanceSmallFlower_Step(struct Sprite *); +static void AnimRazorLeafParticle(struct Sprite *); static void AnimRazorLeafParticle_Step1(struct Sprite *); static void AnimRazorLeafParticle_Step2(struct Sprite *); +static void AnimIngrainRoot(struct Sprite *); +static void AnimFrenzyPlantRoot(struct Sprite *); +static void AnimIngrainOrb(struct Sprite *); +static void AnimTranslateLinearSingleSineWave(struct Sprite *); static void AnimTranslateLinearSingleSineWave_Step(struct Sprite *); static void AnimMoveTwisterParticle_Step(struct Sprite *); +static void AnimConstrictBinding(struct Sprite *); static void AnimConstrictBinding_Step1(struct Sprite *); static void AnimConstrictBinding_Step2(struct Sprite *); static void AnimTask_DuplicateAndShrinkToPos_Step1(u8); static void AnimTask_DuplicateAndShrinkToPos_Step2(u8); +static void AnimKnockOffItem(struct Sprite *); +static void AnimPresent(struct Sprite *); +static void AnimPresentHealParticle(struct Sprite *); +static void AnimItemSteal(struct Sprite *); static void AnimItemSteal_Step3(struct Sprite *); static void AnimRootFlickerOut(struct Sprite *); +static void AnimTrickBag(struct Sprite *); static void AnimTrickBag_Step1(struct Sprite *); static void AnimTrickBag_Step2(struct Sprite *); static void AnimTrickBag_Step3(struct Sprite *); @@ -40,52 +62,88 @@ static void AnimTask_LeafBlade_Step(u8); static s16 LeafBladeGetPosFactor(struct Sprite *); static void AnimTask_LeafBlade_Step2(struct Task *, u8); static void AnimTask_LeafBlade_Step2_Callback(struct Sprite *); +static void AnimFlyingParticle(struct Sprite *); static void AnimFlyingParticle_Step(struct Sprite *); +static void AnimNeedleArmSpike(struct Sprite *); static void AnimNeedleArmSpike_Step(struct Sprite *); static void AnimSlice_Step(struct Sprite *); +static void AnimCirclingMusicNote(struct Sprite *); static void AnimCirclingMusicNote_Step(struct Sprite *); +static void AnimProtect(struct Sprite *); static void AnimProtect_Step(struct Sprite *); +static void AnimMilkBottle(struct Sprite *); static void AnimMilkBottle_Step1(struct Sprite *); static void AnimMilkBottle_Step2(struct Sprite *, int, int); +static void AnimBubbleBurst(struct Sprite *); static void AnimBubbleBurst_Step(struct Sprite *); +static void AnimSleepLetterZ(struct Sprite *); static void AnimSleepLetterZ_Step(struct Sprite *); +static void AnimLockOnTarget(struct Sprite *); static void AnimLockOnTarget_Step1(struct Sprite *); static void AnimLockOnTarget_Step2(struct Sprite *); static void AnimLockOnTarget_Step3(struct Sprite *); static void AnimLockOnTarget_Step4(struct Sprite *); static void AnimLockOnTarget_Step5(struct Sprite *); static void AnimLockOnTarget_Step6(struct Sprite *); +static void AnimLockOnMoveTarget(struct Sprite *); +static void AnimBowMon(struct Sprite *); static void AnimBowMon_Step1(struct Sprite *); static void AnimBowMon_Step1_Callback(struct Sprite *); static void AnimBowMon_Step2(struct Sprite *); static void AnimBowMon_Step3(struct Sprite *); static void AnimBowMon_Step4(struct Sprite *); static void AnimBowMon_Step3_Callback(struct Sprite *); +static void AnimTipMon(struct Sprite *sprite); static void AnimTipMon_Step(struct Sprite *); static void AnimTask_SkullBashPositionSet(u8); static void AnimTask_SkullBashPositionReset(u8); +static void AnimSlashSlice(struct Sprite *); +static void AnimFalseSwipeSlice(struct Sprite *); static void AnimFalseSwipeSlice_Step1(struct Sprite *); static void AnimFalseSwipeSlice_Step2(struct Sprite *); static void AnimFalseSwipeSlice_Step3(struct Sprite *); +static void AnimFalseSwipePositionedSlice(struct Sprite *); +static void AnimEndureEnergy(struct Sprite *); static void AnimEndureEnergy_Step(struct Sprite *); +static void AnimSharpenSphere(struct Sprite *); static void AnimSharpenSphere_Step(struct Sprite *); -static void AnimConversion2Step(struct Sprite *); +static void AnimConversion(struct Sprite *); +static void AnimConversion2(struct Sprite *); +static void AnimConversion2_Step(struct Sprite *); +static void AnimMoon(struct Sprite *); static void AnimMoon_Step(struct Sprite *); +static void AnimMoonlightSparkle(struct Sprite *); static void AnimMoonlightSparkle_Step(struct Sprite *); +static void AnimHornHit(struct Sprite *); static void AnimHornHit_Step(struct Sprite *); static void AnimTask_DoubleTeam_Step(u8); static void AnimDoubleTeam(struct Sprite *); -static void AnimWavyMusicNotes(struct Sprite* sprite); +static void AnimWavyMusicNotes(struct Sprite *); static void AnimWavyMusicNotes_CalcVelocity(s16, s16, s16 *, s16 *, s8); static void AnimWavyMusicNotes_Step(struct Sprite *); +static void AnimFlyingMusicNotes(struct Sprite *); static void AnimFlyingMusicNotes_Step(struct Sprite *); +static void AnimSlowFlyingMusicNotes(struct Sprite *); static void AnimSlowFlyingMusicNotes_Step(struct Sprite *); +static void AnimThoughtBubble(struct Sprite *); static void AnimThoughtBubble_Step(struct Sprite *); +static void AnimMetronomeFinger(struct Sprite *); static void AnimMetronomeFinger_Step(struct Sprite *); +static void AnimFollowMeFinger(struct Sprite *); static void AnimFollowMeFinger_Step1(struct Sprite *); static void AnimFollowMeFinger_Step2(struct Sprite *); +static void AnimTauntFinger(struct Sprite *); static void AnimTauntFinger_Step1(struct Sprite *); static void AnimTauntFinger_Step2(struct Sprite *); +static void AnimBellyDrumHand(struct Sprite *); +static void AnimSuperFang(struct Sprite *); +static void AnimGrantingStars(struct Sprite *); +static void AnimSparklingStars(struct Sprite *); +static void AnimCuttingSlice(struct Sprite *); +static void AnimAirCutterSlice(struct Sprite *); +static void AnimFlickeringPunch(struct Sprite *); +static void AnimSlidingHit(struct Sprite *); +static void AnimWhipHit(struct Sprite *); static const u8 sUnused[] = {2, 4, 1, 3}; @@ -1385,7 +1443,7 @@ const struct SpriteTemplate gSparklingStarsSpriteTemplate = .anims = sGrantingStarsAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = AnimSparkingStars, + .callback = AnimSparklingStars, }; static const union AnimCmd sAnim_BubbleBurst[] = @@ -2166,7 +2224,7 @@ const struct SpriteTemplate gTauntFingerSpriteTemplate = // arg 3: vertical movement speed (sub-pixel value) // arg 4: wave amplitude // arg 5: wave speed -void AnimMovePowderParticle(struct Sprite* sprite) +static void AnimMovePowderParticle(struct Sprite* sprite) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -2206,7 +2264,7 @@ static void AnimMovePowderParticle_Step(struct Sprite* sprite) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: duration -void AnimPowerAbsorptionOrb(struct Sprite* sprite) +static void AnimPowerAbsorptionOrb(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; @@ -2221,7 +2279,7 @@ void AnimPowerAbsorptionOrb(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: duration // arg 3: sprite anim number -void AnimSolarBeamBigOrb(struct Sprite* sprite) +static void AnimSolarBeamBigOrb(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); StartSpriteAnim(sprite, gBattleAnimArgs[3]); @@ -2238,7 +2296,7 @@ void AnimSolarBeamBigOrb(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: duration // arg 3: initial wave offset -void AnimSolarBeamSmallOrb(struct Sprite* sprite) +static void AnimSolarBeamSmallOrb(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; @@ -2296,7 +2354,7 @@ void AnimTask_CreateSmallSolarBeamOrbs(u8 taskId) // arg 1: initial y pixel offset // arg 2: wave amplitude // arg 3: wave period (lower means faster wave) -void AnimAbsorptionOrb(struct Sprite* sprite) +static void AnimAbsorptionOrb(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[3]; @@ -2315,7 +2373,7 @@ static void AnimAbsorptionOrb_Step(struct Sprite* sprite) // Moves an orb in a wave-like fashion towards the target mon. The wave's // properties and the sprite anim are randomly determined. -void AnimHyperBeamOrb(struct Sprite* sprite) +static void AnimHyperBeamOrb(struct Sprite* sprite) { u16 speed; u16 animNum = Random(); @@ -2368,7 +2426,7 @@ static void AnimHyperBeamOrb_Step(struct Sprite* sprite) // arg 3: target y pixel offset // arg 4: duration // arg 5: wave amplitude -void AnimLeechSeed(struct Sprite* sprite) +static void AnimLeechSeed(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -2410,7 +2468,7 @@ static void AnimLeechSeedSprouts(struct Sprite* sprite) // arg 2: initial wave offset // arg 3: duration // arg 4: blend (0 = off, 1 = on) -void AnimSporeParticle(struct Sprite* sprite) +static void AnimSporeParticle(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, TRUE); StartSpriteAnim(sprite, gBattleAnimArgs[4]); @@ -2472,7 +2530,7 @@ void AnimTask_SporeDoubleBattle(u8 taskId) // arg 1: initial y pixel offset // arg 2: target y pixel offset // arg 3: duration -void AnimPetalDanceBigFlower(struct Sprite* sprite) +static void AnimPetalDanceBigFlower(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); sprite->data[0] = gBattleAnimArgs[3]; @@ -2510,7 +2568,7 @@ static void AnimPetalDanceBigFlower_Step(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: target y pixel offset // arg 3: duration -void AnimPetalDanceSmallFlower(struct Sprite* sprite) +static void AnimPetalDanceSmallFlower(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[3]; @@ -2545,7 +2603,7 @@ static void AnimPetalDanceSmallFlower_Step(struct Sprite* sprite) // arg 0: upward x delta per frame // arg 1: upward y delta per frame // arg 2: upward duration -void AnimRazorLeafParticle(struct Sprite* sprite) +static void AnimRazorLeafParticle(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -2608,7 +2666,7 @@ static void AnimRazorLeafParticle_Step2(struct Sprite* sprite) // arg 4: translation duration // arg 5: wave amplitude // arg 6: target between double battle opponents (boolean) -void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) +static void AnimTranslateLinearSingleSineWave(struct Sprite* sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -2722,7 +2780,7 @@ static void AnimMoveTwisterParticle_Step(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: affine anim num // arg 3: num squeezes -void AnimConstrictBinding(struct Sprite* sprite) +static void AnimConstrictBinding(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, FALSE); sprite->affineAnimPaused = TRUE; @@ -2833,7 +2891,7 @@ static void AnimTask_DuplicateAndShrinkToPos_Step2(u8 taskId) // Moves an orb from the target mon to the attacking mon. // arg 0: initial x pixel offset // arg 1: initial y pixel offset -void AnimMimicOrb(struct Sprite* sprite) +static void AnimMimicOrb(struct Sprite* sprite) { switch (sprite->data[0]) { @@ -2867,7 +2925,7 @@ void AnimMimicOrb(struct Sprite* sprite) // arg 2: sprite subpriority offset // arg 3: sprite anim num // arg 4: duration -void AnimIngrainRoot(struct Sprite* sprite) +static void AnimIngrainRoot(struct Sprite* sprite) { if (!sprite->data[0]) { @@ -2892,7 +2950,7 @@ void AnimIngrainRoot(struct Sprite* sprite) // arg 3: sprite subpriority offset // arg 4: sprite anum num // arg 5: duration -void AnimFrenzyPlantRoot(struct Sprite *sprite) +static void AnimFrenzyPlantRoot(struct Sprite *sprite) { s16 attackerX = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); s16 attackerY = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -2930,7 +2988,7 @@ static void AnimRootFlickerOut(struct Sprite* sprite) // arg 2: horizontal velocity // arg 3: wave amplitude // arg 4: duration -void AnimIngrainOrb(struct Sprite* sprite) +static void AnimIngrainOrb(struct Sprite* sprite) { if (!sprite->data[0]) { @@ -3017,7 +3075,7 @@ static void AnimItemSteal_Step1(struct Sprite* sprite) } } -void AnimPresent(struct Sprite* sprite) +static void AnimPresent(struct Sprite* sprite) { s16 targetX; s16 targetY; @@ -3065,7 +3123,7 @@ static void AnimKnockOffOpponentsItem(struct Sprite* sprite) } } -void AnimKnockOffItem(struct Sprite* sprite) +static void AnimKnockOffItem(struct Sprite* sprite) { s16 targetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); @@ -3097,7 +3155,7 @@ void AnimKnockOffItem(struct Sprite* sprite) // arg 1: initial y pixel offset // arg 2: vertical velocity // arg 3: unused -void AnimPresentHealParticle(struct Sprite* sprite) +static void AnimPresentHealParticle(struct Sprite* sprite) { if (!sprite->data[0]) { @@ -3111,7 +3169,7 @@ void AnimPresentHealParticle(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimItemSteal(struct Sprite* sprite) +static void AnimItemSteal(struct Sprite* sprite) { s16 attackerX; s16 attackerY; @@ -3166,7 +3224,7 @@ static void AnimItemSteal_Step3(struct Sprite* sprite) // Moves a bag in a circular motion. // arg 0: y position // arg 1: initial wave offset -void AnimTrickBag(struct Sprite* sprite) +static void AnimTrickBag(struct Sprite* sprite) { int a; int b; @@ -3536,7 +3594,7 @@ static void AnimTask_LeafBlade_Step2_Callback(struct Sprite* sprite) } } -void AnimFlyingParticle(struct Sprite* sprite) +static void AnimFlyingParticle(struct Sprite* sprite) { u8 battler; @@ -3638,7 +3696,7 @@ void AnimTask_CycleMagicalLeafPal(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimNeedleArmSpike(struct Sprite* sprite) +static void AnimNeedleArmSpike(struct Sprite* sprite) { u8 a; u8 b; @@ -3716,7 +3774,7 @@ static void AnimWhipHit_WaitEnd(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimSlidingHit(struct Sprite* sprite) +static void AnimSlidingHit(struct Sprite* sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { @@ -3733,7 +3791,7 @@ void AnimSlidingHit(struct Sprite* sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimWhipHit(struct Sprite* sprite) +static void AnimWhipHit(struct Sprite* sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) StartSpriteAnim(sprite, 1); @@ -3743,7 +3801,7 @@ void AnimWhipHit(struct Sprite* sprite) sprite->y += gBattleAnimArgs[1]; } -void AnimFlickeringPunch(struct Sprite* sprite) +static void AnimFlickeringPunch(struct Sprite* sprite) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -3761,7 +3819,7 @@ void AnimFlickeringPunch(struct Sprite* sprite) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: slice direction; 0 = right-to-left, 1 = left-to-right -void AnimCuttingSlice(struct Sprite* sprite) +static void AnimCuttingSlice(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); @@ -3787,7 +3845,7 @@ void AnimCuttingSlice(struct Sprite* sprite) sprite->data[1] = -sprite->data[1]; } -void AnimAirCutterSlice(struct Sprite* sprite) +static void AnimAirCutterSlice(struct Sprite* sprite) { u8 a; u8 b; @@ -3892,7 +3950,7 @@ static void UnusedFlickerAnim(struct Sprite* sprite) } } -void AnimCirclingMusicNote(struct Sprite* sprite) +static void AnimCirclingMusicNote(struct Sprite* sprite) { sprite->data[0] = gBattleAnimArgs[2]; if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -3925,7 +3983,7 @@ static void AnimCirclingMusicNote_Step(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimProtect(struct Sprite* sprite) +static void AnimProtect(struct Sprite* sprite) { if (IsContest()) gBattleAnimArgs[1] += 8; @@ -3988,7 +4046,7 @@ static void AnimProtect_Step(struct Sprite *sprite) } } -void AnimMilkBottle(struct Sprite* sprite) +static void AnimMilkBottle(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + 0xFFE8; @@ -4098,7 +4156,7 @@ static void AnimMilkBottle_Step2(struct Sprite* sprite, int unk1, int unk2) sprite->data[3] = 0; } -void AnimGrantingStars(struct Sprite* sprite) +static void AnimGrantingStars(struct Sprite* sprite) { if (!gBattleAnimArgs[2]) SetSpriteCoordsToAnimAttackerCoords(sprite); @@ -4112,7 +4170,7 @@ void AnimGrantingStars(struct Sprite* sprite) sprite->callback = TranslateSpriteLinearFixedPoint; } -void AnimSparkingStars(struct Sprite* sprite) +static void AnimSparklingStars(struct Sprite* sprite) { u8 battler; @@ -4150,7 +4208,7 @@ void AnimSparkingStars(struct Sprite* sprite) sprite->callback = TranslateSpriteLinearFixedPoint; } -void AnimBubbleBurst(struct Sprite* sprite) +static void AnimBubbleBurst(struct Sprite* sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) @@ -4181,7 +4239,7 @@ static void AnimBubbleBurst_Step(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimSleepLetterZ(struct Sprite* sprite) +static void AnimSleepLetterZ(struct Sprite* sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) @@ -4211,7 +4269,7 @@ static void AnimSleepLetterZ_Step(struct Sprite* sprite) DestroySpriteAndMatrix(sprite); } -void AnimLockOnTarget(struct Sprite* sprite) +static void AnimLockOnTarget(struct Sprite* sprite) { sprite->x -= 32; sprite->y -= 32; @@ -4358,7 +4416,7 @@ static void AnimLockOnTarget_Step6(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimLockOnMoveTarget(struct Sprite* sprite) +static void AnimLockOnMoveTarget(struct Sprite* sprite) { sprite->oam.affineParam = gBattleAnimArgs[0]; if ((s16)sprite->oam.affineParam == 1) @@ -4390,7 +4448,7 @@ void AnimLockOnMoveTarget(struct Sprite* sprite) sprite->callback(sprite); } -void AnimBowMon(struct Sprite* sprite) +static void AnimBowMon(struct Sprite* sprite) { sprite->invisible = TRUE; sprite->data[0] = 0; @@ -4493,7 +4551,7 @@ static void AnimBowMon_Step4(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimTipMon(struct Sprite *sprite) +static void AnimTipMon(struct Sprite *sprite) { sprite->data[0] = 0; sprite->callback = AnimTipMon_Step; @@ -4684,7 +4742,7 @@ static void AnimTask_SkullBashPositionReset(u8 taskId) } } -void AnimSlashSlice(struct Sprite* sprite) +static void AnimSlashSlice(struct Sprite* sprite) { if (gBattleAnimArgs[0] == 0) { @@ -4703,7 +4761,7 @@ void AnimSlashSlice(struct Sprite* sprite) sprite->callback = RunStoredCallbackWhenAnimEnds; } -void AnimFalseSwipeSlice(struct Sprite* sprite) +static void AnimFalseSwipeSlice(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0; sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); @@ -4711,7 +4769,7 @@ void AnimFalseSwipeSlice(struct Sprite* sprite) sprite->callback = RunStoredCallbackWhenAnimEnds; } -void AnimFalseSwipePositionedSlice(struct Sprite* sprite) +static void AnimFalseSwipePositionedSlice(struct Sprite* sprite) { sprite->x = sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2) + 0xFFD0 + gBattleAnimArgs[0]; sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); @@ -4751,7 +4809,7 @@ static void AnimFalseSwipeSlice_Step3(struct Sprite* sprite) } } -void AnimEndureEnergy(struct Sprite* sprite) +static void AnimEndureEnergy(struct Sprite* sprite) { if (gBattleAnimArgs[0] == 0) { @@ -4782,7 +4840,7 @@ static void AnimEndureEnergy_Step(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimSharpenSphere(struct Sprite* sprite) +static void AnimSharpenSphere(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET) - 12; @@ -4819,7 +4877,7 @@ static void AnimSharpenSphere_Step(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimConversion(struct Sprite* sprite) +static void AnimConversion(struct Sprite* sprite) { if (sprite->data[0] == 0) { @@ -4859,15 +4917,15 @@ void AnimTask_ConversionAlphaBlend(u8 taskId) } } -void AnimConversion2(struct Sprite* sprite) +static void AnimConversion2(struct Sprite* sprite) { InitSpritePosToAnimTarget(sprite, FALSE); sprite->animPaused = TRUE; sprite->data[0] = gBattleAnimArgs[2]; - sprite->callback = AnimConversion2Step; + sprite->callback = AnimConversion2_Step; } -static void AnimConversion2Step(struct Sprite* sprite) +static void AnimConversion2_Step(struct Sprite* sprite) { if (sprite->data[0]) { @@ -4923,7 +4981,7 @@ static void AnimTask_ShowBattlersHealthbox(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimMoon(struct Sprite* sprite) +static void AnimMoon(struct Sprite* sprite) { if (IsContest()) { @@ -4948,7 +5006,7 @@ static void AnimMoon_Step(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimMoonlightSparkle(struct Sprite* sprite) +static void AnimMoonlightSparkle(struct Sprite* sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2) + gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1]; @@ -5085,7 +5143,7 @@ void AnimTask_FadeScreenBlue_Step(u8 taskId) } } -void AnimHornHit(struct Sprite* sprite) +static void AnimHornHit(struct Sprite* sprite) { if (gBattleAnimArgs[2] < 2) gBattleAnimArgs[2] = 2; @@ -5222,7 +5280,7 @@ static void AnimDoubleTeam(struct Sprite* sprite) } } -void AnimSuperFang(struct Sprite* sprite) +static void AnimSuperFang(struct Sprite* sprite) { StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); sprite->callback = RunStoredCallbackWhenAnimEnds; @@ -5353,7 +5411,7 @@ static void AnimWavyMusicNotes_Step(struct Sprite* sprite) } } -void AnimFlyingMusicNotes(struct Sprite* sprite) +static void AnimFlyingMusicNotes(struct Sprite* sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) gBattleAnimArgs[1] *= -1; @@ -5389,7 +5447,7 @@ static void AnimFlyingMusicNotes_Step(struct Sprite* sprite) DestroySpriteAndMatrix(sprite); } -void AnimBellyDrumHand(struct Sprite* sprite) +static void AnimBellyDrumHand(struct Sprite* sprite) { s16 a; @@ -5410,7 +5468,7 @@ void AnimBellyDrumHand(struct Sprite* sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimSlowFlyingMusicNotes(struct Sprite* sprite) +static void AnimSlowFlyingMusicNotes(struct Sprite* sprite) { s16 xDiff; u8 index; @@ -5463,7 +5521,7 @@ void SetSpriteNextToMonHead(u8 battler, struct Sprite* sprite) sprite->y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) - (s16)GetBattlerSpriteCoordAttr(battler, BATTLER_COORD_ATTR_HEIGHT) / 4; } -void AnimThoughtBubble(struct Sprite* sprite) +static void AnimThoughtBubble(struct Sprite* sprite) { u8 animNum; u8 battler; @@ -5492,7 +5550,7 @@ static void AnimThoughtBubble_Step(struct Sprite* sprite) } } -void AnimMetronomeFinger(struct Sprite* sprite) +static void AnimMetronomeFinger(struct Sprite* sprite) { u8 battler; @@ -5517,7 +5575,7 @@ static void AnimMetronomeFinger_Step(struct Sprite* sprite) } } -void AnimFollowMeFinger(struct Sprite* sprite) +static void AnimFollowMeFinger(struct Sprite* sprite) { u8 battler; @@ -5576,7 +5634,7 @@ static void AnimFollowMeFinger_Step2(struct Sprite* sprite) sprite->x2 = (x1 >> 3) + (x2 >> 1); } -void AnimTauntFinger(struct Sprite* sprite) +static void AnimTauntFinger(struct Sprite* sprite) { u8 battler; diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 17e58280e..68a5825a4 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -11,16 +11,24 @@ #include "util.h" #include "constants/songs.h" +static void AnimBouncingMusicNote(struct Sprite *); static void AnimBouncingMusicNote_Step(struct Sprite *); +static void AnimMovingClamp(struct Sprite *); static void AnimMovingClamp_Step(struct Sprite *); static void AnimMovingClamp_End(struct Sprite *); static void AnimTask_Withdraw_Step(u8); +static void AnimSwordsDanceBlade(struct Sprite *); static void AnimSwordsDanceBlade_Step(struct Sprite *); +static void AnimVoidLines(struct Sprite *); static void AnimVoidLines_Step(struct Sprite *); +static void AnimFallingCoin(struct Sprite *); static void AnimFallingCoin_Step(struct Sprite *); +static void AnimBulletSeed(struct Sprite *); static void AnimBulletSeed_Step1(struct Sprite *); static void AnimBulletSeed_Step2(struct Sprite *); +static void AnimViceGripPincer(struct Sprite *); static void AnimViceGripPincer_Step(struct Sprite *); +static void AnimGuillotinePincer(struct Sprite *); static void AnimGuillotinePincer_Step1(struct Sprite *); static void AnimGuillotinePincer_Step2(struct Sprite *); static void AnimGuillotinePincer_Step3(struct Sprite *); @@ -33,7 +41,9 @@ static void AnimTask_GrowAndShrink_Step(u8); static void AnimTask_ThrashMoveMonHorizontal_Step(u8); static void AnimTask_ThrashMoveMonVertical_Step(u8); static void AnimTask_SketchDrawMon_Step(u8); +static void AnimPencil(struct Sprite *); static void AnimPencil_Step(struct Sprite *); +static void AnimSoftBoiledEgg(struct Sprite *); static void AnimSoftBoiledEgg_Step1(struct Sprite *); static void AnimSoftBoiledEgg_Step2(struct Sprite *); static void AnimSoftBoiledEgg_Step3(struct Sprite *); @@ -47,17 +57,47 @@ static void AnimTask_ExtremeSpeedMonReappear_Step(u8); static void AnimTask_SpeedDust_Step(u8); static void AnimTask_FakeOut_Step1(u8); static void AnimTask_FakeOut_Step2(u8); +static void AnimRedHeartProjectile(struct Sprite *); static void AnimRedHeartProjectile_Step(struct Sprite *); +static void AnimRedHeartRising(struct Sprite *); static void AnimRedHeartRising_Step(struct Sprite *); static void AnimTask_HeartsBackground_Step(u8); static void AnimTask_ScaryFace_Step(u8); +static void AnimOrbitFast(struct Sprite *); static void AnimOrbitFast_Step(struct Sprite *); +static void AnimOrbitScatter(struct Sprite *); static void AnimOrbitScatter_Step(struct Sprite *); +static void AnimMovementWaves(struct Sprite *); static void AnimMovementWaves_Step(struct Sprite *); static void AnimTask_UproarDistortion_Step(u8); +static void AnimJaggedMusicNote(struct Sprite *); static void AnimJaggedMusicNote_Step(struct Sprite *); +static void AnimPerishSongMusicNote2(struct Sprite *); +static void AnimPerishSongMusicNote(struct Sprite *); static void AnimPerishSongMusicNote_Step1(struct Sprite *); static void AnimPerishSongMusicNote_Step2(struct Sprite *); +static void AnimCirclingFinger(struct Sprite *); +static void AnimVibrateBattlerBack(struct Sprite *); +static void AnimKinesisZapEnergy(struct Sprite *); +static void AnimSonicBoomProjectile(struct Sprite *); +static void AnimAirWaveProjectile(struct Sprite *); +static void AnimCoinThrow(struct Sprite *); +static void AnimRazorWindTornado(struct Sprite *); +static void AnimBreathPuff(struct Sprite *); +static void AnimAngerMark(struct Sprite *); +static void AnimBlendThinRing(struct Sprite *); +static void AnimHyperVoiceRing(struct Sprite *); +static void AnimUproarRing(struct Sprite *); +static void AnimSpeedDust(struct Sprite *); +static void AnimHealBellMusicNote(struct Sprite *); +static void AnimMagentaHeart(struct Sprite *); +static void AnimSpitUpOrb(struct Sprite *); +static void AnimEyeSparkle(struct Sprite *); +static void AnimAngel(struct Sprite *); +static void AnimPinkHeart(struct Sprite *); +static void AnimDevil(struct Sprite *); +static void AnimFurySwipes(struct Sprite *); +static void AnimGuardRing(struct Sprite *); // Unused static const struct SpriteTemplate sCirclingFingerSpriteTemplate = @@ -1216,7 +1256,7 @@ const struct SpriteTemplate gGuardRingSpriteTemplate = #define sMoveSteps data[3] #define sAmplitudeY data[4] -void AnimCirclingFinger(struct Sprite *sprite) +static void AnimCirclingFinger(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); @@ -1235,7 +1275,7 @@ void AnimCirclingFinger(struct Sprite *sprite) #undef sMoveSteps #undef sAmplitudeY -void AnimBouncingMusicNote(struct Sprite *sprite) +static void AnimBouncingMusicNote(struct Sprite *sprite) { u8 battler; @@ -1286,7 +1326,7 @@ static void AnimVibrateBattlerBack_Step(struct Sprite *sprite) sprite->data[0]--; } -void AnimVibrateBattlerBack(struct Sprite *sprite) +static void AnimVibrateBattlerBack(struct Sprite *sprite) { u8 spriteId; sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); @@ -1305,7 +1345,7 @@ void AnimVibrateBattlerBack(struct Sprite *sprite) sprite->invisible = TRUE; } -void AnimMovingClamp(struct Sprite *sprite) +static void AnimMovingClamp(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; @@ -1390,7 +1430,7 @@ static void AnimTask_Withdraw_Step(u8 taskId) // arg 0: x pixel offset // arg 1: y pixel offset // arg 2: vertical flip -void AnimKinesisZapEnergy(struct Sprite *sprite) +static void AnimKinesisZapEnergy(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -1418,7 +1458,7 @@ void AnimKinesisZapEnergy(struct Sprite *sprite) // Animates a sword that rises into the air after a brief pause. // arg 0: x pixel offset // arg 1: y pixel offset -void AnimSwordsDanceBlade(struct Sprite *sprite) +static void AnimSwordsDanceBlade(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; @@ -1441,7 +1481,7 @@ static void AnimSwordsDanceBlade_Step(struct Sprite *sprite) // arg 2: target x pixel offset // arg 3: target y pixel offset // arg 4: duration -void AnimSonicBoomProjectile(struct Sprite *sprite) +static void AnimSonicBoomProjectile(struct Sprite *sprite) { s16 targetXPos; s16 targetYPos; @@ -1517,7 +1557,7 @@ static void AnimAirWaveProjectile_Step1(struct Sprite *sprite) } } -void AnimAirWaveProjectile(struct Sprite *sprite) +static void AnimAirWaveProjectile(struct Sprite *sprite) { s16 a; s16 b; @@ -1701,7 +1741,7 @@ void AnimTask_AirCutterProjectile(u8 taskId) gTasks[taskId].func = AirCutterProjectile_Step1; } -void AnimVoidLines(struct Sprite *sprite) +static void AnimVoidLines(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(sVoidLinesSpriteTemplate.paletteTag) << 4); @@ -1728,7 +1768,7 @@ static void AnimVoidLines_Step(struct Sprite *sprite) } } -void AnimCoinThrow(struct Sprite *sprite) +static void AnimCoinThrow(struct Sprite *sprite) { s16 r6; s16 r7; @@ -1751,7 +1791,7 @@ void AnimCoinThrow(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimFallingCoin(struct Sprite *sprite) +static void AnimFallingCoin(struct Sprite *sprite) { sprite->data[2] = -16; sprite->y += 8; @@ -1776,7 +1816,7 @@ static void AnimFallingCoin_Step(struct Sprite *sprite) } } -void AnimBulletSeed(struct Sprite *sprite) +static void AnimBulletSeed(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = 20; @@ -1836,7 +1876,7 @@ static void AnimBulletSeed_Step2(struct Sprite *sprite) // arg 4: initial wave offset // arg 5: wave period (higher means faster wave) // arg 6: duration -void AnimRazorWindTornado(struct Sprite *sprite) +static void AnimRazorWindTornado(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) @@ -1854,7 +1894,7 @@ void AnimRazorWindTornado(struct Sprite *sprite) // Animates a single pincer line that extends towards the center of the target mon. // arg 0: invert -void AnimViceGripPincer(struct Sprite *sprite) +static void AnimViceGripPincer(struct Sprite *sprite) { s16 startXOffset = 32; s16 startYOffset = -32; @@ -1887,7 +1927,7 @@ static void AnimViceGripPincer_Step(struct Sprite *sprite) // Animates a single pincer line that extends towards the center of the target mon, and then back out. // arg 0: animation id -void AnimGuillotinePincer(struct Sprite *sprite) +static void AnimGuillotinePincer(struct Sprite *sprite) { s16 startXOffset = 32; s16 startYOffset = -32; @@ -2214,7 +2254,7 @@ static void AnimTask_GrowAndShrink_Step(u8 taskId) // Animates a little puff of the mon's breath. // Used by MOVE_SWAGGER and MOVE_BULK_UP // No args. -void AnimBreathPuff(struct Sprite *sprite) +static void AnimBreathPuff(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { @@ -2242,7 +2282,7 @@ void AnimBreathPuff(struct Sprite *sprite) // arg 0: target mon (0 = attacker, 1 = target) // arg 1: x pixel offset // arg 2: y pixel offset -void AnimAngerMark(struct Sprite *sprite) +static void AnimAngerMark(struct Sprite *sprite) { u8 battler; @@ -2444,7 +2484,7 @@ static void AnimTask_SketchDrawMon_Step(u8 taskId) } } -void AnimPencil(struct Sprite *sprite) +static void AnimPencil(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X) - 16; sprite->y = GetBattlerYCoordWithElevation(gBattleAnimTarget) + 16; @@ -2517,7 +2557,7 @@ static void AnimPencil_Step(struct Sprite *sprite) } } -void AnimBlendThinRing(struct Sprite *sprite) +static void AnimBlendThinRing(struct Sprite *sprite) { u8 battler = 0; u16 sp0 = 0; @@ -2557,7 +2597,7 @@ static void AnimHyperVoiceRing_WaitEnd(struct Sprite *sprite) } } -void AnimHyperVoiceRing(struct Sprite *sprite) +static void AnimHyperVoiceRing(struct Sprite *sprite) { u16 startX = 0; u16 startY = 0; @@ -2642,7 +2682,7 @@ void AnimHyperVoiceRing(struct Sprite *sprite) sprite->callback(sprite); } -void AnimUproarRing(struct Sprite *sprite) +static void AnimUproarRing(struct Sprite *sprite) { u8 index = IndexOfSpritePaletteTag(ANIM_TAG_THIN_RING); @@ -2656,7 +2696,7 @@ void AnimUproarRing(struct Sprite *sprite) sprite->callback(sprite); } -void AnimSoftBoiledEgg(struct Sprite *sprite) +static void AnimSoftBoiledEgg(struct Sprite *sprite) { s16 r1; @@ -2983,7 +3023,7 @@ static void AnimTask_SpeedDust_Step(u8 taskId) } } -void AnimSpeedDust(struct Sprite *sprite) +static void AnimSpeedDust(struct Sprite *sprite) { sprite->invisible = gTasks[sprite->data[0]].data[5]; if (sprite->animEnded) @@ -3028,7 +3068,7 @@ static void SetMusicNotePalette(struct Sprite *sprite, u8 a, u8 b) sprite->oam.paletteNum = IndexOfSpritePaletteTag(gMusicNotePaletteTagsTable[b >> 1]); } -void AnimHealBellMusicNote(struct Sprite *sprite) +static void AnimHealBellMusicNote(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, FALSE); if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) @@ -3042,7 +3082,7 @@ void AnimHealBellMusicNote(struct Sprite *sprite) SetMusicNotePalette(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]); } -void AnimMagentaHeart(struct Sprite *sprite) +static void AnimMagentaHeart(struct Sprite *sprite) { if (++sprite->data[0] == 1) InitSpritePosToAnimAttacker(sprite, FALSE); @@ -3150,7 +3190,7 @@ void AnimTask_StretchAttackerUp(u8 taskId) } } -void AnimRedHeartProjectile(struct Sprite *sprite) +static void AnimRedHeartProjectile(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = 95; @@ -3197,7 +3237,7 @@ void AnimParticleBurst(struct Sprite *sprite) } } -void AnimRedHeartRising(struct Sprite *sprite) +static void AnimRedHeartRising(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; sprite->y = DISPLAY_HEIGHT; @@ -3398,7 +3438,7 @@ static void AnimTask_ScaryFace_Step(u8 taskId) // Used by MOVE_HIDDEN_POWER // arg 0: duration // arg 1: initial wave offset -void AnimOrbitFast(struct Sprite *sprite) +static void AnimOrbitFast(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -3449,7 +3489,7 @@ static void AnimOrbitFast_Step(struct Sprite *sprite) // Moves orbs away from the mon, based on where they are in their orbit. // Used in MOVE_HIDDEN_POWER. // arg 0: initial wave offset -void AnimOrbitScatter(struct Sprite *sprite) +static void AnimOrbitScatter(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -3475,7 +3515,7 @@ static void AnimSpitUpOrb_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimSpitUpOrb(struct Sprite *sprite) +static void AnimSpitUpOrb(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -3491,13 +3531,13 @@ static void AnimEyeSparkle_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimEyeSparkle(struct Sprite *sprite) +static void AnimEyeSparkle(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, TRUE); sprite->callback = AnimEyeSparkle_Step; } -void AnimAngel(struct Sprite *sprite) +static void AnimAngel(struct Sprite *sprite) { s16 var0; @@ -3536,7 +3576,7 @@ static void AnimPinkHeart_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimPinkHeart(struct Sprite *sprite) +static void AnimPinkHeart(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -3562,7 +3602,7 @@ void AnimPinkHeart(struct Sprite *sprite) } } -void AnimDevil(struct Sprite *sprite) +static void AnimDevil(struct Sprite *sprite) { if (sprite->data[3] == 0) { @@ -3591,7 +3631,7 @@ void AnimDevil(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimFurySwipes(struct Sprite *sprite) +static void AnimFurySwipes(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -3606,7 +3646,7 @@ void AnimFurySwipes(struct Sprite *sprite) } } -void AnimMovementWaves(struct Sprite *sprite) +static void AnimMovementWaves(struct Sprite *sprite) { if (!gBattleAnimArgs[2]) { @@ -3662,7 +3702,7 @@ static void AnimTask_UproarDistortion_Step(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimJaggedMusicNote(struct Sprite *sprite) +static void AnimJaggedMusicNote(struct Sprite *sprite) { int var1; u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget; @@ -3700,7 +3740,7 @@ static void AnimJaggedMusicNote_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimPerishSongMusicNote2(struct Sprite *sprite) +static void AnimPerishSongMusicNote2(struct Sprite *sprite) { if (!sprite->data[0]) { @@ -3715,7 +3755,7 @@ void AnimPerishSongMusicNote2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimPerishSongMusicNote(struct Sprite *sprite) +static void AnimPerishSongMusicNote(struct Sprite *sprite) { int index; int var2; @@ -3791,7 +3831,7 @@ static void AnimPerishSongMusicNote_Step2(struct Sprite *sprite) } } -void AnimGuardRing(struct Sprite *sprite) +static void AnimGuardRing(struct Sprite *sprite) { if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsBattlerSpriteVisible(BATTLE_PARTNER(gBattleAnimAttacker))) { diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index 74737beec..d0493ef96 100644 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -15,60 +15,99 @@ #include "constants/songs.h" #include "constants/weather.h" +static void AnimBlackSmoke(struct Sprite *); static void AnimBlackSmoke_Step(struct Sprite *); +static void AnimWhiteHalo(struct Sprite *); static void AnimWhiteHalo_Step1(struct Sprite *); static void AnimWhiteHalo_Step2(struct Sprite *); +static void AnimMeanLookEye(struct Sprite *); static void AnimMeanLookEye_Step1(struct Sprite *); static void AnimMeanLookEye_Step2(struct Sprite *); static void AnimMeanLookEye_Step3(struct Sprite *); static void AnimMeanLookEye_Step4(struct Sprite *); static void SetPsychicBackground_Step(u8); static void FadeScreenToWhite_Step(u8); +static void AnimSpikes(struct Sprite *); static void AnimSpikes_Step1(struct Sprite *); static void AnimSpikes_Step2(struct Sprite *); +static void AnimSpotlight(struct Sprite *); static void AnimSpotlight_Step1(struct Sprite *); static void AnimSpotlight_Step2(struct Sprite *); +static void AnimClappingHand(struct Sprite *); static void AnimClappingHand_Step(struct Sprite *); +static void AnimClappingHand2(struct Sprite *); +static void AnimRapidSpin(struct Sprite *); static void AnimRapidSpin_Step(struct Sprite *); static void RapinSpinMonElevation_Step(u8); static void TormentAttacker_Step(u8); static void TormentAttacker_Callback(struct Sprite *); +static void AnimWishStar(struct Sprite *); static void AnimWishStar_Step(struct Sprite *); +static void AnimMiniTwinklingStar(struct Sprite *); static void AnimMiniTwinklingStar_Step(struct Sprite *); +static void AnimGreenStar(struct Sprite *); static void AnimGreenStar_Step1(struct Sprite *); static void AnimGreenStar_Step2(struct Sprite *); static void AnimGreenStar_Callback(struct Sprite *); static void AnimTask_RockMonBackAndForth_Step(u8); +static void AnimSweetScentPetal(struct Sprite *); static void AnimSweetScentPetal_Step(struct Sprite *); static void AnimTask_FlailMovement_Step(u8); +static void AnimFlatterConfetti(struct Sprite *); static void AnimFlatterConfetti_Step(struct Sprite *); +static void AnimFlatterSpotlight(struct Sprite *); static void AnimFlatterSpotlight_Step(struct Sprite *); +static void AnimReversalOrb(struct Sprite *); static void AnimReversalOrb_Step(struct Sprite *); static void AnimTask_RolePlaySilhouette_Step1(u8); static void AnimTask_RolePlaySilhouette_Step2(u8); static void AnimTask_AcidArmor_Step(u8); static void AnimTask_DeepInhale_Step(u8); +static void AnimYawnCloud(struct Sprite *); static void AnimYawnCloud_Step(struct Sprite *); static void AnimTask_SquishAndSweatDroplets_Step(u8); static void CreateSweatDroplets(u8, bool8); static void AnimTask_FacadeColorBlend_Step(u8); +static void AnimRoarNoiseLine(struct Sprite *); static void AnimRoarNoiseLine_Step(struct Sprite *); static void AnimTask_GlareEyeDots_Step(u8); static void GetGlareEyeDotCoords(s16, s16, s16, s16, u8, u8, s16 *, s16 *); static void AnimTask_BarrageBall_Step(u8); +static void AnimSmellingSaltsHand(struct Sprite *); static void AnimSmellingSaltsHand_Step(struct Sprite *); static void AnimTask_SmellingSaltsSquish_Step(u8); +static void AnimSmellingSaltExclamation(struct Sprite *); static void AnimSmellingSaltExclamation_Step(struct Sprite *); +static void AnimHelpingHandClap(struct Sprite *); static void AnimHelpingHandClap_Step(struct Sprite *); static void AnimTask_HelpingHandAttackerMovement_Step(u8); +static void AnimForesightMagnifyingGlass(struct Sprite *); static void AnimForesightMagnifyingGlass_Step(struct Sprite *); static void AnimTask_MonToSubstituteDoll(u8); +static void AnimBlockX(struct Sprite *); static void AnimBlockX_Step(struct Sprite *); static void AnimTask_OdorSleuthMovementWaitFinish(u8); static void MoveOdorSleuthClone(struct Sprite *); static void AnimTask_TeeterDanceMovement_Step(u8); +static void AnimRecycle(struct Sprite *); static void AnimRecycle_Step(struct Sprite *); static void AnimTask_SlackOffSquish_Step(u8); +static void AnimTealAlert(struct Sprite *); +static void AnimLeer(struct Sprite *); +static void AnimLetterZ(struct Sprite *); +static void AnimFang(struct Sprite *); +static void AnimTriAttackTriangle(struct Sprite *); +static void AnimBatonPassPokeball(struct Sprite *); +static void AnimSwallowBlueOrb(struct Sprite *); +static void AnimWeakFrustrationAngerMark(struct Sprite *); +static void AnimPainSplitProjectile(struct Sprite *); +static void AnimSmokeBallEscapeCloud(struct Sprite *); +static void AnimFacadeSweatDrop(struct Sprite *); +static void AnimGlareEyeDot(struct Sprite *); +static void AnimAssistPawprint(struct Sprite *); +static void AnimMeteorMashStar(struct Sprite *); +static void AnimUnusedItemBagSteal(struct Sprite *); +static void AnimKnockOffStrike(struct Sprite *); static const union AnimCmd sScratchAnimCmds[] = { @@ -1129,7 +1168,7 @@ static const union AffineAnimCmd sSlackOffSquishAffineAnimCmds[] = AFFINEANIMCMD_END, }; -void AnimBlackSmoke(struct Sprite *sprite) +static void AnimBlackSmoke(struct Sprite *sprite) { sprite->x += gBattleAnimArgs[0]; sprite->y += gBattleAnimArgs[1]; @@ -1166,7 +1205,7 @@ void AnimTask_SmokescreenImpact(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimWhiteHalo(struct Sprite *sprite) +static void AnimWhiteHalo(struct Sprite *sprite) { sprite->data[0] = 90; sprite->callback = WaitAnimForDuration; @@ -1193,7 +1232,7 @@ static void AnimWhiteHalo_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimTealAlert(struct Sprite *sprite) +static void AnimTealAlert(struct Sprite *sprite) { u16 rotation; u8 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); @@ -1213,7 +1252,7 @@ void AnimTealAlert(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimMeanLookEye(struct Sprite *sprite) +static void AnimMeanLookEye(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL | BLDCNT_EFFECT_BLEND); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); @@ -1371,7 +1410,7 @@ static void FadeScreenToWhite_Step(u8 taskId) DestroyTask(taskId); } -void AnimSpikes(struct Sprite *sprite) +static void AnimSpikes(struct Sprite *sprite) { u16 x; u16 y; @@ -1409,7 +1448,7 @@ static void AnimSpikes_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimLeer(struct Sprite *sprite) +static void AnimLeer(struct Sprite *sprite) { SetSpriteCoordsToAnimAttackerCoords(sprite); SetAnimSpriteInitialXOffset(sprite, gBattleAnimArgs[0]); @@ -1418,7 +1457,7 @@ void AnimLeer(struct Sprite *sprite) StoreSpriteCallbackInData6(sprite, DestroyAnimSprite); } -void AnimLetterZ(struct Sprite *sprite) +static void AnimLetterZ(struct Sprite *sprite) { int var0; @@ -1456,7 +1495,7 @@ void AnimLetterZ(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimFang(struct Sprite *sprite) +static void AnimFang(struct Sprite *sprite) { if (sprite->animEnded) DestroyAnimSprite(sprite); @@ -1482,7 +1521,7 @@ void AnimTask_IsHealingMove(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimSpotlight(struct Sprite *sprite) +static void AnimSpotlight(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); @@ -1545,7 +1584,7 @@ static void AnimSpotlight_Step2(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimClappingHand(struct Sprite *sprite) +static void AnimClappingHand(struct Sprite *sprite) { if (gBattleAnimArgs[3] == 0) { @@ -1604,7 +1643,7 @@ static void AnimClappingHand_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimClappingHand2(struct Sprite *sprite) +static void AnimClappingHand2(struct Sprite *sprite) { sprite->oam.objMode = ST_OAM_OBJ_WINDOW; sprite->data[3] = 255; @@ -1645,7 +1684,7 @@ void AnimTask_RemoveSpotlight(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimRapidSpin(struct Sprite *sprite) +static void AnimRapidSpin(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { @@ -1946,7 +1985,7 @@ static void TormentAttacker_Callback(struct Sprite *sprite) } } -void AnimTriAttackTriangle(struct Sprite *sprite) +static void AnimTriAttackTriangle(struct Sprite *sprite) { if (sprite->data[0] == 0) InitSpritePosToAnimAttacker(sprite, FALSE); @@ -1992,7 +2031,7 @@ void AnimTask_DefenseCurlDeformMon(u8 taskId) } } -void AnimBatonPassPokeball(struct Sprite *sprite) +static void AnimBatonPassPokeball(struct Sprite *sprite) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER); @@ -2035,7 +2074,7 @@ void AnimBatonPassPokeball(struct Sprite *sprite) } } -void AnimWishStar(struct Sprite *sprite) +static void AnimWishStar(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) sprite->x = -16; @@ -2073,7 +2112,7 @@ static void AnimWishStar_Step(struct Sprite *sprite) DestroyAnimSprite(sprite); } -void AnimMiniTwinklingStar(struct Sprite *sprite) +static void AnimMiniTwinklingStar(struct Sprite *sprite) { u8 rand; s8 y; @@ -2148,7 +2187,7 @@ void AnimTask_SpitUpDeformMon(u8 taskId) } } -void AnimSwallowBlueOrb(struct Sprite *sprite) +static void AnimSwallowBlueOrb(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -2363,7 +2402,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) } } -void AnimGreenStar(struct Sprite *sprite) +static void AnimGreenStar(struct Sprite *sprite) { s16 xOffset; u8 spriteId1; @@ -2574,7 +2613,7 @@ void AnimTask_StrongFrustrationGrowAndShrink(u8 taskId) // Animates an anger mark near the mon's head. // arg 0: initial x pixel offset // arg 1: initial y pixel offset -void AnimWeakFrustrationAngerMark(struct Sprite *sprite) +static void AnimWeakFrustrationAngerMark(struct Sprite *sprite) { if (sprite->data[0] == 0) { @@ -2699,7 +2738,7 @@ static void AnimTask_RockMonBackAndForth_Step(u8 taskId) // arg 0: initial y pixel offset // arg 1: sprite anim num // arg 2: unused -void AnimSweetScentPetal(struct Sprite *sprite) +static void AnimSweetScentPetal(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) { @@ -2835,7 +2874,7 @@ static void AnimTask_FlailMovement_Step(u8 taskId) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: which battler -void AnimPainSplitProjectile(struct Sprite *sprite) +static void AnimPainSplitProjectile(struct Sprite *sprite) { if (!sprite->data[0]) { @@ -2931,7 +2970,7 @@ void AnimTask_PainSplitMovement(u8 taskId) // Move a piece of confetti in a slightly-random speed across the screen. // arg 0: which battler the confetti starts from -void AnimFlatterConfetti(struct Sprite *sprite) +static void AnimFlatterConfetti(struct Sprite *sprite) { u8 tileOffset; int rand1; @@ -2988,7 +3027,7 @@ static void AnimFlatterConfetti_Step(struct Sprite *sprite) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: duration of fully-opened spotlight -void AnimFlatterSpotlight(struct Sprite *sprite) +static void AnimFlatterSpotlight(struct Sprite *sprite) { SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJWIN_ON); @@ -3037,7 +3076,7 @@ static void AnimFlatterSpotlight_Step(struct Sprite *sprite) // Spins an orb around the attacking mon, while its path radius grows and shrinks. // arg 0: duration // arg 1: initial wave offset -void AnimReversalOrb(struct Sprite *sprite) +static void AnimReversalOrb(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); @@ -3417,7 +3456,7 @@ static void UpdateYawnCloudPosition(struct Sprite *sprite) // Drifts a cloud in a wavy path towards the target mon. // arg 0: which affine anim -void AnimYawnCloud(struct Sprite *sprite) +static void AnimYawnCloud(struct Sprite *sprite) { s16 destX = sprite->x; s16 destY = sprite->y; @@ -3455,7 +3494,7 @@ static void AnimYawnCloud_Step(struct Sprite *sprite) // arg 1: initial x pixel offset // arg 2: initial y pixel offset // arg 3: ? -void AnimSmokeBallEscapeCloud(struct Sprite *sprite) +static void AnimSmokeBallEscapeCloud(struct Sprite *sprite) { sprite->data[0] = gBattleAnimArgs[3]; StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]); @@ -3731,7 +3770,7 @@ static void CreateSweatDroplets(u8 taskId, bool8 lowerDroplets) } } -void AnimFacadeSweatDrop(struct Sprite *sprite) +static void AnimFacadeSweatDrop(struct Sprite *sprite) { sprite->x += sprite->sVelocX; sprite->y += sprite->sVelocY; @@ -3797,7 +3836,7 @@ void AnimTask_StatusClearedEffect(u8 taskId) // arg 0: initial x pixel offset // arg 1: initial y pixel offset // arg 2: which direction (0 = upward, 1 = downward, 2 = horizontal) -void AnimRoarNoiseLine(struct Sprite *sprite) +static void AnimRoarNoiseLine(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) gBattleAnimArgs[0] = -gBattleAnimArgs[0]; @@ -3978,7 +4017,7 @@ static void GetGlareEyeDotCoords(s16 startX, s16 startY, s16 endX, s16 endY, u8 *y = y2 >> 8; } -void AnimGlareEyeDot(struct Sprite *sprite) +static void AnimGlareEyeDot(struct Sprite *sprite) { if (++sprite->sTimer > 36) { @@ -4009,7 +4048,7 @@ void AnimGlareEyeDot(struct Sprite *sprite) // arg 2: destination x position // arg 3: destination y position // arg 4: duration -void AnimAssistPawprint(struct Sprite *sprite) +static void AnimAssistPawprint(struct Sprite *sprite) { sprite->x = gBattleAnimArgs[0]; sprite->y = gBattleAnimArgs[1]; @@ -4096,7 +4135,7 @@ static void AnimTask_BarrageBall_Step(u8 taskId) // arg 0: which battler // arg 1: horizontal flip // arg 2: num squishes -void AnimSmellingSaltsHand(struct Sprite *sprite) +static void AnimSmellingSaltsHand(struct Sprite *sprite) { u8 battler; @@ -4219,7 +4258,7 @@ static void AnimTask_SmellingSaltsSquish_Step(u8 taskId) // arg 0: which mon // arg 1: blink delay // arg 2: number of blinks -void AnimSmellingSaltExclamation(struct Sprite *sprite) +static void AnimSmellingSaltExclamation(struct Sprite *sprite) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) { @@ -4257,7 +4296,7 @@ static void AnimSmellingSaltExclamation_Step(struct Sprite *sprite) // Claps a hand several times. // arg 0: which hand // arg 1: -void AnimHelpingHandClap(struct Sprite *sprite) +static void AnimHelpingHandClap(struct Sprite *sprite) { if (gBattleAnimArgs[0] == 0) { @@ -4469,7 +4508,7 @@ static void AnimTask_HelpingHandAttackerMovement_Step(u8 taskId) // Moves a magnifying glass around in straight lines. // arg 0: magnifying glass target mon -void AnimForesightMagnifyingGlass(struct Sprite *sprite) +static void AnimForesightMagnifyingGlass(struct Sprite *sprite) { if (gBattleAnimArgs[0] == ANIM_ATTACKER) { @@ -4615,7 +4654,7 @@ static void AnimMeteorMashStar_Step(struct Sprite *sprite) // arg 2: destination x pixel offset // arg 3: destination y pixel offset // arg 4: duration -void AnimMeteorMashStar(struct Sprite *sprite) +static void AnimMeteorMashStar(struct Sprite *sprite) { s16 y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2); s16 x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); @@ -4729,7 +4768,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId) // Moves down an X that flickers and disappears. // No args. -void AnimBlockX(struct Sprite *sprite) +static void AnimBlockX(struct Sprite *sprite) { s16 y; @@ -5060,7 +5099,7 @@ void AnimTask_SnatchOpposingMonMove(u8 taskId) } } -void AnimUnusedItemBagSteal(struct Sprite *sprite) +static void AnimUnusedItemBagSteal(struct Sprite *sprite) { switch (sprite->data[7]) { @@ -5241,7 +5280,7 @@ static void AnimKnockOffStrike_Step(struct Sprite *sprite) // Animates a strike that swipes downard at the target mon. // arg 0: initial x pixel offset // arg 1: initial y pixel offset -void AnimKnockOffStrike(struct Sprite *sprite) +static void AnimKnockOffStrike(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER) { @@ -5264,7 +5303,7 @@ void AnimKnockOffStrike(struct Sprite *sprite) // Gradually fades a rotating recyle arrow sprite in and back out. // No args. -void AnimRecycle(struct Sprite *sprite) +static void AnimRecycle(struct Sprite *sprite) { sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); sprite->y = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_TOP); diff --git a/src/flying.c b/src/battle_anim_flying.c similarity index 89% rename from src/flying.c rename to src/battle_anim_flying.c index b6007a679..d3daecc67 100644 --- a/src/flying.c +++ b/src/battle_anim_flying.c @@ -11,29 +11,29 @@ static void AnimAirWaveCrescent(struct Sprite *sprite); static void AnimFlyBallUp(struct Sprite *sprite); static void AnimFlyBallAttack(struct Sprite *sprite); static void AnimFallingFeather(struct Sprite *sprite); -static void sub_80B24C0(struct Sprite *sprite); -static void sub_80B2514(struct Sprite *sprite); +static void AnimUnusedBubbleThrow(struct Sprite *sprite); +static void AnimUnusedFeather(struct Sprite *sprite); static void AnimWhirlwindLine(struct Sprite *sprite); static void AnimBounceBallShrink(struct Sprite *sprite); static void AnimBounceBallLand(struct Sprite *sprite); static void AnimDiveBall(struct Sprite *sprite); static void AnimDiveWaterSplash(struct Sprite *sprite); static void AnimSprayWaterDroplet(struct Sprite *sprite); -static void sub_80B2CE4(struct Sprite *sprite); +static void AnimUnusedFlashingLight(struct Sprite *sprite); static void AnimSkyAttackBird(struct Sprite *sprite); -static void sub_80B190C(struct Sprite *sprite); -static void sub_80B198C(u8 taskId); -static void sub_80B1A9C(struct Sprite *sprite); -static void sub_80B1BF8(struct Sprite *sprite); -static void sub_80B1CC0(struct Sprite *sprite); +static void AnimEllipticalGust_Step(struct Sprite *sprite); +static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId); +static void AnimGustToTarget_Step(struct Sprite *sprite); +static void AnimFlyBallUp_Step(struct Sprite *sprite); +static void AnimFlyBallAttack_Step(struct Sprite *sprite); static void AnimFallingFeather_Step(struct Sprite *sprite); -static void sub_80B268C(struct Sprite *sprite); -static void sub_80B2820(struct Sprite *sprite); -static void sub_80B2A50(struct Sprite *sprite); -static void sub_80B2AB0(struct Sprite *sprite); -static void sub_80B2C88(struct Sprite *sprite); -static void sub_80B2CF8(struct Sprite *sprite); -static void sub_80B2E20(struct Sprite *sprite); +static void AnimUnusedFeather_Step(struct Sprite *sprite); +static void AnimWhirlwindLine_Step(struct Sprite *sprite); +static void AnimDiveBall_Step1(struct Sprite *sprite); +static void AnimDiveBall_Step2(struct Sprite *sprite); +static void AnimSprayWaterDroplet_Step(struct Sprite *sprite); +static void AnimUnusedFlashingLight_Step(struct Sprite *sprite); +static void AnimSkyAttackBird_Step(struct Sprite *sprite); const struct SpriteTemplate gEllipticalGustSpriteTemplate = { @@ -177,10 +177,9 @@ const struct SpriteTemplate gFallingFeatherSpriteTemplate = .callback = AnimFallingFeather, }; -// not used -static const u16 gUnknown_83E6C18[] = INCBIN_U16("graphics/battle_anims/unk_83E6C18.gbapal"); +static const u16 sUnusedPal[] = INCBIN_U16("graphics/battle_anims/unk_83E6C18.gbapal"); -const struct SpriteTemplate gUnknown_83E6C38 = +static const struct SpriteTemplate sUnusedBubbleThrowSpriteTemplate = { .tileTag = ANIM_TAG_SMALL_BUBBLES, .paletteTag = ANIM_TAG_SMALL_BUBBLES, @@ -188,10 +187,10 @@ const struct SpriteTemplate gUnknown_83E6C38 = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B24C0, + .callback = AnimUnusedBubbleThrow, }; -const struct SpriteTemplate gUnknown_83E6C50 = +static const struct SpriteTemplate sUnusedFeatherSpriteTemplate = { .tileTag = ANIM_TAG_WHITE_FEATHER, .paletteTag = ANIM_TAG_WHITE_FEATHER, @@ -199,7 +198,7 @@ const struct SpriteTemplate gUnknown_83E6C50 = .anims = sAnims_FallingFeather, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B2514, + .callback = AnimUnusedFeather, }; static const union AnimCmd sAnim_WhirlwindLines[] = @@ -301,8 +300,7 @@ const struct SpriteTemplate gDiveBallSpriteTemplate = .callback = AnimDiveBall, }; -// not used -static const union AffineAnimCmd gUnknown_83E6D58[] = +static const union AffineAnimCmd sAnim_Unused[] = { AFFINEANIMCMD_FRAME(0x100, 0x0, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x20, 0, 12), @@ -310,10 +308,9 @@ static const union AffineAnimCmd gUnknown_83E6D58[] = AFFINEANIMCMD_END, }; -// not used -static const union AffineAnimCmd *const gUnknown_83E6D80[] = +static const union AffineAnimCmd *const sAnims_Unused[] = { - gUnknown_83E6D58, + sAnim_Unused, }; const struct SpriteTemplate gDiveWaterSplashSpriteTemplate = @@ -338,7 +335,7 @@ const struct SpriteTemplate gSprayWaterDropletSpriteTemplate = .callback = AnimSprayWaterDroplet, }; -const struct SpriteTemplate gUnknown_83E6DAC = +static const struct SpriteTemplate sUnusedFlashingLightSpriteTemplate = { .tileTag = ANIM_TAG_CIRCLE_OF_LIGHT, .paletteTag = ANIM_TAG_CIRCLE_OF_LIGHT, @@ -346,7 +343,7 @@ const struct SpriteTemplate gUnknown_83E6DAC = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80B2CE4, + .callback = AnimUnusedFlashingLight, }; const struct SpriteTemplate gSkyAttackBirdSpriteTemplate = @@ -365,11 +362,11 @@ static void AnimEllipticalGust(struct Sprite *sprite) InitSpritePosToAnimTarget(sprite, FALSE); sprite->y += 20; sprite->data[1] = 191; - sprite->callback = sub_80B190C; + sprite->callback = AnimEllipticalGust_Step; sprite->callback(sprite); } -static void sub_80B190C(struct Sprite *sprite) +static void AnimEllipticalGust_Step(struct Sprite *sprite) { sprite->x2 = Sin(sprite->data[1], 32); sprite->y2 = Cos(sprite->data[1], 8); @@ -379,15 +376,16 @@ static void sub_80B190C(struct Sprite *sprite) DestroyAnimSprite(sprite); } +// Animates the palette on the gust tornado to make it look like its spinning void AnimTask_AnimateGustTornadoPalette(u8 taskId) { gTasks[taskId].data[0] = gBattleAnimArgs[1]; gTasks[taskId].data[1] = gBattleAnimArgs[0]; gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_GUST); - gTasks[taskId].func = sub_80B198C; + gTasks[taskId].func = AnimTask_AnimateGustTornadoPalette_Step; } -static void sub_80B198C(u8 taskId) +static void AnimTask_AnimateGustTornadoPalette_Step(u8 taskId) { u8 data2; u16 temp; @@ -423,10 +421,10 @@ static void AnimGustToTarget(struct Sprite *sprite) sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET) + gBattleAnimArgs[3]; InitAnimLinearTranslation(sprite); sprite->callback = RunStoredCallbackWhenAffineAnimEnds; - StoreSpriteCallbackInData6(sprite, sub_80B1A9C); + StoreSpriteCallbackInData6(sprite, AnimGustToTarget_Step); } -static void sub_80B1A9C(struct Sprite *sprite) +static void AnimGustToTarget_Step(struct Sprite *sprite) { if (AnimTranslateLinear(sprite)) DestroyAnimSprite(sprite); @@ -472,11 +470,11 @@ static void AnimFlyBallUp(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, TRUE); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = sub_80B1BF8; + sprite->callback = AnimFlyBallUp_Step; gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE; } -static void sub_80B1BF8(struct Sprite *sprite) +static void AnimFlyBallUp_Step(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -495,7 +493,7 @@ static void AnimFlyBallAttack(struct Sprite *sprite) { if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER) { - sprite->x = 272; + sprite->x = DISPLAY_WIDTH + 32; sprite->y = -32; StartSpriteAffineAnim(sprite, 1); } @@ -510,10 +508,10 @@ static void AnimFlyBallAttack(struct Sprite *sprite) sprite->data[3] = sprite->y; sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET); InitAnimLinearTranslation(sprite); - sprite->callback = sub_80B1CC0; + sprite->callback = AnimFlyBallAttack_Step; } -static void sub_80B1CC0(struct Sprite *sprite) +static void AnimFlyBallAttack_Step(struct Sprite *sprite) { sprite->data[0] = 1; AnimTranslateLinear(sprite); @@ -524,8 +522,8 @@ static void sub_80B1CC0(struct Sprite *sprite) sprite->data[3] &= 0xFF; } if (sprite->x + sprite->x2 < -32 - || sprite->x + sprite->x2 > 272 - || sprite->y + sprite->y2 > 160) + || sprite->x + sprite->x2 > DISPLAY_WIDTH + 32 + || sprite->y + sprite->y2 > DISPLAY_HEIGHT) { gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = FALSE; DestroyAnimSprite(sprite); @@ -883,7 +881,7 @@ static void AnimFallingFeather_Step(struct Sprite *sprite) } } -static void sub_80B24C0(struct Sprite *sprite) +static void AnimUnusedBubbleThrow(struct Sprite *sprite) { sprite->oam.priority = GetBattlerSpriteBGPriority(gBattleAnimTarget); sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); @@ -891,7 +889,7 @@ static void sub_80B24C0(struct Sprite *sprite) sprite->callback = TranslateAnimSpriteToTargetMonLocation; } -static void sub_80B2514(struct Sprite *sprite) +static void AnimUnusedFeather(struct Sprite *sprite) { u8 matrixNum; s16 rn, sinVal; @@ -935,10 +933,10 @@ static void sub_80B2514(struct Sprite *sprite) sprite->animNum = 1; sprite->hFlip = TRUE; } - sprite->callback = sub_80B268C; + sprite->callback = AnimUnusedFeather_Step; } -static void sub_80B268C(struct Sprite *sprite) +static void AnimUnusedFeather_Step(struct Sprite *sprite) { struct FeatherDanceData fData; struct FeatherDanceData *tData = (struct FeatherDanceData *)sprite->data; @@ -992,12 +990,12 @@ static void AnimWhirlwindLine(struct Sprite *sprite) u16 arg; u8 mult; - if (!gBattleAnimArgs[2]) + if (gBattleAnimArgs[2] == ANIM_ATTACKER) InitSpritePosToAnimAttacker(sprite, 0); else InitSpritePosToAnimTarget(sprite, FALSE); - if ((!gBattleAnimArgs[2] && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) - || (gBattleAnimArgs[2] == 1 && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)) + if ((gBattleAnimArgs[2] == ANIM_ATTACKER && GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER) + || (gBattleAnimArgs[2] == ANIM_TARGET && GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)) sprite->x += 8; SeekSpriteAnim(sprite, gBattleAnimArgs[4]); sprite->x -= 32; @@ -1007,10 +1005,10 @@ static void AnimWhirlwindLine(struct Sprite *sprite) sprite->x2 += mult * arg; sprite->data[0] = arg; sprite->data[7] = gBattleAnimArgs[3]; - sprite->callback = sub_80B2820; + sprite->callback = AnimWhirlwindLine_Step; } -static void sub_80B2820(struct Sprite *sprite) +static void AnimWhirlwindLine_Step(struct Sprite *sprite) { sprite->x2 += sprite->data[1] >> 8; if (++sprite->data[0] == 6) @@ -1064,7 +1062,7 @@ static void AnimBounceBallLand(struct Sprite *sprite) switch (sprite->data[0]) { case 0: - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); sprite->y2 = -sprite->y - 32; ++sprite->data[0]; break; @@ -1089,11 +1087,11 @@ static void AnimDiveBall(struct Sprite *sprite) InitSpritePosToAnimAttacker(sprite, 1); sprite->data[0] = gBattleAnimArgs[2]; sprite->data[1] = gBattleAnimArgs[3]; - sprite->callback = sub_80B2A50; + sprite->callback = AnimDiveBall_Step1; gSprites[GetAnimBattlerSpriteId(ANIM_ATTACKER)].invisible = TRUE; } -static void sub_80B2A50(struct Sprite *sprite) +static void AnimDiveBall_Step1(struct Sprite *sprite) { if (sprite->data[0] > 0) { @@ -1108,11 +1106,11 @@ static void sub_80B2A50(struct Sprite *sprite) { sprite->invisible = TRUE; if (sprite->data[3]++ > 20) - sprite->callback = sub_80B2AB0; + sprite->callback = AnimDiveBall_Step2; } } -static void sub_80B2AB0(struct Sprite *sprite) +static void AnimDiveBall_Step2(struct Sprite *sprite) { sprite->y2 += sprite->data[2] >> 8; if (sprite->y + sprite->y2 > -32) @@ -1131,13 +1129,13 @@ static void AnimDiveWaterSplash(struct Sprite *sprite) case 0: if (!gBattleAnimArgs[0]) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1); + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y); } sprite->data[1] = 512; TrySetSpriteRotScale(sprite, 0, 256, sprite->data[1], 0); @@ -1166,6 +1164,7 @@ static void AnimDiveWaterSplash(struct Sprite *sprite) } } +// Launches a water droplet away from the specified battler. Used by Astonish and Dive static void AnimSprayWaterDroplet(struct Sprite *sprite) { s32 v1 = 0x1FF & Random(); @@ -1185,18 +1184,18 @@ static void AnimSprayWaterDroplet(struct Sprite *sprite) sprite->oam.matrixNum = ST_OAM_HFLIP; if (gBattleAnimArgs[1] == 0) { - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1) + 32; + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y) + 32; } else { - sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32; + sprite->x = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + sprite->y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 32; } - sprite->callback = sub_80B2C88; + sprite->callback = AnimSprayWaterDroplet_Step; } -static void sub_80B2C88(struct Sprite *sprite) +static void AnimSprayWaterDroplet_Step(struct Sprite *sprite) { if (sprite->data[2] == 0) { @@ -1216,14 +1215,14 @@ static void sub_80B2C88(struct Sprite *sprite) DestroyAnimSprite(sprite); } -static void sub_80B2CE4(struct Sprite *sprite) +static void AnimUnusedFlashingLight(struct Sprite *sprite) { sprite->data[6] = 0; sprite->data[7] = 64; - sprite->callback = sub_80B2CF8; + sprite->callback = AnimUnusedFlashingLight_Step; } -static void sub_80B2CF8(struct Sprite *sprite) +static void AnimUnusedFlashingLight_Step(struct Sprite *sprite) { switch (sprite->data[0]) { @@ -1248,8 +1247,8 @@ static void AnimSkyAttackBird(struct Sprite *sprite) s16 posx = sprite->x; s16 posy = sprite->y; - sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2); - sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3); + sprite->x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X_2); + sprite->y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y_PIC_OFFSET); sprite->data[4] = sprite->x << 4; sprite->data[5] = sprite->y << 4; sprite->data[6] = ((posx - sprite->x) << 4) / 12; @@ -1257,22 +1256,22 @@ static void AnimSkyAttackBird(struct Sprite *sprite) rotation = ArcTan2Neg(posx - sprite->x, posy - sprite->y); rotation += 49152; TrySetSpriteRotScale(sprite, 1, 0x100, 0x100, rotation); - sprite->callback = sub_80B2E20; + sprite->callback = AnimSkyAttackBird_Step; } -static void sub_80B2E20(struct Sprite *sprite) +static void AnimSkyAttackBird_Step(struct Sprite *sprite) { sprite->data[4] += sprite->data[6]; sprite->data[5] += sprite->data[7]; sprite->x = sprite->data[4] >> 4; sprite->y = sprite->data[5] >> 4; - if (sprite->x > 285 || sprite->x < -45 + if (sprite->x > DISPLAY_WIDTH + 45 || sprite->x < -45 || sprite->y > 157 || sprite->y < -45) DestroySpriteAndMatrix(sprite); } -// not used -static void sub_80B2E64(u8 taskId) +// Unused +static void AnimTask_SetAttackerVisibility(u8 taskId) { if (gBattleAnimArgs[0] == 0) { From 17b2faa1828789c651a97f4d136cb3966feecc04 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 18 Aug 2022 14:42:26 -0400 Subject: [PATCH 26/38] Sync battle anim - scripts --- asm/macros/battle_anim_script.inc | 92 +- constants/gba_constants.inc | 23 + data/battle_anim_scripts.s | 6718 +++++++++++++-------------- include/constants/battle_anim.h | 117 +- include/constants/rgb.h | 25 + include/gba/defines.h | 14 - include/global.h | 1 + src/battle_anim_dark.c | 2 +- src/battle_anim_effects_1.c | 12 +- src/battle_anim_effects_2.c | 12 +- src/battle_anim_mon_movement.c | 2 +- src/battle_anim_special.c | 2 +- src/battle_anim_utility_funcs.c | 4 +- src/battle_controller_oak_old_man.c | 4 +- src/battle_controller_safari.c | 4 +- 15 files changed, 3541 insertions(+), 3491 deletions(-) create mode 100644 include/constants/rgb.h diff --git a/asm/macros/battle_anim_script.inc b/asm/macros/battle_anim_script.inc index 5426cdfba..15c48c39f 100644 --- a/asm/macros/battle_anim_script.inc +++ b/asm/macros/battle_anim_script.inc @@ -14,7 +14,7 @@ .byte 0x02 .4byte \template .if \anim_battler == ANIM_TARGET - .byte 0x80 | (\subpriority_offset & 0x7F) + .byte ANIMSPRITE_IS_TARGET | (\subpriority_offset & 0x7F) .else .byte (\subpriority_offset & 0x7F) .endif @@ -34,20 +34,20 @@ .Lcreatetask_\@_2: .endm - .macro delay param0:req + .macro delay frames:req .byte 0x4 - .byte \param0 + .byte \frames .endm .macro waitforvisualfinish .byte 0x5 .endm - .macro hang1 + .macro nop .byte 0x6 .endm - .macro hang2 + .macro nop2 .byte 0x7 .endm @@ -79,30 +79,30 @@ .byte 0xd .endm - .macro call param0:req + .macro call ptr:req .byte 0xe - .4byte \param0 + .4byte \ptr .endm .macro return .byte 0xf .endm - .macro setarg param0:req, param1:req + .macro setarg argId:req, value:req .byte 0x10 - .byte \param0 - .2byte \param1 + .byte \argId + .2byte \value .endm - .macro choosetwoturnanim param0:req, param1:req + .macro choosetwoturnanim ptr1:req, ptr2:req .byte 0x11 - .4byte \param0 - .4byte \param1 + .4byte \ptr1 + .4byte \ptr2 .endm - .macro jumpifmoveturn param0:req, ptr:req + .macro jumpifmoveturn value:req, ptr:req .byte 0x12 - .byte \param0 + .byte \value .4byte \ptr .endm @@ -144,13 +144,13 @@ .byte \pan .endm - .macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req + .macro panse se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req .byte 0x1b .2byte \se - .byte \param1 - .byte \param2 - .byte \param3 - .byte \param4 + .byte \currentPan + .byte \targetPan + .byte \incrementPan + .byte \delay .endm .macro loopsewithpan se:req, pan:req, wait:req, times:req @@ -168,9 +168,9 @@ .byte \wait .endm - .macro setbldcnt param0:req + .macro setbldcnt bldcnt:req .byte 0x1e - .2byte \param0 + .2byte \bldcnt .endm .macro createsoundtask addr:req, argv:vararg @@ -186,19 +186,19 @@ .byte 0x20 .endm - .macro jumpargeq param0:req, param1:req, ptr:req + .macro jumpargeq argId:req, value:req, ptr:req .byte 0x21 - .byte \param0 - .2byte \param1 + .byte \argId + .2byte \value .4byte \ptr .endm - .macro monbg_22 battler:req + .macro monbg_static battler:req .byte 0x22 .byte \battler .endm - .macro clearmonbg_23 battler:req + .macro clearmonbg_static battler:req .byte 0x23 .byte \battler .endm @@ -208,41 +208,41 @@ .4byte \ptr .endm - .macro fadetobgfromset param0:req, param1:req, param2:req + .macro fadetobgfromset bgOpponent:req, bgPlayer:req, bgContest:req .byte 0x25 - .byte \param0 - .byte \param1 - .byte \param2 + .byte \bgOpponent + .byte \bgPlayer + .byte \bgContest .endm - .macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req + .macro panse_adjustnone se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req .byte 0x26 .2byte \se - .byte \param1 - .byte \param2 - .byte \param3 - .byte \param4 + .byte \currentPan + .byte \targetPan + .byte \incrementPan + .byte \delay .endm - .macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req + .macro panse_adjustall se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req .byte 0x27 .2byte \se - .byte \param1 - .byte \param2 - .byte \param3 - .byte \param4 + .byte \currentPan + .byte \targetPan + .byte \incrementPan + .byte \delay .endm - .macro monbgprio_28 battler:req + .macro splitbgprio battler:req .byte 0x28 .byte \battler .endm - .macro monbgprio_29 + .macro splitbgprio_all .byte 0x29 .endm - .macro monbgprio_2A battler:req + .macro splitbgprio_foes battler:req .byte 0x2a .byte \battler .endm @@ -257,12 +257,12 @@ .byte \battler .endm - .macro doublebattle_2D battler:req + .macro teamattack_moveback battler:req .byte 0x2d .byte \battler .endm - .macro doublebattle_2E battler:req + .macro teamattack_movefwd battler:req .byte 0x2e .byte \battler .endm diff --git a/constants/gba_constants.inc b/constants/gba_constants.inc index 9d59c8fcd..3ff857ee8 100644 --- a/constants/gba_constants.inc +++ b/constants/gba_constants.inc @@ -488,3 +488,26 @@ .set OAM_SIZE_8x32, OAM_SIZE_1 | OAM_V_RECTANGLE .set OAM_SIZE_16x32, OAM_SIZE_2 | OAM_V_RECTANGLE .set OAM_SIZE_32x64, OAM_SIZE_3 | OAM_V_RECTANGLE + +@ BLDCNT + + .set BLDCNT_TGT1_BG0, 1 << 0 + .set BLDCNT_TGT1_BG1, 1 << 1 + .set BLDCNT_TGT1_BG2, 1 << 2 + .set BLDCNT_TGT1_BG3, 1 << 3 + .set BLDCNT_TGT1_OBJ, 1 << 4 + .set BLDCNT_TGT1_BD, 1 << 5 + .set BLDCNT_TGT1_ALL, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD + + .set BLDCNT_EFFECT_NONE, 0 << 6 + .set BLDCNT_EFFECT_BLEND, 1 << 6 + .set BLDCNT_EFFECT_LIGHTEN, 2 << 6 + .set BLDCNT_EFFECT_DARKEN, 3 << 6 + + .set BLDCNT_TGT2_BG0, 1 << 8 + .set BLDCNT_TGT2_BG1, 1 << 9 + .set BLDCNT_TGT2_BG2, 1 << 10 + .set BLDCNT_TGT2_BG3, 1 << 11 + .set BLDCNT_TGT2_OBJ, 1 << 12 + .set BLDCNT_TGT2_BD, 1 << 13 + .set BLDCNT_TGT2_ALL, BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 85691c3a6..0b8743f76 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1,40 +1,12 @@ #include "constants/battle.h" #include "constants/battle_anim.h" +#include "constants/rgb.h" #include "constants/songs.h" #include "constants/sound.h" #include "constants/moves.h" .include "asm/macros.inc" .include "asm/macros/battle_anim_script.inc" - -#define FALSE 0 -#define TRUE 1 - -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) -#define RGB_BLACK 0x0000 -#define RGB_WHITE 0x7FFF -#define RGB_WHITEALPHA 0xFFFF - -// BLDCNT -// Bits 0-5 select layers for the 1st target -#define BLDCNT_TGT1_BG0 (1 << 0) -#define BLDCNT_TGT1_BG1 (1 << 1) -#define BLDCNT_TGT1_BG2 (1 << 2) -#define BLDCNT_TGT1_BG3 (1 << 3) -#define BLDCNT_TGT1_OBJ (1 << 4) -#define BLDCNT_TGT1_BD (1 << 5) -// Bits 6-7 select the special effect -#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect -#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA) -#define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY) -#define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY) -// Bits 8-13 select layers for the 2nd target -#define BLDCNT_TGT2_BG0 (1 << 8) -#define BLDCNT_TGT2_BG1 (1 << 9) -#define BLDCNT_TGT2_BG2 (1 << 10) -#define BLDCNT_TGT2_BG3 (1 << 11) -#define BLDCNT_TGT2_OBJ (1 << 12) -#define BLDCNT_TGT2_BD (1 << 13) -#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD) + .include "constants/constants.inc" .section script_data, "aw", %progbits @@ -314,7 +286,7 @@ gBattleAnims_Moves:: .4byte Move_FOCUS_PUNCH .4byte Move_SMELLING_SALT .4byte Move_FOLLOW_ME - .4byte Move_ANCIENT_POWER + .4byte Move_NATURE_POWER .4byte Move_CHARGE .4byte Move_TAUNT .4byte Move_HELPING_HAND @@ -402,97 +374,101 @@ gBattleAnims_Moves:: .4byte Move_WATER_PULSE .4byte Move_DOOM_DESIRE .4byte Move_PSYCHO_BOOST - .4byte Move_COUNT + .4byte Move_COUNT @ cannot be reached, because last move is Psycho Boost + .align 2 gBattleAnims_StatusConditions:: - .4byte Status_Poison - .4byte Status_Confusion - .4byte Status_Burn - .4byte Status_Infatuation - .4byte Status_Sleep - .4byte Status_Paralysis - .4byte Status_Freeze - .4byte Status_Curse - .4byte Status_Nightmare + .4byte Status_Poison @ B_ANIM_STATUS_PSN + .4byte Status_Confusion @ B_ANIM_STATUS_CONFUSION + .4byte Status_Burn @ B_ANIM_STATUS_BRN + .4byte Status_Infatuation @ B_ANIM_STATUS_INFATUATION + .4byte Status_Sleep @ B_ANIM_STATUS_SLP + .4byte Status_Paralysis @ B_ANIM_STATUS_PRZ + .4byte Status_Freeze @ B_ANIM_STATUS_FRZ + .4byte Status_Curse @ B_ANIM_STATUS_CURSED + .4byte Status_Nightmare @ B_ANIM_STATUS_NIGHTMARE + .align 2 gBattleAnims_General:: - .4byte General_CastformChange - .4byte General_StatsChange - .4byte General_SubstituteFade - .4byte General_SubstituteAppear - .4byte General_BaitThrow - .4byte General_ItemKnockoff - .4byte General_TurnTrap - .4byte General_ItemEffect - .4byte General_SmokeballEscape - .4byte General_HangedOn - .4byte General_Rain - .4byte General_Sun - .4byte General_Sandstorm - .4byte General_Hail - .4byte General_LeechSeedDrain - .4byte General_MonHit - .4byte General_ItemSteal - .4byte General_SnatchMove - .4byte General_FutureSightHit - .4byte General_DoomDesireHit - .4byte General_FocusPunchSetUp - .4byte General_IngrainHeal - .4byte General_WishHeal - .4byte General_MonScared - .4byte General_GhostGetOut - .4byte General_SilphScoped - .4byte General_SafariRockThrow - .4byte General_SafariReaction + .4byte General_CastformChange @ B_ANIM_CASTFORM_CHANGE + .4byte General_StatsChange @ B_ANIM_STATS_CHANGE + .4byte General_SubstituteFade @ B_ANIM_SUBSTITUTE_FADE + .4byte General_SubstituteAppear @ B_ANIM_SUBSTITUTE_APPEAR + .4byte General_BaitThrow @ B_ANIM_BAIT_THROW + .4byte General_ItemKnockoff @ B_ANIM_ITEM_KNOCKOFF + .4byte General_TurnTrap @ B_ANIM_TURN_TRAP + .4byte General_HeldItemEffect @ B_ANIM_HELD_ITEM_EFFECT + .4byte General_SmokeballEscape @ B_ANIM_SMOKEBALL_ESCAPE + .4byte General_FocusBand @ B_ANIM_FOCUS_BAND + .4byte General_Rain @ B_ANIM_RAIN_CONTINUES + .4byte General_Sun @ B_ANIM_SUN_CONTINUES + .4byte General_Sandstorm @ B_ANIM_SANDSTORM_CONTINUES + .4byte General_Hail @ B_ANIM_HAIL_CONTINUES + .4byte General_LeechSeedDrain @ B_ANIM_LEECH_SEED_DRAIN + .4byte General_MonHit @ B_ANIM_MON_HIT + .4byte General_ItemSteal @ B_ANIM_ITEM_STEAL + .4byte General_SnatchMove @ B_ANIM_SNATCH_MOVE + .4byte General_FutureSightHit @ B_ANIM_FUTURE_SIGHT_HIT + .4byte General_DoomDesireHit @ B_ANIM_DOOM_DESIRE_HIT + .4byte General_FocusPunchSetUp @ B_ANIM_FOCUS_PUNCH_SETUP + .4byte General_IngrainHeal @ B_ANIM_INGRAIN_HEAL + .4byte General_WishHeal @ B_ANIM_WISH_HEAL + .4byte General_MonScared @ B_ANIM_MON_SCARED + .4byte General_GhostGetOut @ B_ANIM_GHOST_GET_OUT + .4byte General_SilphScoped @ B_ANIM_SILPH_SCOPED + .4byte General_SafariRockThrow @ B_ANIM_ROCK_THROW + .4byte General_SafariReaction @ B_ANIM_SAFARI_REACTION + .align 2 gBattleAnims_Special:: - .4byte Special_LevelUp - .4byte Special_SwitchOutPlayerMon - .4byte Special_SwitchOutOpponentMon - .4byte Special_BallThrow - .4byte Special_SafariBallThrow - .4byte Special_SubstituteToMon - .4byte Special_MonToSubstitute + .4byte Special_LevelUp @ B_ANIM_LVL_UP + .4byte Special_SwitchOutPlayerMon @ B_ANIM_SWITCH_OUT_PLAYER_MON + .4byte Special_SwitchOutOpponentMon @ B_ANIM_SWITCH_OUT_OPPONENT_MON + .4byte Special_BallThrow @ B_ANIM_BALL_THROW + .4byte Special_BallThrowWithTrainer @ B_ANIM_BALL_THROW_WITH_TRAINER + .4byte Special_SubstituteToMon @ B_ANIM_SUBSTITUTE_TO_MON + .4byte Special_MonToSubstitute @ B_ANIM_MON_TO_SUBSTITUTE -Move_NONE:: -Move_POUND:: -Move_MIRROR_MOVE:: +Move_NONE: +Move_MIRROR_MOVE: +Move_POUND: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_DOUBLE_SLAP:: +Move_DOUBLE_SLAP: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 choosetwoturnanim DoubleSlapLeft, DoubleSlapRight -DoubleSlapContinue:: - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_DOUBLE_SLAP, 63 + +DoubleSlapContinue: + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -DoubleSlapLeft:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2 +DoubleSlapLeft: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 2 goto DoubleSlapContinue -DoubleSlapRight:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, 1, 2 +DoubleSlapRight: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, ANIM_TARGET, 2 goto DoubleSlapContinue -Move_POISON_POWDER:: +Move_POISON_POWDER: loadspritegfx ANIM_TAG_POISON_POWDER loadspritegfx ANIM_TAG_POISON_BUBBLE - loopsewithpan SE_M_POISON_POWDER, 63, 10, 6 + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 10, 6 createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 createsprite gPoisonPowderParticleSpriteTemplate, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 @@ -514,9 +490,9 @@ Move_POISON_POWDER:: waitforvisualfinish end -Move_STUN_SPORE:: +Move_STUN_SPORE: loadspritegfx ANIM_TAG_STUN_SPORE - loopsewithpan SE_M_POISON_POWDER, 63, 10, 6 + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 10, 6 createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 createsprite gStunSporeParticleSpriteTemplate, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 @@ -538,9 +514,9 @@ Move_STUN_SPORE:: waitforvisualfinish end -Move_SLEEP_POWDER:: +Move_SLEEP_POWDER: loadspritegfx ANIM_TAG_SLEEP_POWDER - loopsewithpan SE_M_POISON_POWDER, 63, 10, 6 + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 10, 6 createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -30, -22, 117, 80, 5, 1 createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, 10, -22, 117, 80, -5, 1 createsprite gSleepPowderParticleSpriteTemplate, ANIM_TARGET, 2, -25, -22, 117, 112, 5, 3 @@ -562,26 +538,26 @@ Move_SLEEP_POWDER:: waitforvisualfinish end -Move_SWIFT:: +Move_SWIFT: loadspritegfx ANIM_TAG_YELLOW_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1 delay 5 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 5, 22, -18, 1 delay 5 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, -10, 22, 15, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 18, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 18, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 18, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 18, 1 delay 5 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1 delay 5 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gSwiftStarSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 12, 1 delay 5 waitforvisualfinish @@ -589,62 +565,62 @@ Move_SWIFT:: blendoff end -Move_STRENGTH:: +Move_STRENGTH: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_ShakeAndSinkMon, 5, 0, 2, 0, 96, 30 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeAndSinkMon, 5, ANIM_ATTACKER, 2, 0, 96, 30 waitforvisualfinish delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 4 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 1, 18, 6, 2, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_TARGET, 18, 6, 2, 4 delay 4 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 16, 12, 1, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 16, 12, ANIM_TARGET, 1 delay 4 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, -12, 1, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, -12, ANIM_TARGET, 1 delay 4 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 3, 4, 1, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 3, 4, ANIM_TARGET, 1 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_TACKLE:: +Move_TACKLE: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_BODY_SLAM:: +Move_BODY_SLAM: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_TAKE_DOWN, 192 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER waitforvisualfinish delay 11 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 26, 0, 0, 5 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, 1, 0 - loopsewithpan SE_M_MEGA_KICK2, 63, 10, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 + loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 10, 2 delay 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6 @@ -655,12 +631,12 @@ Move_BODY_SLAM:: blendoff end -Move_SUPERSONIC:: +Move_SUPERSONIC: loadspritegfx ANIM_TAG_GOLD_RING monbg ANIM_ATK_PARTNER - monbgprio_2A 0 + splitbgprio_foes ANIM_ATTACKER setalpha 12, 8 - createvisualtask AnimTask_ShakeMon2, 2, 0, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1 call SupersonicRing call SupersonicRing call SupersonicRing @@ -672,140 +648,142 @@ Move_SUPERSONIC:: blendoff end -SupersonicRing:: - playsewithpan SE_M_SUPERSONIC, 192 - createsprite gSupersonicWaveSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 +SupersonicRing: + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER + createsprite gSupersonicRingSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 delay 2 return -Move_SCREECH:: +Move_SCREECH: loadspritegfx ANIM_TAG_PURPLE_RING - createvisualtask AnimTask_ShakeMon2, 2, 0, 3, 0, 2, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 3, 0, 2, 1 call ScreechRing call ScreechRing delay 16 - createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 2, 1 + createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 2, ANIM_TARGET waitforvisualfinish end -ScreechRing:: - playsewithpan SE_M_SCREECH, 192 - createsprite gScreechWaveSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 +ScreechRing: + playsewithpan SE_M_SCREECH, SOUND_PAN_ATTACKER + createsprite gScreechRingSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 delay 2 return -Move_FLAME_WHEEL:: +Move_FLAME_WHEEL: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 4 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 8 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 12 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 16 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 20 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER delay 2 createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 24 - playsewithpan SE_M_FLAME_WHEEL, 192 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 6 delay 4 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 8, 1 - createvisualtask AnimTask_BlendMonInAndOut, 3, 1, 31, 12, 1, 1 - playsewithpan SE_M_FLAME_WHEEL2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 8, 1 + createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_TARGET, RGB_RED, 12, 1, 1 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET call FireSpreadEffect delay 7 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 9 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end + +FlameWheel1: @ Unused createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 50 delay 4 return -Move_PIN_MISSILE:: +Move_PIN_MISSILE: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32 delay 15 createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 8, 8, 20, -40 delay 4 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 delay 9 createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 0, 0, 20, -32 delay 4 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 delay 14 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_ICICLE_SPEAR:: +Move_ICICLE_SPEAR: loadspritegfx ANIM_TAG_ICICLE_SPEAR loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_ICY_WIND, 192 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_ATTACKER createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32 delay 15 createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 8, 8, 20, -40 delay 4 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 delay 9 createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, 0, 0, 20, -32 delay 4 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 delay 14 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 2, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 2, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_TAKE_DOWN:: +Move_TAKE_DOWN: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_WindUpLunge, 5, 0, -24, 8, 23, 10, 40, 10 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -24, 8, 23, 10, 40, 10 delay 35 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 10, 0, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, 1, 0 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, -10, 0, ANIM_TARGET, 0 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 0, 0, 4 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 waitforvisualfinish delay 2 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 @@ -816,32 +794,32 @@ Move_TAKE_DOWN:: blendoff end -Move_DOUBLE_EDGE:: +Move_DOUBLE_EDGE: loadspritegfx ANIM_TAG_IMPACT - playsewithpan SE_M_SWIFT, 192 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 4, 2, RGB_WHITE, 10, 0, 0 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 4, 2, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish delay 10 - playsewithpan SE_M_SWAGGER, 192 - waitplaysewithpan SE_M_SWAGGER, 192, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 2, 4 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 8 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 2, 4 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 16, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 16, 16, RGB_WHITE createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 delay 3 waitforvisualfinish - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 0 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -32, 0, 0, 3 waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 0 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 0 - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 4, 0, 12, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 12, 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 0 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 4, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 12, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 0, 1 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, 1, 1 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_ATTACKER, 1 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 8, -256, ANIM_TARGET, 1 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 @@ -849,57 +827,57 @@ Move_DOUBLE_EDGE:: waitforvisualfinish end -Move_POISON_STING:: +Move_POISON_STING: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_POISON_BUBBLE - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 0, -8, 0, 20 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 5, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 5, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET waitforvisualfinish call PoisonBubblesEffect waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_TWINEEDLE:: +Move_TWINEEDLE: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - loopsewithpan SE_M_RAZOR_WIND2, 192, 6, 2 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 6, 2 createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 10, -4, 0, -4, 20 createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 12, 10, 12, 20 delay 20 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 5, 1 createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -4, 1, 3 - loopsewithpan SE_M_HORN_ATTACK, 63, 5, 2 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 5, 2 delay 1 createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 10, 12, 1, 3 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_FIRE_BLAST:: +Move_FIRE_BLAST: loadspritegfx ANIM_TAG_SMALL_EMBER createsoundtask SoundTask_FireBlast, SE_M_FLAME_WHEEL, SE_M_FLAME_WHEEL2 call FireBlastRing call FireBlastRing call FireBlastRing delay 24 - createvisualtask AnimTask_BlendSelected, 10, 1, 3, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 8, RGB_BLACK waitforvisualfinish delay 19 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 20, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 20, 1 call FireBlastCross delay 3 call FireBlastCross @@ -918,11 +896,11 @@ Move_FIRE_BLAST:: delay 3 call FireBlastCross waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 2, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 2, 8, 0, RGB_BLACK waitforvisualfinish end -FireBlastRing:: +FireBlastRing: createsprite gFireBlastRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0 createsprite gFireBlastRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 51 createsprite gFireBlastRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 102 @@ -931,7 +909,7 @@ FireBlastRing:: delay 5 return -FireBlastCross:: +FireBlastCross: createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 10, 0, -2 createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, -2, 0 createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 13, 2, 0 @@ -939,205 +917,205 @@ FireBlastCross:: createsprite gFireBlastCrossSpriteTemplate, ANIM_TARGET, 2, 0, 0, 15, 2, 2 return -Move_LEECH_SEED:: +Move_LEECH_SEED: loadspritegfx ANIM_TAG_SEED - playsewithpan SE_M_POISON_POWDER, 192 + playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, 0, 24, 35, -32 delay 8 - playsewithpan SE_M_POISON_POWDER, 192 + playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, -16, 24, 35, -40 delay 8 - playsewithpan SE_M_POISON_POWDER, 192 + playsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER createsprite gLeechSeedSpriteTemplate, ANIM_TARGET, 2, 15, 0, 16, 24, 35, -37 delay 12 - loopsewithpan SE_M_TAIL_WHIP, 63, 10, 8 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_TARGET, 10, 8 waitforvisualfinish end -Move_EMBER:: +Move_EMBER: loadspritegfx ANIM_TAG_SMALL_EMBER - loopsewithpan SE_M_EMBER, 192, 5, 2 + loopsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 5, 2 createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, -16, 24, 20, 1 delay 4 createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 24, 20, 1 delay 4 createsprite gEmberSpriteTemplate, ANIM_TARGET, 2, 20, 0, 16, 24, 20, 1 delay 16 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET call EmberFireHit call EmberFireHit call EmberFireHit end -EmberFireHit:: - createsprite gEmberFlareSpriteTemplate, ANIM_TARGET, 2, -24, 24, 24, 24, 20, 1, 1 +EmberFireHit: + createsprite gEmberFlareSpriteTemplate, ANIM_TARGET, 2, -24, 24, 24, 24, 20, ANIM_TARGET, 1 delay 4 return -Move_MEGA_PUNCH:: +Move_MEGA_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - monbg 1 + monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK setalpha 12, 8 - playsewithpan SE_M_MEGA_KICK, 63 + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 50 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE delay 50 call SetImpactBackground - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 22, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 2 restorebg waitbgfadein end -SetImpactBackground:: +SetImpactBackground: delay 2 - createvisualtask AnimTask_IsContest, 2, - jumpargeq 7, 1, SetImpactContestsBG - createvisualtask AnimTask_IsTargetPlayerSide, 2, - jumpargeq 7, 0, SetImpactOpponentBG - jumpargeq 7, 1, SetImpactPlayerBG -SetImpactBackgroundRet:: + createvisualtask AnimTask_IsContest, 2 + jumprettrue SetImpactContestsBG + createvisualtask AnimTask_IsTargetPlayerSide, 2 + jumpretfalse SetImpactOpponentBG + jumprettrue SetImpactPlayerBG +SetImpactBackgroundRet: return -SetImpactOpponentBG:: - changebg 4 +SetImpactOpponentBG: + changebg BG_IMPACT_OPPONENT goto SetImpactBackgroundRet -SetImpactPlayerBG:: - changebg 5 +SetImpactPlayerBG: + changebg BG_IMPACT_PLAYER goto SetImpactBackgroundRet -SetImpactContestsBG:: - changebg 6 +SetImpactContestsBG: + changebg BG_IMPACT_CONTESTS goto SetImpactBackgroundRet -Move_MEGA_KICK:: +Move_MEGA_KICK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - monbg 1 + monbg ANIM_TARGET delay 2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 16, RGB_BLACK setalpha 12, 8 - playsewithpan SE_M_MEGA_KICK, 63 + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gMegaPunchKickSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 50 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE delay 50 - playsewithpan SE_M_MEGA_KICK2, 63 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET call SetImpactBackground - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 22, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 22, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 2 restorebg waitbgfadein end -Move_COMET_PUNCH:: +Move_COMET_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 choosetwoturnanim CometPunchLeft, CometPunchRight -CometPunchContinue:: - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_COMET_PUNCH, 63 +CometPunchContinue: + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -CometPunchLeft:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, -8, 1, 2 +CometPunchLeft: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, -8, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -8, 0, 8, 1, 0 goto CometPunchContinue -CometPunchRight:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, -8, 1, 2 +CometPunchRight: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, -8, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 8, 0, 8, 1, 0 goto CometPunchContinue -Move_SONIC_BOOM:: +Move_SONIC_BOOM: loadspritegfx ANIM_TAG_AIR_WAVE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 call SonicBoomProjectile call SonicBoomProjectile call SonicBoomProjectile - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 10, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 10, 1 call SonicBoomHit waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -SonicBoomProjectile:: - playsewithpan SE_M_RAZOR_WIND2, 192 +SonicBoomProjectile: + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gSonicBoomSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 15 delay 4 return -SonicBoomHit:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 2 +SonicBoomHit: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 2 delay 4 return -Move_THUNDER_SHOCK:: +Move_THUNDER_SHOCK: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -44, 0 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK waitforvisualfinish end -Move_THUNDERBOLT:: +Move_THUNDERBOLT: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SHOCK_3 loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 24, -52, 0 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 7 createvisualtask AnimTask_ElectricBolt, 5, -24, -52, 0 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 7 createvisualtask AnimTask_ElectricBolt, 5, 0, -60, 1 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET delay 9 - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 0, 13, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 0, 13, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 13, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 13, 0, RGB_BLACK waitforvisualfinish delay 20 createsprite gThunderboltOrbSpriteTemplate, ANIM_TARGET, 3, 44, 0, 0, 3 @@ -1149,128 +1127,129 @@ Move_THUNDERBOLT:: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 96, 40, 1, -32765 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 160, 40, 0, -32765 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_TARGET, 4, 0, 0, 16, 44, 224, 40, 2, -32765 - playsewithpan SE_M_HYPER_BEAM, 63 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 0 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 2, 2, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 2, 2, RGB_BLACK delay 6 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 6, RGB_BLACK waitforvisualfinish delay 20 - waitplaysewithpan SE_M_THUNDERBOLT2, 63, 19 + waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 19 call ElectricityEffect waitforvisualfinish delay 20 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK waitforvisualfinish end -Move_THUNDER_WAVE:: +Move_THUNDER_WAVE: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_SPARK_2 loadspritegfx ANIM_TAG_SPARK_H - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish delay 10 createvisualtask AnimTask_ElectricBolt, 5, 0, -48, 0 - playsewithpan SE_M_THUNDER_WAVE, 63 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET delay 20 - loopsewithpan SE_M_THUNDERBOLT2, 63, 10, 4 + loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 10, 4 createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, -16 delay 4 createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, 0 delay 4 createsprite gThunderWaveSpriteTemplate, ANIM_TARGET, 2, -16, 16 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 6, 0, RGB_BLACK waitforvisualfinish end -Move_BEAT_UP:: +Move_BEAT_UP: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 choosetwoturnanim BeatUpLeft, BeatUpRight -BeatUpContinue:: + +BeatUpContinue: waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -BeatUpLeft:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -20, -20, 1, 2 +BeatUpLeft: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -20, -20, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, -20, -12, 8, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 8, 8, 8, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET goto BeatUpContinue -BeatUpRight:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -20, 1, 2 +BeatUpRight: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -20, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 12, -12, 8, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 0, 1, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 0, ANIM_TARGET, 2 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, -12, 8, 8, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET goto BeatUpContinue -Move_STOMP:: +Move_STOMP: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET createsprite gStompFootSpriteTemplate, ANIM_ATTACKER, 3, 0, -32, 15 delay 19 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, 1, 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 4, 9, 1 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 4, 9, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_TAIL_WHIP:: - loopsewithpan SE_M_TAIL_WHIP, 192, 24, 3 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 4, 2, 3 +Move_TAIL_WHIP: + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 24, 3 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 2, 3 waitforvisualfinish end -Move_CUT:: +Move_CUT: loadspritegfx ANIM_TAG_CUT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_CUT, 63 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 delay 5 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Move_HIDDEN_POWER:: +Move_HIDDEN_POWER: loadspritegfx ANIM_TAG_RED_ORB - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0 waitforvisualfinish delay 30 - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 20479, 12, 5, 1 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB(31, 31, 19), 12, 5, 1 delay 4 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0 - playsewithpan SE_M_REVERSAL, 192 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0 + playsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 42 createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 84 @@ -1278,9 +1257,9 @@ Move_HIDDEN_POWER:: createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 168 createsprite gHiddenPowerOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 210 delay 52 - setarg 7, 65535 - playsewithpan SE_M_REFLECT, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, 0, 0 + setarg 7, 0xFFFF + playsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_ATTACKER, 0 createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 0 createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 32 createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 64 @@ -1291,17 +1270,17 @@ Move_HIDDEN_POWER:: createsprite gHiddenPowerOrbScatterSpriteTemplate, ANIM_TARGET, 2, 224 end -Move_REVERSAL:: +Move_REVERSAL: loadspritegfx ANIM_TAG_BLUE_ORB loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - playsewithpan SE_M_DETECT, 192 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, RGB_WHITE, 8, 0, 0 + playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB_WHITE, 8, RGB_BLACK, 0 waitforvisualfinish delay 30 - createvisualtask AnimTask_BlendColorCycle, 2, 31, 3, 2, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 2, 0, 10, RGB_WHITE delay 10 - playsewithpan SE_M_REVERSAL, 192 + playsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 0 createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 42 createsprite gReversalOrbSpriteTemplate, ANIM_ATTACKER, 2, 26, 84 @@ -1312,14 +1291,14 @@ Move_REVERSAL:: delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 8 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 8, 0, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 8, RGB_BLACK, 0 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 10, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 8, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 end -Move_PURSUIT:: +Move_PURSUIT: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_TARGET fadetobg BG_DARK @@ -1327,7 +1306,8 @@ Move_PURSUIT:: delay 0 setalpha 12, 8 choosetwoturnanim PursuitNormal, PursuitOnSwitchout -PursuitContinue:: + +PursuitContinue: waitforvisualfinish clearmonbg ANIM_TARGET blendoff @@ -1336,27 +1316,27 @@ PursuitContinue:: waitbgfadein end -PursuitNormal:: - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 6, 1, 0 +PursuitNormal: + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 6, 1, 0 goto PursuitContinue -PursuitOnSwitchout:: - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 6, 1, 0 +PursuitOnSwitchout: + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 6, 1, 0 goto PursuitContinue -Move_SPIKE_CANNON:: +Move_SPIKE_CANNON: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_WindUpLunge, 5, 0, -4, 0, 4, 6, 8, 4 + createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -4, 0, 4, 6, 8, 4 waitforvisualfinish - loopsewithpan SE_M_RAZOR_WIND2, 192, 5, 3 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 5, 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 createsprite gLinearStingerSpriteTemplate, ANIM_ATTACKER, 2, 10, -8, -8, -8, 20 createsprite gLinearStingerSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 0, 0, 20 @@ -1365,57 +1345,57 @@ Move_SPIKE_CANNON:: createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -8, -8, 1, 2 createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 createsprite gHandleInvertHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 8, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 7, 1 - loopsewithpan SE_M_HORN_ATTACK, 63, 5, 3 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 7, 1 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 5, 3 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SWORDS_DANCE:: +Move_SWORDS_DANCE: loadspritegfx ANIM_TAG_SWORD monbg ANIM_ATTACKER setalpha 12, 8 - playsewithpan SE_M_SWORDS_DANCE, 192 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 16, 6, 1, 4 + playsewithpan SE_M_SWORDS_DANCE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 16, 6, 1, 4 createsprite gSwordsDanceBladeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 delay 22 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, 10005, 2, 2, 32754, 16, 0, 0 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_SWORD, 2, 2, RGB(18, 31, 31), 16, 0, 0 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff delay 1 end -Move_PSYCH_UP:: +Move_PSYCH_UP: loadspritegfx ANIM_TAG_SPIRAL monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendColorCycleExclude, 2, 1, 2, 6, 1, 11, 0 + createvisualtask AnimTask_BlendColorCycleExclude, 2, 1, 2, 6, 1, 11, RGB_BLACK setalpha 12, 8 - loopsewithpan SE_M_PSYBEAM2, 192, 5, 10 + loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 5, 10 createsprite gPsychUpSpiralSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0 - createvisualtask AnimTask_SwayMon, 5, 0, 5, 2560, 8, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 5, 2560, 8, ANIM_ATTACKER delay 127 delay 4 - playsewithpan SE_M_PSYBEAM, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1 - createvisualtask AnimTask_BlendSelected, 9, 2, 2, 10, 0, RGB(31, 31, 0) + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 9, F_PAL_ATTACKER, 2, 10, 0, RGB_YELLOW delay 30 clearmonbg ANIM_ATK_PARTNER blendoff waitforvisualfinish end -Move_DIZZY_PUNCH:: +Move_DIZZY_PUNCH: loadspritegfx ANIM_TAG_DUCK loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 call DizzyPunchLunge createsprite gFistFootSpriteTemplate, ANIM_TARGET, 5, 16, 8, 20, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 16, 0, 1, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 16, 0, ANIM_TARGET, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 160, -32 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, -256, -40 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, 16, 8, 128, -16 @@ -1425,8 +1405,8 @@ Move_DIZZY_PUNCH:: delay 10 call DizzyPunchLunge createsprite gFistFootSpriteTemplate, ANIM_TARGET, 5, -16, -8, 20, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -16, -16, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -16, -16, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, 160, -32 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, -256, -40 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, 128, -16 @@ -1434,89 +1414,89 @@ Move_DIZZY_PUNCH:: createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, -128, -22 createsprite gDizzyPunchDuckSpriteTemplate, ANIM_TARGET, 3, -16, -8, -384, -31 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -DizzyPunchLunge:: +DizzyPunchLunge: createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 6 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 7, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 7, 1 return -Move_FIRE_SPIN:: +Move_FIRE_SPIN: loadspritegfx ANIM_TAG_SMALL_EMBER - playsewithpan SE_M_SACRED_FIRE2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 47, 1 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 47, 1 call FireSpinEffect call FireSpinEffect call FireSpinEffect waitforvisualfinish end -FireSpinEffect:: - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, 1 +FireSpinEffect: + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 528, 30, 13, 50, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 32, 480, 20, 16, -46, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 576, 20, 8, 42, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 31, 400, 25, 11, -42, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 28, 512, 25, 16, 46, ANIM_TARGET delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, 1 + createsprite gFireSpinSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 30, 15, -50, ANIM_TARGET delay 2 return -Move_FURY_CUTTER:: +Move_FURY_CUTTER: loadspritegfx ANIM_TAG_CUT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_RAZOR_WIND, 63 - createvisualtask AnimTask_IsFuryCutterHitRight, 2, - jumpargeq 7, 0, FuryCutterLeft + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createvisualtask AnimTask_IsFuryCutterHitRight, 2 + jumpretfalse FuryCutterLeft goto FuryCutterRight -FuryCutterContinue:: - createvisualtask AnimTask_GetFuryCutterHitCount, 2, - jumpargeq 7, 1, FuryCutterContinue2 - jumpargeq 7, 2, FuryCutterMedium - jumpargeq 7, 3, FuryCutterStrong +FuryCutterContinue: + createvisualtask AnimTask_GetFuryCutterHitCount, 2 + jumpreteq 1, FuryCutterContinue2 + jumpreteq 2, FuryCutterMedium + jumpreteq 3, FuryCutterStrong goto FuryCutterStrongest -FuryCutterContinue2:: +FuryCutterContinue2: delay 5 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -FuryCutterLeft:: +FuryCutterLeft: createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 goto FuryCutterContinue -FuryCutterRight:: +FuryCutterRight: createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 1 goto FuryCutterContinue -FuryCutterMedium:: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 10505, 4, 0, 0 +FuryCutterMedium: + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 -FuryCutterStrong:: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, 10505, 4, 0, 0 +FuryCutterStrong: + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 -FuryCutterStrongest:: - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 3, 10505, 4, 0, 0 +FuryCutterStrongest: + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 3, RGB(9, 8, 10), 4, RGB_BLACK, 0 goto FuryCutterContinue2 -Move_SELF_DESTRUCT:: +Move_SELF_DESTRUCT: loadspritegfx ANIM_TAG_EXPLOSION - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 0, 9, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_RED createvisualtask AnimTask_ShakeMon2, 5, 4, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 6, 0, 38, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 6, 0, 38, 1 @@ -1525,74 +1505,74 @@ Move_SELF_DESTRUCT:: call SelfDestructExplode call SelfDestructExplode waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 9, 0, RGB_RED end -SelfDestructExplode:: - playsewithpan SE_M_SELF_DESTRUCT, 192 +SelfDestructExplode: + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 192 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 0, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 192 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 0, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 192 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 0, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 192 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 0, 1 delay 6 return -Move_SLAM:: +Move_SLAM: loadspritegfx ANIM_TAG_SLAM_HIT loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_COMET_PUNCH, 192 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 3, 0, 4 delay 1 createsprite gSlamHitSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 delay 3 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 0, 3, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 waitforvisualfinish delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_VINE_WHIP:: +Move_VINE_WHIP: loadspritegfx ANIM_TAG_WHIP_HIT - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 6 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET createsprite gVineWhipSpriteTemplate, ANIM_TARGET, 2, 0, 0 delay 6 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 6, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 6, 1 end -Move_DRILL_PECK:: +Move_DRILL_PECK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_WHIRLWIND_LINES createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 delay 2 - loopsewithpan SE_M_HORN_ATTACK, 63, 4, 8 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 4, 8 createvisualtask AnimTask_DrillPeckHitSplats, 5 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1 waitforvisualfinish createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 waitforvisualfinish @@ -1600,37 +1580,37 @@ Move_DRILL_PECK:: waitforvisualfinish end -Move_WATERFALL:: +Move_WATERFALL: loadspritegfx ANIM_TAG_WATER_IMPACT loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 23, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 23, 1 delay 5 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, 15, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, 15, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 25, 20, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 25, 20, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -20, 20, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -20, 20, 25, ANIM_ATTACKER delay 4 - playsewithpan SE_M_CRABHAMMER, 192 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 12, 0, 25, 0 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 12, 0, 25, ANIM_ATTACKER waitforvisualfinish delay 10 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 5 @@ -1641,49 +1621,49 @@ Move_WATERFALL:: blendoff end -RisingWaterHitEffect:: - playsewithpan SE_M_WATERFALL, 63 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 17, 1 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 20, 1, 1 +RisingWaterHitEffect: + playsewithpan SE_M_WATERFALL, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 17, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 20, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 20 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 20 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 15, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 15, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 15 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 15 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 10, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 10, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 10 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 10 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 5 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 5 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 0 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, 0 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -5, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -5, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -5 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -5 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -10, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -10, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -10 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -10 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -15 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -15 delay 2 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -20, 1, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -20, ANIM_TARGET, 1 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -20 createsprite gSmallDriftingBubblesSpriteTemplate, ANIM_ATTACKER, 4, 0, -20 return -Move_EXPLOSION:: +Move_EXPLOSION: loadspritegfx ANIM_TAG_EXPLOSION - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 9, 8474, 8, 0, 8 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 9, RGB(26, 8, 8), 8, RGB_BLACK, 8 createvisualtask AnimTask_ShakeMon2, 5, 4, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 5, 8, 0, 40, 1 createvisualtask AnimTask_ShakeMon2, 5, 6, 8, 0, 40, 1 @@ -1692,251 +1672,252 @@ Move_EXPLOSION:: call Explosion1 call Explosion1 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 1, 16, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 1, 16, 16, RGB_WHITE delay 50 - createvisualtask AnimTask_BlendSelected, 10, 1, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 16, 0, RGB_WHITE end -Explosion1:: - playsewithpan SE_M_EXPLOSION, 192 +Explosion1: + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 1 delay 6 - playsewithpan SE_M_EXPLOSION, 192 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 0, 1 delay 6 - playsewithpan SE_M_EXPLOSION, 192 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 0, 1 delay 6 - playsewithpan SE_M_EXPLOSION, 192 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 0, 1 delay 6 - playsewithpan SE_M_EXPLOSION, 192 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 0, 1 delay 6 return -Move_DEFENSE_CURL:: +Move_DEFENSE_CURL: loadspritegfx ANIM_TAG_ECLIPSING_ORB - loopsewithpan SE_M_TRI_ATTACK, 192, 18, 3 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 0 - createvisualtask AnimTask_DefenseCurlDeformMon, 5, + loopsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, 18, 3 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 0 + createvisualtask AnimTask_DefenseCurlDeformMon, 5 waitforvisualfinish createsprite gEclipsingOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 6, 0, 1 waitforvisualfinish - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 waitforvisualfinish end -Move_PROTECT:: +Move_PROTECT: loadspritegfx ANIM_TAG_PROTECT monbg ANIM_ATK_PARTNER - monbgprio_28 0 - waitplaysewithpan SE_M_REFLECT, 192, 16 - createsprite gProtectWallSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90 + splitbgprio ANIM_ATTACKER + waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16 + createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER end -Move_DETECT:: +Move_DETECT: loadspritegfx ANIM_TAG_SPARKLE_4 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 9, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 0, 9, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 9, RGB_WHITE delay 18 - playsewithpan SE_M_DETECT, 192 + playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 20, -20 waitforvisualfinish delay 10 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 9, 0, 0 - createvisualtask AnimTask_BlendSelected, 10, 2, 2, 9, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 9, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 9, 0, RGB_WHITE waitforvisualfinish end -Move_FRUSTRATION:: +Move_FRUSTRATION: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ANGER monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_GetFrustrationPowerLevel, 1, - jumpargeq 7, 0, Frustration_Strongest - jumpargeq 7, 1, Frustration_Strong - jumpargeq 7, 2, Frustration_Medium + createvisualtask AnimTask_GetFrustrationPowerLevel, 1 + jumpreteq 0, Frustration_Strongest + jumpreteq 1, Frustration_Strong + jumpreteq 2, Frustration_Medium goto Frustration_Weak -Frustration_Continue:: + +Frustration_Continue: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Frustration_Strongest:: - playsewithpan SE_M_DRAGON_RAGE, 192 - createvisualtask AnimTask_ShakeMon2, 5, 0, 1, 0, 15, 1 - createvisualtask AnimTask_BlendSelected, 10, 2, 3, 0, 9, RGB(31, 0, 0) +Frustration_Strongest: + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED waitforvisualfinish delay 20 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 10 - createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, ANIM_ATTACKER delay 5 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 30, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 30, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 24, 8, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -24, -16, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 8, 4, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -16, 19, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, -18, ANIM_TARGET, 0 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 3, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED goto Frustration_Continue -Frustration_Strong:: - playsewithpan SE_M_DRAGON_RAGE, 192 - createvisualtask AnimTask_ShakeMon2, 5, 0, 1, 0, 15, 1 - createvisualtask AnimTask_BlendSelected, 10, 2, 3, 0, 9, RGB(31, 0, 0) +Frustration_Strong: + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon2, 5, ANIM_ATTACKER, 1, 0, 15, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 0, 9, RGB_RED waitforvisualfinish delay 20 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 5 - createvisualtask AnimTask_StrongFrustrationGrowAndShrink, 5, + createvisualtask AnimTask_StrongFrustrationGrowAndShrink, 5 delay 7 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 8, 1, 1 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 8, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 6, 1 delay 14 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, -6, 1, 1 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, -6, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 6, 1 delay 14 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, -6, 1, 1 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, -6, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 3, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 3, 9, 0, RGB_RED goto Frustration_Continue -Frustration_Medium:: - playsewithpan SE_M_SWAGGER2, 192 +Frustration_Medium: + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 waitforvisualfinish delay 5 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 4, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 4, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -4, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -4, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1 goto Frustration_Continue -Frustration_Weak:: +Frustration_Weak: createsprite gWeakFrustrationAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 20, -28 waitforvisualfinish delay 10 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 10, 2 delay 12 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 goto Frustration_Continue -Move_SAFEGUARD:: +Move_SAFEGUARD: loadspritegfx ANIM_TAG_GUARD_RING monbg ANIM_ATK_PARTNER setalpha 8, 8 - playsewithpan SE_M_MILK_DRINK, 192 - createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, + playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER + createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2 delay 4 - createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, + createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2 delay 4 - createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2, + createsprite gGuardRingSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish - playsewithpan SE_SHINY, 192 - createvisualtask AnimTask_BlendColorCycle, 2, 10, 0, 2, 0, 10, RGB_WHITE + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 0, 2, 0, 10, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end -Move_PAIN_SPLIT:: +Move_PAIN_SPLIT: loadspritegfx ANIM_TAG_PAIN_SPLIT - createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -8, -42, 0 - createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -8, -42, 1 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -8, -42, ANIM_ATTACKER + createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -8, -42, ANIM_TARGET delay 10 playsewithpan SE_M_SWAGGER2, 0 - createvisualtask AnimTask_PainSplitMovement, 2, 0, 0 - createvisualtask AnimTask_PainSplitMovement, 2, 1, 0 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_ATTACKER, 0 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_TARGET, 0 waitforvisualfinish - createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -24, -42, 0 - createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -24, -42, 1 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, -24, -42, ANIM_ATTACKER + createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, -24, -42, ANIM_TARGET delay 10 playsewithpan SE_M_SWAGGER2, 0 - createvisualtask AnimTask_PainSplitMovement, 2, 0, 1 - createvisualtask AnimTask_PainSplitMovement, 2, 1, 1 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_ATTACKER, 1 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_TARGET, 1 waitforvisualfinish - createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, 8, -42, 0 - createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, 8, -42, 1 + createsprite gPainSplitProjectileSpriteTemplate, ANIM_ATTACKER, 2, 8, -42, ANIM_ATTACKER + createsprite gPainSplitProjectileSpriteTemplate, ANIM_TARGET, 2, 8, -42, ANIM_TARGET delay 10 playsewithpan SE_M_SWAGGER2, 0 - createvisualtask AnimTask_PainSplitMovement, 2, 0, 2 - createvisualtask AnimTask_PainSplitMovement, 2, 1, 2 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_ATTACKER, 2 + createvisualtask AnimTask_PainSplitMovement, 2, ANIM_TARGET, 2 end -Move_VICE_GRIP:: +Move_VICE_GRIP: loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_VICEGRIP, 63 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gViceGripSpriteTemplate, ANIM_ATTACKER, 2, 1 delay 9 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 5, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 5, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_GUILLOTINE:: +Move_GUILLOTINE: loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - fadetobgfromset 12, 13, 14 + fadetobgfromset BG_GUILLOTINE_OPPONENT, BG_GUILLOTINE_PLAYER, BG_GUILLOTINE_CONTESTS waitbgfadein - playsewithpan SE_M_VICEGRIP, 63 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gGuillotineSpriteTemplate, ANIM_ATTACKER, 2, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_BLACK delay 9 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 23, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 23, 1 delay 46 - createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 8, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 4, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -1944,29 +1925,29 @@ Move_GUILLOTINE:: waitbgfadein end -Move_PAY_DAY:: +Move_PAY_DAY: loadspritegfx ANIM_TAG_COIN loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gCoinThrowSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152 waitforvisualfinish - playsewithpan SE_M_PAY_DAY, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 2 - createsprite gFallingCoinSpriteTemplate, ANIM_ATTACKER, 2, - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1 + playsewithpan SE_M_PAY_DAY, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, ANIM_TARGET, 2 + createsprite gFallingCoinSpriteTemplate, ANIM_ATTACKER, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_OUTRAGE:: +Move_OUTRAGE: loadspritegfx ANIM_TAG_SMALL_EMBER - loopsewithpan SE_M_DRAGON_RAGE, 192, 8, 3 - createvisualtask AnimTask_BlendColorCycle, 2, 7, 2, 5, 3, 8, 430 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 5, 4 + loopsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER, 8, 3 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 2, 5, 3, 8, RGB(14, 13, 0) + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 5, 4 delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 0, 3 delay 0 @@ -1976,7 +1957,7 @@ Move_OUTRAGE:: delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 0, -1280, 3 delay 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 40, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 40, 1 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 1280, 768, 3 delay 0 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, -1280, 768, 3 @@ -1991,7 +1972,7 @@ Move_OUTRAGE:: waitforvisualfinish end -OutrageFlames:: +OutrageFlames: delay 3 createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, -1280, 0, 3 delay 0 @@ -2008,30 +1989,30 @@ OutrageFlames:: createsprite gOutrageFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, -1280, -768, 3 return -Move_SPARK:: +Move_SPARK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_SPARK_2 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, 23551 - playsewithpan SE_M_THUNDERBOLT2, 192 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, 0, 1, 0 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 32, 24, 190, 12, ANIM_ATTACKER, 1, 0 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 80, 24, 22, 12, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 156, 24, 121, 13, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) delay 10 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 5, 5, 23551 - playsewithpan SE_M_THUNDERBOLT2, 192 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, 0, 1, 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, 0, 1, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 5, 5, RGB(31, 31, 22) + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 100, 24, 60, 10, ANIM_ATTACKER, 1, 0 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 170, 24, 42, 11, ANIM_ATTACKER, 1, 1 delay 0 - createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, 0, 1, 1 + createsprite gSparkElectricitySpriteTemplate, ANIM_ATTACKER, 0, 238, 24, 165, 10, ANIM_ATTACKER, 1, 1 delay 0 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) delay 20 - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 7, 7, 23551 - playsewithpan SE_M_THUNDERBOLT2, 192 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 7, 7, RGB(31, 31, 22) + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 0, 20, 0, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 64, 20, 1, 0 createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 32, 12, 128, 20, 0, 0 @@ -2042,26 +2023,26 @@ Move_SPARK:: createsprite gSparkElectricityFlashingSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 16, 12, 224, 20, 2, 0 delay 4 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, 3, -31, 1, 0, 0, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_ATTACKER, -31, 1, 0, 0, RGB(31, 31, 22) createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 - playsewithpan SE_M_HYPER_BEAM, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, 4, -31, 2, 0, 6, 23551 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, -31, 2, 0, 6, RGB(31, 31, 22) call ElectricityEffect waitforvisualfinish end -Move_ATTRACT:: +Move_ATTRACT: loadspritegfx ANIM_TAG_RED_HEART - loopsewithpan SE_M_CHARM, 192, 12, 3 - createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, 0 + loopsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER, 12, 3 + createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, ANIM_ATTACKER delay 15 createsprite gRedHeartProjectileSpriteTemplate, ANIM_TARGET, 3, 20, -8 waitforvisualfinish - playsewithpan SE_M_ATTRACT, 63 + playsewithpan SE_M_ATTRACT, SOUND_PAN_TARGET createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 160, -32 createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -256, -40 createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 128, -16 @@ -2070,7 +2051,7 @@ Move_ATTRACT:: createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -384, -31 waitforvisualfinish waitplaysewithpan SE_M_ATTRACT2, 0, 15 - createvisualtask AnimTask_HeartsBackground, 5, + createvisualtask AnimTask_HeartsBackground, 5 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 16, 256, 0 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 224, 240, 15 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 126, 272, 30 @@ -2080,52 +2061,52 @@ Move_ATTRACT:: createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 112, 256, 90 createsprite gRedHeartRisingSpriteTemplate, ANIM_ATTACKER, 40, 200, 272, 90 delay 75 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 4, 4, 0, 10, 28479 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 4, 4, 0, 10, RGB(31, 25, 27) end -Move_GROWTH:: +Move_GROWTH: call GrowthEffect waitforvisualfinish call GrowthEffect waitforvisualfinish end -GrowthEffect:: - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, 0, 0 +GrowthEffect: + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, ANIM_ATTACKER, 0 return -Move_WHIRLWIND:: +Move_WHIRLWIND: loadspritegfx ANIM_TAG_WHIRLWIND_LINES - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, 1, 60, 0 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 60, 1 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, 1, 60, 2 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 1, 60, 3 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 1, 60, 4 - createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 1, 60, 0 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, -8, ANIM_TARGET, 60, 0 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 60, 1 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, ANIM_TARGET, 60, 2 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, ANIM_TARGET, 60, 3 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, ANIM_TARGET, 60, 4 + createsprite gWhirlwindLineSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, ANIM_TARGET, 60, 0 delay 5 - loopsewithpan SE_M_DOUBLE_TEAM, 63, 10, 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 15, 1 + loopsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET, 10, 4 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 15, 1 delay 29 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 1, 12, 6, 1, 5 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_TARGET, 12, 6, 1, 5 delay 7 - playsewithpan SE_M_STRING_SHOT, 63 - createvisualtask AnimTask_SlideOffScreen, 5, 1, 8 + playsewithpan SE_M_STRING_SHOT, SOUND_PAN_TARGET + createvisualtask AnimTask_SlideOffScreen, 5, ANIM_TARGET, 8 waitforvisualfinish end -Move_CONFUSE_RAY:: +Move_CONFUSE_RAY: loadspritegfx ANIM_TAG_YELLOW_BALL monbg ANIM_DEF_PARTNER - fadetobg 2 + fadetobg BG_GHOST waitbgfadein - createvisualtask SoundTask_AdjustPanningVar, 2, -64, 63, 2, 0 - createvisualtask AnimTask_BlendColorCycleByTag, 2, ANIM_TAG_YELLOW_BALL, 0, 6, 0, 14, 351 + createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0 + createvisualtask AnimTask_BlendColorCycleByTag, 2, ANIM_TAG_YELLOW_BALL, 0, 6, 0, 14, RGB(31, 10, 0) createsprite gConfuseRayBallBounceSpriteTemplate, ANIM_TARGET, 2, 28, 0, 288 waitforvisualfinish setalpha 8, 8 - playsewithpan SE_M_STRING_SHOT2, 63 + playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET createsprite gConfuseRayBallSpiralSpriteTemplate, ANIM_TARGET, 2, 0, -16 waitforvisualfinish delay 0 @@ -2135,71 +2116,71 @@ Move_CONFUSE_RAY:: waitbgfadein end -Move_LOCK_ON:: +Move_LOCK_ON: loadspritegfx ANIM_TAG_LOCK_ON - createsprite gLockOnTargetSpriteTemplate, ANIM_ATTACKER, 40, + createsprite gLockOnTargetSpriteTemplate, ANIM_ATTACKER, 40 createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 1 createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 2 createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 3 - createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 4 + createsprite gLockOnMoveTargetSpriteTemplate, ANIM_ATTACKER, 40, 4 @ Also transitions to red target delay 120 - setarg 7, 65535 + setarg 7, 0xFFFF @ Signal target to flash/disappear waitforvisualfinish end -Move_MEAN_LOOK:: +Move_MEAN_LOOK: loadspritegfx ANIM_TAG_EYE monbg ANIM_DEF_PARTNER - playsewithpan SE_M_PSYBEAM, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0 - loopsewithpan SE_M_CONFUSE_RAY, 63, 15, 4 - waitplaysewithpan SE_M_LEER, 63, 85 - createsprite gMeanLookEyeSpriteTemplate, ANIM_ATTACKER, 2, + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK + loopsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET, 15, 4 + waitplaysewithpan SE_M_LEER, SOUND_PAN_TARGET, 85 + createsprite gMeanLookEyeSpriteTemplate, ANIM_ATTACKER, 2 delay 120 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK delay 30 clearmonbg ANIM_DEF_PARTNER waitforvisualfinish end -Move_ROCK_THROW:: +Move_ROCK_THROW: loadspritegfx ANIM_TAG_ROCKS createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_TARGET, 2, 6, 1, 15, 1 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 0, 1, 0, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 6 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 19, 1, 10, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 6 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -23, 2, -10, 0 - playsewithpan SE_M_ROCK_THROW, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 5, 20, 1 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 20, 1 delay 6 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -15, 1, -10, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 6 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 23, 2, 10, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET waitforvisualfinish end -Move_ROCK_SLIDE:: +Move_ROCK_SLIDE: loadspritegfx ANIM_TAG_ROCKS monbg ANIM_DEF_PARTNER createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 7, 1, 11, 1 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -5, 1, -5, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 5, 0, 6, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 19, 1, 10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -23, 2, -10, 1 - playsewithpan SE_M_ROCK_THROW, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 5, 50, 1 - createvisualtask AnimTask_ShakeMon, 2, 3, 0, 5, 50, 1 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 5, 50, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_DEF_PARTNER, 0, 5, 50, 1 delay 2 call RockSlideRocks call RockSlideRocks @@ -2207,118 +2188,118 @@ Move_ROCK_SLIDE:: clearmonbg ANIM_DEF_PARTNER end -RockSlideRocks:: +RockSlideRocks: createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -20, 0, -10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 28, 1, 10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -10, 1, -5, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 10, 0, 6, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 24, 1, 10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -32, 2, -10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, -20, 0, -10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 createsprite gFallingRockSpriteTemplate, ANIM_TARGET, 2, 30, 2, 10, 1 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 2 return -Move_THIEF:: +Move_THIEF: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET delay 1 - fadetobg 1 + fadetobg BG_DARK waitbgfadein setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 6 - playsewithpan SE_M_VITAL_THROW, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 8, 1 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 8, 1 waitforvisualfinish delay 20 - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff restorebg waitbgfadein end -Move_BUBBLE_BEAM:: +Move_BUBBLE_BEAM: loadspritegfx ANIM_TAG_BUBBLE loadspritegfx ANIM_TAG_SMALL_BUBBLES - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 delay 1 call BulbblebeamCreateBubbles - createvisualtask AnimTask_SwayMon, 5, 0, 3, 3072, 8, 1 + createvisualtask AnimTask_SwayMon, 5, 0, 3, 3072, 8, ANIM_TARGET call BulbblebeamCreateBubbles call BulbblebeamCreateBubbles waitforvisualfinish call WaterBubblesEffectShort waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -BulbblebeamCreateBubbles:: +BulbblebeamCreateBubbles: createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 35, 70, 0, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 20, 40, -10, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 10, -60, 0, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 15, -15, 10, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 30, 10, -10, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 25, -30, 10, 256, 50 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER delay 3 return -Move_ICY_WIND:: +Move_ICY_WIND: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_ICE_SPIKES monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_BlendSelected, 10, 11, 4, 0, 4, RGB_BLACK - fadetobg 15 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 0, 4, RGB_BLACK + fadetobg BG_ICE waitbgfadeout playsewithpan SE_M_ICY_WIND, 0 waitbgfadein waitforvisualfinish - panse_1B SE_M_GUST, 192, 63, 2, 0 + panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call IcyWindSwirlingSnowballs delay 5 call IcyWindSwirlingSnowballs - playsewithpan SE_M_GUST2, 63 + playsewithpan SE_M_GUST2, SOUND_PAN_TARGET delay 55 call IceSpikesEffectLong waitforvisualfinish clearmonbg ANIM_DEF_PARTNER restorebg waitbgfadeout - createvisualtask AnimTask_BlendSelected, 10, 11, 4, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE, 4, 4, 0, RGB_BLACK waitbgfadein end -IcyWindSwirlingSnowballs:: +IcyWindSwirlingSnowballs: createsprite gSwirlingSnowballSpriteTemplate, ANIM_TARGET, 40, 0, 0, 0, 0, 72, 1 delay 5 createsprite gSwirlingSnowballSpriteTemplate, ANIM_TARGET, 40, 0, 10, 0, 10, 72, 1 @@ -2330,15 +2311,15 @@ IcyWindSwirlingSnowballs:: createsprite gSwirlingSnowballSpriteTemplate, ANIM_TARGET, 40, 0, -5, 0, -5, 72, 1 return -Move_SMOKESCREEN:: +Move_SMOKESCREEN: loadspritegfx ANIM_TAG_BLACK_SMOKE loadspritegfx ANIM_TAG_BLACK_BALL - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER createsprite gBlackBallSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 35, -25 waitforvisualfinish - createvisualtask AnimTask_SmokescreenImpact, 2, + createvisualtask AnimTask_SmokescreenImpact, 2 delay 2 - playsewithpan SE_M_SAND_ATTACK, 63 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -12, 104, 0, 75 createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -12, 72, 1, 75 createsprite gBlackSmokeSpriteTemplate, ANIM_TARGET, 4, 0, -6, 56, 1, 75 @@ -2354,13 +2335,13 @@ Move_SMOKESCREEN:: waitforvisualfinish end -Move_CONVERSION:: +Move_CONVERSION: loadspritegfx ANIM_TAG_CONVERSION monbg ANIM_ATK_PARTNER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 16, 0 delay 0 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, -24 delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, -24 @@ -2369,7 +2350,7 @@ Move_CONVERSION:: delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, -24 delay 3 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, -8 delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, -8 @@ -2378,7 +2359,7 @@ Move_CONVERSION:: delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, -8 delay 3 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, 8 delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, 8 @@ -2387,7 +2368,7 @@ Move_CONVERSION:: delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, 8 delay 3 - playsewithpan SE_M_SWIFT, 192 + playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -24, 24 delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, -8, 24 @@ -2396,23 +2377,23 @@ Move_CONVERSION:: delay 3 createsprite gConversionSpriteTemplate, ANIM_ATTACKER, 2, 24, 24 delay 20 - playsewithpan SE_M_BARRIER, 192 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, 10018, 1, 1, 14335, 12, 0, 0 + playsewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_CONVERSION, 1, 1, RGB(31, 31, 13), 12, 0, 0 delay 6 - createvisualtask AnimTask_ConversionAlphaBlend, 5, + createvisualtask AnimTask_ConversionAlphaBlend, 5 waitforvisualfinish delay 1 clearmonbg ANIM_ATK_PARTNER blendoff end -Move_CONVERSION_2:: +Move_CONVERSION_2: loadspritegfx ANIM_TAG_CONVERSION monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 0, 16 delay 0 - playsewithpan SE_M_BARRIER, 63 + playsewithpan SE_M_BARRIER, SOUND_PAN_TARGET createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -24, -24, 60 createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -8, -24, 65 createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 8, -24, 70 @@ -2429,199 +2410,200 @@ Move_CONVERSION_2:: createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, -8, 24, 125 createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 8, 24, 130 createsprite gConversion2SpriteTemplate, ANIM_ATTACKER, 2, 24, 24, 135 - createvisualtask AnimTask_Conversion2AlphaBlend, 5, + createvisualtask AnimTask_Conversion2AlphaBlend, 5 delay 60 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET delay 10 - playsewithpan SE_M_SWIFT, 63 + playsewithpan SE_M_SWIFT, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_ROLLING_KICK:: +Move_ROLLING_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 1, 4 - playsewithpan SE_M_DOUBLE_TEAM, 192 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 4 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 6 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 createsprite gSlidingKickSpriteTemplate, ANIM_ATTACKER, 2, -24, 0, 48, 10, 160, 0 delay 5 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 8 - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_HEADBUTT:: +Move_HEADBUTT: loadspritegfx ANIM_TAG_IMPACT createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 4, 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 4, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish end -Move_HORN_ATTACK:: +Move_HORN_ATTACK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 0, 0, 10 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 4, 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 4, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET waitforvisualfinish end -Move_FURY_ATTACK:: +Move_FURY_ATTACK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, 0, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 4, 256, ANIM_ATTACKER, 2 choosetwoturnanim FuryAttackRight, FuryAttackLeft -FuryAttackContinue:: - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 + +FuryAttackContinue: + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 waitforvisualfinish end -FuryAttackRight:: +FuryAttackRight: createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 8, 8, 10 waitforvisualfinish - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET goto FuryAttackContinue -FuryAttackLeft:: +FuryAttackLeft: createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, -8, -8, 10 waitforvisualfinish - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET goto FuryAttackContinue -Move_HORN_DRILL:: +Move_HORN_DRILL: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HORN_HIT jumpifcontest HornDrillInContest - fadetobg 7 + fadetobg BG_DRILL waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 768, 1, -1 -HornDrillContinue:: +HornDrillContinue: waitbgfadein setalpha 12, 8 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER waitforvisualfinish delay 2 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 1 createsprite gHornHitSpriteTemplate, ANIM_TARGET, 4, 0, 0, 12 waitforvisualfinish playse SE_BANG - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 40, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 40, 1 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 40, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 40, 1 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 2, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 2, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -4, 3, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -4, 3, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -8, -5, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -8, -5, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 4, -12, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 4, -12, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 16, 0, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 16, 0, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, 18, 1, 3 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, 18, ANIM_TARGET, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -17, 12, 1, 2 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -17, 12, ANIM_TARGET, 2 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -21, -15, 1, 2 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -21, -15, ANIM_TARGET, 2 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -27, 1, 2 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -27, ANIM_TARGET, 2 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 0, 1, 2 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 0, ANIM_TARGET, 2 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET delay 4 createsprite gBowMonSpriteTemplate, ANIM_ATTACKER, 2, 2 waitforvisualfinish restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -HornDrillInContest:: - fadetobg 8 +HornDrillInContest: + fadetobg BG_DRILL_CONTESTS waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, 2304, 768, 0, -1 goto HornDrillContinue -Move_THRASH:: +Move_THRASH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - createvisualtask AnimTask_ThrashMoveMonHorizontal, 2, - createvisualtask AnimTask_ThrashMoveMonVertical, 2, + createvisualtask AnimTask_ThrashMoveMonHorizontal, 2 + createvisualtask AnimTask_ThrashMoveMonVertical, 2 createsprite gFistFootRandomPosSpriteTemplate, ANIM_TARGET, 3, 1, 10, 0 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 7, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 7, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 28 createsprite gFistFootRandomPosSpriteTemplate, ANIM_TARGET, 3, 1, 10, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 4, 0, 7, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 4, 0, 7, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 28 createsprite gFistFootRandomPosSpriteTemplate, ANIM_TARGET, 3, 1, 10, 3 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 8, 0, 16, 1 - playsewithpan SE_M_MEGA_KICK2, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 8, 0, 16, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET end -Move_SING:: +Move_SING: loadspritegfx ANIM_TAG_MUSIC_NOTES monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_MusicNotesRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish - panse_1B SE_M_SING, 192, 63, 2, 0 + panse SE_M_SING, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 0, 12 delay 5 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 12 @@ -2648,89 +2630,89 @@ Move_SING:: delay 4 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER - createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2 waitforvisualfinish end -Move_LOW_KICK:: +Move_LOW_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 createsprite gSlidingKickSpriteTemplate, ANIM_TARGET, 2, -24, 28, 40, 8, 160, 0 delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, 1, 2 - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, 1, 2 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 8, ANIM_TARGET, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 6, 384, ANIM_TARGET, 2 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 4 end -Move_EARTHQUAKE:: - createvisualtask AnimTask_HorizontalShake, 5, 5, 10, 50 - createvisualtask AnimTask_HorizontalShake, 5, 4, 10, 50 +Move_EARTHQUAKE: + createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50 playsewithpan SE_M_EARTHQUAKE, 0 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 end -Move_FISSURE:: +Move_FISSURE: loadspritegfx ANIM_TAG_MUD_SAND - createvisualtask AnimTask_HorizontalShake, 3, 5, 10, 50 - createvisualtask AnimTask_HorizontalShake, 3, 1, 10, 50 - playsewithpan SE_M_EARTHQUAKE, 63 + createvisualtask AnimTask_HorizontalShake, 3, (MAX_BATTLERS_COUNT + 1), 10, 50 + createvisualtask AnimTask_HorizontalShake, 3, ANIM_TARGET, 10, 50 + playsewithpan SE_M_EARTHQUAKE, SOUND_PAN_TARGET delay 8 call FissureDirtPlumeFar delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeClose delay 15 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 15 call FissureDirtPlumeFar delay 50 fadetobg BG_FISSURE waitbgfadeout - createvisualtask AnimTask_PositionFissureBgOnBattler, 5, 1, 5, -1 + createvisualtask AnimTask_PositionFissureBgOnBattler, 5, ANIM_TARGET, 5, -1 waitbgfadein delay 40 restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, -1 waitbgfadein end -FissureDirtPlumeFar:: +FissureDirtPlumeFar: createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 12, -48, -16, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, -16, -10, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 14, -52, -18, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 12, -32, -16, 24 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET return -FissureDirtPlumeClose:: +FissureDirtPlumeClose: createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 12, -24, -16, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, -38, -10, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 14, -20, -18, 24 createsprite gDirtPlumeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 12, -36, -16, 24 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET return -Move_DIG:: +Move_DIG: choosetwoturnanim DigSetUp, DigUnleash -DigEnd:: +DigEnd: end -DigSetUp:: +DigSetUp: loadspritegfx ANIM_TAG_MUD_SAND loadspritegfx ANIM_TAG_DIRT_MOUND createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 180 createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 180 - monbg_22 0 + monbg_static ANIM_ATTACKER delay 1 - createvisualtask AnimTask_DigDownMovement, 2, 0 + createvisualtask AnimTask_DigDownMovement, 2, FALSE delay 6 call DigThrowDirt call DigThrowDirt @@ -2738,61 +2720,61 @@ DigSetUp:: call DigThrowDirt call DigThrowDirt waitforvisualfinish - clearmonbg_23 0 + clearmonbg_static ANIM_ATTACKER delay 1 - createvisualtask AnimTask_DigDownMovement, 2, 1 + createvisualtask AnimTask_DigDownMovement, 2, TRUE goto DigEnd -DigUnleash:: +DigUnleash: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_DIRT_MOUND - createvisualtask AnimTask_DigUpMovement, 2, 0 + createvisualtask AnimTask_DigUpMovement, 2, FALSE waitforvisualfinish monbg ANIM_ATTACKER createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 48 createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 48 delay 1 - createvisualtask AnimTask_DigUpMovement, 2, 1 + createvisualtask AnimTask_DigUpMovement, 2, TRUE delay 16 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 - playsewithpan SE_M_MEGA_KICK2, 192 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_ATTACKER clearmonbg ANIM_ATTACKER goto DigEnd -DigThrowDirt:: +DigThrowDirt: createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 12, 4, -16, 18 createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 16, 4, -10, 18 createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 14, 4, -18, 18 createsprite gDirtPlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 12, 4, -16, 18 - playsewithpan SE_M_DIG, 192 + playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 32 return -Move_MEDITATE:: +Move_MEDITATE: call SetPsychicBackground createvisualtask AnimTask_MeditateStretchAttacker, 2 - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER delay 16 - playsewithpan SE_M_TAKE_DOWN, 192 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_AGILITY:: +Move_AGILITY: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 4, 4 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 4, 4 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 10 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 12 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER @@ -2800,474 +2782,473 @@ Move_AGILITY:: delay 1 end -Move_QUICK_ATTACK:: +Move_QUICK_ATTACK: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 1, 5 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3 - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER delay 4 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff waitforvisualfinish end -Move_RAGE:: +Move_RAGE: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ANGER - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_BlendMonInAndOut, 3, 0, 31, 10, 0, 2 + createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_ATTACKER, RGB_RED, 10, 0, 2 createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, -28 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER delay 20 createsprite gAngerMarkSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, -28 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 1, 1, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, TRUE, 1, 10, 1, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET end -Move_TELEPORT:: +Move_TELEPORT: call SetPsychicBackground createvisualtask AnimTask_Teleport, 2 - playsewithpan SE_M_TELEPORT, 192 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER delay 15 - call UnsetPsychicBg + call UnsetPsychicBackground waitforvisualfinish end -Move_DOUBLE_TEAM:: +Move_DOUBLE_TEAM: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_DoubleTeam, 2, - playsewithpan SE_M_DOUBLE_TEAM, 192 + createvisualtask AnimTask_DoubleTeam, 2 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 32 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 24 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 16 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER delay 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff delay 1 end -Move_MINIMIZE:: +Move_MINIMIZE: setalpha 10, 8 - createvisualtask AnimTask_Minimize, 2, - loopsewithpan SE_M_MINIMIZE, 192, 34, 3 + createvisualtask AnimTask_Minimize, 2 + loopsewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 34, 3 waitforvisualfinish blendoff end -Move_METRONOME:: +Move_METRONOME: loadspritegfx ANIM_TAG_FINGER loadspritegfx ANIM_TAG_THOUGHT_BUBBLE createsprite gThoughtBubbleSpriteTemplate, ANIM_ATTACKER, 11, 0, 100 - playsewithpan SE_M_METRONOME, 192 + playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER delay 6 createsprite gMetronomeFingerSpriteTemplate, ANIM_ATTACKER, 12, 0 delay 24 - loopsewithpan SE_M_TAIL_WHIP, 192, 22, 3 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 22, 3 waitforvisualfinish end -Move_SKULL_BASH:: +Move_SKULL_BASH: choosetwoturnanim SkullBashSetUp, SkullBashAttack -SkullBashEnd:: +SkullBashEnd: end -SkullBashSetUp:: +SkullBashSetUp: call SkullBashSetUpHeadDown call SkullBashSetUpHeadDown waitforvisualfinish goto SkullBashEnd -SkullBashSetUpHeadDown:: - createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 0, 10, 0 - playsewithpan SE_M_TAKE_DOWN, 192 +SkullBashSetUpHeadDown: + createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, -24, 0, 0, 10, 0 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, 0, 2 + createvisualtask AnimTask_RotateMonSpriteToSide, 2, 16, 96, ANIM_ATTACKER, 2 waitforvisualfinish - createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 10, 1 + createsprite gSlideMonToOffsetAndBackSpriteTemplate, ANIM_ATTACKER, 2, ANIM_ATTACKER, 24, 0, 0, 10, 1 waitforvisualfinish return -SkullBashAttack:: +SkullBashAttack: loadspritegfx ANIM_TAG_IMPACT createvisualtask AnimTask_SkullBashPosition, 2, 0 - playsewithpan SE_M_TAKE_DOWN, 192 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish playse SE_BANG - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 40, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 40, 1 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, 1, 0 - loopsewithpan SE_M_MEGA_KICK2, 63, 8, 3 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 40, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 40, 1 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 0 + loopsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET, 8, 3 waitforvisualfinish createvisualtask AnimTask_SkullBashPosition, 2, 1 goto SkullBashEnd -Move_AMNESIA:: +Move_AMNESIA: loadspritegfx ANIM_TAG_AMNESIA call SetPsychicBackground delay 8 createsprite gQuestionMarkSpriteTemplate, ANIM_ATTACKER, 20 - playsewithpan SE_M_METRONOME, 192 + playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER delay 54 - loopsewithpan SE_M_METRONOME, 192, 16, 3 + loopsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER, 16, 3 waitforvisualfinish - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_KINESIS:: +Move_KINESIS: loadspritegfx ANIM_TAG_ALERT loadspritegfx ANIM_TAG_BENT_SPOON - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground createsprite gBentSpoonSpriteTemplate, ANIM_ATTACKER, 20 createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, -8, 0 createsprite gKinesisZapEnergySpriteTemplate, ANIM_ATTACKER, 19, 32, 16, 1 - loopsewithpan SE_M_CONFUSE_RAY, 192, 21, 2 + loopsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER, 21, 2 delay 60 - playsewithpan SE_M_DIZZY_PUNCH, 192 + playsewithpan SE_M_DIZZY_PUNCH, SOUND_PAN_ATTACKER delay 30 - loopsewithpan SE_M_DIZZY_PUNCH, 192, 20, 2 + loopsewithpan SE_M_DIZZY_PUNCH, SOUND_PAN_ATTACKER, 20, 2 delay 70 - playsewithpan SE_M_SWAGGER2, 192 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_ATTACKER waitforvisualfinish - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_GLARE:: +Move_GLARE: loadspritegfx ANIM_TAG_SMALL_RED_EYE loadspritegfx ANIM_TAG_EYE_SPARKLE createvisualtask AnimTask_GlareEyeDots, 5, 0 - playsewithpan SE_M_PSYBEAM2, 192 + playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 5, 1, 0, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 - createvisualtask AnimTask_ScaryFace, 5, - playsewithpan SE_M_LEER, 192 + createvisualtask AnimTask_ScaryFace, 5 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER delay 2 - createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, 0 + createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 5, 1, 0, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 0, 16, 0, RGB_BLACK end -Move_BARRAGE:: +Move_BARRAGE: loadspritegfx ANIM_TAG_RED_BALL - createvisualtask AnimTask_BarrageBall, 3, - playsewithpan SE_M_SWAGGER, 192 + createvisualtask AnimTask_BarrageBall, 3 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 24 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 40, 1 - createvisualtask AnimTask_ShakeMon, 3, 1, 0, 4, 20, 1 - createvisualtask AnimTask_ShakeMon, 3, 3, 0, 4, 20, 1 - loopsewithpan SE_M_STRENGTH, 63, 8, 2 + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 0, 4, 20, 1 + createvisualtask AnimTask_ShakeMon, 3, ANIM_DEF_PARTNER, 0, 4, 20, 1 + loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 2 end -Move_SKY_ATTACK:: +Move_SKY_ATTACK: choosetwoturnanim SkyAttackSetUp, SkyAttackUnleash -SkyAttackEnd:: +SkyAttackEnd: end -SkyAttackSetUp:: +SkyAttackSetUp: monbg ANIM_DEF_PARTNER setalpha 12, 11 - createvisualtask AnimTask_GetTargetIsAttackerPartner, 5, 7 - jumpargeq 7, 0, SkyAttackSetUpAgainstOpponent + createvisualtask AnimTask_GetTargetIsAttackerPartner, 5, ARG_RET_ID + jumpretfalse SkyAttackSetUpAgainstOpponent goto SkyAttackSetUpAgainstPartner -SkyAttackSetUpAgainstOpponent:: - createvisualtask AnimTask_BlendSelected, 10, 27, 1, 0, 12, RGB_BLACK +SkyAttackSetUpAgainstOpponent: + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 8, 0, RGB_BLACK - createvisualtask AnimTask_HorizontalShake, 5, 0, 2, 16 - loopsewithpan SE_M_STAT_INCREASE, 192, 4, 8 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 + loopsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER, 4, 8 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 25, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_ATK_PARTNER | F_PAL_DEF_PARTNER, 1, 8, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto SkyAttackEnd -SkyAttackSetUpAgainstPartner:: - createvisualtask AnimTask_BlendExcept, 10, 1, 1, 0, 12, 0 +SkyAttackSetUpAgainstPartner: + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 1, 0, 12, RGB_BLACK waitforvisualfinish delay 12 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 8, 0, RGB_BLACK - createvisualtask AnimTask_HorizontalShake, 5, 0, 2, 16 - playsewithpan SE_M_STAT_INCREASE, 192 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 8, 0, RGB_BLACK + createvisualtask AnimTask_HorizontalShake, 5, ANIM_ATTACKER, 2, 16 + playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 0, 15, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 0, 15, RGB_WHITE delay 20 - createvisualtask AnimTask_BlendSelected, 10, 2, 1, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 1, 15, 0, RGB_WHITE waitforvisualfinish - createvisualtask AnimTask_BlendExcept, 10, 4, 1, 8, 0, 0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 1, 8, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto SkyAttackEnd -SkyAttackUnleash:: +SkyAttackUnleash: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_BIRD call SetSkyBg monbg ANIM_ATTACKER - createvisualtask AnimTask_BlendSelected, 10, 2, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE delay 4 createvisualtask AnimTask_AttackerFadeToInvisible, 5, 0 waitforvisualfinish - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_SKY_UPPERCUT, -64 + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_SKY_UPPERCUT, SOUND_PAN_ATTACKER createsprite gSkyAttackBirdSpriteTemplate, ANIM_TARGET, 2 delay 14 - createvisualtask AnimTask_ShakeMon2, 2, 1, 10, 0, 18, 1 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 10, 0, 18, 1 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 20 createvisualtask AnimTask_AttackerFadeFromInvisible, 5, 1 delay 2 - createvisualtask AnimTask_BlendSelected, 10, 2, 0, 15, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 15, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATTACKER call UnsetSkyBg goto SkyAttackEnd -Move_FLASH:: - playsewithpan SE_M_LEER, 192 +Move_FLASH: + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER createvisualtask AnimTask_Flash, 2 waitforvisualfinish end -Move_SPLASH:: +Move_SPLASH: createvisualtask AnimTask_Splash, 2, 0, 3 delay 8 - loopsewithpan SE_M_TAIL_WHIP, 192, 38, 3 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 38, 3 waitforvisualfinish end -Move_ACID_ARMOR:: +Move_ACID_ARMOR: monbg ANIM_ATTACKER setalpha 15, 0 - createvisualtask AnimTask_AcidArmor, 2, 0 - playsewithpan SE_M_ACID_ARMOR, 192 + createvisualtask AnimTask_AcidArmor, 2, ANIM_ATTACKER + playsewithpan SE_M_ACID_ARMOR, SOUND_PAN_ATTACKER waitforvisualfinish blendoff clearmonbg ANIM_ATTACKER delay 1 end -Move_SHARPEN:: +Move_SHARPEN: loadspritegfx ANIM_TAG_SPHERE_TO_CUBE - createsprite gSharpenSphereSpriteTemplate, ANIM_ATTACKER, 2, + createsprite gSharpenSphereSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish end -Move_SUPER_FANG:: +Move_SUPER_FANG: loadspritegfx ANIM_TAG_FANG_ATTACK - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 1, 0, 20, 1 - playsewithpan SE_M_DRAGON_RAGE, 192 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 1, 0, 20, 1 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 3, 0, 48, 1 - createvisualtask AnimTask_BlendMonInAndOut, 2, 0, 1247, 12, 4, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 48, 1 + createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_ATTACKER, RGB(31, 6, 1), 12, 4, 1 waitforvisualfinish delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 4 - createsprite gSuperFangSpriteTemplate, ANIM_TARGET, 2, - playsewithpan SE_M_BITE, 63 + createsprite gSuperFangSpriteTemplate, ANIM_TARGET, 2 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 2143, 14, RGB_WHITE, 14 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 7, 12, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB(31, 2, 2), 14, RGB_WHITE, 14 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 7, 12, 1 waitforvisualfinish blendoff end -Move_SLASH:: +Move_SLASH: loadspritegfx ANIM_TAG_SLASH createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, -8, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET delay 4 createsprite gSlashSliceSpriteTemplate, ANIM_TARGET, 2, 1, 8, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1 - playsewithpan SE_M_RAZOR_WIND, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish end -Move_STRUGGLE:: +Move_STRUGGLE: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_MOVEMENT_WAVES - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 3, 0, 12, 4 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 3, 0, 12, 4 createsprite gMovementWavesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 createsprite gMovementWavesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 2 - loopsewithpan SE_M_HEADBUTT, 192, 12, 4 + loopsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER, 12, 4 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SKETCH:: +Move_SKETCH: loadspritegfx ANIM_TAG_PENCIL - monbg 1 + monbg ANIM_TARGET createvisualtask AnimTask_SketchDrawMon, 2 - createsprite gPencilSpriteTemplate, ANIM_TARGET, 2, + createsprite gPencilSpriteTemplate, ANIM_TARGET, 2 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET createvisualtask AnimTask_Splash, 2, 0, 2 - loopsewithpan SE_M_TAIL_WHIP, 192, 38, 2 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 38, 2 end -Move_NIGHTMARE:: - fadetobg 2 +Move_NIGHTMARE: + fadetobg BG_GHOST waitbgfadein jumpifcontest NightmareInContest monbg ANIM_DEF_PARTNER createvisualtask AnimTask_NightmareClone, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 40, 1 - playsewithpan SE_M_NIGHTMARE, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 40, 1 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER restorebg waitbgfadein end -NightmareInContest:: - createvisualtask AnimTask_BlendMonInAndOut, 2, 0, RGB_WHITE, 10, 2, 1 - createvisualtask AnimTask_ShakeMon, 2, 0, 3, 0, 32, 1 - playsewithpan SE_M_NIGHTMARE, 63 +NightmareInContest: + createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_ATTACKER, RGB_WHITE, 10, 2, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 3, 0, 32, 1 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish restorebg waitbgfadein end -Move_FLAIL:: +Move_FLAIL: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_FlailMovement, 2, 0 - loopsewithpan SE_M_HEADBUTT, 192, 8, 2 + createvisualtask AnimTask_FlailMovement, 2, ANIM_ATTACKER + loopsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER, 8, 2 waitforvisualfinish - createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, 0 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, ANIM_TARGET, 3 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 30, 1, 0 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SPITE:: - fadetobg 2 - playsewithpan SE_M_PSYBEAM, 192 +Move_SPITE: + fadetobg BG_GHOST + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 6, 0, 8, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 6, 0, 8, RGB_WHITE createvisualtask AnimTask_SpiteTargetShadow, 2 - loopsewithpan SE_M_PSYBEAM, 63, 20, 3 + loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3 waitforvisualfinish restorebg waitbgfadein - clearmonbg 1 + clearmonbg ANIM_TARGET end -Move_MACH_PUNCH:: +Move_MACH_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_GetAttackerSide, 2, - jumpargeq 7, 1, MachPunchOnPlayer + createvisualtask AnimTask_GetAttackerSide, 2 + jumprettrue MachPunchAgainstPlayer fadetobg BG_HIGHSPEED_OPPONENT - -MachPunchContinue:: +MachPunchContinue: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1 waitbgfadein delay 0 setalpha 9, 8 - createvisualtask AnimTask_AttackerPunchWithTrace, 2, 28968, 10 - playsewithpan SE_M_JUMP_KICK, 192 + createvisualtask AnimTask_AttackerPunchWithTrace, 2, RGB(8, 9, 28), 10 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -MachPunchOnPlayer:: +MachPunchAgainstPlayer: fadetobg BG_HIGHSPEED_PLAYER goto MachPunchContinue -Move_FORESIGHT:: +Move_FORESIGHT: loadspritegfx ANIM_TAG_MAGNIFYING_GLASS monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 16, 0 - createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, 1 + createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET delay 17 - loopsewithpan SE_M_SKETCH, 63, 16, 4 + loopsewithpan SE_M_SKETCH, SOUND_PAN_TARGET, 16, 4 delay 48 delay 24 - playsewithpan SE_M_SKETCH, 63 + playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET delay 10 - createvisualtask AnimTask_BlendMonInAndOut, 5, 1, RGB_WHITE, 12, 2, 1 - playsewithpan SE_M_DETECT, 63 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB_WHITE, 12, 2, 1 + playsewithpan SE_M_DETECT, SOUND_PAN_TARGET waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER end -Move_DESTINY_BOND:: +Move_DESTINY_BOND: loadspritegfx ANIM_TAG_WHITE_SHADOW - fadetobg 2 - playsewithpan SE_M_PSYBEAM, 192 + fadetobg BG_GHOST + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein createvisualtask AnimTask_DestinyBondWhiteShadow, 5, 0, 48 - playsewithpan SE_M_CONFUSE_RAY, 192 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER delay 48 - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 24, 1 - createvisualtask AnimTask_BlendExcept, 2, 6, 1, 0, 12, 30653 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 24, 1 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 2, 6, 1, 0, 12, RGB(29, 29, 29) delay 24 - createvisualtask AnimTask_BlendExcept, 2, 6, 1, 12, 0, 30653 - playsewithpan SE_M_NIGHTMARE, 63 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 2, 6, 1, 12, 0, RGB(29, 29, 29) + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish restorebg waitbgfadein @@ -3275,20 +3256,20 @@ Move_DESTINY_BOND:: clearmonbg 5 end -Move_ENDURE:: +Move_ENDURE: loadspritegfx ANIM_TAG_FOCUS_ENERGY - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, 31 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 call EndureEffect waitforvisualfinish end -EndureEffect:: +EndureEffect: createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 26, 2 delay 4 createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, 14, 28, 1 @@ -3300,152 +3281,152 @@ EndureEffect:: createsprite gEndureEnergySpriteTemplate, ANIM_ATTACKER, 2, 0, -12, 0, 1 return -Move_CHARM:: +Move_CHARM: loadspritegfx ANIM_TAG_MAGENTA_HEART - createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 0 + createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER waitforvisualfinish end -Move_ROLLOUT:: +Move_ROLLOUT: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_MUD_SAND loadspritegfx ANIM_TAG_ROCKS monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 createvisualtask AnimTask_Rollout, 2 waitforvisualfinish - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 1, 2 - playsewithpan SE_M_MEGA_KICK2, 63 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 30, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 2 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_FALSE_SWIPE:: +Move_FALSE_SWIPE: loadspritegfx ANIM_TAG_SLASH_2 loadspritegfx ANIM_TAG_IMPACT - createsprite gFalseSwipeSliceSpriteTemplate, ANIM_TARGET, 2, - playsewithpan SE_M_VITAL_THROW, 63 + createsprite gFalseSwipeSliceSpriteTemplate, ANIM_TARGET, 2 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 16 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 0 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 16 delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 32 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 48 delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 64 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET delay 2 createsprite gFalseSwipePositionedSliceSpriteTemplate, ANIM_TARGET, 2, 80 delay 2 waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 6, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 6, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 0, 0, ANIM_TARGET, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET end -Move_SWAGGER:: +Move_SWAGGER: loadspritegfx ANIM_TAG_BREATH loadspritegfx ANIM_TAG_ANGER - createvisualtask AnimTask_GrowAndShrink, 2, - playsewithpan SE_M_SWAGGER, 192 + createvisualtask AnimTask_GrowAndShrink, 2 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2, - loopsewithpan SE_M_SWAGGER, 192, 4, 2 + createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2 + loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 4, 2 waitforvisualfinish delay 24 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET delay 12 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET waitforvisualfinish end -Move_MILK_DRINK:: +Move_MILK_DRINK: loadspritegfx ANIM_TAG_MILK_BOTTLE loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_BLUE_STAR - monbg 1 - createsprite gMilkBottleSpriteTemplate, ANIM_ATTACKER, 2, + monbg ANIM_TARGET + createsprite gMilkBottleSpriteTemplate, ANIM_ATTACKER, 2 delay 40 - playsewithpan SE_M_CRABHAMMER, 192 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER delay 12 - playsewithpan SE_M_CRABHAMMER, 192 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER delay 20 - playsewithpan SE_M_CRABHAMMER, 192 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 - playsewithpan SE_M_MILK_DRINK, 192 + playsewithpan SE_M_MILK_DRINK, SOUND_PAN_ATTACKER waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET call HealingEffect2 waitforvisualfinish end -Move_MAGNITUDE:: - createvisualtask AnimTask_IsPowerOver99, 2, +Move_MAGNITUDE: + createvisualtask AnimTask_IsPowerOver99, 2 waitforvisualfinish - jumpargeq 15, 0, MagnitudeRegular - jumpargeq 15, 1, MagnitudeIntense -MagnitudeEnd:: + jumpargeq 15, FALSE, MagnitudeRegular + jumpargeq 15, TRUE, MagnitudeIntense +MagnitudeEnd: end -MagnitudeRegular:: - createvisualtask AnimTask_HorizontalShake, 5, 5, 0, 50 - createvisualtask AnimTask_HorizontalShake, 5, 4, 0, 50 - loopsewithpan SE_M_STRENGTH, 63, 8, 10 +MagnitudeRegular: + createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 0, 50 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50 + loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10 goto MagnitudeEnd -MagnitudeIntense:: - createvisualtask AnimTask_HorizontalShake, 5, 5, 0, 50 - createvisualtask AnimTask_HorizontalShake, 5, 4, 0, 50 - loopsewithpan SE_M_STRENGTH, 63, 8, 10 +MagnitudeIntense: + createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 0, 50 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50 + loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10 delay 10 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 delay 16 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, 0, 14, RGB_WHITE, 14 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14 goto MagnitudeEnd -Move_RAPID_SPIN:: +Move_RAPID_SPIN: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_RAPID_SPIN monbg ANIM_ATTACKER createsprite gRapidSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 32, -32, 40, -2 createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 0 - loopsewithpan SE_M_RAZOR_WIND2, 192, 8, 4 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 4 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 10, 1, 0 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 10, 1, 0 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish delay 8 createvisualtask AnimTask_RapinSpinMonElevation, 2, 0, 2, 1 - loopsewithpan SE_M_RAZOR_WIND2, 192, 8, 4 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 4 waitforvisualfinish clearmonbg ANIM_ATTACKER end -Move_MOONLIGHT:: +Move_MOONLIGHT: loadspritegfx ANIM_TAG_MOON loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR setalpha 0, 16 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 16, RGB_BLACK waitforvisualfinish createsprite gMoonSpriteTemplate, ANIM_ATTACKER, 2, 120, 56 createvisualtask AnimTask_AlphaFadeIn, 3, 0, 16, 16, 0, 1 @@ -3461,93 +3442,92 @@ Move_MOONLIGHT:: delay 30 createsprite gMoonlightSparkleSpriteTemplate, ANIM_ATTACKER, 40, 10, 0 delay 20 - createvisualtask AnimTask_FadeScreenBlue, 2, + createvisualtask AnimTask_MoonlightEndFade, 2 waitforvisualfinish call HealingEffect waitforvisualfinish end -Move_EXTREME_SPEED:: +Move_EXTREME_SPEED: loadspritegfx ANIM_TAG_SPEED_DUST loadspritegfx ANIM_TAG_IMPACT - createvisualtask AnimTask_GetAttackerSide, 2, - jumpargeq 7, 1, ExtremeSpeedOnPlayer + createvisualtask AnimTask_GetAttackerSide, 2 + jumprettrue ExtremeSpeedAgainstPlayer fadetobg BG_HIGHSPEED_OPPONENT - -ExtremeSpeedContinue:: +ExtremeSpeedContinue: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1 waitbgfadein createvisualtask AnimTask_AttackerStretchAndDisappear, 2 - loopsewithpan SE_M_RAZOR_WIND2, 192, 8, 3 + loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 8, 3 waitforvisualfinish delay 1 createvisualtask AnimTask_SetAttackerInvisibleWaitForSignal, 2 monbg ANIM_TARGET setalpha 12, 8 delay 18 - createvisualtask AnimTask_ExtremeSpeedImpact, 2, + createvisualtask AnimTask_ExtremeSpeedImpact, 2 delay 2 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, 1, 0, -12, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, -12, 3 delay 10 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, 1, 0, 12, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 12, 3 delay 10 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, 3 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gMonEdgeHitSplatSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 0, 3 waitforvisualfinish - createvisualtask AnimTask_SpeedDust, 2, + createvisualtask AnimTask_SpeedDust, 2 delay 10 - createvisualtask AnimTask_ExtremeSpeedMonReappear, 2, - loopsewithpan SE_M_DOUBLE_TEAM, 192, 8, 4 + createvisualtask AnimTask_ExtremeSpeedMonReappear, 2 + loopsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 8, 4 waitforvisualfinish restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 1 - setarg 7, 4096 + setarg 7, 0x1000 delay 1 end -ExtremeSpeedOnPlayer:: +ExtremeSpeedAgainstPlayer: fadetobg BG_HIGHSPEED_PLAYER goto ExtremeSpeedContinue -Move_UPROAR:: +Move_UPROAR: loadspritegfx ANIM_TAG_JAGGED_MUSIC_NOTE loadspritegfx ANIM_TAG_THIN_RING monbg ANIM_DEF_PARTNER createvisualtask AnimTask_UproarDistortion, 2, 0 createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 - playsewithpan SE_M_UPROAR, 192 + playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 29, -12, 0 createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -12, -29, 1 delay 16 createvisualtask AnimTask_UproarDistortion, 2, 0 createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 - playsewithpan SE_M_UPROAR, 192 + playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 12, -29, 1 createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -29, -12, 0 delay 16 createvisualtask AnimTask_UproarDistortion, 2, 0 createsprite gUproarRingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0, 31, 8 - playsewithpan SE_M_UPROAR, 192 + playsewithpan SE_M_UPROAR, SOUND_PAN_ATTACKER createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, -24, 1 createsprite gJaggedMusicNoteSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, -24, 0 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_HEAT_WAVE:: +Move_HEAT_WAVE: loadspritegfx ANIM_TAG_FLYING_DIRT - createvisualtask AnimTask_BlendParticle, 5, 10261, 0, 6, 6, 31 - createvisualtask AnimTask_LoadSandstormBackground, 5, 1 - createvisualtask AnimTask_BlendBackground, 6, 6, 31 - panse_1B SE_M_HEAT_WAVE, 192, 63, 2, 0 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_FLYING_DIRT, 0, 6, 6, RGB_RED + createvisualtask AnimTask_LoadSandstormBackground, 5, TRUE + createvisualtask AnimTask_BlendBackground, 6, 6, RGB_RED + panse SE_M_HEAT_WAVE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 delay 4 createvisualtask AnimTask_MoveHeatWaveTargets, 5 delay 12 @@ -3566,159 +3546,160 @@ Move_HEAT_WAVE:: createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 60, 2560, 96, 1 end -Move_HAIL:: +@ Also used by Hail weather +Move_HAIL: loadspritegfx ANIM_TAG_HAIL loadspritegfx ANIM_TAG_ICE_CRYSTALS - createvisualtask AnimTask_BlendSelected, 10, 1, 3, 0, 6, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 6, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_Hail, 5, + createvisualtask AnimTask_Hail, 5 loopsewithpan SE_M_HAIL, 0, 8, 10 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 3, 6, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 6, 0, RGB_BLACK end -Move_TORMENT:: +Move_TORMENT: loadspritegfx ANIM_TAG_ANGER loadspritegfx ANIM_TAG_THOUGHT_BUBBLE - createvisualtask AnimTask_TormentAttacker, 2, + createvisualtask AnimTask_TormentAttacker, 2 waitforvisualfinish - createvisualtask AnimTask_BlendMonInAndOut, 2, 1, 31, 10, 1, 1 + createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_TARGET, RGB_RED, 10, 1, 1 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET delay 20 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET end -Move_MEMENTO:: +Move_MEMENTO: setalpha 0, 16 delay 1 createvisualtask AnimTask_InitMementoShadow, 2 delay 1 createvisualtask AnimTask_MoveAttackerMementoShadow, 5 - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER delay 48 - playsewithpan SE_M_PSYBEAM2, 192 + playsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_MementoHandleBg, 2, + createvisualtask AnimTask_MementoHandleBg, 2 delay 12 setalpha 0, 16 delay 1 - monbg_22 1 + monbg_static ANIM_TARGET createvisualtask AnimTask_MoveTargetMementoShadow, 5 - playsewithpan SE_M_PSYBEAM, 63 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg_23 1 + clearmonbg_static ANIM_TARGET delay 1 blendoff delay 1 end -Move_FACADE:: +Move_FACADE: loadspritegfx ANIM_TAG_SWEAT_DROP - createvisualtask AnimTask_SquishAndSweatDroplets, 2, 0, 3 - createvisualtask AnimTask_FacadeColorBlend, 2, 0, 72 - loopsewithpan SE_M_SWAGGER, 192, 24, 3 + createvisualtask AnimTask_SquishAndSweatDroplets, 2, ANIM_ATTACKER, 3 + createvisualtask AnimTask_FacadeColorBlend, 2, ANIM_ATTACKER, 72 + loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 24, 3 end -Move_SMELLING_SALT:: +Move_SMELLING_SALT: loadspritegfx ANIM_TAG_TAG_HAND loadspritegfx ANIM_TAG_SMELLINGSALT_EFFECT - createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 0, 2 - createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, 1, 1, 2 + createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 0, 2 + createsprite gSmellingSaltsHandSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 1, 2 delay 32 - createvisualtask AnimTask_SmellingSaltsSquish, 3, 1, 2 - loopsewithpan SE_M_DOUBLE_SLAP, 63, 12, 2 + createvisualtask AnimTask_SmellingSaltsSquish, 3, ANIM_TARGET, 2 + loopsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET, 12, 2 waitforvisualfinish delay 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 6, 2 - createsprite gSmellingSaltExclamationSpriteTemplate, ANIM_TARGET, 2, 1, 8, 3 - loopsewithpan SE_M_SWAGGER2, 63, 16, 3 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 6, 2 + createsprite gSmellingSaltExclamationSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET, 8, 3 + loopsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET, 16, 3 end -Move_FOLLOW_ME:: +Move_FOLLOW_ME: loadspritegfx ANIM_TAG_FINGER createsprite gFollowMeFingerSpriteTemplate, ANIM_ATTACKER, 2, 0 - playsewithpan SE_M_TAIL_WHIP, 192 + playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 18 - playsewithpan SE_M_ATTRACT, 192 + playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER delay 71 - loopsewithpan SE_M_TAIL_WHIP, 192, 22, 3 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 22, 3 end -Move_CHARGE:: +Move_CHARGE: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_ElectricChargingParticles, 2, 0, 60, 2, 12 - playsewithpan SE_M_CHARGE, 192 + createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 60, 2, 12 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 30 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 30 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER createsprite gGrowingChargeOrbSpriteTemplate, ANIM_ATTACKER, 2, 0 delay 25 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 20 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 15 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 10 delay 6 - loopsewithpan SE_M_CHARGE, 192, 6, 5 + loopsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER, 6, 5 waitforvisualfinish createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 16 delay 2 createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 - playsewithpan SE_M_THUNDERBOLT2, 192 + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff end -Move_TAUNT:: +Move_TAUNT: loadspritegfx ANIM_TAG_FINGER_2 loadspritegfx ANIM_TAG_THOUGHT_BUBBLE loadspritegfx ANIM_TAG_ANGER createsprite gThoughtBubbleSpriteTemplate, ANIM_ATTACKER, 11, 0, 45 - playsewithpan SE_M_METRONOME, 192 + playsewithpan SE_M_METRONOME, SOUND_PAN_ATTACKER delay 6 createsprite gTauntFingerSpriteTemplate, ANIM_ATTACKER, 12, 0 delay 4 - loopsewithpan SE_M_TAIL_WHIP, 192, 16, 2 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 16, 2 waitforvisualfinish delay 8 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET waitforvisualfinish delay 12 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -28 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET end -Move_HELPING_HAND:: +Move_HELPING_HAND: loadspritegfx ANIM_TAG_TAG_HAND - createvisualtask AnimTask_HelpingHandAttackerMovement, 5, + createvisualtask AnimTask_HelpingHandAttackerMovement, 5 createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 0 createsprite gHelpingHandClapSpriteTemplate, ANIM_ATTACKER, 40, 1 delay 19 playsewithpan SE_M_ENCORE, 0 - createvisualtask AnimTask_ShakeMon2, 2, 2, 2, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 2, 0, 5, 1 delay 14 playsewithpan SE_M_ENCORE, 0 - createvisualtask AnimTask_ShakeMon2, 2, 2, 2, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 2, 0, 5, 1 delay 20 playsewithpan SE_M_ENCORE, 0 - createvisualtask AnimTask_ShakeMon2, 2, 2, 3, 0, 10, 1 - createvisualtask AnimTask_BlendMonInAndOut, 2, 2, 1023, 12, 1, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATK_PARTNER, 3, 0, 10, 1 + createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_ATK_PARTNER, RGB_YELLOW, 12, 1, 1 end -Move_ASSIST:: +Move_ASSIST: loadspritegfx ANIM_TAG_PAW_PRINT createsprite gAssistPawprintSpriteTemplate, ANIM_ATTACKER, 50, 112, -16, 140, 128, 36 delay 2 @@ -3735,15 +3716,15 @@ Move_ASSIST:: playsewithpan SE_M_SCRATCH, 0 end -Move_SUPERPOWER:: +Move_SUPERPOWER: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_METEOR loadspritegfx ANIM_TAG_FLAT_ROCK monbg ANIM_ATK_PARTNER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 12, 8 - createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, 0 - playsewithpan SE_M_MEGA_KICK, 192 + createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER delay 20 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 180, 1 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_EARTHQUAKE, 0 @@ -3758,144 +3739,144 @@ Move_SUPERPOWER:: delay 8 createsprite gSuperpowerRockSpriteTemplate, ANIM_ATTACKER, 41, 60, 288, 3, 88 delay 74 - createsprite gSuperpowerFireballSpriteTemplate, ANIM_TARGET, 3, 0 - playsewithpan SE_M_SWAGGER, 192 + createsprite gSuperpowerFireballSpriteTemplate, ANIM_TARGET, 3, ANIM_ATTACKER + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 16 - createvisualtask AnimTask_ShakeMon2, 2, 1, 8, 0, 16, 1 - playsewithpan SE_M_MEGA_KICK2, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 8, 0, 16, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff delay 1 end -Move_RECYCLE:: +Move_RECYCLE: loadspritegfx ANIM_TAG_RECYCLE monbg ANIM_ATTACKER setalpha 0, 16 delay 1 - createsprite gRecycleSpriteTemplate, ANIM_ATTACKER, 2, - loopsewithpan SE_M_TAKE_DOWN, 192, 24, 3 + createsprite gRecycleSpriteTemplate, ANIM_ATTACKER, 2 + loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 24, 3 waitforvisualfinish - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, RGB_WHITE, 12, 2, 1 - playsewithpan SE_M_TAKE_DOWN, 192 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB_WHITE, 12, 2, 1 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER waitforvisualfinish blendoff clearmonbg ANIM_ATTACKER delay 1 end -Move_BRICK_BREAK:: +Move_BRICK_BREAK: loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_TORN_METAL choosetwoturnanim BrickBreakNormal, BrickBreakShatteredWall -BrickBreakNormal:: - monbg 1 +BrickBreakNormal: + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8 delay 4 delay 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, -18, -18, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 18, 18, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 - createvisualtask AnimTask_WindUpLunge, 2, 0, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, 0 + createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK delay 37 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET end -BrickBreakShatteredWall:: - monbg 1 +BrickBreakShatteredWall: + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8 delay 4 - createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, 1, 0, 0, 90, 10 + createsprite gBrickBreakWallSpriteTemplate, ANIM_ATTACKER, 3, ANIM_TARGET, 0, 0, 90, 10 delay 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -18, -18, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, -18, -18, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 8 delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 18, 18, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 18, 18, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET delay 20 - createvisualtask AnimTask_WindUpLunge, 2, 0, -24, 0, 24, 10, 24, 3 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 6, 0 + createvisualtask AnimTask_WindUpLunge, 2, ANIM_ATTACKER, -24, 0, 24, 10, 24, 3 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 6, RGB_BLACK delay 37 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 10, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, -8, -12 - createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, -12 - createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, -8, 12 - createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 8, 12 - playsewithpan SE_M_BRICK_BREAK, 63 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, -8, -12 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 1, 8, -12 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 2, -8, 12 + createsprite gBrickBreakWallShardSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 3, 8, 12 + playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 6, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 6, 0, RGB_BLACK waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET end -Move_YAWN:: +Move_YAWN: loadspritegfx ANIM_TAG_PINK_CLOUD - createvisualtask AnimTask_DeepInhale, 2, 0 - playsewithpan SE_M_YAWN, 192 + createvisualtask AnimTask_DeepInhale, 2, ANIM_ATTACKER + playsewithpan SE_M_YAWN, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 2 - playsewithpan SE_M_SPIT_UP, 192 + playsewithpan SE_M_SPIT_UP, SOUND_PAN_ATTACKER delay 4 createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 1 delay 4 createsprite gYawnCloudSpriteTemplate, ANIM_TARGET, 5, 0 waitforvisualfinish - createvisualtask AnimTask_DeepInhale, 2, 1 - playsewithpan SE_M_YAWN, 63 + createvisualtask AnimTask_DeepInhale, 2, ANIM_TARGET + playsewithpan SE_M_YAWN, SOUND_PAN_TARGET end -Move_ENDEAVOR:: +Move_ENDEAVOR: loadspritegfx ANIM_TAG_SWEAT_DROP loadspritegfx ANIM_TAG_IMPACT - createvisualtask AnimTask_SquishAndSweatDroplets, 2, 0, 2 - loopsewithpan SE_M_TAIL_WHIP, 192, 24, 2 - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 703, 12, 1, 2 + createvisualtask AnimTask_SquishAndSweatDroplets, 2, ANIM_ATTACKER, 2 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 24, 2 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB(31, 21, 0), 12, 1, 2 delay 6 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -12, 1, 2 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 12, -12, ANIM_TARGET, 2 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 24 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, 0, 1, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 12, 1, 2 - playsewithpan SE_M_COMET_PUNCH, 63 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 5, FALSE, 1, 8, 1, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -12, 12, ANIM_TARGET, 2 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET end -Move_ERUPTION:: +Move_ERUPTION: loadspritegfx ANIM_TAG_WARM_ROCK - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 2, 0, 4, 31 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 2, 0, 4, RGB_RED waitforvisualfinish createvisualtask AnimTask_EruptionLaunchRocks, 2 - waitplaysewithpan SE_M_EXPLOSION, 192, 60 + waitplaysewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER, 60 waitforvisualfinish createvisualtask AnimTask_EruptionLaunchRocks, 2 - waitplaysewithpan SE_M_EXPLOSION, 192, 60 + waitplaysewithpan SE_M_EXPLOSION, SOUND_PAN_ATTACKER, 60 waitforvisualfinish delay 30 createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 200, -32, 0, 100, 0 @@ -3905,72 +3886,72 @@ Move_ERUPTION:: createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 110, -32, 64, 50, 0 createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 60, -32, 80, 70, 1 delay 22 - createvisualtask AnimTask_HorizontalShake, 5, 5, 8, 60 - createvisualtask AnimTask_HorizontalShake, 5, 4, 8, 60 - loopsewithpan SE_M_ROCK_THROW, 63, 16, 12 + createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 8, 60 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 8, 60 + loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 16, 12 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, 31, 4, 4, 0, 31 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, F_PAL_BG | F_PAL_BATTLERS, 4, 4, 0, RGB_RED end -Move_SKILL_SWAP:: +Move_SKILL_SWAP: loadspritegfx ANIM_TAG_BLUEGREEN_ORB call SetPsychicBackground - createvisualtask AnimTask_SkillSwap, 3, 1 - createvisualtask AnimTask_BlendMonInAndOut, 5, 1, RGB_WHITE, 12, 3, 1 - loopsewithpan SE_M_REVERSAL, 192, 24, 3 + createvisualtask AnimTask_SkillSwap, 3, ANIM_TARGET + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB_WHITE, 12, 3, 1 + loopsewithpan SE_M_REVERSAL, SOUND_PAN_ATTACKER, 24, 3 delay 16 - createvisualtask AnimTask_SkillSwap, 3, 0 - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, RGB_WHITE, 12, 3, 1 + createvisualtask AnimTask_SkillSwap, 3, ANIM_ATTACKER + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB_WHITE, 12, 3, 1 waitforvisualfinish - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_IMPRISON:: +Move_IMPRISON: loadspritegfx ANIM_TAG_HOLLOW_ORB loadspritegfx ANIM_TAG_X_SIGN call SetPsychicBackground monbg ANIM_DEF_PARTNER createvisualtask AnimTask_ImprisonOrbs, 5 delay 8 - loopsewithpan SE_M_HORN_ATTACK, 192, 8, 5 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_ATTACKER, 8, 5 waitforvisualfinish delay 4 - createsprite gRedXSpriteTemplate, ANIM_ATTACKER, 5, 0, 40 - createvisualtask AnimTask_HorizontalShake, 5, 4, 1, 10 - playsewithpan SE_M_HYPER_BEAM, 192 + createsprite gRedXSpriteTemplate, ANIM_ATTACKER, 5, ANIM_ATTACKER, 40 + createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 1, 10 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER clearmonbg ANIM_DEF_PARTNER - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_GRUDGE:: +Move_GRUDGE: loadspritegfx ANIM_TAG_PURPLE_FLAME monbg ANIM_ATTACKER - monbgprio_29 - fadetobg 2 - playsewithpan SE_M_PSYBEAM, 192 + splitbgprio_all + fadetobg BG_GHOST + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitbgfadein createvisualtask AnimTask_GrudgeFlames, 3 - loopsewithpan SE_M_EMBER, 192, 16, 4 + loopsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 16, 4 delay 10 delay 80 - playsewithpan SE_M_NIGHTMARE, 63 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET waitforvisualfinish restorebg waitbgfadein clearmonbg ANIM_ATTACKER end -Move_CAMOUFLAGE:: +Move_CAMOUFLAGE: monbg ANIM_ATK_PARTNER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 16, 0 - createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14 + createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 3, 0, 14 delay 16 createvisualtask AnimTask_AttackerFadeToInvisible, 2, 4 - playsewithpan SE_M_FAINT_ATTACK, 192 + playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER waitforvisualfinish delay 8 - createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 0, 0, 0 + createvisualtask AnimTask_SetCamouflageBlend, 5, F_PAL_ATTACKER, 0, 0, 0 waitforvisualfinish createvisualtask AnimTask_AttackerFadeFromInvisible, 2, 1 waitforvisualfinish @@ -3978,90 +3959,90 @@ Move_CAMOUFLAGE:: clearmonbg ANIM_ATK_PARTNER end -Move_TAIL_GLOW:: +Move_TAIL_GLOW: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish - createsprite gTailGlowOrbSpriteTemplate, ANIM_ATTACKER, 66, 0 + createsprite gTailGlowOrbSpriteTemplate, ANIM_ATTACKER, 66, ANIM_ATTACKER delay 18 - loopsewithpan SE_M_MORNING_SUN, 192, 16, 6 + loopsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER, 16, 6 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB_BLACK clearmonbg ANIM_ATTACKER blendoff delay 1 end -Move_LUSTER_PURGE:: +Move_LUSTER_PURGE: loadspritegfx ANIM_TAG_WHITE_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_IMPACT - fadetobg 3 + fadetobg BG_PSYCHIC waitbgfadeout - createvisualtask AnimTask_FadeScreenToWhite, 5, + createvisualtask AnimTask_FadeScreenToWhite, 5 waitbgfadein monbg ANIM_ATTACKER setalpha 12, 8 - playsewithpan SE_M_SOLAR_BEAM, 192 + playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER createsprite gLusterPurgeCircleSpriteTemplate, ANIM_ATTACKER, 41, 0, 0, 0, 0 delay 20 - createvisualtask AnimTask_BlendExcept, 5, 5, 2, 0, 16, -1 - createvisualtask AnimTask_BlendParticle, 5, 10267, 2, 0, 16, -1 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_WHITE_CIRCLE_OF_LIGHT, 2, 0, 16, RGB_WHITEALPHA waitforvisualfinish - createvisualtask AnimTask_BlendParticle, 5, 10135, 0, 12, 12, 23552 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_IMPACT, 0, 12, 12, RGB(0, 0, 23) waitforvisualfinish createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET delay 3 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_HYPER_BEAM, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendExcept, 5, 5, 2, 16, 0, -1 - createvisualtask AnimTask_HorizontalShake, 5, 1, 5, 14 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA + createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_MIST_BALL:: +Move_MIST_BALL: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_WHITE_FEATHER delay 0 - playsewithpan SE_M_STRING_SHOT, 192 + playsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER createsprite gMistBallSpriteTemplate, ANIM_TARGET, 0, 0, 0, 0, 0, 30, 0 waitforvisualfinish - playsewithpan SE_M_SAND_ATTACK, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 10, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 1, 1, 32279, 16, RGB_WHITE, 16 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 10, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 1, 1, RGB(23, 16, 31), 16, RGB_WHITE, 16 delay 0 playsewithpan SE_M_HAZE, 0 - createvisualtask AnimTask_MistBallFog, 5, - createvisualtask AnimTask_BlendSelected, 10, 4, 3, 0, 16, RGB_WHITE + createvisualtask AnimTask_MistBallFog, 5 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 3, 0, 16, RGB_WHITE delay 8 - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 70, 0 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 70, 0 delay 70 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE end -Move_FEATHER_DANCE:: +Move_FEATHER_DANCE: loadspritegfx ANIM_TAG_WHITE_FEATHER monbg ANIM_DEF_PARTNER - monbgprio_29 - playsewithpan SE_M_PETAL_DANCE, 63 + splitbgprio_all + playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_TARGET delay 0 createsprite gFallingFeatherSpriteTemplate, ANIM_TARGET, 0, 0, -16, 64, 2, 104, 11304, 32, 1 delay 6 @@ -4079,41 +4060,41 @@ Move_FEATHER_DANCE:: clearmonbg ANIM_DEF_PARTNER end -Move_TEETER_DANCE:: +Move_TEETER_DANCE: loadspritegfx ANIM_TAG_MUSIC_NOTES loadspritegfx ANIM_TAG_DUCK - createvisualtask AnimTask_TeeterDanceMovement, 5, + createvisualtask AnimTask_TeeterDanceMovement, 5 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 24 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 24 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 24 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, -8, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER delay 24 createsprite gFastFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 2, 8, -2 - playsewithpan SE_M_TEETER_DANCE, 192 + playsewithpan SE_M_TEETER_DANCE, SOUND_PAN_ATTACKER end -Move_MUD_SPORT:: +Move_MUD_SPORT: loadspritegfx ANIM_TAG_MUD_SAND createvisualtask AnimTask_Splash, 2, 0, 6 delay 24 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, -4, -16 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, 4, -12 - playsewithpan SE_M_DIG, 192 + playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 32 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, -3, -12 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, 5, -14 - playsewithpan SE_M_DIG, 192 + playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 32 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, -5, -18 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 0, 3, -14 - playsewithpan SE_M_DIG, 192 + playsewithpan SE_M_DIG, SOUND_PAN_ATTACKER delay 16 createsprite gMudsportMudSpriteTemplate, ANIM_TARGET, 2, 1, 220, 60 waitplaysewithpan SE_M_BUBBLE2, 0, 15 @@ -4146,11 +4127,11 @@ Move_MUD_SPORT:: waitplaysewithpan SE_M_BUBBLE2, 0, 10 end -Move_NEEDLE_ARM:: +Move_NEEDLE_ARM: loadspritegfx ANIM_TAG_GREEN_SPIKE loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - loopsewithpan SE_M_HORN_ATTACK, 63, 2, 16 + loopsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 2, 16 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 0, -32, 16 delay 2 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 22, -22, 16 @@ -4175,10 +4156,10 @@ Move_NEEDLE_ARM:: delay 2 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 0, 16, 16, 16 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 18, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 18, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 0, -24, 10 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 17, -17, 10 createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, 24, 0, 10 @@ -4189,43 +4170,43 @@ Move_NEEDLE_ARM:: createsprite gNeedleArmSpikeSpriteTemplate, ANIM_TARGET, 2, 1, 1, -17, -17, 10 end -Move_SLACK_OFF:: +Move_SLACK_OFF: loadspritegfx ANIM_TAG_BLUE_STAR - createvisualtask AnimTask_SlackOffSquish, 2, 0 - playsewithpan SE_M_YAWN, 192 + createvisualtask AnimTask_SlackOffSquish, 2, ANIM_ATTACKER + playsewithpan SE_M_YAWN, SOUND_PAN_ATTACKER waitforvisualfinish call HealingEffect waitforvisualfinish end -Move_CRUSH_CLAW:: +Move_CRUSH_CLAW: loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL loadspritegfx ANIM_TAG_CLAW_SLASH loadspritegfx ANIM_TAG_TORN_METAL - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 18, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 18, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET delay 12 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 - playsewithpan SE_M_RAZOR_WIND, 63 - waitforvisualfinish + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish + waitforvisualfinish @ Redundant blendoff - clearmonbg 1 + clearmonbg ANIM_TARGET end -Move_AROMATHERAPY:: +Move_AROMATHERAPY: playsewithpan SE_M_PETAL_DANCE, 0 loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 0, 7, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 0, 7, RGB(13, 31, 12) delay 1 monbg ANIM_ATTACKER delay 1 @@ -4243,30 +4224,30 @@ Move_AROMATHERAPY:: waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 0, 7, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 0, 7, 0, RGB(13, 31, 12) delay 1 - playsewithpan SE_M_STAT_INCREASE, 192 + playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER createvisualtask AnimTask_StatusClearedEffect, 2, 1 waitforvisualfinish - playsewithpan SE_M_MORNING_SUN, 192 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1 delay 8 createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish - playsewithpan SE_SHINY, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 43, 3, 10, 0, 13293 + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_ANIM_1, 3, 10, 0, RGB(13, 31, 12) createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 waitforvisualfinish end -Move_FAKE_TEARS:: +Move_FAKE_TEARS: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_THOUGHT_BUBBLE loadspritegfx ANIM_TAG_MUSIC_NOTES - createvisualtask AnimTask_BlendParticle, 5, 10155, 0, 4, 4, 32108 + createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_SMALL_BUBBLES, 0, 4, 4, RGB(12, 11, 31) waitforvisualfinish - createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 1 - loopsewithpan SE_M_TAIL_WHIP, 192, 12, 4 + createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 1 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 12, 4 delay 8 createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 createsprite gTearDropSpriteTemplate, ANIM_ATTACKER, 2, 0, 1 @@ -4282,7 +4263,7 @@ Move_FAKE_TEARS:: waitforvisualfinish end -Move_AIR_CUTTER:: +Move_AIR_CUTTER: loadspritegfx ANIM_TAG_AIR_WAVE loadspritegfx ANIM_TAG_CUT loadspritegfx ANIM_TAG_IMPACT @@ -4290,42 +4271,42 @@ Move_AIR_CUTTER:: monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 0 - createvisualtask AnimTask_AirCutterProjectile, 2, 32, -24, 1536, 2, 128 + createvisualtask AnimTask_AirCutterProjectile, 2, 32, -24, 6 * 256, 2, 128 @ 6 * 256 == Q_8_8(6) waitforvisualfinish - playsewithpan SE_M_CUT, 63 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET createsprite gAirCutterSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0, 2 delay 5 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 8, 1 waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER delay 0 end -Move_ODOR_SLEUTH:: - monbg 1 - createvisualtask AnimTask_OdorSleuthMovement, 5, +Move_ODOR_SLEUTH: + monbg ANIM_TARGET + createvisualtask AnimTask_OdorSleuthMovement, 5 delay 24 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 4 - playsewithpan SE_M_SWAGGER, 192 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER delay 6 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 3, 4 - playsewithpan SE_M_SWAGGER, 192 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 1, -1, 16, -1, 0 - playsewithpan SE_M_LEER, 192 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_WHITEALPHA, 16, RGB_WHITEALPHA, 0 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER end -Move_GRASS_WHISTLE:: +Move_GRASS_WHISTLE: loadspritegfx ANIM_TAG_MUSIC_NOTES - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 13298 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB(18, 31, 12) waitforvisualfinish - createvisualtask AnimTask_MusicNotesRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish - panse_1B SE_M_GRASSWHISTLE, 192, 63, 2, 0 + panse SE_M_GRASSWHISTLE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 1, 0 delay 5 createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 0 @@ -4351,60 +4332,60 @@ Move_GRASS_WHISTLE:: createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 5, 1, 0 delay 4 waitforvisualfinish - createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2, - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 4, 0, 13298 + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 4, 0, RGB(18, 31, 12) waitforvisualfinish end -Move_TICKLE:: +Move_TICKLE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 0, 16, RGB_BLACK waitforvisualfinish createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 - playsewithpan SE_M_DETECT, 192 + playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 16, 0, RGB_BLACK waitforvisualfinish delay 20 - createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, 0 + createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, ANIM_ATTACKER delay 12 - createvisualtask AnimTask_RockMonBackAndForth, 3, 1, 6, 2 - loopsewithpan SE_M_TAIL_WHIP, 63, 8, 8 + createvisualtask AnimTask_RockMonBackAndForth, 3, ANIM_TARGET, 6, 2 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_TARGET, 8, 8 waitforvisualfinish end -Move_WATER_SPOUT:: +Move_WATER_SPOUT: loadspritegfx ANIM_TAG_GLOWY_BLUE_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_WaterSpoutLaunch, 5, - playsewithpan SE_M_HEADBUTT, 192 + createvisualtask AnimTask_WaterSpoutLaunch, 5 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER delay 44 - playsewithpan SE_M_DIVE, 192 + playsewithpan SE_M_DIVE, SOUND_PAN_ATTACKER waitforvisualfinish delay 16 - createvisualtask AnimTask_WaterSpoutRain, 5, - playsewithpan SE_M_SURF, 63 + createvisualtask AnimTask_WaterSpoutRain, 5 + playsewithpan SE_M_SURF, SOUND_PAN_TARGET clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SHADOW_PUNCH:: +Move_SHADOW_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - fadetobg 2 + fadetobg BG_GHOST waitbgfadein monbg ANIM_ATK_PARTNER setalpha 9, 8 - createvisualtask AnimTask_AttackerPunchWithTrace, 2, 0, 13 - playsewithpan SE_M_JUMP_KICK, 192 + createvisualtask AnimTask_AttackerPunchWithTrace, 2, RGB_BLACK, 13 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 - playsewithpan SE_M_COMET_PUNCH, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff @@ -4412,212 +4393,212 @@ Move_SHADOW_PUNCH:: waitbgfadein end -Move_EXTRASENSORY:: +Move_EXTRASENSORY: call SetPsychicBackground monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 891, 12, 1, 1 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB(27, 27, 0), 12, 1, 1 createvisualtask AnimTask_ExtrasensoryDistortion, 5, 0 - playsewithpan SE_M_BIND, 63 + playsewithpan SE_M_BIND, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendMonInAndOut, 5, 0, 891, 12, 1, 1 + createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB(27, 27, 0), 12, 1, 1 createvisualtask AnimTask_ExtrasensoryDistortion, 5, 1 - playsewithpan SE_M_BIND, 63 + playsewithpan SE_M_BIND, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_TransparentCloneGrowAndShrink, 5, ANIM_ATTACKER createvisualtask AnimTask_ExtrasensoryDistortion, 5, 2 - playsewithpan SE_M_LEER, 192 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_AERIAL_ACE:: +Move_AERIAL_ACE: loadspritegfx ANIM_TAG_CUT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 24, 6, 1, 5 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 24, 6, 1, 5 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 7, 3 createsprite gCuttingSliceSpriteTemplate, ANIM_ATTACKER, 2, 40, -32, 0 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER delay 5 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 10, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 10, 0, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 10, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 10, RGB_BLACK, 0 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_IRON_DEFENSE:: - loopsewithpan SE_SHINY, 192, 28, 2 +Move_IRON_DEFENSE: + loopsewithpan SE_SHINY, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 8, 2, -1, 14, -1, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 8, 2, RGB_WHITEALPHA, 14, RGB_WHITEALPHA, 0 waitforvisualfinish end -Move_BLOCK:: +Move_BLOCK: loadspritegfx ANIM_TAG_X_SIGN - createsprite gBlockXSpriteTemplate, ANIM_TARGET, 66, - playsewithpan SE_M_SWAGGER, 63 + createsprite gBlockXSpriteTemplate, ANIM_TARGET, 66 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET end -Move_HOWL:: +Move_HOWL: loadspritegfx ANIM_TAG_NOISE_LINE createvisualtask AnimTask_DeepInhale, 2, 0 delay 12 call RoarEffect - createvisualtask SoundTask_PlayCryHighPitch, 2, 0, 3 + createvisualtask SoundTask_PlayCryHighPitch, 2, ANIM_ATTACKER, 3 waitforvisualfinish delay 30 end -Move_BULK_UP:: +Move_BULK_UP: loadspritegfx ANIM_TAG_BREATH - createvisualtask AnimTask_GrowAndShrink, 2, - playsewithpan SE_M_SWAGGER, 192 + createvisualtask AnimTask_GrowAndShrink, 2 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2, - loopsewithpan SE_M_SWAGGER, 192, 4, 2 + createsprite gBreathPuffSpriteTemplate, ANIM_ATTACKER, 2 + loopsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER, 4, 2 waitforvisualfinish end -Move_COVET:: +Move_COVET: loadspritegfx ANIM_TAG_MAGENTA_HEART loadspritegfx ANIM_TAG_ITEM_BAG - createvisualtask AnimTask_RockMonBackAndForth, 5, 0, 2, 0 + createvisualtask AnimTask_RockMonBackAndForth, 5, ANIM_ATTACKER, 2, 0 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER delay 15 createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - loopsewithpan SE_M_DIZZY_PUNCH, 63, 4, 3 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + loopsewithpan SE_M_DIZZY_PUNCH, SOUND_PAN_TARGET, 4, 3 end -Move_VOLT_TACKLE:: +Move_VOLT_TACKLE: loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_ELECTRICITY monbg ANIM_ATTACKER setalpha 12, 8 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 0, 8, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 0, 8, RGB_BLACK waitforvisualfinish createsprite gVoltTackleOrbSlideSpriteTemplate, ANIM_ATTACKER, 1 - playsewithpan SE_M_CHARGE, 192 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff delay 8 createvisualtask AnimTask_VoltTackleBolt, 5, 0 - playsewithpan SE_M_THUNDERBOLT, 192 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER waitforvisualfinish createvisualtask AnimTask_VoltTackleBolt, 5, 1 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_VoltTackleBolt, 5, 2 - playsewithpan SE_M_THUNDERBOLT, 192 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER waitforvisualfinish createvisualtask AnimTask_VoltTackleBolt, 5, 3 - playsewithpan SE_M_THUNDERBOLT, 63 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_TARGET waitforvisualfinish createvisualtask AnimTask_VoltTackleBolt, 5, 4 - playsewithpan SE_M_THUNDERBOLT, 192 + playsewithpan SE_M_THUNDERBOLT, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_ShakeMon2, 2, 1, 10, 0, 18, 1 - playsewithpan SE_M_SELF_DESTRUCT, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 10, 0, 18, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 1, 16, 16 delay 2 createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, -16 delay 8 createvisualtask AnimTask_VoltTackleAttackerReappear, 5 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 0, 3, 0, 9, 1 - playsewithpan SE_M_THUNDERBOLT2, 192 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 3, 0, 9, 1 + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 16 delay 2 createsprite gElectricPuffSpriteTemplate, ANIM_ATTACKER, 2, 0, -16, -16 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 8, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 8, 0, RGB_BLACK waitforvisualfinish end -Move_WATER_SPORT:: +Move_WATER_SPORT: loadspritegfx ANIM_TAG_GLOWY_BLUE_ORB - createvisualtask AnimTask_WaterSport, 5, + createvisualtask AnimTask_WaterSport, 5 delay 8 - playsewithpan SE_M_SURF, 192 + playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER delay 44 - playsewithpan SE_M_SURF, 192 + playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER delay 44 - playsewithpan SE_M_SURF, 192 + playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER delay 44 - panse_1B SE_M_SURF, 192, 63, 2, 0 + panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 end -Move_CALM_MIND:: +Move_CALM_MIND: loadspritegfx ANIM_TAG_THIN_RING monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendExcept, 5, 0, 0, 0, 16, 0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, ANIM_ATTACKER, 0, 0, 16, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 5, 1 + createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 5, TRUE waitforvisualfinish createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 - playsewithpan SE_M_SUPERSONIC, 192 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER delay 14 createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 - playsewithpan SE_M_SUPERSONIC, 192 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER delay 14 createsprite gThinRingShrinkingSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0 - playsewithpan SE_M_SUPERSONIC, 192 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 5, 0 - visible 0 + createvisualtask AnimTask_SetAllNonAttackersInvisiblity, 5, FALSE + visible ANIM_ATTACKER @ Redundant waitforvisualfinish - createvisualtask AnimTask_BlendExcept, 5, 0, 0, 16, 0, 0 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, ANIM_ATTACKER, 0, 16, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATK_PARTNER end -Move_LEAF_BLADE:: +Move_LEAF_BLADE: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_CROSS_IMPACT - createvisualtask AnimTask_LeafBlade, 5, + createvisualtask AnimTask_LeafBlade, 5 delay 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - playsewithpan SE_M_CUT, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET delay 50 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - playsewithpan SE_M_CUT, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET delay 50 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - playsewithpan SE_M_CUT, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + playsewithpan SE_M_CUT, SOUND_PAN_TARGET waitforvisualfinish - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 delay 12 - createvisualtask AnimTask_ShakeMon2, 2, 1, 8, 0, 18, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 8, 0, 18, 1 createsprite gCrossImpactSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 36 - playsewithpan SE_M_LEER, 63 + playsewithpan SE_M_LEER, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_DRAGON_DANCE:: +Move_DRAGON_DANCE: loadspritegfx ANIM_TAG_HOLLOW_ORB monbg ANIM_ATTACKER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER delay 1 createvisualtask AnimTask_DragonDanceWaver, 5 - playsewithpan SE_M_TELEPORT, 192 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER delay 8 - createvisualtask AnimTask_BlendPalInAndOutByTag, 5, 10249, 19456, 14, 0, 3 + createvisualtask AnimTask_BlendPalInAndOutByTag, 5, ANIM_TAG_HOLLOW_ORB, RGB(0, 0, 19), 14, 0, 3 createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 43 createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 85 @@ -4625,110 +4606,110 @@ Move_DRAGON_DANCE:: createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 170 createsprite gDragonDanceOrbSpriteTemplate, ANIM_ATTACKER, 2, 213 delay 30 - playsewithpan SE_M_TELEPORT, 192 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER delay 30 - playsewithpan SE_M_TELEPORT, 192 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 end -Move_SHOCK_WAVE:: +Move_SHOCK_WAVE: loadspritegfx ANIM_TAG_ELECTRIC_ORBS loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT loadspritegfx ANIM_TAG_SPARK loadspritegfx ANIM_TAG_LIGHTNING monbg ANIM_ATTACKER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 4, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 4, RGB_BLACK waitforvisualfinish - createvisualtask AnimTask_ElectricChargingParticles, 2, 0, 20, 0, 2 - playsewithpan SE_M_CHARGE, 192 + createvisualtask AnimTask_ElectricChargingParticles, 2, ANIM_ATTACKER, 20, 0, 2 + playsewithpan SE_M_CHARGE, SOUND_PAN_ATTACKER delay 12 createsprite gGrowingShockWaveOrbSpriteTemplate, ANIM_ATTACKER, 2 delay 30 - createvisualtask AnimTask_ShockWaveProgressingBolt, 5, + createvisualtask AnimTask_ShockWaveProgressingBolt, 5 delay 12 waitforvisualfinish - createvisualtask AnimTask_ShockWaveLightning, 5, - playsewithpan SE_M_TRI_ATTACK2, 63 + createvisualtask AnimTask_ShockWaveLightning, 5 + playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 6, 18, 1 - createvisualtask AnimTask_BlendSelected, 5, 1, 3, 16, 0, RGB_WHITE - createvisualtask AnimTask_BlendSelected, 5, 4, 0, 16, 16, RGB_BLACK + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 6, 18, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_BG, 3, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 16, 16, RGB_BLACK delay 4 - createvisualtask AnimTask_BlendSelected, 5, 4, 0, 0, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 5, F_PAL_TARGET, 0, 0, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff end -Move_HARDEN:: - loopsewithpan SE_M_HARDEN, 192, 28, 2 +Move_HARDEN: + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 waitforvisualfinish end -Move_BELLY_DRUM:: +Move_BELLY_DRUM: loadspritegfx ANIM_TAG_MUSIC_NOTES loadspritegfx ANIM_TAG_PURPLE_HAND_OUTLINE - createvisualtask AnimTask_MusicNotesRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesRainbowBlend, 2 waitforvisualfinish call BellyDrumRight createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, 0 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 15 call BellyDrumLeft createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 1, 0 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 15 call BellyDrumRight createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 3, 3, 128 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 7 call BellyDrumLeft createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 128 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 7 call BellyDrumRight createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 0, 1, 1, 0 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER delay 7 call BellyDrumLeft createsprite gSlowFlyingMusicNotesSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 3, 0 - playsewithpan SE_M_BELLY_DRUM, 192 + playsewithpan SE_M_BELLY_DRUM, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2, + createvisualtask AnimTask_MusicNotesClearRainbowBlend, 2 waitforvisualfinish end -BellyDrumLeft:: +BellyDrumLeft: createsprite gBellyDrumHandSpriteTemplate, ANIM_ATTACKER, 3, 0 - createvisualtask AnimTask_ShakeMon, 2, 0, 0, 8, 2, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 8, 2, 1 return -BellyDrumRight:: +BellyDrumRight: createsprite gBellyDrumHandSpriteTemplate, ANIM_ATTACKER, 3, 1 - createvisualtask AnimTask_ShakeMon, 2, 0, 0, 8, 2, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 8, 2, 1 return -Move_MIND_READER:: +Move_MIND_READER: loadspritegfx ANIM_TAG_TEAL_ALERT loadspritegfx ANIM_TAG_OPENING_EYE loadspritegfx ANIM_TAG_ROUND_WHITE_HALO monbg 4 - playsewithpan SE_M_CONFUSE_RAY, 63 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET createsprite gOpeningEyeSpriteTemplate, ANIM_ATTACKER, 5, 0, 0, 1, 0 - createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5, + createsprite gWhiteHaloSpriteTemplate, ANIM_ATTACKER, 5 delay 40 - playsewithpan SE_M_LEER, 63 - createvisualtask AnimTask_BlendColorCycle, 2, 1, 1, 2, 0, 10, 0 + playsewithpan SE_M_LEER, SOUND_PAN_TARGET + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 1, 2, 0, 10, RGB_BLACK call MindReaderEyeSpikeEffect waitforvisualfinish clearmonbg 4 end -MindReaderEyeSpikeEffect:: +MindReaderEyeSpikeEffect: createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 70, 0, 6 createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 40, 40, 6 createsprite gTealAlertSpriteTemplate, ANIM_ATTACKER, 4, 10, -60, 6 @@ -4752,16 +4733,16 @@ MindReaderEyeSpikeEffect:: delay 2 return -Move_ICE_PUNCH:: +Move_ICE_PUNCH: monbg ANIM_DEF_PARTNER setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, 0 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 9, RGB(12, 26, 31) + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB(12, 26, 31) delay 20 - playsewithpan SE_M_STRING_SHOT, 63 + playsewithpan SE_M_STRING_SHOT, SOUND_PAN_TARGET createsprite gIceCrystalSpiralInwardSmall, ANIM_ATTACKER, 2, 0 createsprite gIceCrystalSpiralInwardSmall, ANIM_ATTACKER, 2, 64 createsprite gIceCrystalSpiralInwardSmall, ANIM_ATTACKER, 2, 128 @@ -4773,24 +4754,24 @@ Move_ICE_PUNCH:: createsprite gIceCrystalSpiralInwardLarge, ANIM_ATTACKER, 2, 224 delay 17 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 4, 0, -10, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -10, 1, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -10, ANIM_TARGET, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 3, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 3, 1 waitforvisualfinish delay 15 call IceCrystalEffectShort delay 5 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 9, 0, RGB(12, 26, 31) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 9, 0, RGB(12, 26, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_REST:: - playsewithpan SE_M_SNORE, 192 +Move_REST: + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER loadspritegfx ANIM_TAG_LETTER_Z createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 delay 20 @@ -4800,66 +4781,69 @@ Move_REST:: waitforvisualfinish end -Move_CONFUSION:: +Move_CONFUSION: monbg ANIM_DEF_PARTNER call SetPsychicBackground setalpha 8, 8 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE waitforvisualfinish - playsewithpan SE_M_SUPERSONIC, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 1, 1 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_TARGET, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_PSYCHIC:: +Move_PSYCHIC: monbg ANIM_DEF_PARTNER call SetPsychicBackground setalpha 8, 8 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, 767 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB(31, 23, 0) waitforvisualfinish - loopsewithpan SE_M_SUPERSONIC, 63, 10, 3 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, 1, 1 + loopsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 10, 3 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, ANIM_TARGET, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_FUTURE_SIGHT:: +Move_FUTURE_SIGHT: goto FutureSight -FutureSightContinue:: + +FutureSightContinue: waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -FutureSight:: +FutureSight: monbg ANIM_ATK_PARTNER - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground setalpha 8, 8 - playsewithpan SE_M_SUPERSONIC, 192 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 8, RGB_WHITE - createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 0, 1 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 8, RGB_WHITE + createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_ATTACKER, 1 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff goto FutureSightContinue + +UnusedFutureSightHit: monbg ANIM_DEF_PARTNER - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground setalpha 8, 8 - playsewithpan SE_M_SUPERSONIC, 63 - waitplaysewithpan SE_M_SUPERSONIC, 63, 8 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET + waitplaysewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 8 createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 15, 1 createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, 1, 1 waitforvisualfinish @@ -4869,16 +4853,16 @@ FutureSight:: blendoff goto FutureSightContinue -Move_THUNDER:: +Move_THUNDER: loadspritegfx ANIM_TAG_LIGHTNING - fadetobg 11 + fadetobg BG_THUNDER waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -256, 0, 1, -1 waitbgfadein - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK delay 16 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 - playsewithpan SE_M_THUNDER_WAVE, 63 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 16, -36 delay 1 @@ -4887,12 +4871,12 @@ Move_THUNDER:: createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 16, 12 delay 20 createsprite gLightningSpriteTemplate, ANIM_TARGET, 6, -16, -32 - playsewithpan SE_M_THUNDER_WAVE, 63 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 6, -16, -16 delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 6, -16, 16 - playsewithpan SE_M_THUNDER_WAVE, 63 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_TARGET delay 5 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 @@ -4907,7 +4891,7 @@ Move_THUNDER:: createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -32 - playsewithpan SE_M_TRI_ATTACK2, 63 + playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -16 delay 1 @@ -4915,29 +4899,29 @@ Move_THUNDER:: delay 10 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 - createvisualtask AnimTask_ShakeTargetInPattern, 2, 30, 3, 1, 0 + createvisualtask AnimTask_ShakeTargetInPattern, 2, 30, 3, TRUE, 0 delay 2 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_TARGET, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK waitforvisualfinish restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -Move_THUNDER_PUNCH:: +Move_THUNDER_PUNCH: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_LIGHTNING - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK waitforvisualfinish - playsewithpan SE_M_COMET_PUNCH, 63 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 delay 1 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 @@ -4947,23 +4931,23 @@ Move_THUNDER_PUNCH:: delay 1 createsprite gLightningSpriteTemplate, ANIM_ATTACKER, 2, 0, 16 delay 1 - playsewithpan SE_M_TRI_ATTACK2, 63 + playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 15, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK delay 20 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SACRED_FIRE:: +Move_SACRED_FIRE: loadspritegfx ANIM_TAG_FIRE loadspritegfx ANIM_TAG_FIRE_PLUME - loopsewithpan SE_M_SACRED_FIRE, 192, 7, 5 + loopsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER, 7, 5 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 50, 5, -2, 0 delay 1 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, -20, -10, 50, 5, -1, -1 @@ -4984,13 +4968,13 @@ Move_SACRED_FIRE:: createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 waitforvisualfinish - playsewithpan SE_M_SACRED_FIRE2, 63 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET createsprite gLargeFlameSpriteTemplate, ANIM_TARGET, 2, -16, 0, 70, 16, 0, 1 delay 10 - playsewithpan SE_M_SACRED_FIRE2, 63 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET createsprite gLargeFlameSpriteTemplate, ANIM_TARGET, 2, 0, 0, 70, 16, 0, 1 delay 10 - playsewithpan SE_M_SACRED_FIRE2, 63 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET createsprite gLargeFlameSpriteTemplate, ANIM_TARGET, 2, 16, 0, 80, 16, 0, 1 delay 1 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 @@ -4998,7 +4982,7 @@ Move_SACRED_FIRE:: waitforvisualfinish createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 1 - playsewithpan SE_M_FLAME_WHEEL2, 63 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0 delay 1 createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 0, 1 @@ -5017,32 +5001,32 @@ Move_SACRED_FIRE:: waitforvisualfinish end -Move_SCRATCH:: +Move_SCRATCH: loadspritegfx ANIM_TAG_SCRATCH - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET createsprite gScratchSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Move_DRAGON_BREATH:: +Move_DRAGON_BREATH: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER - monbgprio_28 1 - loopsewithpan SE_M_FLAME_WHEEL, 192, 7, 7 + splitbgprio ANIM_TARGET + loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 7, 7 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 - createvisualtask AnimTask_BlendSelected, 10, 4, 1, 0, 9, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 9, RGB_RED createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 21, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 21, 1 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 @@ -5059,30 +5043,30 @@ Move_DRAGON_BREATH:: delay 2 createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 1, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_ROAR:: +Move_ROAR: loadspritegfx ANIM_TAG_NOISE_LINE monbg ANIM_ATTACKER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 8, 8 - createvisualtask SoundTask_PlayDoubleCry, 2, 0, DOUBLE_CRY_ROAR - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1 + createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_ROAR + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 call RoarEffect delay 20 - createvisualtask AnimTask_SlideOffScreen, 5, 1, 2 + createvisualtask AnimTask_SlideOffScreen, 5, ANIM_TARGET, 2 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff waitforvisualfinish - createvisualtask SoundTask_WaitForCry, 5, + createvisualtask SoundTask_WaitForCry, 5 waitforvisualfinish end -RoarEffect:: +RoarEffect: createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, -8, 0 createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 2 createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 1 @@ -5092,19 +5076,19 @@ RoarEffect:: createsprite gRoarNoiseLineSpriteTemplate, ANIM_ATTACKER, 2, 24, 8, 1 return -Move_GROWL:: +Move_GROWL: loadspritegfx ANIM_TAG_NOISE_LINE - createvisualtask SoundTask_PlayDoubleCry, 2, 0, DOUBLE_CRY_GROWL + createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, DOUBLE_CRY_GROWL call RoarEffect delay 10 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 9, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 9, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 9, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 9, 1 waitforvisualfinish - createvisualtask SoundTask_WaitForCry, 5, + createvisualtask SoundTask_WaitForCry, 5 waitforvisualfinish end -Move_SNORE:: +Move_SNORE: loadspritegfx ANIM_TAG_SNORE_Z monbg ANIM_ATK_PARTNER setalpha 8, 8 @@ -5116,22 +5100,22 @@ Move_SNORE:: blendoff end -SnoreEffect:: - playsewithpan SE_M_SNORE, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, 0, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 7, 1 +SnoreEffect: + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, ANIM_ATTACKER, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 7, 1 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 14, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -42, -38, 24, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0, -42, 24, 0, 0 createsprite gSnoreZSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 42, -38, 24, 0, 0 return -Move_LIGHT_SCREEN:: +Move_LIGHT_SCREEN: loadspritegfx ANIM_TAG_SPARKLE_3 loadspritegfx ANIM_TAG_GREEN_LIGHT_WALL setalpha 0, 16 - waitplaysewithpan SE_M_REFLECT, 192, 15 - createsprite gLightScreenWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, 10166 + waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 15 + createsprite gLightScreenWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, ANIM_TAG_GREEN_LIGHT_WALL delay 10 call SpecialScreenSparkle waitforvisualfinish @@ -5139,102 +5123,102 @@ Move_LIGHT_SCREEN:: blendoff end -SpecialScreenSparkle:: - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, 0, 1 +SpecialScreenSparkle: + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 23, 0, ANIM_ATTACKER, TRUE delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 31, -8, ANIM_ATTACKER, TRUE delay 5 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 20, ANIM_ATTACKER, TRUE delay 7 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, -15, ANIM_ATTACKER, TRUE delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 20, 10, ANIM_ATTACKER, TRUE delay 6 - createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, 0, 1 + createsprite gSpecialScreenSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 18, ANIM_ATTACKER, TRUE return -Move_MIRROR_COAT:: +Move_MIRROR_COAT: loadspritegfx ANIM_TAG_SPARKLE_3 loadspritegfx ANIM_TAG_RED_LIGHT_WALL setalpha 0, 16 - createsprite gMirrorCoatWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, 10168 + createsprite gMirrorCoatWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, ANIM_TAG_RED_LIGHT_WALL delay 10 - playsewithpan SE_M_REFLECT, 192 + playsewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER call SpecialScreenSparkle waitforvisualfinish delay 1 blendoff end -Move_REFLECT:: +Move_REFLECT: loadspritegfx ANIM_TAG_SPARKLE_4 loadspritegfx ANIM_TAG_BLUE_LIGHT_WALL setalpha 0, 16 - waitplaysewithpan SE_M_REFLECT, 192, 15 - createsprite gReflectWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, 10167 + waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 15 + createsprite gReflectWallSpriteTemplate, ANIM_ATTACKER, 1, 40, 0, ANIM_TAG_BLUE_LIGHT_WALL delay 20 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, 0, 1 + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 30, 0, ANIM_ATTACKER, TRUE delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, 0, 1 + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 19, -12, ANIM_ATTACKER, TRUE delay 7 - createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, 0, 1 + createsprite gReflectSparkleSpriteTemplate, ANIM_ATTACKER, 2, 10, 20, ANIM_ATTACKER, TRUE waitforvisualfinish delay 1 blendoff end -Move_BARRIER:: +Move_BARRIER: loadspritegfx ANIM_TAG_GRAY_LIGHT_WALL setalpha 0, 16 - waitplaysewithpan SE_M_BARRIER, 192, 15 - createsprite gBarrierWallSpriteTemplate, ANIM_ATTACKER, 3, 40, 0, 10169 + waitplaysewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER, 15 + createsprite gBarrierWallSpriteTemplate, ANIM_ATTACKER, 3, 40, 0, ANIM_TAG_GRAY_LIGHT_WALL waitforvisualfinish delay 1 blendoff end -Move_BUBBLE:: +Move_BUBBLE: loadspritegfx ANIM_TAG_BUBBLE loadspritegfx ANIM_TAG_SMALL_BUBBLES - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 delay 1 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 15, -15, 10, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 35, 37, 40, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 10, -37, 30, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 30, 10, 15, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 20, 33, 20, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 delay 6 createsprite gWaterBubbleProjectileSpriteTemplate, ANIM_ATTACKER, 2, 18, 0, 25, -30, 10, 128, 100 - playsewithpan SE_M_BUBBLE, 192 - waitplaysewithpan SE_M_BUBBLE2, 63, 100 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET, 100 waitforvisualfinish call WaterBubblesEffectLong waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_SMOG:: +Move_SMOG: loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD monbg ANIM_DEF_PARTNER - monbgprio_29 + splitbgprio_all setalpha 12, 8 - loopsewithpan SE_M_MIST, 63, 17, 10 + loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 17, 10 call SmogCloud call SmogCloud call SmogCloud @@ -5243,45 +5227,45 @@ Move_SMOG:: call SmogCloud call SmogCloud delay 120 - loopsewithpan SE_M_TOXIC, 63, 18, 2 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, 26650 + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 18, 2 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(26, 0, 26) delay 10 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 15, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 15, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -SmogCloud:: +SmogCloud: createsprite gSmogCloudSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 48, 240, 1, 0 delay 7 return -Move_FAINT_ATTACK:: +Move_FAINT_ATTACK: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_ATTACKER - fadetobg 1 + fadetobg BG_DARK waitbgfadein delay 0 - playsewithpan SE_M_FAINT_ATTACK, 192 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 1, 3 + playsewithpan SE_M_FAINT_ATTACK, SOUND_PAN_ATTACKER + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 3 createvisualtask AnimTask_AttackerFadeToInvisible, 2, 1 waitforvisualfinish clearmonbg ANIM_ATTACKER - invisible 0 + invisible ANIM_ATTACKER delay 1 - createvisualtask AnimTask_SetAttackerInvisibleWaitForSignal, 2, - monbg 1 + createvisualtask AnimTask_SetAttackerInvisibleWaitForSignal, 2 + monbg ANIM_TARGET setalpha 12, 8 delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 9, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 9, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 1 - setarg 7, 4096 + setarg 7, 0x1000 delay 32 createvisualtask AnimTask_InitAttackerFadeFromInvisible, 2 monbg ANIM_ATTACKER @@ -5293,12 +5277,12 @@ Move_FAINT_ATTACK:: waitbgfadein end -Move_SAND_ATTACK:: +Move_SAND_ATTACK: loadspritegfx ANIM_TAG_MUD_SAND monbg ANIM_ATK_PARTNER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 12, 8 - playsewithpan SE_M_SAND_ATTACK, 192 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 @@ -5313,7 +5297,7 @@ Move_SAND_ATTACK:: blendoff end -SandAttackDirt:: +SandAttackDirt: createsprite gSandAttackDirtSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, 0, 0 createsprite gSandAttackDirtSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, 10, 10 createsprite gSandAttackDirtSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, -10, -10 @@ -5322,9 +5306,9 @@ SandAttackDirt:: delay 2 return -Move_MUD_SLAP:: +Move_MUD_SLAP: loadspritegfx ANIM_TAG_MUD_SAND - playsewithpan SE_M_SAND_ATTACK, 192 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 2 @@ -5337,7 +5321,7 @@ Move_MUD_SLAP:: waitforvisualfinish end -MudSlapMud:: +MudSlapMud: createsprite gMudSlapMudSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, 0, 0 createsprite gMudSlapMudSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, 10, 5 createsprite gMudSlapMudSpriteTemplate, ANIM_TARGET, 2, 15, 15, 20, -10, -5 @@ -5346,18 +5330,18 @@ MudSlapMud:: delay 2 return -Move_DRAGON_RAGE:: +Move_DRAGON_RAGE: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_FIRE_PLUME - playsewithpan SE_M_DRAGON_RAGE, 192 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 40, 1 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_TARGET, 2, 0, 15, 0, 0, 4 waitforvisualfinish createsprite gDragonRageFireSpitSpriteTemplate, ANIM_TARGET, 2, 30, 15, 0, 10, 10 waitforvisualfinish - loopsewithpan SE_M_FLAME_WHEEL2, 63, 11, 3 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 3, 25, 1 + loopsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET, 11, 3 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 3, 25, 1 createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 66, 1, 5, 0 delay 1 createsprite gDragonRageFirePlumeSpriteTemplate, ANIM_TARGET, 66, 1, -10, -15 @@ -5378,98 +5362,98 @@ Move_DRAGON_RAGE:: waitforvisualfinish end -Move_RAIN_DANCE:: +Move_RAIN_DANCE: loadspritegfx ANIM_TAG_RAIN_DROPS - playsewithpan SE_M_RAIN_DANCE, 192 - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 2, 0, 4, RGB_BLACK + playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 120 delay 120 delay 30 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK waitforvisualfinish end -Move_BITE:: +Move_BITE: loadspritegfx ANIM_TAG_SHARP_TEETH loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_BITE, 63 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0, -32, 0, 0, 819, 10 createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 4, 0, -819, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 4, 7, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 7, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 1 end -Move_CRUNCH:: +Move_CRUNCH: loadspritegfx ANIM_TAG_SHARP_TEETH loadspritegfx ANIM_TAG_IMPACT - monbg 1 - fadetobg 1 + monbg ANIM_TARGET + fadetobg BG_DARK waitbgfadein setalpha 12, 8 - playsewithpan SE_M_BITE, 63 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, -32, -32, 1, 819, 819, 10 createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 32, 32, 5, -819, -819, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 7, 5, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -8, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 7, 5, 2 waitforvisualfinish - playsewithpan SE_M_BITE, 63 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, 32, -32, 7, -819, 819, 10 createsprite gSharpTeethSpriteTemplate, ANIM_ATTACKER, 2, -32, 32, 3, 819, -819, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 8, 4, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 8, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 8, 4, 2 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff delay 1 restorebg waitbgfadein end -Move_CLAMP:: +Move_CLAMP: loadspritegfx ANIM_TAG_CLAMP loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_VICEGRIP, 63 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 2, 819, 0, 10 createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 6, -819, 0, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Move_ICE_BEAM:: - monbg 1 - monbgprio_28 1 +Move_ICE_BEAM: + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 loadspritegfx ANIM_TAG_ICE_CRYSTALS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK waitforvisualfinish - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, -64, 63, 4, 4, 0, 10 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 4, 4, 0, 10 createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20 createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, -12, 0, -12, 20 delay 1 call IceBeamCreateCrystals call IceBeamCreateCrystals call IceBeamCreateCrystals - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, -31, 0, 7, 32384 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 25, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, -31, 0, 7, RGB(0, 20, 31) + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 25, 1 call IceBeamCreateCrystals call IceBeamCreateCrystals call IceBeamCreateCrystals @@ -5484,42 +5468,42 @@ Move_ICE_BEAM:: waitforvisualfinish delay 20 call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 5, 7, 0, 32384 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 5, 7, 0, RGB(0, 20, 31) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 7, 0, RGB_BLACK waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -IceBeamCreateCrystals:: +IceBeamCreateCrystals: createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 12, 0, 12, 20 createsprite gIceBeamOuterCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, -12, 0, -12, 20 createsprite gIceBeamInnerCrystalSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 11 delay 1 return -Move_WITHDRAW:: - playsewithpan SE_M_HEADBUTT, 192 - createvisualtask AnimTask_Withdraw, 5, +Move_WITHDRAW: + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER + createvisualtask AnimTask_Withdraw, 5 waitforvisualfinish end -Move_AURORA_BEAM:: +Move_AURORA_BEAM: loadspritegfx ANIM_TAG_RAINBOW_RINGS - fadetobg 20 + fadetobg BG_AURORA waitbgfadein - playsewithpan SE_M_BUBBLE_BEAM, 192 + playsewithpan SE_M_BUBBLE_BEAM, SOUND_PAN_ATTACKER setarg 7, 0 createvisualtask AnimTask_RotateAuroraRingColors, 10, 130 call AuroraBeamCreateRings - createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 17, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 1, 0, 17, 1 call AuroraBeamCreateRings call AuroraBeamCreateRings call AuroraBeamCreateRings - setarg 7, 65535 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, -64, 63, 3, 6, 0, 10 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 40, 1 + setarg 7, 0xFFFF + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_BUBBLE_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 3, 6, 0, 10 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 40, 1 call AuroraBeamCreateRings call AuroraBeamCreateRings call AuroraBeamCreateRings @@ -5531,7 +5515,7 @@ Move_AURORA_BEAM:: waitbgfadein end -AuroraBeamCreateRings:: +AuroraBeamCreateRings: createsprite gAuroraBeamRingSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 17 delay 1 createsprite gAuroraBeamRingSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 17 @@ -5542,25 +5526,26 @@ AuroraBeamCreateRings:: delay 1 return -Move_SOLAR_BEAM:: +Move_SOLAR_BEAM: loadspritegfx ANIM_TAG_ORBS choosetwoturnanim SolarBeamSetUp, SolarBeamUnleash -SolarBeamEnd:: + +SolarBeamEnd: waitforvisualfinish end -SolarBeamSetUp:: +SolarBeamSetUp: monbg ANIM_ATK_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 1, 4, 0, 11, 12287 - playsewithpan SE_M_MEGA_KICK, 192 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 1, 4, 0, 11, RGB(31, 31, 11) + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call SolarBeamAbsorbEffect waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff goto SolarBeamEnd -SolarBeamAbsorbEffect:: +SolarBeamAbsorbEffect: createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, 40, 16 delay 2 createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -40, -40, 16 @@ -5591,18 +5576,18 @@ SolarBeamAbsorbEffect:: delay 2 return -SolarBeamUnleash:: +SolarBeamUnleash: call SetSolarBeamBg - panse_1B SE_M_SOLAR_BEAM, 192, 63, 2, 0 - createvisualtask AnimTask_CreateSmallSolarBeamOrbs, 5, + panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 + createvisualtask AnimTask_CreateSmallSolarBeamOrbs, 5 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0 delay 4 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 delay 4 - createvisualtask AnimTask_BlendSelected, 10, 4, 1, 0, 10, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 0, 10, RGB(25, 31, 0) createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2 delay 4 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 65, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3 delay 4 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4 @@ -5614,11 +5599,11 @@ SolarBeamUnleash:: call SolarBeamUnleash1 call SolarBeamUnleash1 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 1, 10, 0, RGB(25, 31, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 1, 10, 0, RGB(25, 31, 0) call UnsetSolarBeamBg goto SolarBeamEnd -SolarBeamUnleash1:: +SolarBeamUnleash1: createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0 delay 4 createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1 @@ -5635,22 +5620,21 @@ SolarBeamUnleash1:: delay 4 return -Move_BLIZZARD:: +Move_BLIZZARD: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER - createvisualtask AnimTask_GetAttackerSide, 2, - jumpargeq 7, 1, BlizzardOnPlayer + createvisualtask AnimTask_GetAttackerSide, 2 + jumprettrue BlizzardAgainstPlayer fadetobg BG_HIGHSPEED_OPPONENT - -BlizzardContinue:: +BlizzardContinue: waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1 waitbgfadein waitforvisualfinish - panse_1B SE_M_BLIZZARD, 192, 63, 2, 0 + panse SE_M_BLIZZARD, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call BlizzardIceCrystals call BlizzardIceCrystals - playsewithpan SE_M_BLIZZARD2, 63 + playsewithpan SE_M_BLIZZARD2, SOUND_PAN_TARGET waitforvisualfinish call IceCrystalEffectLong waitforvisualfinish @@ -5658,11 +5642,11 @@ BlizzardContinue:: delay 20 restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -BlizzardIceCrystals:: +BlizzardIceCrystals: createsprite gSwirlingSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 72, 1 createsprite gBlizzardIceCrystalSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 80, 0, 0, 1 delay 3 @@ -5686,29 +5670,29 @@ BlizzardIceCrystals:: delay 3 return -BlizzardOnPlayer:: +BlizzardAgainstPlayer: fadetobg BG_HIGHSPEED_PLAYER goto BlizzardContinue -Move_POWDER_SNOW:: +Move_POWDER_SNOW: loadspritegfx ANIM_TAG_ICE_CRYSTALS monbg ANIM_DEF_PARTNER - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 0, 3, RGB_BLACK waitforvisualfinish - panse_1B SE_M_GUST, 192, 63, 2, 0 + panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call PowderSnowSnowballs call PowderSnowSnowballs - playsewithpan SE_M_GUST2, 63 + playsewithpan SE_M_GUST2, SOUND_PAN_TARGET waitforvisualfinish waitsound call IceCrystalEffectLong waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 20 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 3, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 3, 0, RGB_BLACK end -PowderSnowSnowballs:: +PowderSnowSnowballs: createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, 0, 0, 0, 56, 4, 4, 1 delay 3 createsprite gPowderSnowSnowballSpriteTemplate, ANIM_ATTACKER, 40, 0, -10, 0, -10, 56, 4, 4, 1 @@ -5725,20 +5709,20 @@ PowderSnowSnowballs:: delay 3 return -Move_HYDRO_PUMP:: +Move_HYDRO_PUMP: loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 40, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1 delay 6 - panse_1B SE_M_HYDRO_PUMP, 192, 63, 2, 0 + panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createvisualtask AnimTask_StartSinAnimTimer, 5, 100 call HydroPumpBeams call HydroPumpBeams call HydroPumpBeams - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 37, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 37, 1 call HydroPumpHitSplats call HydroPumpBeams call HydroPumpBeams @@ -5760,7 +5744,7 @@ Move_HYDRO_PUMP:: blendoff end -HydroPumpBeams:: +HydroPumpBeams: createsprite gHydroPumpOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 createsprite gHydroPumpOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, -16 delay 1 @@ -5769,18 +5753,18 @@ HydroPumpBeams:: delay 1 return -HydroPumpHitSplats:: - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 15, 1, 1 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, -15, 1, 1 +HydroPumpHitSplats : + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 15, ANIM_TARGET, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, -15, ANIM_TARGET, 1 return -Move_SIGNAL_BEAM:: +Move_SIGNAL_BEAM: loadspritegfx ANIM_TAG_GLOWY_RED_ORB loadspritegfx ANIM_TAG_GLOWY_GREEN_ORB loadspritegfx ANIM_TAG_DUCK - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 25, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 25, 1 delay 6 - panse_1B SE_M_BUBBLE_BEAM, 192, 63, 1, 0 + panse SE_M_BUBBLE_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 createvisualtask AnimTask_StartSinAnimTimer, 5, 100 call SignalBeamOrbs call SignalBeamOrbs @@ -5788,8 +5772,8 @@ Move_SIGNAL_BEAM:: call SignalBeamOrbs call SignalBeamOrbs call SignalBeamOrbs - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 25, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 4, 8, 5, 31, 8, 961, 8 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 25, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_TARGET, 8, 5, RGB_RED, 8, RGB(1, 30, 0), 8 call SignalBeamOrbs call SignalBeamOrbs call SignalBeamOrbs @@ -5810,25 +5794,25 @@ Move_SIGNAL_BEAM:: waitforvisualfinish end -SignalBeamOrbs:: +SignalBeamOrbs: createsprite gSignalBeamRedOrbSpriteTemplate, ANIM_TARGET, 3, 10, 10, 0, 16 createsprite gSignalBeamGreenOrbSpriteTemplate, ANIM_TARGET, 3, 10, 10, 0, -16 delay 1 return -Move_ABSORB:: +Move_ABSORB: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish - playsewithpan SE_M_ABSORB, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 + playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish delay 3 call AbsorbEffect @@ -5836,52 +5820,52 @@ Move_ABSORB:: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -AbsorbEffect:: - playsewithpan SE_M_CRABHAMMER, 63 +AbsorbEffect: + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 return -Move_MEGA_DRAIN:: +Move_MEGA_DRAIN: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 8, RGB(13, 31, 12) waitforvisualfinish - playsewithpan SE_M_ABSORB, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 + playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish delay 3 call MegaDrainAbsorbEffect @@ -5889,60 +5873,60 @@ Move_MEGA_DRAIN:: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 8, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 8, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -MegaDrainAbsorbEffect:: - playsewithpan SE_M_BUBBLE3, 63 +MegaDrainAbsorbEffect: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 return -Move_GIGA_DRAIN:: +Move_GIGA_DRAIN: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 12, RGB(13, 31, 12) waitforvisualfinish - playsewithpan SE_M_ABSORB, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 + playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish delay 3 call GigaDrainAbsorbEffect @@ -5950,97 +5934,97 @@ Move_GIGA_DRAIN:: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 12, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 12, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -GigaDrainAbsorbEffect:: - playsewithpan SE_M_GIGA_DRAIN, 63 +GigaDrainAbsorbEffect: + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -40, 35 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 28, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 40, 39 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -32, 26 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -40, 26 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 36, 33 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 - playsewithpan SE_M_GIGA_DRAIN, 63 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 return -Move_LEECH_LIFE:: +Move_LEECH_LIFE: loadspritegfx ANIM_TAG_NEEDLE loadspritegfx ANIM_TAG_ORBS delay 1 loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_2A 1 + splitbgprio_foes ANIM_TARGET setalpha 12, 8 delay 1 createsprite gLeechLifeNeedleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 12 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - playsewithpan SE_M_ABSORB, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + playsewithpan SE_M_ABSORB, SOUND_PAN_TARGET delay 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 7, RGB_BLACK waitforvisualfinish call AbsorbEffect waitforvisualfinish delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SYNTHESIS:: +Move_SYNTHESIS: loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_SPARKLE_2 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 16, 19451 - playsewithpan SE_M_MEGA_KICK, 192 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 16, RGB(27, 31, 18) + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish call HealingEffect waitforvisualfinish end -Move_TOXIC:: +Move_TOXIC: loadspritegfx ANIM_TAG_TOXIC_BUBBLE loadspritegfx ANIM_TAG_POISON_BUBBLE call ToxicBubbles @@ -6051,33 +6035,33 @@ Move_TOXIC:: waitforvisualfinish end -ToxicBubbles:: +ToxicBubbles: createsprite gToxicBubbleSpriteTemplate, ANIM_TARGET, 2, -24, 16, 1, 1 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 15 createsprite gToxicBubbleSpriteTemplate, ANIM_TARGET, 2, 8, 16, 1, 1 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 15 createsprite gToxicBubbleSpriteTemplate, ANIM_TARGET, 2, -8, 16, 1, 1 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 15 createsprite gToxicBubbleSpriteTemplate, ANIM_TARGET, 2, 24, 16, 1, 1 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 15 return -Move_SLUDGE:: +Move_SLUDGE: loadspritegfx ANIM_TAG_POISON_BUBBLE - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, 31774 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) call PoisonBubblesEffect waitforvisualfinish end -Move_SLUDGE_BOMB:: +Move_SLUDGE_BOMB: loadspritegfx ANIM_TAG_POISON_BUBBLE call SludgeBombProjectile call SludgeBombProjectile @@ -6089,25 +6073,25 @@ Move_SLUDGE_BOMB:: call SludgeBombProjectile call SludgeBombProjectile call SludgeBombProjectile - createvisualtask AnimTask_ShakeMon2, 5, 1, 3, 0, 15, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 2, 0, 12, 31774 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 3, 0, 15, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 2, 0, 12, RGB(30, 0, 31) createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 27, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -27, 44, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 39, -28, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -42, -42, 20 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET delay 5 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 0, 40, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -8, -44, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -46, -28, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 46, 9, 20 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET delay 5 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 42, 0, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -43, -12, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, 16, -46, 20 createsprite gSludgeBombHitParticleSpriteTemplate, ANIM_TARGET, 2, -16, 44, 20 - playsewithpan SE_M_DIG, 63 + playsewithpan SE_M_DIG, SOUND_PAN_TARGET delay 0 waitsound waitforvisualfinish @@ -6115,186 +6099,186 @@ Move_SLUDGE_BOMB:: waitforvisualfinish end -SludgeBombProjectile:: - playsewithpan SE_M_BUBBLE3, 192 +SludgeBombProjectile: + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER createsprite gSludgeProjectileSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 0 delay 3 return -Move_ACID:: +Move_ACID: loadspritegfx ANIM_TAG_POISON_BUBBLE monbg ANIM_DEF_PARTNER createsprite gAcidPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, 0, 0 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 createsprite gAcidPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, 24, 0 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 createsprite gAcidPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, 0, 40, 1, -24, 0 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 15 - createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 10, 1 - createvisualtask AnimTask_ShakeMon2, 5, 3, 2, 0, 10, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 20, 2, 2, 0, 12, 31774 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_DEF_PARTNER, 2, 0, 10, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 2, 2, 0, 12, RGB(30, 0, 31) createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 0, -22, 0, 15, 55 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, -26, -24, 0, 15, 55 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 15, -27, 0, 15, 50 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, -15, -17, 0, 10, 45 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET delay 10 createsprite gAcidPoisonDropletSpriteTemplate, ANIM_TARGET, 2, 27, -22, 0, 15, 50 - playsewithpan SE_M_BUBBLE, 63 + playsewithpan SE_M_BUBBLE, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_BONEMERANG:: +Move_BONEMERANG: loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_BONEMERANG, 192 + playsewithpan SE_M_BONEMERANG, SOUND_PAN_ATTACKER createsprite gBonemerangSpriteTemplate, ANIM_ATTACKER, 2 delay 20 - playsewithpan SE_M_HORN_ATTACK, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 5, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 5, 1 delay 17 - playsewithpan SE_M_VITAL_THROW, 192 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, -4 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_BONE_CLUB:: +Move_BONE_CLUB: loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_BONEMERANG, 63 + playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15 delay 12 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, 0, 10, 0, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 5, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_BLACK, 10, RGB_BLACK, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_BONE_RUSH:: +Move_BONE_RUSH: loadspritegfx ANIM_TAG_BONE loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_BONEMERANG, 63 + playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15 delay 12 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 3, 5, 1 - playsewithpan SE_M_HORN_ATTACK, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 3, 5, 1 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SPIKES:: +Move_SPIKES: loadspritegfx ANIM_TAG_SPIKES monbg ANIM_DEF_PARTNER - playsewithpan SE_M_JUMP_KICK, 192 - waitplaysewithpan SE_M_HORN_ATTACK, 63, 28 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 28 createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 24, 30 delay 10 - playsewithpan SE_M_JUMP_KICK, 192 - waitplaysewithpan SE_M_HORN_ATTACK, 63, 28 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 28 createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, -24, 24, 30 delay 10 - waitplaysewithpan SE_M_HORN_ATTACK, 63, 28 + waitplaysewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET, 28 createsprite gSpikesSpriteTemplate, ANIM_TARGET, 2, 20, 0, 24, 24, 30 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_MEGAHORN:: +Move_MEGAHORN: loadspritegfx ANIM_TAG_HORN_HIT_2 loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER jumpifcontest MegahornInContest - fadetobg 7 + fadetobg BG_DRILL waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 768, 1, -1 -MegahornContinue:: +MegahornContinue: waitbgfadein setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 2, 0, 15, 1 waitforvisualfinish delay 10 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 6 delay 3 createsprite gMegahornHornSpriteTemplate, ANIM_ATTACKER, 3, -42, 25, 0, 0, 6 delay 4 - playsewithpan SE_M_VICEGRIP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -16, 4, 1, 4 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, -4, 1, 12, 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 7, 5, 1, RGB_WHITE, 10, 0, 0 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, -4, 1, 12, 1 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATTACKER | F_PAL_TARGET, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11 delay 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 7 waitforvisualfinish - waitforvisualfinish + waitforvisualfinish @ Redundant clearmonbg ANIM_DEF_PARTNER blendoff restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -MegahornInContest:: - fadetobg 8 +MegahornInContest: + fadetobg BG_DRILL_CONTESTS waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, 2304, 768, 0, -1 goto MegahornContinue -Move_GUST:: +Move_GUST: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_GUST, 63 + playsewithpan SE_M_GUST, SOUND_PAN_TARGET createsprite gEllipticalGustSpriteTemplate, ANIM_ATTACKER, 2, 0, -16 createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 7, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - playsewithpan SE_M_GUST2, 63 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 1, 0, 7, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + playsewithpan SE_M_GUST2, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_WING_ATTACK:: +Move_WING_ATTACK: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - loopsewithpan SE_M_WING_ATTACK, 192, 20, 2 + loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2 createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4 createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70 createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, -25, 0, 0, 0, 20 @@ -6302,9 +6286,9 @@ Move_WING_ATTACK:: delay 24 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 9 delay 17 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 1, 1 - loopsewithpan SE_M_DOUBLE_SLAP, 63, 5, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, ANIM_TARGET, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, ANIM_TARGET, 1 + loopsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET, 5, 2 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11 waitforvisualfinish @@ -6312,30 +6296,30 @@ Move_WING_ATTACK:: blendoff end -Move_PECK:: +Move_PECK: loadspritegfx ANIM_TAG_IMPACT - playsewithpan SE_M_HORN_ATTACK, 63 - createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 3, -768, 1, 2 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -12, 0, 1, 3 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_TARGET + createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 3, -768, ANIM_TARGET, 2 + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -12, 0, ANIM_TARGET, 3 waitforvisualfinish end -Move_AEROBLAST:: +Move_AEROBLAST: loadspritegfx ANIM_TAG_AIR_WAVE_2 loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER call SetSkyBg - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 call AeroblastBeam - createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 50, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 50, 1 call AeroblastBeam call AeroblastBeam call AeroblastBeam call AeroblastBeam waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - playsewithpan SE_M_RAZOR_WIND, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -6343,106 +6327,106 @@ Move_AEROBLAST:: call UnsetSkyBg end -AeroblastBeam:: - playsewithpan SE_M_JUMP_KICK, 192 +AeroblastBeam: + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 0, 0 createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 0, 0 delay 3 - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 1, 0 createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 1, 0 delay 3 - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 2, 0 createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 2, 0 delay 3 - playsewithpan SE_M_JUMP_KICK, 192 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -12, 0, -12, 15, 3, 0 createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 26, 8, 12, 8, 15, 3, 0 delay 3 return -Move_WATER_GUN:: +Move_WATER_GUN: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 createsprite gWaterGunProjectileSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 40, -25 - playsewithpan SE_M_BUBBLE, 192 + playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 8, 1 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 1, 2 + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 1, 0, 8, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 2 createsprite gWaterGunDropletSpriteTemplate, ANIM_ATTACKER, 2, 0, -15, 0, 15, 55 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET delay 10 createsprite gWaterGunDropletSpriteTemplate, ANIM_ATTACKER, 2, 15, -20, 0, 15, 50 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET delay 10 createsprite gWaterGunDropletSpriteTemplate, ANIM_ATTACKER, 2, -15, -10, 0, 10, 45 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_CRABHAMMER:: +Move_CRABHAMMER: loadspritegfx ANIM_TAG_ICE_CRYSTALS loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gWaterHitSplatSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 32429, 10, 0, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB(13, 21, 31), 10, RGB_BLACK, 0 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4 waitforvisualfinish delay 8 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 4 waitforvisualfinish - loopsewithpan SE_M_CRABHAMMER, 63, 20, 3 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 4, 8, 1 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 20, 1 + loopsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET, 20, 3 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 4, 8, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 15, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -15, 15, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, -20, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -10, -20, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 5, 8, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, 5, 8, 20, ANIM_TARGET delay 4 - createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 20, 1 + createsprite gSmallBubblePairSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 20, ANIM_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SURF:: - createvisualtask AnimTask_CreateSurfWave, 2, 0 +Move_SURF: + createvisualtask AnimTask_CreateSurfWave, 2, FALSE delay 24 - panse_1B SE_M_SURF, 192, 63, 2, 0 + panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 waitforvisualfinish end -Move_FLAMETHROWER:: +Move_FLAMETHROWER: loadspritegfx ANIM_TAG_SMALL_EMBER monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 46, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1 delay 6 createvisualtask AnimTask_StartSinAnimTimer, 5, 100 - panse_1B SE_M_FLAMETHROWER, 192, 63, 2, 0 + panse SE_M_FLAMETHROWER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call FlamethrowerCreateFlames call FlamethrowerCreateFlames call FlamethrowerCreateFlames - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 43, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 43, 1 call FlamethrowerCreateFlames call FlamethrowerCreateFlames call FlamethrowerCreateFlames @@ -6456,17 +6440,18 @@ Move_FLAMETHROWER:: blendoff end -FlamethrowerCreateFlames:: +FlamethrowerCreateFlames: createsprite gFlamethrowerFlameSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 delay 2 createsprite gFlamethrowerFlameSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 delay 2 return -Move_SANDSTORM:: +@ Also used by Sandstorm weather +Move_SANDSTORM: loadspritegfx ANIM_TAG_FLYING_DIRT playsewithpan SE_M_SANDSTORM, 0 - createvisualtask AnimTask_LoadSandstormBackground, 5, 0 + createvisualtask AnimTask_LoadSandstormBackground, 5, FALSE delay 16 createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 10, 2304, 96, 0 delay 10 @@ -6483,146 +6468,147 @@ Move_SANDSTORM:: createsprite gFlyingSandCrescentSpriteTemplate, ANIM_ATTACKER, 40, 60, 2560, 96, 0 end -Move_WHIRLPOOL:: +Move_WHIRLPOOL: loadspritegfx ANIM_TAG_WATER_ORB monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 23968 - playsewithpan SE_M_WHIRLPOOL, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 50, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) + playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 50, 1 call WhirlpoolEffect call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 23968 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -WhirlpoolEffect:: - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, 1 +WhirlpoolEffect: + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 384, 50, 8, 50, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 32, 240, 40, 11, -46, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 416, 40, 4, 42, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 31, 288, 45, 6, -42, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 28, 448, 45, 11, 46, ANIM_TARGET delay 2 - createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, 1 + createsprite gWhirlpoolSpriteTemplate, ANIM_TARGET, 2, 0, 33, 464, 50, 10, -50, ANIM_TARGET delay 2 return -Move_FLY:: +Move_FLY: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT choosetwoturnanim FlySetUp, FlyUnleash -FlyEnd:: + +FlyEnd: waitforvisualfinish end -FlySetUp:: - playsewithpan SE_M_FLY, 192 +FlySetUp: + playsewithpan SE_M_FLY, SOUND_PAN_ATTACKER createsprite gFlyBallUpSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336 goto FlyEnd -FlyUnleash:: +FlyUnleash: monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER createsprite gFlyBallAttackSpriteTemplate, ANIM_ATTACKER, 2, 20 delay 20 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 - playsewithpan SE_M_RAZOR_WIND, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto FlyEnd -Move_BOUNCE:: +Move_BOUNCE: loadspritegfx ANIM_TAG_ROUND_SHADOW loadspritegfx ANIM_TAG_IMPACT choosetwoturnanim BounceSetUp, BounceUnleash -BounceEnd:: +BounceEnd: end -BounceSetUp:: - playsewithpan SE_M_TELEPORT, 192 +BounceSetUp: + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER createsprite gBounceBallShrinkSpriteTemplate, ANIM_ATTACKER, 2, 0, 0 goto BounceEnd -BounceUnleash:: +BounceUnleash: monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gBounceBallLandSpriteTemplate, ANIM_TARGET, 3 delay 7 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 11, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 5, 11, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto BounceEnd -Move_KARATE_CHOP:: +Move_KARATE_CHOP: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_TEAM, 63 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0 waitforvisualfinish - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_CROSS_CHOP:: +Move_CROSS_CHOP: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_CROSS_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_MEGA_KICK, 63 + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_TARGET createsprite gCrossChopHandSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0 createsprite gCrossChopHandSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1 delay 40 - playsewithpan SE_M_RAZOR_WIND, 63 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, RGB_WHITE, 10, 0, 10 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_WHITE, 10, RGB_BLACK, 10 createsprite gCrossImpactSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 20 - createvisualtask AnimTask_ShakeMon, 5, 1, 7, 0, 9, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 7, 0, 9, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_JUMP_KICK:: +Move_JUMP_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 3 - createsprite gJumpKickSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, 1, 1, 1 - playsewithpan SE_M_JUMP_KICK, 63 + createsprite gJumpKickSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, ANIM_TARGET, 1, 1 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 7, 1 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 7, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_HI_JUMP_KICK:: +Move_HI_JUMP_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -6632,14 +6618,14 @@ Move_HI_JUMP_KICK:: delay 10 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 3 delay 2 - createsprite gJumpKickSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, 1, 1, 1 - playsewithpan SE_M_JUMP_KICK, 63 + createsprite gJumpKickSpriteTemplate, ANIM_ATTACKER, 2, -16, 8, 0, 0, 10, ANIM_TARGET, 1, 1 + playsewithpan SE_M_JUMP_KICK, SOUND_PAN_TARGET waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -28, 0, 0, 3 delay 3 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 3, 0, 11, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 11, 1 waitforvisualfinish delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6 @@ -6648,54 +6634,55 @@ Move_HI_JUMP_KICK:: blendoff end -Move_DOUBLE_KICK:: +Move_DOUBLE_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 createsprite gFistFootRandomPosSpriteTemplate, ANIM_ATTACKER, 3, 1, 20, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 - waitforvisualfinish + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish + waitforvisualfinish @ Redundant clearmonbg ANIM_DEF_PARTNER blendoff end -Move_TRIPLE_KICK:: +Move_TRIPLE_KICK: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET jumpifmoveturn 0, TripleKickLeft jumpifmoveturn 1, TripleKickRight goto TripleKickCenter -TripleKickContinue:: + +TripleKickContinue: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -TripleKickLeft:: +TripleKickLeft: createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, -16, -8, 20, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -16, -16, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -16, -16, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 goto TripleKickContinue -TripleKickRight:: +TripleKickRight: createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 8, 8, 20, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 goto TripleKickContinue -TripleKickCenter:: +TripleKickCenter: createsprite gFistFootSpriteTemplate, ANIM_TARGET, 4, 0, 0, 20, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -8, 1, 1 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -8, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 goto TripleKickContinue -Move_DYNAMIC_PUNCH:: +Move_DYNAMIC_PUNCH: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_EXPLOSION @@ -6703,55 +6690,55 @@ Move_DYNAMIC_PUNCH:: delay 1 monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 20, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 7, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 7, 1 delay 1 waitsound - playsewithpan SE_M_SELF_DESTRUCT, 63 - createvisualtask AnimTask_ShakeMon2, 5, 1, 5, 0, 28, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 5, 0, 28, 1 createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_COUNTER:: +Move_COUNTER: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 18, 6, 1, 4 - playsewithpan SE_M_VITAL_THROW, 192 + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 18, 6, 1, 4 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -15, 18, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -15, 18, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 25, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 25, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, -15, 18, 8, 1, 0 delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -4, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, -4, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 0, -4, 8, 1, 0 delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 15, 9, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 15, 9, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 3, 15, 9, 8, 1, 0 delay 5 @@ -6761,17 +6748,17 @@ Move_COUNTER:: blendoff end -Move_VITAL_THROW:: +Move_VITAL_THROW: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_VITAL_THROW, 192 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 4, 1, 2 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_ATTACKER + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 4, 1, 2 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 20, 0, 0, 4 delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -24, 0, 0, 4 waitforvisualfinish @@ -6784,19 +6771,19 @@ Move_VITAL_THROW:: blendoff end -Move_ROCK_SMASH:: +Move_ROCK_SMASH: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 createsprite gFistFootSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 8, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 5, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 waitforvisualfinish - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 20, 24, 14, 2 createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 5, 0, -20, 24, 14, 1 createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 5, 20, -24, 14, 2 @@ -6805,26 +6792,26 @@ Move_ROCK_SMASH:: createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 30, -18, 8, 2 createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -30, 18, 8, 2 createsprite gRockFragmentSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, -30, -18, 8, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 7, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 7, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_SUBMISSION:: +Move_SUBMISSION: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_DOUBLE_TEAM, 192 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 10 - waitplaysewithpan SE_M_DOUBLE_TEAM, 192, 20 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 30 - waitplaysewithpan SE_M_DOUBLE_TEAM, 192, 40 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 50 - waitplaysewithpan SE_M_DOUBLE_TEAM, 192, 60 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 70 - waitplaysewithpan SE_M_DOUBLE_TEAM, 192, 80 - waitplaysewithpan SE_M_COMET_PUNCH, 63, 90 + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 10 + waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 20 + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 30 + waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 40 + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 50 + waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 60 + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 70 + waitplaysewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER, 80 + waitplaysewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET, 90 createvisualtask AnimTask_TranslateMonElliptical, 2, 0, -18, 6, 6, 4 createvisualtask AnimTask_TranslateMonElliptical, 2, 1, 18, 6, 6, 4 call SubmissionHit @@ -6835,43 +6822,44 @@ Move_SUBMISSION:: blendoff end -SubmissionHit:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -12, 1, 1 +SubmissionHit: + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, -12, ANIM_TARGET, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, 8, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, -12, 8, ANIM_TARGET, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, 0, 1, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 12, 0, ANIM_TARGET, 1 delay 8 return -Move_SUNNY_DAY:: +@ Also used by Sunny weather +Move_SUNNY_DAY: loadspritegfx ANIM_TAG_SUNLIGHT monbg ANIM_ATK_PARTNER setalpha 13, 3 - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 1, 0, 6, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 0, 6, RGB_WHITE waitforvisualfinish - panse_26 SE_M_PETAL_DANCE, 192, 63, 1, 0 + panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 call SunnyDayLightRay call SunnyDayLightRay call SunnyDayLightRay call SunnyDayLightRay waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 1, 6, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 1, 6, 0, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end -SunnyDayLightRay:: +SunnyDayLightRay: createsprite gSunlightRaySpriteTemplate, ANIM_ATTACKER, 40 delay 6 return -Move_COTTON_SPORE:: +Move_COTTON_SPORE: loadspritegfx ANIM_TAG_SPORE monbg ANIM_DEF_PARTNER - monbgprio_28 1 - loopsewithpan SE_M_POISON_POWDER, 63, 18, 10 + splitbgprio ANIM_TARGET + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 18, 10 call CreateCottonSpores call CreateCottonSpores call CreateCottonSpores @@ -6879,7 +6867,7 @@ Move_COTTON_SPORE:: clearmonbg ANIM_DEF_PARTNER end -CreateCottonSpores:: +CreateCottonSpores: createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -20, 85, 80, 0 delay 12 createsprite gSporeParticleSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 170, 80, 0 @@ -6888,12 +6876,12 @@ CreateCottonSpores:: delay 12 return -Move_SPORE:: +Move_SPORE: loadspritegfx ANIM_TAG_SPORE monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_SporeDoubleBattle, 2, - loopsewithpan SE_M_POISON_POWDER, 63, 16, 11 + createvisualtask AnimTask_SporeDoubleBattle, 2 + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 16, 11 call CreateSpore call CreateSpore call CreateSpore @@ -6903,7 +6891,7 @@ Move_SPORE:: blendoff end -CreateSpore:: +CreateSpore: createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -20, 85, 80, 1 delay 12 createsprite gSporeParticleSpriteTemplate, ANIM_TARGET, 2, 0, -10, 170, 80, 1 @@ -6912,13 +6900,13 @@ CreateSpore:: delay 12 return -Move_PETAL_DANCE:: +Move_PETAL_DANCE: loadspritegfx ANIM_TAG_FLOWER loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_PETAL_DANCE, 192 - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 12, 6, 6, 3 + playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 12, 6, 6, 3 createsprite gPetalDanceBigFlowerSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 8, 140 createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, 16, -24, 8, 100 createsprite gPetalDanceSmallFlowerSpriteTemplate, ANIM_ATTACKER, 2, -16, -24, 8, 100 @@ -6939,9 +6927,9 @@ Move_PETAL_DANCE:: waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 5 delay 3 - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon, 2, 1, 6, 0, 8, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 6, 0, 8, 1 waitforvisualfinish delay 8 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 @@ -6950,14 +6938,14 @@ Move_PETAL_DANCE:: blendoff end -Move_RAZOR_LEAF:: +Move_RAZOR_LEAF: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 1 - loopsewithpan SE_M_POISON_POWDER, 192, 10, 5 + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER, 10, 5 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10 delay 2 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -1, -1, 15 @@ -6978,19 +6966,22 @@ Move_RAZOR_LEAF:: delay 2 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8 delay 60 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, 20, 1 createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 22, -20, 1 delay 20 - playsewithpan SE_M_RAZOR_WIND, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 8, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 8, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_ANCIENT_POWER:: +Move_NATURE_POWER: + @ No actual animation, uses the animation of a move from sNaturePowerMoves instead + +Move_ANCIENT_POWER: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER @@ -7002,8 +6993,8 @@ Move_ANCIENT_POWER:: createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, -20, 32, -48, 50, 2 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 20, 32, -28, 60, 1 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, -28, 30, 4 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 30, 1 - playsewithpan SE_M_DRAGON_RAGE, 192 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 30, 1 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER delay 10 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, 15, 32, -48, 25, 5 createsprite gAncientPowerRockSpriteTemplate, ANIM_ATTACKER, 2, -10, 32, -42, 30, 4 @@ -7013,9 +7004,9 @@ Move_ANCIENT_POWER:: waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 0, 0, 4 delay 3 - playsewithpan SE_M_SELF_DESTRUCT, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 waitforvisualfinish @@ -7023,13 +7014,13 @@ Move_ANCIENT_POWER:: blendoff end -Move_OCTAZOOKA:: +Move_OCTAZOOKA: loadspritegfx ANIM_TAG_GRAY_SMOKE loadspritegfx ANIM_TAG_BLACK_BALL - playsewithpan SE_M_MEGA_KICK2, 192 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_ATTACKER createsprite gOctazookaBallSpriteTemplate, ANIM_TARGET, 2, 20, 0, 0, 0, 20, 0 waitforvisualfinish - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, 8, 8, 1, 0 delay 2 createsprite gOctazookaSmokeSpriteTemplate, ANIM_TARGET, 2, -8, -8, 1, 0 @@ -7040,11 +7031,11 @@ Move_OCTAZOOKA:: waitforvisualfinish end -Move_MIST:: +Move_MIST: loadspritegfx ANIM_TAG_MIST_CLOUD monbg ANIM_ATK_PARTNER setalpha 12, 8 - loopsewithpan SE_M_MIST, 192, 20, 15 + loopsewithpan SE_M_MIST, SOUND_PAN_ATTACKER, 20, 15 call MistCloud call MistCloud call MistCloud @@ -7053,54 +7044,54 @@ Move_MIST:: call MistCloud call MistCloud delay 32 - createvisualtask AnimTask_BlendColorCycle, 2, 10, 8, 2, 0, 14, RGB_WHITE + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATK_SIDE, 8, 2, 0, 14, RGB_WHITE waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end -MistCloud:: +MistCloud: createsprite gMistCloudSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 48, 240, 0, 1 delay 7 return -Move_HAZE:: +Move_HAZE: waitforvisualfinish playsewithpan SE_M_HAZE, 0 - createvisualtask AnimTask_HazeScrollingFog, 5, + createvisualtask AnimTask_HazeScrollingFog, 5 delay 30 - createvisualtask AnimTask_BlendSelected, 10, 0 | (0xF << 7), 2, 0, 16, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 2, 0, 16, RGB_BLACK delay 90 - createvisualtask AnimTask_BlendSelected, 10, 0 | (0xF << 7), 1, 16, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BATTLERS_2, 1, 16, 0, RGB_BLACK end -Move_FIRE_PUNCH:: +Move_FIRE_PUNCH: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 9, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 9, RGB_RED createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 0 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 64 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 128 createsprite gFireSpiralInwardSpriteTemplate, ANIM_TARGET, 1, 196 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET waitforvisualfinish createsprite gFistFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 8, 1, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 15, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 15, 1 call FireSpreadEffect delay 4 - playsewithpan SE_M_FIRE_PUNCH, 63 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 4, 0, 9, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 0, 9, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -FireSpreadEffect:: +FireSpreadEffect: createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, 176, 40 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, -192, 240, 40 createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 192, -160, 40 @@ -7110,18 +7101,18 @@ FireSpreadEffect:: createsprite gFireSpreadSpriteTemplate, ANIM_TARGET, 1, 0, 10, 112, -128, 40 return -Move_LEER:: +Move_LEER: loadspritegfx ANIM_TAG_LEER monbg ANIM_ATTACKER - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 8, 8 - playsewithpan SE_M_LEER, 192 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, 0, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1 waitforvisualfinish delay 10 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 9, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 9, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 9, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 9, 1 waitforvisualfinish clearmonbg ANIM_ATTACKER blendoff @@ -7129,20 +7120,20 @@ Move_LEER:: waitforvisualfinish end -Move_DREAM_EATER:: +Move_DREAM_EATER: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_DEF_PARTNER - monbgprio_2A 1 - playsewithpan SE_M_PSYBEAM, 192 + splitbgprio_foes ANIM_TARGET + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground setalpha 8, 8 - playsewithpan SE_M_MINIMIZE, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 5, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, 1, 1 + playsewithpan SE_M_MINIMIZE, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 5, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, ANIM_TARGET, 1 waitforvisualfinish setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 2, 25, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 2, 25, 1 call DreamEaterAbsorb waitforvisualfinish delay 15 @@ -7151,115 +7142,115 @@ Move_DREAM_EATER:: clearmonbg ANIM_DEF_PARTNER blendoff delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -DreamEaterAbsorb:: - playsewithpan SE_M_SWAGGER, 63 +DreamEaterAbsorb: + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -40, 35 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 28, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 40, 39 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -32, 26 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, -15, -16, 36 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 16, 33 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -40, 26 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -5, 15, 36, 33 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, -5, -8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, -10, 20, 20, 39 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 5, 8, 26 createsprite gAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 3, 5, -18, -20, 35 delay 4 return -Move_POISON_GAS:: +Move_POISON_GAS: loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD loadspritegfx ANIM_TAG_POISON_BUBBLE delay 0 monbg ANIM_DEF_PARTNER - monbgprio_29 + splitbgprio_all setalpha 12, 8 delay 0 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 4 - playsewithpan SE_M_MIST, 192 + playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER createsprite gPoisonGasCloudSpriteTemplate, ANIM_TARGET, 0, 64, 0, 0, -32, -6, 4192, 1072, 0 delay 40 - loopsewithpan SE_M_MIST, 63, 28, 6 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 6, 2, 0, 12, 26650 + loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 28, 6 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 6, 2, 0, 12, RGB(26, 0, 26) waitforvisualfinish blendoff clearmonbg ANIM_DEF_PARTNER delay 0 end -Move_BIND:: - createvisualtask AnimTask_SwayMon, 5, 0, 6, 3328, 4, 0 +Move_BIND: + createvisualtask AnimTask_SwayMon, 5, 0, 6, 3328, 4, ANIM_ATTACKER goto BindWrap -BindWrap:: - playsewithpan SE_M_BIND, 63 +BindWrap: + playsewithpan SE_M_BIND, SOUND_PAN_TARGET call BindWrapSqueezeTarget call BindWrapSqueezeTarget waitforvisualfinish end -BindWrapSqueezeTarget:: - createvisualtask AnimTask_ScaleMonAndRestore, 5, 10, -5, 5, 1, 0 +BindWrapSqueezeTarget: + createvisualtask AnimTask_ScaleMonAndRestore, 5, 10, -5, 5, ANIM_TARGET, 0 delay 16 return -Move_WRAP:: - createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, 0, 6, 4, 2, 4 +Move_WRAP: + createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_ATTACKER, 6, 4, 2, 4 goto BindWrap -Move_PSYBEAM:: +Move_PSYBEAM: loadspritegfx ANIM_TAG_GOLD_RING - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_PSYBEAM2, -64, 63, 3, 4, 0, 15 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 3, 4, 0, 15 call PsybeamRings call PsybeamRings - createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, 32351 + createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, ANIM_TARGET + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) call PsybeamRings call PsybeamRings call PsybeamRings @@ -7271,62 +7262,62 @@ Move_PSYBEAM:: call PsybeamRings waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -PsybeamRings:: +PsybeamRings: createsprite gGoldRingSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 13, 0 delay 4 return -Move_HYPNOSIS:: +Move_HYPNOSIS: loadspritegfx ANIM_TAG_GOLD_RING call SetPsychicBackground call HypnosisRings call HypnosisRings call HypnosisRings - createvisualtask AnimTask_BlendColorCycle, 2, 4, 2, 2, 0, 12, 32351 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 2, 2, 0, 12, RGB(31, 18, 31) waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -HypnosisRings:: - playsewithpan SE_M_SUPERSONIC, 192 +HypnosisRings: + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_ATTACKER createsprite gGoldRingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 0, 8, 27, 0 createsprite gGoldRingSpriteTemplate, ANIM_TARGET, 2, 16, -8, 0, -8, 27, 0 delay 6 return -Move_PSYWAVE:: +Move_PSYWAVE: loadspritegfx ANIM_TAG_BLUE_RING - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground createvisualtask AnimTask_StartSinAnimTimer, 5, 100 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, -64, 63, 2, 9, 0, 10 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TELEPORT, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 9, 0, 10 call PsywaveRings call PsywaveRings - createvisualtask AnimTask_BlendColorCycle, 2, 4, 1, 4, 0, 12, 32351 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 1, 4, 0, 12, RGB(31, 18, 31) call PsywaveRings call PsywaveRings call PsywaveRings call PsywaveRings waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -PsywaveRings:: +PsywaveRings: createsprite gPsywaveRingSpriteTemplate, ANIM_TARGET, 3, 10, 10, 0, 16 delay 4 createsprite gPsywaveRingSpriteTemplate, ANIM_TARGET, 3, 10, 10, 0, 16 delay 4 return -Move_ZAP_CANNON:: +Move_ZAP_CANNON: loadspritegfx ANIM_TAG_BLACK_BALL_2 loadspritegfx ANIM_TAG_SPARK_2 - playsewithpan SE_M_THUNDER_WAVE, 192 + playsewithpan SE_M_THUNDER_WAVE, SOUND_PAN_ATTACKER createsprite gZapCannonBallSpriteTemplate, ANIM_TARGET, 3, 10, 0, 0, 0, 30, 0 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 0, 40, 0 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 16, 30, 64, 40, 1 @@ -7337,23 +7328,23 @@ Move_ZAP_CANNON:: createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 160, 40, 0 createsprite gZapCannonSparkSpriteTemplate, ANIM_TARGET, 4, 10, 0, 8, 30, 224, 40, 2 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 delay 15 - waitplaysewithpan SE_M_THUNDERBOLT2, 63, 19 + waitplaysewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET, 19 call ElectricityEffect waitforvisualfinish end -Move_STEEL_WING:: +Move_STEEL_WING: loadspritegfx ANIM_TAG_GUST loadspritegfx ANIM_TAG_IMPACT - loopsewithpan SE_M_HARDEN, 192, 28, 2 + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 waitforvisualfinish monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - loopsewithpan SE_M_WING_ATTACK, 192, 20, 2 + loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2 createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4 createvisualtask AnimTask_AnimateGustTornadoPalette, 5, 1, 70 createsprite gGustToTargetSpriteTemplate, ANIM_ATTACKER, 2, -25, 0, 0, 0, 20 @@ -7361,9 +7352,9 @@ Move_STEEL_WING:: delay 24 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 9 delay 17 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, 1, 1 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 1, 1 - playsewithpan SE_M_RAZOR_WIND, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 16, 0, ANIM_TARGET, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, ANIM_TARGET, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET waitforvisualfinish createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 11 waitforvisualfinish @@ -7371,79 +7362,79 @@ Move_STEEL_WING:: blendoff end -Move_IRON_TAIL:: +Move_IRON_TAIL: loadspritegfx ANIM_TAG_IMPACT - loopsewithpan SE_M_HARDEN, 192, 28, 2 + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 1, 0, 0 waitforvisualfinish - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1 - clearmonbg 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Move_POISON_TAIL:: +Move_POISON_TAIL: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_POISON_BUBBLE - loopsewithpan SE_M_HARDEN, 192, 28, 2 - createvisualtask AnimTask_MetallicShine, 5, 1, 1, 23768 + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 + createvisualtask AnimTask_MetallicShine, 5, 1, 1, RGB(24, 6, 23) waitforvisualfinish - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 0, 1 - clearmonbg 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_ATTACKER, 1 + clearmonbg ANIM_TARGET blendoff call PoisonBubblesEffect waitforvisualfinish end -Move_METAL_CLAW:: +Move_METAL_CLAW: loadspritegfx ANIM_TAG_CLAW_SLASH - loopsewithpan SE_M_HARDEN, 192, 28, 2 + loopsewithpan SE_M_HARDEN, SOUND_PAN_ATTACKER, 28, 2 createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0 waitforvisualfinish createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 2 - playsewithpan SE_M_RAZOR_WIND, 63 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 delay 8 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 2 - playsewithpan SE_M_RAZOR_WIND, 63 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 waitforvisualfinish end -Move_NIGHT_SHADE:: +Move_NIGHT_SHADE: monbg ANIM_ATTACKER - monbgprio_28 0 - playsewithpan SE_M_PSYBEAM, 192 - fadetobg 2 + splitbgprio ANIM_ATTACKER + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + fadetobg BG_GHOST waitbgfadein delay 10 - playsewithpan SE_M_LEER, 192 + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER createvisualtask AnimTask_NightShadeClone, 5, 85 delay 70 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 12, 1 - createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 2, 0, 13, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 12, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 2, 0, 13, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATTACKER delay 1 @@ -7451,117 +7442,117 @@ Move_NIGHT_SHADE:: waitbgfadein end -Move_EGG_BOMB:: +Move_EGG_BOMB: loadspritegfx ANIM_TAG_EXPLOSION loadspritegfx ANIM_TAG_LARGE_FRESH_EGG - playsewithpan SE_M_TAIL_WHIP, 192 + playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER createsprite gEggThrowSpriteTemplate, ANIM_TARGET, 2, 10, 0, 0, 0, 25, -32 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 16, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 16, 1 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, 6, 5, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, -16, -15, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, 16, -5, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, -12, 18, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 createsprite gExplosionSpriteTemplate, ANIM_TARGET, 4, 0, 5, 1, 0 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET delay 3 waitforvisualfinish end -Move_SHADOW_BALL:: +Move_SHADOW_BALL: loadspritegfx ANIM_TAG_SHADOW_BALL - fadetobg 2 + fadetobg BG_GHOST waitbgfadein delay 15 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_MIST, -64, 63, 5, 5, 0, 5 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_MIST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 5, 5, 0, 5 createsprite gShadowBallSpriteTemplate, ANIM_TARGET, 2, 16, 16, 8 waitforvisualfinish - playsewithpan SE_M_SAND_ATTACK, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 8, 1 + playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 8, 1 waitforvisualfinish restorebg waitbgfadein end -Move_LICK:: +Move_LICK: loadspritegfx ANIM_TAG_LICK delay 15 - playsewithpan SE_M_LICK, 63 + playsewithpan SE_M_LICK, SOUND_PAN_TARGET createsprite gLickSpriteTemplate, ANIM_TARGET, 2, 0, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 16, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 16, 1 waitforvisualfinish end -Move_FOCUS_ENERGY:: +Move_FOCUS_ENERGY: loadspritegfx ANIM_TAG_FOCUS_ENERGY - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, RGB_WHITE - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_WHITE + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 call EndureEffect waitforvisualfinish end -Move_BIDE:: - choosetwoturnanim BattleAnimScript_Bide_Setup, BattleAnimScript_Bide_Release +Move_BIDE: + choosetwoturnanim BideSetUp, BideUnleash end -BattleAnimScript_Bide_Setup:: - loopsewithpan SE_M_TAKE_DOWN, 192, 9, 2 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, 31 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 +BideSetUp: + loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish end -BattleAnimScript_Bide_Release:: +BideUnleash: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - loopsewithpan SE_M_TAKE_DOWN, 192, 9, 2 - createvisualtask AnimTask_BlendSelected, 10, 2, 2, 0, 11, RGB(31, 0, 0) - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 + loopsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER, 9, 2 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 0, 11, RGB_RED + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 waitforvisualfinish createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 24, 0, 0, 4 waitforvisualfinish - createvisualtask AnimTask_ShakeMonInPlace, 2, 0, 2, 0, 12, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 16, 1 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 18, -8, 1, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_ATTACKER, 2, 0, 12, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 16, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, 18, -8, ANIM_TARGET, 1 delay 5 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -18, 8, 1, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -18, 8, ANIM_TARGET, 1 delay 5 - playsewithpan SE_M_COMET_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -8, -5, 1, 1 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 1, -8, -5, ANIM_TARGET, 1 waitforvisualfinish delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 7 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 2, 2, 11, 0, RGB(31, 0, 0) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 2, 11, 0, RGB_RED waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_STRING_SHOT:: +Move_STRING_SHOT: loadspritegfx ANIM_TAG_STRING loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish - loopsewithpan SE_M_STRING_SHOT, 192, 9, 6 + loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 call StringShotThread call StringShotThread call StringShotThread @@ -7581,7 +7572,7 @@ Move_STRING_SHOT:: call StringShotThread call StringShotThread waitforvisualfinish - playsewithpan SE_M_STRING_SHOT2, 63 + playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET createsprite gStringWrapSpriteTemplate, ANIM_TARGET, 2, 0, 10 delay 4 createsprite gStringWrapSpriteTemplate, ANIM_TARGET, 2, 0, -2 @@ -7591,23 +7582,23 @@ Move_STRING_SHOT:: clearmonbg ANIM_DEF_PARTNER delay 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK end -StringShotThread:: +StringShotThread: createsprite gWebThreadSpriteTemplate, ANIM_TARGET, 2, 20, 0, 512, 20, 1 delay 1 return -Move_SPIDER_WEB:: +Move_SPIDER_WEB: loadspritegfx ANIM_TAG_SPIDER_WEB loadspritegfx ANIM_TAG_WEB_THREAD monbg ANIM_DEF_PARTNER delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 0, 9, RGB_BLACK waitforvisualfinish - monbgprio_28 1 - loopsewithpan SE_M_STRING_SHOT, 192, 9, 6 + splitbgprio ANIM_TARGET + loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6 call SpiderWebThread call SpiderWebThread call SpiderWebThread @@ -7623,81 +7614,81 @@ Move_SPIDER_WEB:: call SpiderWebThread call SpiderWebThread waitforvisualfinish - playsewithpan SE_M_STRING_SHOT2, 63 - createsprite gSpiderWebSpriteTemplate, ANIM_ATTACKER, 2, + playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET + createsprite gSpiderWebSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 9, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, F_PAL_BG, 2, 9, 0, RGB_BLACK end -SpiderWebThread:: +SpiderWebThread: createsprite gWebThreadSpriteTemplate, ANIM_TARGET, 2, 20, 0, 512, 20, 0 delay 1 return -Move_RAZOR_WIND:: +Move_RAZOR_WIND: choosetwoturnanim RazorWindSetUp, RazorWindUnleash -RazorWindEnd:: +RazorWindEnd: waitforvisualfinish end -RazorWindSetUp:: +RazorWindSetUp: loadspritegfx ANIM_TAG_GUST - playsewithpan SE_M_GUST, 192 + playsewithpan SE_M_GUST, SOUND_PAN_ATTACKER createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 0, 7, 40 createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 85, 7, 40 createsprite gRazorWindTornadoSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 16, 16, 170, 7, 40 waitforvisualfinish - playsewithpan SE_M_GUST2, 192 + playsewithpan SE_M_GUST2, SOUND_PAN_ATTACKER goto RazorWindEnd -RazorWindUnleash:: +RazorWindUnleash: loadspritegfx ANIM_TAG_AIR_WAVE_2 loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, 8, 0, 0, 22, 2, 1 delay 2 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, -8, 16, 14, 22, 1, 1 delay 2 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gAirWaveCrescentSpriteTemplate, ANIM_ATTACKER, 2, 14, 12, -16, -14, 22, 0, 1 delay 17 - playsewithpan SE_M_RAZOR_WIND, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 10, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 2, 0, 10, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 10, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 2, 0, 10, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff goto RazorWindEnd -Move_DISABLE:: +Move_DISABLE: loadspritegfx ANIM_TAG_SPARKLE_4 - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 8, 8 - playsewithpan SE_M_DETECT, 192 + playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 24, -16 waitforvisualfinish - createvisualtask AnimTask_GrowAndGreyscale, 5, - loopsewithpan SE_M_BIND, 63, 15, 4 + createvisualtask AnimTask_GrowAndGrayscale, 5 + loopsewithpan SE_M_BIND, SOUND_PAN_TARGET, 15, 4 waitforvisualfinish delay 1 - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_RECOVER:: +Move_RECOVER: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_ATK_PARTNER setalpha 12, 8 - loopsewithpan SE_M_MEGA_KICK, 192, 13, 3 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 6, 0, 11, 12287 + loopsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER, 13, 3 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 6, 0, 11, RGB(31, 31, 11) call RecoverAbsorbEffect call RecoverAbsorbEffect call RecoverAbsorbEffect @@ -7709,7 +7700,7 @@ Move_RECOVER:: waitforvisualfinish end -RecoverAbsorbEffect:: +RecoverAbsorbEffect: createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 40, -10, 13 delay 3 createsprite gPowerAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -35, -10, 13 @@ -7726,27 +7717,27 @@ RecoverAbsorbEffect:: delay 3 return -Move_MIMIC:: +Move_MIMIC: loadspritegfx ANIM_TAG_ORBS - monbg_22 3 + monbg_static ANIM_DEF_PARTNER setalpha 11, 5 - panse_1B SE_M_MINIMIZE, 63, 192, 253, 0 + panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0 createvisualtask AnimTask_ShrinkTargetCopy, 5, 128, 24 delay 15 createsprite gMimicOrbSpriteTemplate, ANIM_TARGET, 2, -12, 24 delay 10 - setarg 7, 65535 + setarg 7, 0xFFFF waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 2, 0, 11, RGB_WHITE waitforvisualfinish - clearmonbg_23 3 + clearmonbg_static ANIM_DEF_PARTNER blendoff end -Move_CONSTRICT:: +Move_CONSTRICT: loadspritegfx ANIM_TAG_TENDRILS - loopsewithpan SE_M_SCRATCH, 63, 6, 4 + loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 6, 4 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 2 delay 7 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 2 @@ -7754,17 +7745,17 @@ Move_CONSTRICT:: delay 7 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 3, 0, -8, 1, 2 delay 8 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 6, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 6, 1 delay 20 - playsewithpan SE_M_BIND, 63 - setarg 7, 65535 + playsewithpan SE_M_BIND, SOUND_PAN_TARGET + setarg 7, 0xFFFF waitforvisualfinish end -Move_CURSE:: +Move_CURSE: choosetwoturnanim CurseGhost, CurseStats -CurseGhost:: +CurseGhost: loadspritegfx ANIM_TAG_NAIL loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT monbg ANIM_ATK_PARTNER @@ -7782,62 +7773,62 @@ CurseGhost:: clearmonbg ANIM_ATK_PARTNER delay 1 monbg ANIM_DEF_PARTNER - playsewithpan SE_M_NIGHTMARE, 63 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 14, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 16, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -CurseGhostShakeFromNail:: - createvisualtask AnimTask_ShakeMon2, 2, 0, 4, 0, 10, 0 - playsewithpan SE_M_BIND, 192 +CurseGhostShakeFromNail: + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 4, 0, 10, 0 + playsewithpan SE_M_BIND, SOUND_PAN_ATTACKER return -CurseStats:: - createvisualtask AnimTask_SwayMon, 5, 0, 10, 1536, 3, 0 +CurseStats: + createvisualtask AnimTask_SwayMon, 5, 0, 10, 1536, 3, ANIM_ATTACKER waitforvisualfinish delay 10 call CurseStats1 waitforvisualfinish end -CurseStats1:: - playsewithpan SE_M_DRAGON_RAGE, 192 - createvisualtask AnimTask_DrawFallingWhiteLinesOnAttacker, 5, - createvisualtask AnimTask_BlendColorCycle, 5, 2, 4, 2, 0, 10, 31 +CurseStats1: + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_DrawFallingWhiteLinesOnAttacker, 5 + createvisualtask AnimTask_BlendColorCycle, 5, F_PAL_ATTACKER, 4, 2, 0, 10, RGB_RED return -Move_SOFT_BOILED:: +Move_SOFT_BOILED: loadspritegfx ANIM_TAG_BREAKING_EGG loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_ATK_PARTNER - playsewithpan SE_M_TAIL_WHIP, 192 - createvisualtask AnimTask_ShakeMon, 2, 0, 0, 2, 6, 1 + playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 2, 6, 1 createsprite gSoftBoiledEggSpriteTemplate, ANIM_ATTACKER, 4, 0, 16, 0 createsprite gSoftBoiledEggSpriteTemplate, ANIM_ATTACKER, 4, 0, 16, 1 delay 120 delay 7 - playsewithpan SE_M_HORN_ATTACK, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, 31500 + playsewithpan SE_M_HORN_ATTACK, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 delay 8 createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 31, 16, 0, 1 delay 60 - setarg 7, 65535 + setarg 7, 0xFFFF waitforvisualfinish clearmonbg ANIM_ATK_PARTNER call HealingEffect2 end -Move_HEAL_BELL:: +Move_HEAL_BELL: loadspritegfx ANIM_TAG_BELL loadspritegfx ANIM_TAG_MUSIC_NOTES_2 loadspritegfx ANIM_TAG_THIN_RING - createvisualtask AnimTask_BlendSelected, 10, 10, 0, 0, 10, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 0, 0, 10, RGB_WHITE waitforvisualfinish createvisualtask AnimTask_LoadMusicNotesPals, 5 createsprite gBellSpriteTemplate, ANIM_ATTACKER, 2, 0, -24, 0, 1 @@ -7866,67 +7857,67 @@ Move_HEAL_BELL:: unloadspritegfx ANIM_TAG_MUSIC_NOTES_2 unloadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 - playsewithpan SE_M_MORNING_SUN, 192 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, -15, 0, 0, 0, 32, 60, 1 delay 8 createsprite gSparklingStarsSpriteTemplate, ANIM_ATTACKER, 16, 12, -5, 0, 0, 32, 60, 1 waitforvisualfinish unloadspritegfx ANIM_TAG_SPARKLE_2 loadspritegfx ANIM_TAG_THIN_RING - playsewithpan SE_SHINY, 192 - createvisualtask AnimTask_BlendExcept, 10, 4, 3, 10, 0, 31500 - createvisualtask AnimTask_BlendSelected, 10, 10, 3, 10, 0, RGB_WHITE + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 10, 0, RGB(12, 24, 30) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 10, 0, RGB_WHITE createsprite gBlendThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 16, 0, 0, 0, 1 end -HealBellRing:: - createvisualtask AnimTask_BlendExcept, 10, 4, 3, 8, 0, 31500 - createvisualtask AnimTask_BlendSelected, 10, 10, 3, 2, 10, RGB_WHITE +HealBellRing: + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, 4, 3, 8, 0, RGB(12, 24, 30) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATK_SIDE, 3, 2, 10, RGB_WHITE createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 40, 0, -24, 0, 1 - playsewithpan SE_M_HEAL_BELL, 192 + playsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER return -Move_FAKE_OUT:: +Move_FAKE_OUT: playsewithpan SE_M_FLATTER, 0 - createvisualtask AnimTask_FakeOut, 5, + createvisualtask AnimTask_FakeOut, 5 waitforvisualfinish - playsewithpan SE_M_SKETCH, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 + playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE end -Move_SCARY_FACE:: +Move_SCARY_FACE: loadspritegfx ANIM_TAG_EYE_SPARKLE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 0, 16, 0 - playsewithpan SE_M_PSYBEAM, 192 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 0, 16, RGB_BLACK + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER waitforvisualfinish delay 10 - playsewithpan SE_M_LEER, 192 - createvisualtask AnimTask_ScaryFace, 5, + playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaryFace, 5 delay 13 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, -16, -8 createsprite gEyeSparkleSpriteTemplate, ANIM_ATTACKER, 0, 16, -8 waitforvisualfinish - createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, 0 - playsewithpan SE_M_STRING_SHOT2, 63 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 27, 3, 16, 0, 0 + createvisualtask AnimTask_ShakeTargetInPattern, 3, 20, 1, FALSE + playsewithpan SE_M_STRING_SHOT2, SOUND_PAN_TARGET + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_ATK_SIDE | F_PAL_DEF_PARTNER, 3, 16, 0, RGB_BLACK waitforvisualfinish end -Move_SWEET_KISS:: +Move_SWEET_KISS: loadspritegfx ANIM_TAG_RED_HEART loadspritegfx ANIM_TAG_ANGEL createsprite gAngelSpriteTemplate, ANIM_TARGET, 2, 16, -48 - playsewithpan SE_M_HEAL_BELL, 63 + playsewithpan SE_M_HEAL_BELL, SOUND_PAN_TARGET delay 23 - playsewithpan SE_M_HEAL_BELL, 63 + playsewithpan SE_M_HEAL_BELL, SOUND_PAN_TARGET delay 23 - playsewithpan SE_M_HEAL_BELL, 63 + playsewithpan SE_M_HEAL_BELL, SOUND_PAN_TARGET waitforvisualfinish createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 160, -30 - playsewithpan SE_M_ATTRACT, 63 + playsewithpan SE_M_ATTRACT, SOUND_PAN_TARGET createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -256, -42 createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 128, -14 createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 416, -38 @@ -7934,102 +7925,102 @@ Move_SWEET_KISS:: createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -384, -31 end -Move_LOVELY_KISS:: +Move_LOVELY_KISS: loadspritegfx ANIM_TAG_PINK_HEART loadspritegfx ANIM_TAG_DEVIL createsprite gDevilSpriteTemplate, ANIM_TARGET, 2, 0, -24 - playsewithpan SE_M_PSYBEAM2, 63 + playsewithpan SE_M_PSYBEAM2, SOUND_PAN_TARGET waitforvisualfinish - playsewithpan SE_M_ATTRACT, 63 + playsewithpan SE_M_ATTRACT, SOUND_PAN_TARGET createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -256, -42 createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 128, -14 createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, 416, -38 createsprite gPinkHeartSpriteTemplate, ANIM_TARGET, 3, -128, -22 end -Move_FURY_SWIPES:: +Move_FURY_SWIPES: loadspritegfx ANIM_TAG_SWIPE createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 5, 5 delay 4 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET createsprite gFurySwipesSpriteTemplate, ANIM_TARGET, 2, 16, 0, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 5, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 5, 1 delay 10 createsprite gHorizontalLungeSpriteTemplate, ANIM_TARGET, 2, 5, 5 delay 4 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET createsprite gFurySwipesSpriteTemplate, ANIM_TARGET, 2, -16, 0, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 7, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 7, 1 end -Move_INGRAIN:: +Move_INGRAIN: loadspritegfx ANIM_TAG_ROOTS loadspritegfx ANIM_TAG_ORBS createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 16, 26, -1, 2, 150 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 10 createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -32, 20, 1, 1, 140 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 10 createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, 32, 22, 1, 0, 130 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 10 createsprite gIngrainRootSpriteTemplate, ANIM_ATTACKER, 2, -16, 25, -1, 3, 120 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 40 createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 32, 26, -1, 3, 30 delay 5 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, -48, 20, 1, 2, 30 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 5 createsprite gIngrainOrbSpriteTemplate, ANIM_ATTACKER, 3, 48, 26, -2, 3, 18 - playsewithpan SE_M_BUBBLE3, 192 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER delay 10 waitforvisualfinish end -Move_PRESENT:: +Move_PRESENT: loadspritegfx ANIM_TAG_ITEM_BAG - createvisualtask AnimTask_IsHealingMove, 2, + createvisualtask AnimTask_IsHealingMove, 2 createsprite gPresentSpriteTemplate, ANIM_TARGET, 2, 0, -5, 10, 2, -1 - playsewithpan SE_M_TAIL_WHIP, 192 + playsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 14 - playsewithpan SE_M_BUBBLE2, 192 + playsewithpan SE_M_BUBBLE2, SOUND_PAN_ATTACKER delay 14 playsewithpan SE_M_BUBBLE2, 0 delay 20 - playsewithpan SE_M_BUBBLE2, 63 + playsewithpan SE_M_BUBBLE2, SOUND_PAN_TARGET waitforvisualfinish - jumpargeq 7, 0, PresentDamage - jumpargeq 7, 1, PresentHeal + jumpretfalse PresentDamage + jumprettrue PresentHeal end -PresentDamage:: +PresentDamage: loadspritegfx ANIM_TAG_EXPLOSION - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 24, -24, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -16, 16, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, -24, -12, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_TARGET, 3, 16, 16, 1, 1 end -PresentHeal:: +PresentHeal: loadspritegfx ANIM_TAG_GREEN_SPARKLE loadspritegfx ANIM_TAG_BLUE_STAR - playsewithpan SE_M_MORNING_SUN, 63 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_TARGET createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, -16, 32, -3, 1 delay 3 createsprite gPresentHealParticleSpriteTemplate, ANIM_TARGET, 4, 16, 32, -3, -1 @@ -8052,14 +8043,14 @@ PresentHeal:: call HealingEffect2 end -Move_BATON_PASS:: +Move_BATON_PASS: loadspritegfx ANIM_TAG_POKEBALL - playsewithpan SE_M_BATON_PASS, 192 - createvisualtask AnimTask_BlendColorCycle, 2, 31, 1, 2, 0, 11, 31455 - createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2, + playsewithpan SE_M_BATON_PASS, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG | F_PAL_BATTLERS, 1, 2, 0, 11, RGB(31, 22, 30) + createsprite gBatonPassPokeballSpriteTemplate, ANIM_ATTACKER, 2 end -Move_PERISH_SONG:: +Move_PERISH_SONG: loadspritegfx ANIM_TAG_MUSIC_NOTES_2 createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 0 createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 1, 1, 16 @@ -8079,42 +8070,42 @@ Move_PERISH_SONG:: createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 240 createsprite gPerishSongMusicNote2SpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 0 delay 20 - panse_1B SE_M_PERISH_SONG, 192, 63, 2, 0 + panse SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 delay 80 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 4, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 5, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 6, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 7, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_BLACK + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 7, 0 delay 100 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, 0 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 4, 1 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 5, 1 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 6, 1 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 7, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_BLACK + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 5, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 6, 1 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 7, 1 waitforvisualfinish end -Move_SLEEP_TALK:: +Move_SLEEP_TALK: loadspritegfx ANIM_TAG_LETTER_Z - createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, 0 + createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, ANIM_ATTACKER delay 20 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 - playsewithpan SE_M_SNORE, 192 + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -1 delay 20 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 - playsewithpan SE_M_SNORE, 192 + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -5 delay 20 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 - playsewithpan SE_M_SNORE, 192 + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER delay 6 createsprite gLetterZSpriteTemplate, ANIM_TARGET, 2, 0, 20, 5, -3 delay 6 @@ -8122,54 +8113,55 @@ Move_SLEEP_TALK:: waitforvisualfinish end -Move_HYPER_FANG:: +Move_HYPER_FANG: loadspritegfx ANIM_TAG_FANG_ATTACK - playsewithpan SE_M_BITE, 63 + playsewithpan SE_M_BITE, SOUND_PAN_TARGET delay 1 delay 2 - createvisualtask AnimTask_IsContest, 2, - jumpargeq 7, 1, HyperFangInContest - createvisualtask AnimTask_IsTargetPlayerSide, 2, - jumpargeq 7, 0, HyperFangOnOpponent + createvisualtask AnimTask_IsContest, 2 + jumprettrue HyperFangInContest + createvisualtask AnimTask_IsTargetPlayerSide, 2 + jumpretfalse HyperFangOnOpponent goto HyperFangOnPlayer -HyperFangContinue:: + +HyperFangContinue: waitbgfadeout - createsprite gFangSpriteTemplate, ANIM_TARGET, 2, + createsprite gFangSpriteTemplate, ANIM_TARGET, 2 waitbgfadein - createvisualtask AnimTask_ShakeMon, 3, 1, 0, 10, 10, 1 - playsewithpan SE_M_LEER, 63 + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 0, 10, 10, 1 + playsewithpan SE_M_LEER, SOUND_PAN_TARGET delay 20 restorebg waitbgfadein waitforvisualfinish end -HyperFangOnOpponent:: - fadetobg 4 +HyperFangOnOpponent: + fadetobg BG_IMPACT_OPPONENT goto HyperFangContinue -HyperFangOnPlayer:: - fadetobg 5 +HyperFangOnPlayer: + fadetobg BG_IMPACT_PLAYER goto HyperFangContinue -HyperFangInContest:: - fadetobg 6 +HyperFangInContest: + fadetobg BG_IMPACT_CONTESTS goto HyperFangContinue -Move_TRI_ATTACK:: +Move_TRI_ATTACK: loadspritegfx ANIM_TAG_TRI_ATTACK_TRIANGLE createsprite gTriAttackTriangleSpriteTemplate, ANIM_TARGET, 2, 16, 0 - playsewithpan SE_M_TRI_ATTACK, 192 + playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER delay 20 - playsewithpan SE_M_TRI_ATTACK, 192 + playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER delay 20 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TRI_ATTACK, -64, 63, 5, 6, 0, 7 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 5, 6, 0, 7 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 16, RGB_BLACK delay 16 loadspritegfx ANIM_TAG_FIRE createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, 0 - playsewithpan SE_M_FLAME_WHEEL2, 63 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 0, 1 delay 1 createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, -1, -1 @@ -8184,35 +8176,35 @@ Move_TRI_ATTACK:: delay 1 createsprite gLargeFlameScatterSpriteTemplate, ANIM_TARGET, 2, 0, 0, 30, 30, 3, 1 delay 2 - createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, 1, 1 + createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, TRUE, 1 waitforvisualfinish loadspritegfx ANIM_TAG_LIGHTNING createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 - playsewithpan SE_M_TRI_ATTACK2, 63 + playsewithpan SE_M_TRI_ATTACK2, SOUND_PAN_TARGET createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -48 delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, -16 delay 1 createsprite gLightningSpriteTemplate, ANIM_TARGET, 2, 0, 16 delay 20 - createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, 1, 0 + createvisualtask AnimTask_ShakeTargetInPattern, 2, 20, 3, TRUE, 0 delay 2 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 waitforvisualfinish loadspritegfx ANIM_TAG_ICE_CRYSTALS call IceCrystalEffectShort - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 16, 0, RGB_BLACK waitforvisualfinish end -Move_WILL_O_WISP:: +Move_WILL_O_WISP: loadspritegfx ANIM_TAG_WISP_FIRE loadspritegfx ANIM_TAG_WISP_ORB monbg ANIM_DEF_PARTNER - monbgprio_2A 1 - playsewithpan SE_M_EMBER, 192 - waitplaysewithpan SE_M_EMBER, 192, 10 - createvisualtask SoundTask_AdjustPanningVar, 2, -64, -64, 1, 0 + splitbgprio_foes ANIM_TARGET + playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 10 + createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_ATTACKER, 1, 0 createsprite gWillOWispOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0 delay 3 createsprite gWillOWispOrbSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1 @@ -8221,11 +8213,11 @@ Move_WILL_O_WISP:: delay 3 createsprite gWillOWispOrbSpriteTemplate, ANIM_ATTACKER, 4, 0, 0, 3 delay 40 - createvisualtask SoundTask_AdjustPanningVar, 2, -64, 63, 2, 0 + createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0 waitforvisualfinish - monbgprio_29 - playsewithpan SE_M_FLAME_WHEEL2, 63 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 13, 1 + splitbgprio_all + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 13, 1 createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 0 createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 42 createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 84 @@ -8236,11 +8228,11 @@ Move_WILL_O_WISP:: clearmonbg ANIM_DEF_PARTNER end -Move_ENCORE:: +Move_ENCORE: loadspritegfx ANIM_TAG_SPOTLIGHT loadspritegfx ANIM_TAG_TAG_HAND - createvisualtask AnimTask_CreateSpotlight, 2, - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 0, 10, FALSE + createvisualtask AnimTask_CreateSpotlight, 2 + createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 0, 10, 0 waitforvisualfinish createsprite gSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8 createsprite gClappingHandSpriteTemplate, ANIM_ATTACKER, 2, -2, 0, 0, 0, 9 @@ -8248,22 +8240,22 @@ Move_ENCORE:: createsprite gClappingHand2SpriteTemplate, ANIM_ATTACKER, 3, -2, 0, 0, 0, 9 createsprite gClappingHand2SpriteTemplate, ANIM_ATTACKER, 3, 2, 0, 1, 0, 9 delay 16 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, 63 - createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, 1 + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET + createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, ANIM_TARGET waitforvisualfinish - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 10, 0, TRUE + createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 10, 0, 1 waitforvisualfinish - createvisualtask AnimTask_RemoveSpotlight, 2, + createvisualtask AnimTask_RemoveSpotlight, 2 end -Move_TRICK:: +Move_TRICK: loadspritegfx ANIM_TAG_ITEM_BAG loadspritegfx ANIM_TAG_SPEED_DUST createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -40, 80 createsprite gTrickBagSpriteTemplate, ANIM_ATTACKER, 2, -40, 208 delay 16 playsewithpan SE_M_SKETCH, 0 - createvisualtask AnimTask_StretchTargetUp, 3, + createvisualtask AnimTask_StretchTargetUp, 3 createvisualtask AnimTask_StretchAttackerUp, 3 delay 30 playsewithpan SE_M_DOUBLE_TEAM, 0 @@ -8279,39 +8271,39 @@ Move_TRICK:: playsewithpan SE_M_DOUBLE_TEAM, 0 delay 16 playsewithpan SE_M_ATTRACT, 0 - createvisualtask AnimTask_ShakeMon, 3, 0, 5, 0, 7, 2 - createvisualtask AnimTask_ShakeMon, 3, 1, 5, 0, 7, 2 + createvisualtask AnimTask_ShakeMon, 3, ANIM_ATTACKER, 5, 0, 7, 2 + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 5, 0, 7, 2 waitforvisualfinish end -Move_WISH:: +Move_WISH: loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK waitforvisualfinish - panse_27 SE_M_REFLECT, 63, 192, 253, 0 - createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40, + panse_adjustall SE_M_REFLECT, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0 + createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40 waitforvisualfinish delay 60 - loopsewithpan SE_M_HEAL_BELL, 192, 16, 3 + loopsewithpan SE_M_HEAL_BELL, SOUND_PAN_ATTACKER, 16, 3 call GrantingStarsEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK waitforvisualfinish end -Move_STOCKPILE:: +Move_STOCKPILE: loadspritegfx ANIM_TAG_GRAY_ORB - playsewithpan SE_M_MEGA_KICK, 192 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 8, 1, 0, 12, RGB_WHITE - createvisualtask AnimTask_StockpileDeformMon, 5, + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 8, 1, 0, 12, RGB_WHITE + createvisualtask AnimTask_StockpileDeformMon, 5 call StockpileAbsorb call StockpileAbsorb waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 12, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 12, 0, RGB_WHITE end -StockpileAbsorb:: +StockpileAbsorb: createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, 55, 55, 13 delay 1 createsprite gStockpileAbsorptionOrbSpriteTemplate, ANIM_ATTACKER, 2, -55, -55, 13 @@ -8330,14 +8322,14 @@ StockpileAbsorb:: delay 1 return -Move_SPIT_UP:: +Move_SPIT_UP: loadspritegfx ANIM_TAG_RED_ORB_2 loadspritegfx ANIM_TAG_IMPACT - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_SpitUpDeformMon, 5, - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 8, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_SpitUpDeformMon, 5 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 8, 2 delay 45 - playsewithpan SE_M_SPIT_UP, 192 + playsewithpan SE_M_SPIT_UP, SOUND_PAN_ATTACKER delay 3 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, 12 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 32, 12 @@ -8350,25 +8342,25 @@ Move_SPIT_UP:: delay 5 jumpifmoveturn 2, SpitUpStrong jumpifmoveturn 3, SpitUpStrongest -SpitUpContinue:: +SpitUpContinue: delay 5 - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 8, 1, 0 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -12, 10, 1, 1 + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 8, 1, 0 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, -12, 10, ANIM_TARGET, 1 delay 5 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 12, -10, 1, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gFlashingHitSplatSpriteTemplate, ANIM_TARGET, 3, 12, -10, ANIM_TARGET, 1 waitforvisualfinish end -SpitUpStrong:: +SpitUpStrong: createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 16 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 80 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 144 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 208 goto SpitUpContinue -SpitUpStrongest:: +SpitUpStrongest: createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 16 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 48 createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 80 @@ -8379,24 +8371,24 @@ SpitUpStrongest:: createsprite gSpitUpOrbSpriteTemplate, ANIM_ATTACKER, 2, 240 goto SpitUpContinue -Move_SWALLOW:: +Move_SWALLOW: loadspritegfx ANIM_TAG_BLUE_ORB loadspritegfx ANIM_TAG_BLUE_STAR - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_SwallowDeformMon, 5, - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 8, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_SwallowDeformMon, 5 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 8, 2 delay 38 - playsewithpan SE_M_SPIT_UP, 192 - createvisualtask AnimTask_ShakeMon2, 2, 0, 2, 0, 12, 1 + playsewithpan SE_M_SPIT_UP, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 12, 1 call SwallowEffect jumpifmoveturn 2, SwallowGood jumpifmoveturn 3, SwallowBest -SwallowContinue:: +SwallowContinue: waitforvisualfinish call HealingEffect end -SwallowEffect:: +SwallowEffect: createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, 0, -8 delay 1 createsprite gSwallowBlueOrbSpriteTemplate, ANIM_ATTACKER, 2, -24, -8 @@ -8409,30 +8401,30 @@ SwallowEffect:: delay 1 return -SwallowGood:: +SwallowGood: call SwallowEffect goto SwallowContinue -SwallowBest:: +SwallowBest: call SwallowEffect call SwallowEffect goto SwallowContinue -Move_TRANSFORM:: +Move_TRANSFORM: monbg ANIM_ATTACKER - playsewithpan SE_M_TELEPORT, 192 - waitplaysewithpan SE_M_MINIMIZE, 192, 48 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 createvisualtask AnimTask_TransformMon, 2, 0 waitforvisualfinish clearmonbg ANIM_ATTACKER end -Move_MORNING_SUN:: +Move_MORNING_SUN: loadspritegfx ANIM_TAG_GREEN_STAR loadspritegfx ANIM_TAG_BLUE_STAR - createvisualtask AnimTask_MorningSunLightBeam, 5, + createvisualtask AnimTask_MorningSunLightBeam, 5 delay 8 - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 8, 0, 12, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 8, 0, 12, RGB_WHITE delay 14 call MorningSunStar call MorningSunStar @@ -8449,32 +8441,32 @@ Move_MORNING_SUN:: call MorningSunStar call MorningSunStar call MorningSunStar - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 3, 12, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 3, 12, 0, RGB_WHITE waitforvisualfinish waitsound call HealingEffect end -MorningSunStar:: +MorningSunStar: createsprite gGreenStarSpriteTemplate, ANIM_ATTACKER, 2, 30, 640 delay 5 return -Move_SWEET_SCENT:: +Move_SWEET_SCENT: loadspritegfx ANIM_TAG_PINK_PETAL - playsewithpan SE_M_SWEET_SCENT, 192 + playsewithpan SE_M_SWEET_SCENT, SOUND_PAN_ATTACKER createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 100, 0, 100 delay 25 setpan 0 call SweetScentEffect createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 55, 0 - setpan 63 - createvisualtask AnimTask_BlendColorCycle, 2, 20, 1, 5, 5, 13, 22207 + setpan SOUND_PAN_TARGET + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_DEF_SIDE, 1, 5, 5, 13, RGB(31, 21, 21) call SweetScentEffect waitforvisualfinish end -SweetScentEffect:: +SweetScentEffect: createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 70, 1, 64 delay 2 createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 60, 0, 64 @@ -8499,25 +8491,25 @@ SweetScentEffect:: delay 2 return -Move_HYPER_BEAM:: +Move_HYPER_BEAM: loadspritegfx ANIM_TAG_ORBS - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 0, 16, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 0, 16, RGB_BLACK waitforvisualfinish delay 10 - playsewithpan SE_M_HYPER_BEAM, 192 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 4, 1 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 4, 1 waitforvisualfinish delay 30 - createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_HYPER_BEAM2, -64, 63, 1, 15, 0, 5 - createvisualtask AnimTask_ShakeMon, 2, 0, 0, 4, 50, 1 - createvisualtask AnimTask_FlashAnimTagWithColor, 2, 10147, 1, 12, 31, 16, 0, 0 + createsoundtask SoundTask_LoopSEAdjustPanning, SE_M_HYPER_BEAM2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 1, 15, 0, 5 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 0, 4, 50, 1 + createvisualtask AnimTask_FlashAnimTagWithColor, 2, ANIM_TAG_ORBS, 1, 12, RGB(31, 0, 0), 16, 0, 0 call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 50, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 11, RGB(25, 25, 25) + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 50, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 11, RGB(25, 25, 25) call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs @@ -8539,31 +8531,31 @@ Move_HYPER_BEAM:: call HyperBeamOrbs call HyperBeamOrbs call HyperBeamOrbs - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 11, 0, RGB(25, 25, 25) + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 11, 0, RGB(25, 25, 25) waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 4, 16, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 4, 16, 0, RGB_BLACK end -HyperBeamOrbs:: - createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2, - createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2, +HyperBeamOrbs: + createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2 + createsprite gHyperBeamOrbSpriteTemplate, ANIM_TARGET, 2 delay 1 return -Move_FLATTER:: +Move_FLATTER: loadspritegfx ANIM_TAG_SPOTLIGHT loadspritegfx ANIM_TAG_CONFETTI - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, 63 - createvisualtask AnimTask_CreateSpotlight, 2, - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 0, 10, FALSE + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_ENCORE2, SOUND_PAN_TARGET + createvisualtask AnimTask_CreateSpotlight, 2 + createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 0, 10, 0 waitforvisualfinish createsprite gFlatterSpotlightSpriteTemplate, ANIM_TARGET, 2, 0, -8, 80 delay 0 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, 1 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, ANIM_TARGET delay 10 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, 1 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 5, 2, ANIM_TARGET delay 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, -64 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, SOUND_PAN_ATTACKER call CreateFlatterConfetti call CreateFlatterConfetti call CreateFlatterConfetti @@ -8584,69 +8576,69 @@ Move_FLATTER:: call CreateFlatterConfetti call CreateFlatterConfetti delay 5 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_FLATTER, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_HardwarePaletteFade, 2, BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN, 3, 10, 0, TRUE + createvisualtask AnimTask_HardwarePaletteFade, 2, 248, 3, 10, 0, 1 waitforvisualfinish - createvisualtask AnimTask_RemoveSpotlight, 2, + createvisualtask AnimTask_RemoveSpotlight, 2 end -CreateFlatterConfetti:: - createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, 0 - createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, 1 +CreateFlatterConfetti: + createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, ANIM_ATTACKER + createsprite gFlatterConfettiSpriteTemplate, ANIM_ATTACKER, 40, ANIM_TARGET return -Move_ROLE_PLAY:: +Move_ROLE_PLAY: monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 16, RGB_WHITE - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 0, 10, 0 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 0, 10, RGB_BLACK waitforvisualfinish - playsewithpan SE_M_TRI_ATTACK, 192 - waitplaysewithpan SE_M_DETECT, 192, 30 - createvisualtask AnimTask_RolePlaySilhouette, 2, + playsewithpan SE_M_TRI_ATTACK, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_DETECT, SOUND_PAN_ATTACKER, 30 + createvisualtask AnimTask_RolePlaySilhouette, 2 waitforvisualfinish clearmonbg ANIM_ATK_PARTNER - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 16, 0, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 16, 0, RGB_WHITE delay 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 2, 10, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 2, 10, 0, RGB_BLACK end -Move_REFRESH:: +Move_REFRESH: loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 - playsewithpan SE_M_STAT_INCREASE, 192 + playsewithpan SE_M_STAT_INCREASE, SOUND_PAN_ATTACKER createvisualtask AnimTask_StatusClearedEffect, 2, 0 waitforvisualfinish - playsewithpan SE_M_MORNING_SUN, 192 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish - playsewithpan SE_SHINY, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 10, 0, 31500 + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 10, 0, RGB(12, 24, 30) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 end -Move_BLAZE_KICK:: +Move_BLAZE_KICK: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_SMALL_EMBER - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET createsprite gSpinningHandOrFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 30 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 7, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 7, RGB_WHITE delay 30 - playsewithpan SE_M_FIRE_PUNCH, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 14, 1 - createvisualtask AnimTask_BlendSelected, 10, 4, 2, 0, 0, RGB_WHITE - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 1, 0, 8, 0, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 14, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_TARGET, 2, 0, 0, RGB_WHITE + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 1, RGB_BLACK, 8, RGB_BLACK, 0 call FireSpreadEffect waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_HYPER_VOICE:: +Move_HYPER_VOICE: loadspritegfx ANIM_TAG_THIN_RING call HyperVoiceEffect waitforvisualfinish @@ -8655,56 +8647,56 @@ Move_HYPER_VOICE:: waitforvisualfinish end -HyperVoiceEffect:: +HyperVoiceEffect: createvisualtask SoundTask_PlayCryWithEcho, 5 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 3, 8, 0, 1023 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 3, 8, 0, RGB_YELLOW + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_ATTACKER, 0 createsprite gHyperVoiceRingSpriteTemplate, ANIM_ATTACKER, 0, 45, 0, 0, 0, 0, 0, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 1, 0, 6, 1 - createvisualtask AnimTask_ShakeMon2, 2, 3, 1, 0, 6, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 1, 0, 6, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_DEF_PARTNER, 1, 0, 6, 1 createvisualtask AnimTask_ShakeBattleTerrain, 2, 1, 0, 6, 1 - createvisualtask SoundTask_WaitForCry, 5, + createvisualtask SoundTask_WaitForCry, 5 return -Move_SAND_TOMB:: +Move_SAND_TOMB: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 563 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 43, 1 - playsewithpan SE_M_SAND_TOMB, 63 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 43, 1 + playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 563 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish end -SandTombSwirlingDirt:: - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 32, 528, 30, 10, 50, 1 +SandTombSwirlingDirt: + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 32, 528, 30, 10, 50, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 36, 480, 20, 13, -46, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 36, 480, 20, 13, -46, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 37, 576, 20, 5, 42, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 37, 576, 20, 5, 42, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 35, 400, 25, 8, -42, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 35, 400, 25, 8, -42, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 32, 512, 25, 13, 46, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 32, 512, 25, 13, 46, ANIM_TARGET delay 2 - createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 37, 464, 30, 12, -50, 1 + createsprite gSwirlingDirtSpriteTemplate, ANIM_TARGET, 2, 0, 37, 464, 30, 12, -50, ANIM_TARGET delay 2 return -Move_SHEER_COLD:: - fadetobg 15 +Move_SHEER_COLD: + fadetobg BG_ICE waitbgfadeout playsewithpan SE_M_ICY_WIND, 0 waitbgfadein loadspritegfx ANIM_TAG_ICE_CUBE monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 createvisualtask AnimTask_FrozenIceCube, 2 - waitplaysewithpan SE_M_HAIL, 63, 17 + waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -8712,42 +8704,43 @@ Move_SHEER_COLD:: waitbgfadein end -Move_ARM_THRUST:: +Move_ARM_THRUST: loadspritegfx ANIM_TAG_HANDS_AND_FEET loadspritegfx ANIM_TAG_IMPACT - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0 + createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 0 delay 6 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 3 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gArmThrustHandSpriteTemplate, ANIM_TARGET, 2, 10, -8, 14, 3 waitforvisualfinish - createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 1 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, ANIM_ATTACKER, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET choosetwoturnanim ArmThrustRight, ArmThrustLeft -ArmThrustContinue:: - createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1 + +ArmThrustContinue: + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 4, 0, 6, 1 waitforvisualfinish blendoff end -ArmThrustRight:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, 1, 2 +ArmThrustRight: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, 8, 0, ANIM_TARGET, 2 goto ArmThrustContinue -ArmThrustLeft:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 0, 1, 2 +ArmThrustLeft: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -8, 0, ANIM_TARGET, 2 goto ArmThrustContinue -Move_MUDDY_WATER:: - panse_1B SE_M_WHIRLPOOL, 192, 63, 2, 0 - createvisualtask AnimTask_CreateSurfWave, 2, 1 +Move_MUDDY_WATER: + panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 + createvisualtask AnimTask_CreateSurfWave, 2, TRUE waitforvisualfinish end -Move_BULLET_SEED:: +Move_BULLET_SEED: loadspritegfx ANIM_TAG_SEED createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 @@ -8755,7 +8748,7 @@ Move_BULLET_SEED:: delay 5 createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 30, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 30, 1 createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 delay 5 createsprite gBulletSeedSpriteTemplate, ANIM_TARGET, 2, 20, 0 @@ -8772,80 +8765,81 @@ Move_BULLET_SEED:: waitforvisualfinish end -Move_DRAGON_CLAW:: +Move_DRAGON_CLAW: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_CLAW_SLASH - playsewithpan SE_M_SACRED_FIRE2, 192 - createvisualtask AnimTask_BlendSelected, 10, 2, 4, 0, 8, RGB(31, 19, 0) - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 15, 1 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 0, 8, RGB(31, 19, 0) + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 15, 1 call DragonClawFireSpiral call DragonClawFireSpiral createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER delay 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, -10, 10, 0 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER delay 2 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, 63 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_RAZOR_WIND, SOUND_PAN_TARGET createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, -10, 1 createsprite gClawSlashSpriteTemplate, ANIM_TARGET, 2, 10, 10, 1 createsprite gShakeMonOrTerrainSpriteTemplate, ANIM_ATTACKER, 2, -4, 1, 10, 3, 1 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0 - createvisualtask AnimTask_BlendSelected, 10, 2, 4, 8, 0, RGB(31, 19, 0) + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 4, 8, 0, RGB(31, 19, 0) waitforvisualfinish end -DragonClawFireSpiral:: - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, 0 +DragonClawFireSpiral: + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 528, 30, 13, 50, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 480, 20, 16, -46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 576, 20, 8, 42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 31, 400, 25, 11, -42, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 512, 25, 16, 46, ANIM_ATTACKER delay 2 - createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, 0 + createsprite gFireSpinSpriteTemplate, ANIM_ATTACKER, 2, 0, 33, 464, 30, 15, -50, ANIM_ATTACKER delay 2 return + end -Move_MUD_SHOT:: +Move_MUD_SHOT: loadspritegfx ANIM_TAG_BROWN_ORB monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 - createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 46, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1 delay 6 createvisualtask AnimTask_StartSinAnimTimer, 5, 100 - panse_1B SE_M_WHIRLPOOL, 192, 63, 1, 0 + panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0 call MudShotOrbs call MudShotOrbs call MudShotOrbs - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 43, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 43, 1 call MudShotOrbs call MudShotOrbs call MudShotOrbs @@ -8859,19 +8853,19 @@ Move_MUD_SHOT:: blendoff end -MudShotOrbs:: +MudShotOrbs: createsprite gMudShotOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 delay 2 createsprite gMudShotOrbSpriteTemplate, ANIM_ATTACKER, 3, 10, 10, 0, 16 delay 2 return -Move_METEOR_MASH:: +Move_METEOR_MASH: loadspritegfx ANIM_TAG_GOLD_STARS loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET - panse_1B SE_M_BARRIER, 192, 63, 3, 0 - fadetobg 16 + panse SE_M_BARRIER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +3, 0 + fadetobg BG_COSMIC waitbgfadein waitforvisualfinish createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -48, -64, 72, 32, 30 @@ -8881,9 +8875,9 @@ Move_METEOR_MASH:: createsprite gSpinningHandOrFootSpriteTemplate, ANIM_TARGET, 3, 0, 0, 0, 30 createsprite gMeteorMashStarSpriteTemplate, ANIM_TARGET, 3, -80, -64, 40, 32, 30 delay 20 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 5, 0, 20, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 5, 0, 20, 1 waitforvisualfinish delay 10 restorebg @@ -8891,118 +8885,118 @@ Move_METEOR_MASH:: waitforvisualfinish end -Move_REVENGE:: +Move_REVENGE: loadspritegfx ANIM_TAG_PURPLE_SCRATCH - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_TAKE_DOWN, 192 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER createsprite gRevengeSmallScratchSpriteTemplate, ANIM_ATTACKER, 2, 10, -10 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 4, 2, 8, 31 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 0, 4, 2, 8, RGB_RED waitforvisualfinish unloadspritegfx ANIM_TAG_PURPLE_SCRATCH loadspritegfx ANIM_TAG_PURPLE_SWIPE createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 6, 4 delay 4 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gRevengeBigScratchSpriteTemplate, ANIM_TARGET, 2, 10, -10 waitforvisualfinish unloadspritegfx ANIM_TAG_PURPLE_SWIPE loadspritegfx ANIM_TAG_IMPACT - createvisualtask AnimTask_ShakeMon2, 2, 1, 3, 0, 10, 1 - createsprite gPersistHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, 1, 1, 8 - playsewithpan SE_M_VITAL_THROW2, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 3, 0, 10, 1 + createsprite gPersistHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, ANIM_TARGET, 1, 8 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gPersistHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 8, 1, 1, 8 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gPersistHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 8, ANIM_TARGET, 1, 8 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_POISON_FANG:: +Move_POISON_FANG: loadspritegfx ANIM_TAG_FANG_ATTACK loadspritegfx ANIM_TAG_POISON_BUBBLE - playsewithpan SE_M_BITE, 63 - createsprite gFangSpriteTemplate, ANIM_TARGET, 2, + playsewithpan SE_M_BITE, SOUND_PAN_TARGET + createsprite gFangSpriteTemplate, ANIM_TARGET, 2 delay 10 - createvisualtask AnimTask_ShakeMon, 3, 1, 3, 0, 10, 1 + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 3, 0, 10, 1 waitforvisualfinish - createvisualtask AnimTask_BlendColorCycle, 2, 4, 0, 4, 0, 12, 26650 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_TARGET, 0, 4, 0, 12, RGB(26, 0, 26) call PoisonBubblesEffect waitforvisualfinish end -Move_SUBSTITUTE:: - playsewithpan SE_M_ATTRACT, 192 - createvisualtask AnimTask_MonToSubstitute, 2, +Move_SUBSTITUTE: + playsewithpan SE_M_ATTRACT, SOUND_PAN_ATTACKER + createvisualtask AnimTask_MonToSubstitute, 2 end -Move_FRENZY_PLANT:: +Move_FRENZY_PLANT: loadspritegfx ANIM_TAG_ROOTS loadspritegfx ANIM_TAG_IMPACT - monbg 1 - monbgprio_28 1 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 0, 5, RGB_BLACK waitforvisualfinish createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 2, 0, 0, 100 - playsewithpan SE_M_SCRATCH, 192 + playsewithpan SE_M_SCRATCH, SOUND_PAN_ATTACKER delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -2, 0, 1, 95 - playsewithpan SE_M_SCRATCH, 213 + playsewithpan SE_M_SCRATCH, -43 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 30, 8, -4, 0, 0, 90 - playsewithpan SE_M_SCRATCH, 234 + playsewithpan SE_M_SCRATCH, -22 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 40, -8, 4, 0, 1, 85 playsewithpan SE_M_SCRATCH, 0 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 50, 8, 0, 0, 0, 85 - playsewithpan SE_M_SCRATCH, 21 + playsewithpan SE_M_SCRATCH, +21 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 60, -8, -2, 0, 1, 85 - playsewithpan SE_M_SCRATCH, 42 + playsewithpan SE_M_SCRATCH, +42 delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 75, 8, 0, 0, 0, 85 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, 16, 6, 0, 3, 80 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 5 createsprite gFrenzyPlantRootSpriteTemplate, ANIM_ATTACKER, 2, 85, -16, -6, 0, 2, 75 - playsewithpan SE_M_SCRATCH, 63 + playsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -10, 1, 3 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createvisualtask AnimTask_ShakeMon, 3, 1, 8, 0, 20, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -10, ANIM_TARGET, 3 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 3, ANIM_TARGET, 8, 0, 20, 1 delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, 1, 3 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 8, ANIM_TARGET, 3 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -3, 1, 2 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -3, ANIM_TARGET, 2 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 3 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -3, 1, 1, 2 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -3, 1, ANIM_TARGET, 2 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, 1, 1, 1 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, 1, ANIM_TARGET, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET delay 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, 1, 1 - playsewithpan SE_M_DOUBLE_SLAP, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 10, ANIM_TARGET, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 5, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_BG, 2, 5, 0, RGB_BLACK waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -Move_METAL_SOUND:: +Move_METAL_SOUND: loadspritegfx ANIM_TAG_METAL_SOUND_WAVES monbg ANIM_DEF_PARTNER - monbgprio_2A 1 - createvisualtask AnimTask_ShakeMon2, 2, 0, 2, 0, 8, 1 + splitbgprio_foes ANIM_TARGET + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1 call MetalSoundRings call MetalSoundRings call MetalSoundRings @@ -9013,45 +9007,46 @@ Move_METAL_SOUND:: waitforvisualfinish end -MetalSoundRings:: - panse_1B SE_M_SCREECH, 192, 63, 2, 0 +MetalSoundRings: + panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 createsprite gMetalSoundSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0 delay 2 return -Move_FOCUS_PUNCH:: +Move_FOCUS_PUNCH: goto FocusPunch -FocusPunchEnd:: + +FocusPunchEnd: waitforvisualfinish end -FocusPunch:: +FocusPunch: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_HANDS_AND_FEET delay 1 - createvisualtask AnimTask_IsContest, 2, - jumpargeq 7, 1, FocusPunchInContest - createvisualtask AnimTask_IsTargetPlayerSide, 2, - jumpargeq 7, 0, FocusPunchOnOpponent - jumpargeq 7, 1, FocusPunchOnPlayer -FocusPunchContinue:: + createvisualtask AnimTask_IsContest, 2 + jumprettrue FocusPunchInContest + createvisualtask AnimTask_IsTargetPlayerSide, 2 + jumpretfalse FocusPunchOnOpponent + jumprettrue FocusPunchOnPlayer +FocusPunchContinue: waitbgfadein monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SWAGGER, 63 + playsewithpan SE_M_SWAGGER, SOUND_PAN_TARGET createsprite gFocusPunchFistSpriteTemplate, ANIM_TARGET, 2 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 8, 0, 24, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 8, 0, 24, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 2, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 2, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -6, 1, 0 - playsewithpan SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, -6, ANIM_TARGET, 0 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, 1, 0 - playsewithpan SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 8, ANIM_TARGET, 0 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish restorebg waitbgfadein @@ -9059,191 +9054,191 @@ FocusPunchContinue:: blendoff goto FocusPunchEnd -FocusPunchOnOpponent:: - fadetobg 4 +FocusPunchOnOpponent: + fadetobg BG_IMPACT_OPPONENT goto FocusPunchContinue -FocusPunchOnPlayer:: - fadetobg 5 +FocusPunchOnPlayer: + fadetobg BG_IMPACT_PLAYER goto FocusPunchContinue -FocusPunchInContest:: - fadetobg 6 +FocusPunchInContest: + fadetobg BG_IMPACT_CONTESTS goto FocusPunchContinue -Move_RETURN:: +Move_RETURN: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - createvisualtask AnimTask_GetReturnPowerLevel, 2, + createvisualtask AnimTask_GetReturnPowerLevel, 2 delay 2 - jumpargeq 7, 0, ReturnWeak - jumpargeq 7, 1, ReturnMedium - jumpargeq 7, 2, ReturnStrong - jumpargeq 7, 3, ReturnStrongest -ReturnContinue:: + jumpreteq 0, ReturnWeak + jumpreteq 1, ReturnMedium + jumpreteq 2, ReturnStrong + jumpreteq 3, ReturnStrongest +ReturnContinue: waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -ReturnWeak:: - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 +ReturnWeak: + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_COMET_PUNCH, SOUND_PAN_TARGET goto ReturnContinue -ReturnMedium:: - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 +ReturnMedium: + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish delay 11 createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 5, 4 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET goto ReturnContinue -ReturnStrong:: - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 +ReturnStrong: + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 6, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 goto ReturnContinue -ReturnStrongest:: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 6, 0 +ReturnStrongest: + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 6, RGB_BLACK waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 16, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 12, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 12, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 waitforvisualfinish delay 4 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 waitforvisualfinish delay 2 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 1, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 waitforvisualfinish - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 2, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 2, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER delay 5 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 waitforvisualfinish call ReturnStrongestHit call ReturnStrongestHit call ReturnStrongestHit call ReturnStrongestHit - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, 1, 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 8, 0, 24, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -10, -8, ANIM_TARGET, 0 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 8, 0, 24, 1 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 1, 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, ANIM_TARGET, 0 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, 1, 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 3, -5, ANIM_TARGET, 0 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, 1, 0 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, -5, 3, ANIM_TARGET, 0 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MEGA_KICK2, SOUND_PAN_TARGET waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 6, 0, RGB_BLACK goto ReturnContinue -ReturnStrongestHit:: - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 3, 0 - createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, -64 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 +ReturnStrongestHit: + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 4, 3, ANIM_ATTACKER + createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 createvisualtask AnimTask_TraceMonBlended, 2, 0, 4, 5, 1 waitforvisualfinish return -Move_COSMIC_POWER:: +Move_COSMIC_POWER: loadspritegfx ANIM_TAG_SPARKLE_2 createvisualtask SoundTask_PlaySE2WithPanning, 5, SE_M_COSMIC_POWER, 0 playsewithpan SE_M_COSMIC_POWER, 0 - createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 0, 0, 15, 0 + createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 0, 0, 15, RGB_BLACK waitforvisualfinish - fadetobg 16 + fadetobg BG_COSMIC waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 2, 0, 128, 0, -1 waitbgfadein delay 70 - createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MORNING_SUN, -64 + createvisualtask SoundTask_PlaySE1WithPanning, 5, SE_M_MORNING_SUN, SOUND_PAN_ATTACKER createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60 delay 8 createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 delay 40 - createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 0, 15, 0, 0 + createvisualtask AnimTask_BlendNonAttackerPalettes, 2, 0, 15, 0, RGB_BLACK waitforvisualfinish restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein waitforvisualfinish end -Move_BLAST_BURN:: +Move_BLAST_BURN: loadspritegfx ANIM_TAG_FIRE_PLUME loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SACRED_FIRE, 192 + playsewithpan SE_M_SACRED_FIRE, SOUND_PAN_ATTACKER createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -20, -10, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 0, -16, 24, 0, 0, 0 @@ -9253,25 +9248,25 @@ Move_BLAST_BURN:: createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 16, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -20, 10, 24, 0, 0, 0 delay 25 - playsewithpan SE_M_FLAME_WHEEL2, 192 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -64, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 6, -40, -20, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 0, -32, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 40, -20, 24, 0, 0, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 6, 0, 8, 1 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 64, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 40, 20, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, 0, 32, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -40, 20, 24, 0, 0, 0 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 25 - playsewithpan SE_M_FLAME_WHEEL2, 192 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 2, -96, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 6, -60, -30, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 0, -48, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 70, 60, -30, 24, 0, 0, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, 3, 1, 0 - createvisualtask AnimTask_ShakeMon, 5, 1, 12, 0, 20, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, 3, ANIM_TARGET, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 12, 0, 20, 1 createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 96, 0, 24, 0, 0, 0 createsprite gFirePlumeSpriteTemplate, ANIM_ATTACKER, 66, 60, 30, 24, 0, 0, 0 @@ -9283,7 +9278,7 @@ Move_BLAST_BURN:: blendoff end -Move_ROCK_TOMB:: +Move_ROCK_TOMB: loadspritegfx ANIM_TAG_X_SIGN loadspritegfx ANIM_TAG_ROCKS createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 @@ -9291,47 +9286,47 @@ Move_ROCK_TOMB:: createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, 20, 12, 64, 114, 0 delay 8 createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -20, 12, 64, 98, 0 delay 8 createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 66, 3, 6, 64, 82, 0 delay 8 createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 8 createsprite gRockTombRockSpriteTemplate, ANIM_TARGET, 2, -3, 13, 64, 66, 0 delay 8 createvisualtask AnimTask_ShakeBattleTerrain, 2, 0, 2, 3, 1 - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET delay 24 - playsewithpan SE_M_HYPER_BEAM, 63 - createsprite gRedXSpriteTemplate, ANIM_TARGET, 5, 1, 50 - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 20, 1 + playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_TARGET + createsprite gRedXSpriteTemplate, ANIM_TARGET, 5, ANIM_TARGET, 50 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 20, 1 createvisualtask AnimTask_ShakeBattleTerrain, 2, 2, 0, 10, 1 waitforvisualfinish end -Move_SILVER_WIND:: +Move_SILVER_WIND: loadspritegfx ANIM_TAG_SPARKLE_6 - panse_1B SE_M_GUST, 192, 63, 2, 0 + panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 playsewithpan SE_M_MORNING_SUN, 0 delay 0 monbg ANIM_DEF_PARTNER - monbgprio_29 + splitbgprio_all delay 0 - createvisualtask AnimTask_BlendExcept, 10, 1, 0, 0, 4, 0 - createvisualtask AnimTask_GetTargetSide, 2, - jumpargeq 7, 1, SilverWindOnPlayer + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 0, 0, 4, RGB_BLACK + createvisualtask AnimTask_GetTargetSide, 2 + jumprettrue SilverWindOnPlayer fadetobg BG_BUG_OPPONENT waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, 1536, 0, 0, -1 -SilverWindContinue:: +SilverWindContinue: delay 0 - createvisualtask AnimTask_BlendSelected, 10, 1, 0, 4, 4, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 0, 4, 4, RGB_BLACK waitbgfadein createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -32, 16, 0, 6, 2, 3, 1 createsprite gSilverWindBigSparkSpriteTemplate, ANIM_TARGET, 66, -8, 18, 64, 3, 2, 2, 1 @@ -9357,38 +9352,38 @@ SilverWindContinue:: createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_TARGET, 66, -4, 16, 0, 6, 1, 2, 1 createsprite gSilverWindSmallSparkSpriteTemplate, ANIM_TARGET, 66, -16, 12, 192, 5, 2, 3, 1 waitforvisualfinish - playsewithpan SE_M_GUST2, 63 + playsewithpan SE_M_GUST2, SOUND_PAN_TARGET clearmonbg ANIM_DEF_PARTNER delay 0 restorebg waitbgfadeout - createvisualtask AnimTask_BlendExcept, 10, 1, 0, 4, 0, 0 - setarg 7, 65535 + createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 0, 4, 0, RGB_BLACK + setarg 7, 0xFFFF waitbgfadein end -SilverWindOnPlayer:: +SilverWindOnPlayer: fadetobg BG_BUG_PLAYER waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -1536, 0, 0, -1 goto SilverWindContinue -Move_SNATCH:: - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_WindUpLunge, 5, 0, -12, 4, 10, 10, 12, 6 +Move_SNATCH: + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -12, 4, 10, 10, 12, 6 end -Move_DIVE:: +Move_DIVE: loadspritegfx ANIM_TAG_SPLASH loadspritegfx ANIM_TAG_SWEAT_BEAD choosetwoturnanim DiveSetUp, DiveAttack -DiveSetUp:: +DiveSetUp: loadspritegfx ANIM_TAG_ROUND_SHADOW - playsewithpan SE_M_HEADBUTT, 192 + playsewithpan SE_M_HEADBUTT, SOUND_PAN_ATTACKER createsprite gDiveBallSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 13, 336 waitforvisualfinish - playsewithpan SE_M_DIVE, 192 + playsewithpan SE_M_DIVE, SOUND_PAN_ATTACKER createsprite gDiveWaterSplashSpriteTemplate, ANIM_ATTACKER, 3, 0 call DiveSetUpWaterDroplets call DiveSetUpWaterDroplets @@ -9397,17 +9392,17 @@ DiveSetUp:: call DiveSetUpWaterDroplets end -DiveSetUpWaterDroplets:: +DiveSetUpWaterDroplets: createsprite gSprayWaterDropletSpriteTemplate, ANIM_ATTACKER, 5, 0, 0 createsprite gSprayWaterDropletSpriteTemplate, ANIM_ATTACKER, 5, 1, 0 return -DiveAttack:: +DiveAttack: loadspritegfx ANIM_TAG_WATER_IMPACT loadspritegfx ANIM_TAG_SMALL_BUBBLES monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_EXPLOSION, 63 + playsewithpan SE_M_EXPLOSION, SOUND_PAN_TARGET createsprite gDiveWaterSplashSpriteTemplate, ANIM_TARGET, 3, 1 call DiveAttackWaterDroplets call DiveAttackWaterDroplets @@ -9417,40 +9412,40 @@ DiveAttack:: delay 12 call RisingWaterHitEffect waitforvisualfinish - visible 0 + visible ANIM_ATTACKER clearmonbg ANIM_DEF_PARTNER blendoff end -DiveAttackWaterDroplets:: +DiveAttackWaterDroplets: createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1 createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 return -Move_ROCK_BLAST:: +Move_ROCK_BLAST: loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 3 - playsewithpan SE_M_SWAGGER, 192 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER createsprite gRockBlastRockSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 25, 257 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 1 - playsewithpan SE_M_ROCK_THROW, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 1 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 0, 20, 24, 14, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 5, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 5, 1 createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 5, 0, -20, 24, 14, 1 createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, 0, 5, 20, -24, 14, 2 createsprite gRockFragmentSpriteTemplate, ANIM_TARGET, 2, -5, 0, -20, -24, 14, 2 waitforvisualfinish end -Move_OVERHEAT:: +Move_OVERHEAT: loadspritegfx ANIM_TAG_SMALL_EMBER loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 18 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 5, 28 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 5, RGB(28, 0, 0) waitforvisualfinish createvisualtask AnimTask_AllocBackupPalBuffer, 5 waitforvisualfinish @@ -9458,13 +9453,13 @@ Move_OVERHEAT:: delay 1 createvisualtask AnimTask_CopyPalFadedToUnfaded, 5, 0 delay 1 - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_CopyPalUnfadedToBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 1, 0, 13, 28 - createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 1, 0, 13, RGB(28, 0, 0) + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 2, 0, 15, 1 waitforvisualfinish - playsewithpan SE_M_FLAME_WHEEL2, 192 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_ATTACKER createsprite gOverheatFlameSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 30, 25, -20 createsprite gOverheatFlameSpriteTemplate, ANIM_ATTACKER, 2, 1, 32, 30, 25, -20 createsprite gOverheatFlameSpriteTemplate, ANIM_ATTACKER, 2, 1, 64, 30, 25, -20 @@ -9493,26 +9488,26 @@ Move_OVERHEAT:: createsprite gOverheatFlameSpriteTemplate, ANIM_ATTACKER, 66, 1, 224, 30, 25, 10 delay 5 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, 3, 1, 0 - playsewithpan SE_M_FIRE_PUNCH, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 10, 0, 25, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, 3, ANIM_TARGET, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 10, 0, 25, 1 delay 6 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -5, 1, 0 - playsewithpan SE_M_FIRE_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 8, -5, ANIM_TARGET, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 10, 1, 0 - playsewithpan SE_M_FIRE_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, 10, ANIM_TARGET, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET delay 8 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 0 - playsewithpan SE_M_FIRE_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 0 + playsewithpan SE_M_FIRE_PUNCH, SOUND_PAN_TARGET createvisualtask AnimTask_CopyPalFadedToUnfaded, 5, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, -1, 0, 13, 19026 - createvisualtask AnimTask_ShakeMon, 5, 0, 3, 0, 15, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, -1, 0, 13, RGB(18, 18, 18) + createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 3, 0, 15, 1 waitforvisualfinish createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 0, 1 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 5, 0, 28 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 5, 0, RGB(28, 0, 0) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -9520,36 +9515,36 @@ Move_OVERHEAT:: delay 15 createvisualtask AnimTask_CopyPalUnfadedFromBackup, 5, 1, 0 delay 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 0, 13, 0, 19026 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 0, 13, 0, RGB(18, 18, 18) waitforvisualfinish createvisualtask AnimTask_FreeBackupPalBuffer, 5 waitforvisualfinish end -Move_HYDRO_CANNON:: +Move_HYDRO_CANNON: loadspritegfx ANIM_TAG_WATER_ORB loadspritegfx ANIM_TAG_WATER_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 - playsewithpan SE_M_SURF, 192 - createsprite gHydroCannonChargeSpriteTemplate, ANIM_TARGET, 2, + playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER + createsprite gHydroCannonChargeSpriteTemplate, ANIM_TARGET, 2 delay 10 createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 delay 30 - panse_1B SE_M_HYDRO_PUMP, 192, 63, 2, 0 + panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0 call HydroCannonBeam - createvisualtask AnimTask_ShakeMon, 5, 1, 10, 0, 40, 1 - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 10, 0, 40, 1 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 call HydroCannonBeam - createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1, 0 + createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0 waitforvisualfinish createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257 waitforvisualfinish @@ -9557,7 +9552,7 @@ Move_HYDRO_CANNON:: blendoff end -HydroCannonBeam:: +HydroCannonBeam: createsprite gHydroCannonBeamSpriteTemplate, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257 delay 1 createsprite gHydroCannonBeamSpriteTemplate, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257 @@ -9569,54 +9564,54 @@ HydroCannonBeam:: createsprite gHydroCannonBeamSpriteTemplate, ANIM_TARGET, 2, 10, -10, 0, 0, 15, 257 return -Move_ASTONISH:: +Move_ASTONISH: loadspritegfx ANIM_TAG_SWEAT_BEAD - playsewithpan SE_M_ENCORE, 192 + playsewithpan SE_M_ENCORE, SOUND_PAN_ATTACKER createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 25 createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1 - playsewithpan SE_M_SKETCH, 63 + playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 - createvisualtask AnimTask_StretchTargetUp, 3, + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 + createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish end -Move_SEISMIC_TOSS:: +Move_SEISMIC_TOSS: loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS setarg 7, 0 monbg ANIM_DEF_PARTNER setalpha 12, 8 waitforvisualfinish - createvisualtask AnimTask_GetSeismicTossDamageLevel, 3, + createvisualtask AnimTask_GetSeismicTossDamageLevel, 3 delay 1 - fadetobg 17 + fadetobg BG_IN_AIR waitbgfadeout createvisualtask AnimTask_MoveSeismicTossBg, 3 playsewithpan SE_M_SKY_UPPERCUT, 0 waitbgfadein waitforvisualfinish createvisualtask AnimTask_SeismicTossBgAccelerateDownAtEnd, 3 - jumpargeq 7, 0, SeismicTossWeak - jumpargeq 7, 1, SeismicTossMedium - jumpargeq 7, 2, SeismicTossStrong -SeismicTossContinue:: + jumpreteq 0, SeismicTossWeak + jumpreteq 1, SeismicTossMedium + jumpreteq 2, SeismicTossStrong +SeismicTossContinue: restorebg waitbgfadeout - setarg 7, 4095 + setarg 7, 0xFFF waitbgfadein clearmonbg ANIM_DEF_PARTNER blendoff end -SeismicTossWeak:: +SeismicTossWeak: call SeismicTossRockScatter1 delay 16 call SeismicTossRockScatter2 goto SeismicTossContinue -SeismicTossMedium:: +SeismicTossMedium: call SeismicTossRockScatter1 delay 14 call SeismicTossRockScatter2 @@ -9624,7 +9619,7 @@ SeismicTossMedium:: call SeismicTossRockScatter1 goto SeismicTossContinue -SeismicTossStrong:: +SeismicTossStrong: call SeismicTossRockScatter2 delay 10 call SeismicTossRockScatter1 @@ -9634,197 +9629,199 @@ SeismicTossStrong:: call SeismicTossRockScatter1 goto SeismicTossContinue -SeismicTossRockScatter1:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, 1, 1 - playsewithpan SE_M_STRENGTH, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 5, 1 +SeismicTossRockScatter1: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -10, -8, ANIM_TARGET, 1 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 5, 1 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 27, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 28, 3, 4 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 30, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 25, 4, 4 return -SeismicTossRockScatter2:: - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, -8, 1, 1 - playsewithpan SE_M_ROCK_THROW, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 5, 1 +SeismicTossRockScatter2: + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 10, -8, ANIM_TARGET, 1 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 5, 1 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 32, 3, 4 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 31, 2, 2 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 28, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 30, 4, 3 return -Move_MAGIC_COAT:: +Move_MAGIC_COAT: loadspritegfx ANIM_TAG_ORANGE_LIGHT_WALL setalpha 0, 16 - waitplaysewithpan SE_M_BARRIER, 192, 15 - createsprite gMagicCoatWallSpriteTemplate, ANIM_ATTACKER, 3, 40, 0, 10170 + waitplaysewithpan SE_M_BARRIER, SOUND_PAN_ATTACKER, 15 + createsprite gMagicCoatWallSpriteTemplate, ANIM_ATTACKER, 3, 40, 0, ANIM_TAG_ORANGE_LIGHT_WALL waitforvisualfinish delay 1 blendoff end -Move_WATER_PULSE:: +Move_WATER_PULSE: loadspritegfx ANIM_TAG_SMALL_BUBBLES loadspritegfx ANIM_TAG_BLUE_RING_2 - monbg 1 - monbgprio_28 1 - playsewithpan SE_M_BUBBLE3, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, 29472 + monbg ANIM_TARGET + splitbgprio ANIM_TARGET + playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 0, 0, 7, RGB(0, 25, 28) delay 10 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 100, 100, 8, 1, 20, 40, 0 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 20, 100, 16, 2, 10, 35, 1 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 200, 80, 8, 1, 40, 20, 0 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 80, 60, 10, 3, 20, 50, 0 createsprite gWaterPulseBubbleSpriteTemplate, ANIM_ATTACKER, 66, 140, 100, 16, 1, 20, 30, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET waitforvisualfinish - playsewithpan SE_M_GIGA_DRAIN, 192 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER createsprite gWaterPulseRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 40, 15 delay 5 - playsewithpan SE_M_GIGA_DRAIN, 192 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER createsprite gWaterPulseRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 40, 15 delay 5 - playsewithpan SE_M_GIGA_DRAIN, 192 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_ATTACKER createsprite gWaterPulseRingSpriteTemplate, ANIM_TARGET, 2, 0, 0, 40, 15 delay 13 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 8, 18, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 8, 18, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 7, 0, 29472 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 7, 0, RGB(0, 25, 28) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Move_PSYCHO_BOOST:: +Move_PSYCHO_BOOST: loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT monbg ANIM_ATK_PARTNER - fadetobg 3 + fadetobg BG_PSYCHIC waitbgfadeout - createvisualtask AnimTask_FadeScreenToWhite, 5, + createvisualtask AnimTask_FadeScreenToWhite, 5 waitbgfadein delay 6 - createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, 0 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_BG, 2, 8, 0, 10, RGB_BLACK delay 0 - monbgprio_28 0 + splitbgprio ANIM_ATTACKER setalpha 8, 8 delay 10 - createvisualtask AnimTask_ShakeMon, 2, 0, 3, 0, 240, 0 - loopsewithpan SE_M_PSYBEAM2, 192, 14, 10 + createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 3, 0, 240, 0 + loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 14, 10 createsprite gPsychoBoostOrbSpriteTemplate, ANIM_ATTACKER, 2 delay 110 - loopsewithpan SE_M_PSYBEAM2, 192, 7, 10 + loopsewithpan SE_M_PSYBEAM2, SOUND_PAN_ATTACKER, 7, 10 waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, -8, 1, 24, 1 - playsewithpan SE_M_LEER, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, -8, 1, 24, 1 + playsewithpan SE_M_LEER, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff - call UnsetPsychicBg + call UnsetPsychicBackground end -Move_KNOCK_OFF:: +Move_KNOCK_OFF: loadspritegfx ANIM_TAG_SLAM_HIT_2 loadspritegfx ANIM_TAG_IMPACT createsprite gHorizontalLungeSpriteTemplate, ANIM_ATTACKER, 2, 4, 6 delay 4 - playsewithpan SE_M_VITAL_THROW, 63 + playsewithpan SE_M_VITAL_THROW, SOUND_PAN_TARGET createsprite gKnockOffStrikeSpriteTemplate, ANIM_TARGET, 2, -16, -16 delay 8 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, 1, 2 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, 0, ANIM_TARGET, 2 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -12, 10, 0, 3 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 5 delay 3 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 0, 3, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 delay 5 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 6 delay 10 waitforvisualfinish end -Move_DOOM_DESIRE:: +Move_DOOM_DESIRE: createvisualtask GetIsDoomDesireHitTurn, 2 delay 1 monbg ANIM_ATK_PARTNER - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 1, 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, FALSE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB_BLACK waitforvisualfinish setalpha 8, 8 - playsewithpan SE_M_PSYBEAM, 192 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, 0, 1 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_ATTACKER, 1 waitforvisualfinish delay 20 - createvisualtask AnimTask_SetGreyscaleOrOriginalPal, 5, 1, 1 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, 0 + createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, ANIM_TARGET, TRUE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB_BLACK waitforvisualfinish clearmonbg ANIM_ATK_PARTNER blendoff end + +UnusedDoomDesireHit: loadspritegfx ANIM_TAG_EXPLOSION createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_WHITE waitforvisualfinish delay 10 createvisualtask AnimTask_DoomDesireLightBeam, 5, delay 5 - playsewithpan SE_M_CONFUSE_RAY, 192 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER delay 10 playsewithpan SE_M_CONFUSE_RAY, 0 delay 10 - playsewithpan SE_M_CONFUSE_RAY, 63 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET delay 23 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 20, 1 - playsewithpan SE_M_SELF_DESTRUCT, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 20, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE waitforvisualfinish end -Move_SKY_UPPERCUT:: +Move_SKY_UPPERCUT: loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER - monbgprio_28 1 - fadetobg 17 + splitbgprio ANIM_TARGET + fadetobg BG_IN_AIR waitbgfadeout - playsewithpan SE_M_SKY_UPPERCUT, 192 + playsewithpan SE_M_SKY_UPPERCUT, SOUND_PAN_ATTACKER createvisualtask AnimTask_MoveSkyUppercutBg, 5, 55 waitbgfadein setalpha 12, 8 delay 38 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, 28, 0, 0, 5 delay 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 6, 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -28, 28, 1, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 6, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -28, 28, ANIM_TARGET, 1 delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -15, 8, 1, 1 - playsewithpan SE_M_VITAL_THROW2, 63 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -15, 8, ANIM_TARGET, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, -12, 1, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -5, -12, ANIM_TARGET, 1 delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -32, 1, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 0, -32, ANIM_TARGET, 1 delay 1 - playsewithpan SE_M_VITAL_THROW2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, -52, 1, 1 + playsewithpan SE_M_VITAL_THROW2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 5, -52, ANIM_TARGET, 1 createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 1, -26, 16, 1, 4 delay 4 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 0, 3, 6, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 0, 3, 6, 1 delay 30 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 6 delay 4 @@ -9833,77 +9830,77 @@ Move_SKY_UPPERCUT:: blendoff restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein end -Move_SECRET_POWER:: - createvisualtask AnimTask_GetBattleTerrain, 5, - jumpargeq 0, 0, Move_NEEDLE_ARM - jumpargeq 0, 1, Move_MAGICAL_LEAF - jumpargeq 0, 2, Move_MUD_SHOT - jumpargeq 0, 3, Move_WATERFALL - jumpargeq 0, 4, Move_SURF - jumpargeq 0, 5, Move_BUBBLE_BEAM - jumpargeq 0, 6, Move_ROCK_THROW - jumpargeq 0, 7, Move_BITE - jumpargeq 0, 8, Move_STRENGTH +Move_SECRET_POWER: + createvisualtask AnimTask_GetBattleTerrain, 5 + jumpargeq 0, BATTLE_TERRAIN_GRASS, Move_NEEDLE_ARM + jumpargeq 0, BATTLE_TERRAIN_LONG_GRASS, Move_MAGICAL_LEAF + jumpargeq 0, BATTLE_TERRAIN_SAND, Move_MUD_SHOT + jumpargeq 0, BATTLE_TERRAIN_UNDERWATER, Move_WATERFALL + jumpargeq 0, BATTLE_TERRAIN_WATER, Move_SURF + jumpargeq 0, BATTLE_TERRAIN_POND, Move_BUBBLE_BEAM + jumpargeq 0, BATTLE_TERRAIN_MOUNTAIN, Move_ROCK_THROW + jumpargeq 0, BATTLE_TERRAIN_CAVE, Move_BITE + jumpargeq 0, BATTLE_TERRAIN_BUILDING, Move_STRENGTH goto Move_SLAM -Move_TWISTER:: +Move_TWISTER: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_IMPACT loadspritegfx ANIM_TAG_ROCKS monbg ANIM_DEF_PARTNER - monbgprio_28 1 - playsewithpan SE_M_TWISTER, 63 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30 + splitbgprio ANIM_TARGET + playsewithpan SE_M_TWISTER, SOUND_PAN_TARGET + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30 delay 1 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 6, 60, 25 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 55, 6, 60, 25 delay 1 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 60, 7, 60, 30 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 55, 10, 60, 30 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 60, 7, 60, 30 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 55, 10, 60, 30 delay 3 createsprite gTwisterRockSpriteTemplate, ANIM_TARGET, 2, 100, 50, 4, 50, 26 delay 1 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 105, 25, 8, 60, 20 delay 1 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 40, 10, 48, 30 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 40, 10, 48, 30 delay 3 createsprite gTwisterRockSpriteTemplate, ANIM_TARGET, 2, 120, 30, 6, 45, 25 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 115, 35, 10, 60, 30 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 115, 35, 10, 60, 30 delay 3 createsprite gTwisterRockSpriteTemplate, ANIM_TARGET, 2, 105, 20, 8, 40, 0 delay 3 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0 - createsprite gTwisterLeafParticleSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 20, 255, 15, 32, 0 + createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 110, 10, 8, 32, 20 waitforvisualfinish - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 3, 0, 12, 1 - createvisualtask AnimTask_ShakeMonInPlace, 2, 3, 3, 0, 12, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, -32, -16, ANIM_TARGET, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 3, 0, 12, 1 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_DEF_PARTNER, 3, 0, 12, 1 delay 4 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 createsprite gRandomPosHitSplatSpriteTemplate, ANIM_TARGET, 3, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET delay 4 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, 1, 3 - playsewithpan SE_M_COMET_PUNCH, 63 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 3, 32, 20, ANIM_TARGET, 3 + playsewithpan SE_M_COMET_PUNCH, SOUND_PAN_TARGET waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_MAGICAL_LEAF:: +Move_MAGICAL_LEAF: loadspritegfx ANIM_TAG_LEAF loadspritegfx ANIM_TAG_RAZOR_LEAF loadspritegfx ANIM_TAG_IMPACT monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 1 - loopsewithpan SE_M_POISON_POWDER, 192, 10, 5 + loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_ATTACKER, 10, 5 createvisualtask AnimTask_CycleMagicalLeafPal, 5 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -2, 10 delay 2 @@ -9925,56 +9922,56 @@ Move_MAGICAL_LEAF:: delay 2 createsprite gRazorLeafParticleSpriteTemplate, ANIM_ATTACKER, 2, -3, -5, 8 delay 60 - playsewithpan SE_M_RAZOR_WIND2, 192 + playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 32, 20, 0 createsprite gRazorLeafCutterSpriteTemplate, ANIM_TARGET, 3, 20, -10, 20, 0, 32, -20, 0 delay 30 - playsewithpan SE_M_RAZOR_WIND, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, -4, 1, 2 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 10, 4, 1, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 + playsewithpan SE_M_RAZOR_WIND, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, -4, ANIM_TARGET, 2 + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, 10, 4, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 delay 20 - setarg 7, 65535 + setarg 7, 0xFFFF waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -Move_ICE_BALL:: +Move_ICE_BALL: loadspritegfx ANIM_TAG_ICE_CHUNK loadspritegfx ANIM_TAG_ICE_CRYSTALS createvisualtask AnimTask_GetRolloutCounter, 5, 0 jumpargeq 0, 4, IceBallSetIceBg -IceBallContinue:: - playsewithpan SE_M_ICY_WIND, 192 +IceBallContinue: + playsewithpan SE_M_ICY_WIND, SOUND_PAN_ATTACKER createsprite gIceBallChunkSpriteTemplate, ANIM_TARGET, 2, 15, 0, -12, -16, 30, -40 delay 28 - playsewithpan SE_M_BRICK_BREAK, 63 + playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_TARGET createvisualtask AnimTask_GetRolloutCounter, 5, 0 jumpargeq 0, 0, IceBallWeakest jumpargeq 0, 1, IceBallWeak jumpargeq 0, 2, IceBallMediun jumpargeq 0, 3, IceBallStrong jumpargeq 0, 4, IceBallStrongest -IceBallContinue2:: +IceBallContinue2: createvisualtask AnimTask_GetRolloutCounter, 5, 0 jumpargeq 0, 4, IceBallUnsetIceBg -IceBallEnd:: +IceBallEnd: end -IceBallSetIceBg:: - fadetobg 15 +IceBallSetIceBg: + fadetobg BG_ICE goto IceBallContinue -IceBallUnsetIceBg:: +IceBallUnsetIceBg: waitbgfadein delay 45 restorebg waitbgfadein goto IceBallEnd -IceBallWeakest:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 8, 1, 0 +IceBallWeakest: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 8, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -9982,8 +9979,8 @@ IceBallWeakest:: call IceBallImpactShard goto IceBallContinue2 -IceBallWeak:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 10, 1, 0 +IceBallWeak: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 10, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -9993,8 +9990,8 @@ IceBallWeak:: call IceBallImpactShard goto IceBallContinue2 -IceBallMediun:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 14, 1, 0 +IceBallMediun: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 14, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -10006,8 +10003,8 @@ IceBallMediun:: call IceBallImpactShard goto IceBallContinue2 -IceBallStrong:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 18, 1, 0 +IceBallStrong: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 18, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -10020,8 +10017,8 @@ IceBallStrong:: call IceBallImpactShard goto IceBallContinue2 -IceBallStrongest:: - createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, 0, 1, 30, 1, 0 +IceBallStrongest: + createvisualtask AnimTask_ShakeTargetBasedOnMovePowerOrDmg, 2, FALSE, 1, 30, 1, 0 call IceBallImpactShard call IceBallImpactShard call IceBallImpactShard @@ -10034,181 +10031,180 @@ IceBallStrongest:: call IceBallImpactShard goto IceBallContinue2 -IceBallImpactShard:: +IceBallImpactShard: createsprite gIceBallImpactShardSpriteTemplate, ANIM_TARGET, 4, -12, -16 return -Move_WEATHER_BALL:: +Move_WEATHER_BALL: loadspritegfx ANIM_TAG_WEATHER_BALL - createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, 0 + createsprite gVerticalDipSpriteTemplate, ANIM_ATTACKER, 2, 8, 1, ANIM_ATTACKER delay 8 - playsewithpan SE_M_SWAGGER, 192 + playsewithpan SE_M_SWAGGER, SOUND_PAN_ATTACKER createsprite gWeatherBallUpSpriteTemplate, ANIM_ATTACKER, 2 waitforvisualfinish delay 15 playsewithpan SE_M_DETECT, 0 - createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 5, 1, RGB_WHITE, 10, 0, 0 + createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG | F_PAL_BATTLERS, 5, 1, RGB_WHITE, 10, RGB_BLACK, 0 waitforvisualfinish - createvisualtask AnimTask_GetWeather, 2, + createvisualtask AnimTask_GetWeather, 2 delay 1 - jumpargeq 7, 0, WeatherBallNormal - jumpargeq 7, 1, WeatherBallFire - jumpargeq 7, 2, WeatherBallWater - jumpargeq 7, 3, WeatherBallSandstorm - jumpargeq 7, 4, WeatherBallIce - -WeatherBallNormal:: + jumpreteq ANIM_WEATHER_NONE, WeatherBallNormal + jumpreteq ANIM_WEATHER_SUN, WeatherBallFire + jumpreteq ANIM_WEATHER_RAIN, WeatherBallWater + jumpreteq ANIM_WEATHER_SANDSTORM, WeatherBallSandstorm + jumpreteq ANIM_WEATHER_HAIL, WeatherBallIce +WeatherBallNormal: loadspritegfx ANIM_TAG_IMPACT createsprite gWeatherBallNormalDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 waitforvisualfinish - playsewithpan SE_M_MEGA_KICK2, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 8, 1 + playsewithpan SE_M_MEGA_KICK2, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 4, -10, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 8, 1 waitforvisualfinish end -WeatherBallFire:: +WeatherBallFire: loadspritegfx ANIM_TAG_SMALL_EMBER createsprite gWeatherBallFireDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 40, 10 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET delay 10 createsprite gWeatherBallFireDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, -40, 20 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET delay 10 createsprite gWeatherBallFireDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET waitforvisualfinish - playsewithpan SE_M_FLAME_WHEEL2, 63 - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 8, 1 + playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 8, 1 waitforvisualfinish end -WeatherBallWater:: +WeatherBallWater: loadspritegfx ANIM_TAG_SMALL_BUBBLES createsprite gWeatherBallWaterDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 50, 10 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET delay 8 createsprite gWeatherBallWaterDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, -20, 20 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET delay 13 createsprite gWeatherBallWaterDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 - playsewithpan SE_M_CRABHAMMER, 63 + playsewithpan SE_M_CRABHAMMER, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 0, 3, 8, 1 - playsewithpan SE_M_GIGA_DRAIN, 63 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 0, 3, 8, 1 + playsewithpan SE_M_GIGA_DRAIN, SOUND_PAN_TARGET waitforvisualfinish end -WeatherBallSandstorm:: +WeatherBallSandstorm: loadspritegfx ANIM_TAG_ROCKS createsprite gWeatherBallRockDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 30, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 5 createsprite gWeatherBallRockDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, -40, 20 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET delay 14 createsprite gWeatherBallRockDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 1, 0, 0 - playsewithpan SE_M_ROCK_THROW, 63 + playsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET waitforvisualfinish - playsewithpan SE_M_STRENGTH, 63 + playsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -12, 27, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 8, 28, 3, 4 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, -4, 30, 2, 3 createsprite gRockScatterSpriteTemplate, ANIM_TARGET, 2, 12, 25, 4, 4 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 waitforvisualfinish end -WeatherBallIce:: +WeatherBallIce: loadspritegfx ANIM_TAG_HAIL loadspritegfx ANIM_TAG_ICE_CRYSTALS createsprite gWeatherBallIceDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 25, -40, 20 - playsewithpan SE_M_HAIL, 63 + playsewithpan SE_M_HAIL, SOUND_PAN_TARGET delay 10 createsprite gWeatherBallIceDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 25, 40, 0 - playsewithpan SE_M_HAIL, 63 + playsewithpan SE_M_HAIL, SOUND_PAN_TARGET delay 10 createsprite gWeatherBallIceDownSpriteTemplate, ANIM_TARGET, 2, -30, -100, 25, 25, 0, 0 - playsewithpan SE_M_HAIL, 63 + playsewithpan SE_M_HAIL, SOUND_PAN_TARGET waitforvisualfinish - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 - playsewithpan SE_M_ICY_WIND, 63 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET call IceCrystalEffectShort waitforvisualfinish end -Move_COUNT:: +Move_COUNT: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -IceCrystalEffectShort:: +IceCrystalEffectShort: createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -10, -10, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 10, 20, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -5, 10, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 17, -12, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, -15, 15, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 20, 2, 0 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET return -IceCrystalEffectLong:: +IceCrystalEffectLong: createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -10, -10, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 10, 20, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -29, 0, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 29, -20, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -5, 10, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 17, -12, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, -20, 0, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, -15, 15, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 26, -5, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitSmallSpriteTemplate, ANIM_TARGET, 2, 0, 0, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET delay 4 createsprite gIceCrystalHitLargeSpriteTemplate, ANIM_TARGET, 2, 20, 2, 1 - playsewithpan SE_M_ICY_WIND, 63 + playsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET return - + IceSpikesEffectShort: @ Unused - loopsewithpan SE_M_ICY_WIND, 63, 6, 4 + loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 6, 4 createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 24, 0 delay 4 createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, 8, 24, 0 @@ -10224,8 +10220,8 @@ IceSpikesEffectShort: @ Unused createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, -32, 24, 0 return -IceSpikesEffectLong:: - loopsewithpan SE_M_ICY_WIND, 63, 6, 4 +IceSpikesEffectLong: + loopsewithpan SE_M_ICY_WIND, SOUND_PAN_TARGET, 6, 4 createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, 0, 24, 1 delay 4 createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, 8, 24, 1 @@ -10247,15 +10243,15 @@ IceSpikesEffectLong:: createsprite gIceGroundSpikeSpriteTemplate, ANIM_TARGET, 2, -48, 24, 1 return -GrantingStarsEffect:: +GrantingStarsEffect: createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60 delay 8 createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60 delay 8 return -HealingEffect:: - playsewithpan SE_M_ABSORB_2, 192 +HealingEffect: + playsewithpan SE_M_ABSORB_2, SOUND_PAN_ATTACKER createsprite gHealingBlueStarSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 0, 0 delay 7 createsprite gHealingBlueStarSpriteTemplate, ANIM_ATTACKER, 2, -15, 10, 0, 0 @@ -10266,8 +10262,8 @@ HealingEffect:: delay 7 return -HealingEffect2:: - playsewithpan SE_M_ABSORB_2, 63 +HealingEffect2: + playsewithpan SE_M_ABSORB_2, SOUND_PAN_TARGET createsprite gHealingBlueStarSpriteTemplate, ANIM_TARGET, 2, 0, -5, 1, 0 delay 7 createsprite gHealingBlueStarSpriteTemplate, ANIM_TARGET, 2, -15, 10, 1, 0 @@ -10278,74 +10274,74 @@ HealingEffect2:: delay 7 return -PoisonBubblesEffect:: +PoisonBubblesEffect: createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 10, 10, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 20, -20, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, -20, 15, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, -20, -20, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET delay 6 createsprite gPoisonBubbleSpriteTemplate, ANIM_TARGET, 2, 16, -8, 0 - playsewithpan SE_M_TOXIC, 63 + playsewithpan SE_M_TOXIC, SOUND_PAN_TARGET return -WaterBubblesEffectShort:: +WaterBubblesEffectShort: createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, -20, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 0 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET return -WaterBubblesEffectLong:: +WaterBubblesEffectLong: createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 10, 10, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -28, -10, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 20, -20, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 27, 8, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, -20, -20, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET delay 6 createsprite gWaterBubbleSpriteTemplate, ANIM_ATTACKER, 2, 16, -8, 1 - playsewithpan SE_M_BUBBLE3, 63 + playsewithpan SE_M_BUBBLE3, SOUND_PAN_TARGET return -ElectricityEffect:: - playsewithpan SE_M_THUNDERBOLT2, 63 +ElectricityEffect: + playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_TARGET createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, 5, 0, 5, 0 delay 2 createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -5, 10, 5, 1 @@ -10363,8 +10359,8 @@ ElectricityEffect:: createsprite gElectricitySpriteTemplate, ANIM_TARGET, 2, -20, 15, 5, 1 return -ConfusionEffect:: - loopsewithpan SE_M_DIZZY_PUNCH, 63, 13, 6 +ConfusionEffect: + loopsewithpan SE_M_DIZZY_PUNCH, SOUND_PAN_TARGET, 13, 6 createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 0, 3, 90 createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 51, 3, 90 createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 102, 3, 90 @@ -10372,333 +10368,334 @@ ConfusionEffect:: createsprite gConfusionDuckSpriteTemplate, ANIM_TARGET, 2, 0, -15, 204, 3, 90 return -SetPsychicBackground:: - fadetobg 3 +SetPsychicBackground: + fadetobg BG_PSYCHIC waitbgfadeout - createvisualtask AnimTask_SetPsychicBackground, 5, + createvisualtask AnimTask_SetPsychicBackground, 5 waitbgfadein return -UnsetPsychicBg:: +UnsetPsychicBackground: restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein return -SetSkyBg:: +SetSkyBg: jumpifcontest SetSkyBgContest - fadetobg 18 + fadetobg BG_SKY waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, -2304, 768, 1, -1 -SetSkyBgContinue:: +SetSkyBgContinue: waitbgfadein return -SetSkyBgContest:: - fadetobg 19 +SetSkyBgContest: + fadetobg BG_SKY_CONTESTS waitbgfadeout createvisualtask AnimTask_StartSlidingBg, 5, 2304, 768, 0, -1 goto SetSkyBgContinue -UnsetSkyBg:: +UnsetSkyBg: restorebg waitbgfadeout - setarg 7, 65535 + setarg 7, 0xFFFF waitbgfadein return -SetSolarBeamBg:: - createvisualtask AnimTask_IsContest, 2, - jumpargeq 7, 1, SetSolarBeamBgContest - createvisualtask AnimTask_IsTargetPlayerSide, 2, - jumpargeq 7, 0, SetSolarBeamBgOpponent +SetSolarBeamBg: + createvisualtask AnimTask_IsContest, 2 + jumprettrue SetSolarBeamBgContest + createvisualtask AnimTask_IsTargetPlayerSide, 2 + jumpretfalse SetSolarBeamBgOpponent goto SetSolarBeamBgPlayer -SetSolarBeamBgContinue:: + +SetSolarBeamBgContinue: waitbgfadein return -SetSolarBeamBgContest:: +SetSolarBeamBgContest: fadetobg BG_SOLAR_BEAM_CONTESTS goto SetSolarBeamBgContinue -SetSolarBeamBgPlayer:: +SetSolarBeamBgPlayer: fadetobg BG_SOLAR_BEAM_PLAYER goto SetSolarBeamBgContinue -SetSolarBeamBgOpponent:: +SetSolarBeamBgOpponent: fadetobg BG_SOLAR_BEAM_OPPONENT goto SetSolarBeamBgContinue -UnsetSolarBeamBg:: +UnsetSolarBeamBg: restorebg waitbgfadein return -Status_Poison:: - loopsewithpan SE_M_TOXIC, 63, 13, 6 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 18, 2 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 12, 31774 +Status_Poison: + loopsewithpan SE_M_TOXIC, SOUND_PAN_TARGET, 13, 6 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 18, 2 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 12, RGB(30, 0, 31) end -Status_Confusion:: +Status_Confusion: loadspritegfx ANIM_TAG_DUCK call ConfusionEffect end -Status_Burn:: +Status_Burn: loadspritegfx ANIM_TAG_SMALL_EMBER - playsewithpan SE_M_FLAME_WHEEL, 63 + playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_TARGET call BurnFlame call BurnFlame call BurnFlame waitforvisualfinish end -BurnFlame:: +BurnFlame: createsprite gBurnFlameSpriteTemplate, ANIM_TARGET, 2, -24, 24, 24, 24, 20, 1, 1 delay 4 return -Status_Infatuation:: +Status_Infatuation: loadspritegfx ANIM_TAG_MAGENTA_HEART - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 0, 20 delay 15 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, -20, 20 delay 15 - playsewithpan SE_M_CHARM, 192 + playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER createsprite gMagentaHeartSpriteTemplate, ANIM_ATTACKER, 3, 20, 20 end -Status_Sleep:: +Status_Sleep: loadspritegfx ANIM_TAG_LETTER_Z - playsewithpan SE_M_SNORE, 192 + playsewithpan SE_M_SNORE, SOUND_PAN_ATTACKER createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 delay 30 createsprite gSleepLetterZSpriteTemplate, ANIM_ATTACKER, 2, 4, -10, 16, 0, 0 end -Status_Paralysis:: +Status_Paralysis: loadspritegfx ANIM_TAG_SPARK_2 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 10, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 10, 1 call ElectricityEffect end -Status_Freeze:: +Status_Freeze: playsewithpan SE_M_ICY_WIND, 0 loadspritegfx ANIM_TAG_ICE_CUBE monbg ANIM_DEF_PARTNER - monbgprio_28 1 - waitplaysewithpan SE_M_HAIL, 63, 17 - createvisualtask AnimTask_FrozenIceCube, 2, + splitbgprio ANIM_TARGET + waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17 + createvisualtask AnimTask_FrozenIceCube, 2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Status_Curse:: +Status_Curse: loadspritegfx ANIM_TAG_GHOSTLY_SPIRIT monbg ANIM_DEF_PARTNER - playsewithpan SE_M_NIGHTMARE, 63 - createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2, - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 14, 1 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET + createsprite gCurseGhostSpriteTemplate, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -Status_Nightmare:: +Status_Nightmare: loadspritegfx ANIM_TAG_DEVIL monbg ANIM_DEF_PARTNER - playsewithpan SE_M_NIGHTMARE, 63 + playsewithpan SE_M_NIGHTMARE, SOUND_PAN_TARGET createsprite gNightmareDevilSpriteTemplate, ANIM_TARGET, 2 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 14, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 14, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER end -General_CastformChange:: - createvisualtask AnimTask_IsMonInvisible, 2, - jumpargeq 7, 1, CastformChangeSkipAnim +General_CastformChange: + createvisualtask AnimTask_IsMonInvisible, 2 + jumpreteq TRUE, CastformChangeSkipAnim goto CastformChangeContinue -CastformChangeContinue:: +CastformChangeContinue: monbg ANIM_ATTACKER - playsewithpan SE_M_TELEPORT, 192 - waitplaysewithpan SE_M_MINIMIZE, 192, 48 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 createvisualtask AnimTask_TransformMon, 2, 1 waitforvisualfinish clearmonbg ANIM_ATTACKER end -CastformChangeSkipAnim:: +CastformChangeSkipAnim: createvisualtask AnimTask_CastformGfxChange, 2, 1 end -General_StatsChange:: - createvisualtask AnimTask_StatsChange, 5, +General_StatsChange: + createvisualtask AnimTask_StatsChange, 5 waitforvisualfinish end -General_SubstituteFade:: +General_SubstituteFade: monbg ANIM_ATTACKER createvisualtask AnimTask_SubstituteFadeToInvisible, 5 - createvisualtask AnimTask_BlendSelected, 10, 2, 0, 0, 16, RGB_WHITE + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 16, RGB_WHITE waitforvisualfinish delay 1 clearmonbg ANIM_ATTACKER delay 2 blendoff - createvisualtask AnimTask_BlendSelected, 10, 2, 0, 0, 0, RGB_WHITE - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 1 + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_ATTACKER, 0, 0, 0, RGB_WHITE + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE end -General_SubstituteAppear:: - createvisualtask AnimTask_MonToSubstitute, 2, +General_SubstituteAppear: + createvisualtask AnimTask_MonToSubstitute, 2 end -General_BaitThrow:: +General_BaitThrow: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 0 - createvisualtask AnimTask_LoadBaitGfx, 2, + createvisualtask AnimTask_LoadBaitGfx, 2 delay 0 - waitplaysewithpan SE_M_JUMP_KICK, 192, 22 + waitplaysewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER, 22 createsprite gSafariBaitSpriteTemplate, ANIM_TARGET, 3, -18, 12, 0, 32 delay 50 - loopsewithpan SE_M_TAIL_WHIP, 63, 19, 2 - createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 2, 1 + loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_TARGET, 19, 2 + createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 2, ANIM_TARGET waitforvisualfinish - createvisualtask AnimTask_FreeBaitGfx, 2, + createvisualtask AnimTask_FreeBaitGfx, 2 end -General_ItemKnockoff:: +General_ItemKnockoff: loadspritegfx ANIM_TAG_ITEM_BAG - createsprite gKnockOffItemSpriteTemplate, ANIM_TARGET, 2, + createsprite gKnockOffItemSpriteTemplate, ANIM_TARGET, 2 end -General_TurnTrap:: - createvisualtask AnimTask_GetTrappedMoveAnimId, 5, - jumpargeq 0, 1, Status_FireSpin - jumpargeq 0, 2, Status_Whirlpool - jumpargeq 0, 3, Status_Clamp - jumpargeq 0, 4, Status_SandTomb +General_TurnTrap: + createvisualtask AnimTask_GetTrappedMoveAnimId, 5 + jumpargeq 0, TRAP_ANIM_FIRE_SPIN, Status_FireSpin + jumpargeq 0, TRAP_ANIM_WHIRLPOOL, Status_Whirlpool + jumpargeq 0, TRAP_ANIM_CLAMP, Status_Clamp + jumpargeq 0, TRAP_ANIM_SAND_TOMB, Status_SandTomb goto Status_BindWrap -Status_BindWrap:: +Status_BindWrap: loadspritegfx ANIM_TAG_TENDRILS - loopsewithpan SE_M_SCRATCH, 63, 6, 2 + loopsewithpan SE_M_SCRATCH, SOUND_PAN_TARGET, 6, 2 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 4, 0, 16, 0, 1 delay 7 createsprite gConstrictBindingSpriteTemplate, ANIM_TARGET, 2, 0, 8, 1, 1 delay 3 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 8, 1 + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 8, 1 delay 20 - setarg 7, 65535 - playsewithpan SE_M_BIND, 63 + setarg 7, 0xFFFF + playsewithpan SE_M_BIND, SOUND_PAN_TARGET waitforvisualfinish end -Status_FireSpin:: +Status_FireSpin: loadspritegfx ANIM_TAG_SMALL_EMBER - playsewithpan SE_M_SACRED_FIRE2, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1 + playsewithpan SE_M_SACRED_FIRE2, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 call FireSpinEffect call FireSpinEffect waitforvisualfinish stopsound end -Status_Whirlpool:: +Status_Whirlpool: loadspritegfx ANIM_TAG_WATER_ORB monbg ANIM_DEF_PARTNER - monbgprio_28 1 + splitbgprio ANIM_TARGET setalpha 12, 8 delay 0 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 23968 - playsewithpan SE_M_WHIRLPOOL, 63 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(0, 13, 23) + playsewithpan SE_M_WHIRLPOOL, SOUND_PAN_TARGET + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 call WhirlpoolEffect call WhirlpoolEffect delay 12 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 23968 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(0, 13, 23) waitforvisualfinish stopsound clearmonbg ANIM_DEF_PARTNER end -Status_Clamp:: +Status_Clamp: loadspritegfx ANIM_TAG_CLAMP loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_VICEGRIP, 63 + playsewithpan SE_M_VICEGRIP, SOUND_PAN_TARGET createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, -32, 0, 2, 819, 0, 10 createsprite gClampJawSpriteTemplate, ANIM_ATTACKER, 2, 32, 0, 6, -819, 0, 10 delay 10 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1 + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 3, 0, 5, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff waitforvisualfinish end -Status_SandTomb:: +Status_SandTomb: loadspritegfx ANIM_TAG_MUD_SAND - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, 563 - createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1 - playsewithpan SE_M_SAND_TOMB, 63 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 7, RGB(19, 17, 0) + createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 0, 2, 30, 1 + playsewithpan SE_M_SAND_TOMB, SOUND_PAN_TARGET call SandTombSwirlingDirt call SandTombSwirlingDirt delay 22 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 7, 0, 563 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 7, 0, RGB(19, 17, 0) waitforvisualfinish stopsound end -General_ItemEffect:: +General_HeldItemEffect: loadspritegfx ANIM_TAG_THIN_RING loadspritegfx ANIM_TAG_SPARKLE_2 delay 0 - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, 0, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, ANIM_ATTACKER, 2 waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, 0, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, ANIM_ATTACKER, 2 waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 192 - createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, 0, 2 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER + createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 128, ANIM_ATTACKER, 2 waitforvisualfinish - playsewithpan SE_M_MORNING_SUN, 192 + playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish - playsewithpan SE_SHINY, 192 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 2, 3, 7, 0, 26609 + playsewithpan SE_SHINY, SOUND_PAN_ATTACKER + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_ATTACKER, 3, 7, 0, RGB(17, 31, 25) createsprite gThinRingExpandingSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 0, 0 waitforvisualfinish end -General_SmokeballEscape:: +General_SmokeballEscape: loadspritegfx ANIM_TAG_PINK_CLOUD monbg ANIM_ATTACKER setalpha 12, 4 delay 0 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_TARGET, 0, 0, 32, 28, 30 delay 4 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 127, 2, 12, 20, 30 delay 12 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 126, 2, -28, 4, 30 delay 12 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 124, 2, 14, -20, 30 delay 4 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createvisualtask AnimTask_AttackerFadeToInvisible, 2, 2 createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 123, 3, 4, 4, 30 delay 14 - playsewithpan SE_BALL_OPEN, 63 + playsewithpan SE_BALL_OPEN, SOUND_PAN_TARGET createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 122, 3, -14, 18, 46 delay 0 createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 121, 3, 14, -14, 46 @@ -10710,168 +10707,168 @@ General_SmokeballEscape:: createsprite gSmokeBallEscapeCloudSpriteTemplate, ANIM_ATTACKER, 118, 3, 0, 0, 46 waitforvisualfinish clearmonbg ANIM_ATTACKER - invisible 0 + invisible ANIM_ATTACKER delay 0 blendoff end -General_HangedOn:: - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 7, 0, 9, 31 - playsewithpan SE_M_DRAGON_RAGE, 192 +General_FocusBand: + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 7, 0, 9, RGB_RED + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER createvisualtask AnimTask_SlideMonForFocusBand, 5, 30, 128, 0, 1, 2, 0, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 2, 4, 9, 0, 31 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_ATTACKER, 4, 9, 0, RGB_RED waitforvisualfinish delay 6 createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 0, 0, 0, 15 end -General_Rain:: +General_Rain: loadspritegfx ANIM_TAG_RAIN_DROPS - playsewithpan SE_M_RAIN_DANCE, 192 - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 2, 0, 4, RGB_BLACK + playsewithpan SE_M_RAIN_DANCE, SOUND_PAN_ATTACKER + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 0, 4, RGB_BLACK waitforvisualfinish createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 createvisualtask AnimTask_CreateRaindrops, 2, 0, 3, 60 delay 50 waitforvisualfinish - createvisualtask AnimTask_BlendSelected, 10, 1 | (0xF << 7), 2, 4, 0, RGB_BLACK + createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG | F_PAL_BATTLERS_2, 2, 4, 0, RGB_BLACK waitforvisualfinish end -General_Sun:: +General_Sun: goto Move_SUNNY_DAY -General_Sandstorm:: +General_Sandstorm: goto Move_SANDSTORM -General_Hail:: +General_Hail: goto Move_HAIL -General_LeechSeedDrain:: - createvisualtask AnimTask_GetBattlersFromArg, 5, +General_LeechSeedDrain: + createvisualtask AnimTask_GetBattlersFromArg, 5 delay 0 goto Move_ABSORB -General_MonHit:: +General_MonHit: loadspritegfx ANIM_TAG_IMPACT - monbg 1 + monbg ANIM_TARGET setalpha 12, 8 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, 1, 2 - createvisualtask AnimTask_ShakeMon, 2, 1, 3, 0, 6, 1 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_TARGET, 2 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 3, 0, 6, 1 waitforvisualfinish - clearmonbg 1 + clearmonbg ANIM_TARGET blendoff end -General_ItemSteal:: +General_ItemSteal: loadspritegfx ANIM_TAG_ITEM_BAG createvisualtask AnimTask_SetAnimAttackerAndTargetForEffectAtk, 2 - createvisualtask AnimTask_TargetToEffectBattler, 2, + createvisualtask AnimTask_SetTargetToEffectBattler, 2 @ Redundant with above delay 1 createsprite gItemStealSpriteTemplate, ANIM_ATTACKER, 2, 0, -5, 10, 2, -1 end -General_SnatchMove:: +General_SnatchMove: loadspritegfx ANIM_TAG_ITEM_BAG createvisualtask AnimTask_SetAnimAttackerAndTargetForEffectTgt, 2 call SnatchMoveTrySwapFromSubstitute delay 1 - createvisualtask AnimTask_SwayMon, 2, 0, 5, 5120, 4, 1 + createvisualtask AnimTask_SwayMon, 2, 0, 5, 5120, 4, ANIM_TARGET waitforvisualfinish - createvisualtask AnimTask_IsTargetSameSide, 2, - jumpargeq 7, 0, SnatchOpposingMonMove + createvisualtask AnimTask_IsTargetSameSide, 2 + jumpretfalse SnatchOpposingMonMove goto SnatchPartnerMonMove -SnatchMoveContinue:: +SnatchMoveContinue: waitforvisualfinish call SnatchMoveTrySwapToSubstitute end -SnatchOpposingMonMove:: - playsewithpan SE_M_DOUBLE_TEAM, 192 - createvisualtask AnimTask_SnatchOpposingMonMove, 2, +SnatchOpposingMonMove: + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_SnatchOpposingMonMove, 2 goto SnatchMoveContinue -SnatchPartnerMonMove:: - playsewithpan SE_M_DOUBLE_TEAM, 192 - createvisualtask AnimTask_SnatchPartnerMove, 2, +SnatchPartnerMonMove: + playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_ATTACKER + createvisualtask AnimTask_SnatchPartnerMove, 2 goto SnatchMoveContinue -General_FutureSightHit:: +General_FutureSightHit: createvisualtask AnimTask_SetAnimTargetToBattlerTarget, 2 monbg ANIM_DEF_PARTNER - playsewithpan SE_M_PSYBEAM, 192 + playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER call SetPsychicBackground setalpha 8, 8 - playsewithpan SE_M_SUPERSONIC, 63 - waitplaysewithpan SE_M_SUPERSONIC, 63, 8 - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, 1, 1 + playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET + waitplaysewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 8 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, ANIM_TARGET, 1 waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 24, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 24, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff waitforvisualfinish delay 1 - call UnsetPsychicBg + call UnsetPsychicBackground end -General_DoomDesireHit:: - createvisualtask AnimTask_SetAnimTargetToBattlerTarget, 2, +General_DoomDesireHit: + createvisualtask AnimTask_SetAnimTargetToBattlerTarget, 2 loadspritegfx ANIM_TAG_EXPLOSION - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_WHITE waitforvisualfinish delay 10 - createvisualtask AnimTask_DoomDesireLightBeam, 5, + createvisualtask AnimTask_DoomDesireLightBeam, 5 delay 9 - playsewithpan SE_M_CONFUSE_RAY, 192 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER delay 9 playsewithpan SE_M_CONFUSE_RAY, 0 delay 9 - playsewithpan SE_M_CONFUSE_RAY, 63 + playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_TARGET delay 25 - createvisualtask AnimTask_ShakeMonInPlace, 2, 1, 10, 0, 20, 1 - playsewithpan SE_M_SELF_DESTRUCT, 63 + createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_TARGET, 10, 0, 20, 1 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 24, -24, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -16, 16, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, -24, -12, 1, 1 delay 6 - playsewithpan SE_M_SELF_DESTRUCT, 63 + playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE waitforvisualfinish end -General_FocusPunchSetUp:: +General_FocusPunchSetUp: loadspritegfx ANIM_TAG_FOCUS_ENERGY - playsewithpan SE_M_DRAGON_RAGE, 192 + playsewithpan SE_M_DRAGON_RAGE, SOUND_PAN_ATTACKER call EndureEffect delay 8 - createvisualtask AnimTask_BlendColorCycle, 2, 2, 2, 2, 0, 11, 31 - createvisualtask AnimTask_ShakeMon2, 2, 0, 1, 0, 32, 1 + createvisualtask AnimTask_BlendColorCycle, 2, F_PAL_ATTACKER, 2, 2, 0, 11, RGB_RED + createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 1, 0, 32, 1 call EndureEffect delay 8 call EndureEffect waitforvisualfinish end -General_IngrainHeal:: +General_IngrainHeal: loadspritegfx ANIM_TAG_ORBS loadspritegfx ANIM_TAG_BLUE_STAR monbg ANIM_DEF_PARTNER setalpha 12, 8 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 0, 4, RGB(13, 31, 12) waitforvisualfinish delay 3 call AbsorbEffect @@ -10879,18 +10876,18 @@ General_IngrainHeal:: delay 15 call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 4, 0, 13293 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 1, 4, 0, RGB(13, 31, 12) waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff end -General_WishHeal:: +General_WishHeal: loadspritegfx ANIM_TAG_BLUE_STAR loadspritegfx ANIM_TAG_SPARKLE_2 - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 10, RGB_BLACK waitforvisualfinish - playsewithpan SE_M_MEGA_KICK, 192 + playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER call GrantingStarsEffect waitforvisualfinish call HealingEffect @@ -10898,7 +10895,7 @@ General_WishHeal:: createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, 0 end -General_MonScared:: +General_MonScared: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1 waitforvisualfinish loadspritegfx ANIM_TAG_SWEAT_BEAD @@ -10906,7 +10903,7 @@ General_MonScared:: createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 10, 1 delay 20 createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1 - playsewithpan SE_M_SKETCH, 63 + playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 createvisualtask AnimTask_StretchTargetUp, 3, @@ -10915,17 +10912,17 @@ General_MonScared:: waitforvisualfinish end -General_GhostGetOut:: +General_GhostGetOut: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1 waitforvisualfinish fadetobg 2 waitbgfadeout - monbg_22 0 + monbg_static 0 createvisualtask sub_80B6BBC, 2, waitbgfadein - loopsewithpan SE_M_PSYBEAM, 63, 20, 3 + loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3 waitforvisualfinish - clearmonbg_23 0 + clearmonbg_static 0 delay 1 loadspritegfx ANIM_TAG_SWEAT_BEAD createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, -1, 0, 6, 27349 @@ -10940,29 +10937,29 @@ General_GhostGetOut:: waitbgfadein end -General_SilphScoped:: +General_SilphScoped: monbg ANIM_ATTACKER - playsewithpan SE_M_TELEPORT, 192 - waitplaysewithpan SE_M_MINIMIZE, 192, 48 + playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER + waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48 createvisualtask AnimTask_TransformMon, 2, 255 waitsound waitforvisualfinish clearmonbg ANIM_ATTACKER end -General_SafariRockThrow:: +General_SafariRockThrow: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 0 waitforvisualfinish loadspritegfx ANIM_TAG_ROCKS loadspritegfx ANIM_TAG_IMPACT delay 0 - waitplaysewithpan SE_M_JUMP_KICK, 192, 22 + waitplaysewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER, 22 createsprite gSafariRockTemplate, ANIM_TARGET, 3, -17, 14, 8, 0 delay 50 monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 0 - playsewithpan SE_M_DOUBLE_SLAP, 63 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, -20, 1, 2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER @@ -10970,7 +10967,7 @@ General_SafariRockThrow:: waitforvisualfinish end -General_SafariReaction:: +General_SafariReaction: createvisualtask AnimTask_SafariGetReaction, 2, waitforvisualfinish jumpargeq 7, 0, SafariReaction_WatchingCarefully @@ -10978,59 +10975,58 @@ General_SafariReaction:: jumpargeq 7, 2, SafariReaction_Eating end -SafariReaction_WatchingCarefully:: - playsewithpan SE_M_TAKE_DOWN, 63 +SafariReaction_WatchingCarefully: + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, 96, 0, 2 waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 63 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 16, -96, 0, 2 end -SafariReaction_Angry:: +SafariReaction_Angry: loadspritegfx ANIM_TAG_ANGER createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, 20, -20 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET waitforvisualfinish delay 12 createsprite gAngerMarkSpriteTemplate, ANIM_TARGET, 2, 1, -20, -20 - playsewithpan SE_M_SWAGGER2, 63 + playsewithpan SE_M_SWAGGER2, SOUND_PAN_TARGET end -SafariReaction_Eating:: - playsewithpan SE_M_TAKE_DOWN, 63 +SafariReaction_Eating: + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 8, 136, 0, 2 waitforvisualfinish - playsewithpan SE_M_TAKE_DOWN, 63 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET createvisualtask AnimTask_RotateMonToSideAndRestore, 2, 8, 136, 0, 2 end -SnatchMoveTrySwapFromSubstitute:: - createvisualtask AnimTask_IsAttackerBehindSubstitute, 2, - jumpargeq 7, 1, SnatchMoveSwapSubstituteForMon - -SnatchMoveTrySwapFromSubstituteEnd:: +SnatchMoveTrySwapFromSubstitute: + createvisualtask AnimTask_IsAttackerBehindSubstitute, 2 + jumprettrue SnatchMoveSwapSubstituteForMon +SnatchMoveTrySwapFromSubstituteEnd: waitforvisualfinish return -SnatchMoveSwapSubstituteForMon:: - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 1 +SnatchMoveSwapSubstituteForMon: + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE waitforvisualfinish goto SnatchMoveTrySwapFromSubstituteEnd -SnatchMoveTrySwapToSubstitute:: - createvisualtask AnimTask_IsAttackerBehindSubstitute, 2, - jumpargeq 7, 1, SnatchMoveSwapMonForSubstitute - -SnatchMoveTrySwapToSubstituteEnd:: +SnatchMoveTrySwapToSubstitute: + createvisualtask AnimTask_IsAttackerBehindSubstitute, 2 + jumprettrue SnatchMoveSwapMonForSubstitute +SnatchMoveTrySwapToSubstituteEnd: waitforvisualfinish return -SnatchMoveSwapMonForSubstitute:: - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 0 +SnatchMoveSwapMonForSubstitute: + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, FALSE waitforvisualfinish goto SnatchMoveTrySwapToSubstituteEnd -Special_LevelUp:: +@ Healthbox blue flash effect on level up +Special_LevelUp: playsewithpan SE_EXP_MAX, 0 createvisualtask AnimTask_LoadHealthboxPalsForLevelUp, 2 delay 0 @@ -11039,64 +11035,64 @@ Special_LevelUp:: createvisualtask AnimTask_FreeHealthboxPalsForLevelUp, 2 end -Special_SwitchOutPlayerMon:: +Special_SwitchOutPlayerMon: createvisualtask AnimTask_SwitchOutBallEffect, 2 delay 10 createvisualtask AnimTask_SwitchOutShrinkMon, 2 end -Special_SwitchOutOpponentMon:: - createvisualtask AnimTask_SwitchOutBallEffect, 2, +Special_SwitchOutOpponentMon: + createvisualtask AnimTask_SwitchOutBallEffect, 2 delay 10 - createvisualtask AnimTask_SwitchOutShrinkMon, 2, + createvisualtask AnimTask_SwitchOutShrinkMon, 2 end -Special_BallThrow:: +Special_BallThrow: createvisualtask AnimTask_LoadBallGfx, 2 delay 0 playsewithpan SE_BALL_THROW, 0 createvisualtask AnimTask_ThrowBall, 2 - createvisualtask AnimTask_IsBallBlockedByTrainerOrDodged, 2, - jumpargeq 7, -1, BallThrowTrainerBlock - jumpargeq 7, -2, BallThrowGhostDodged -BallThrowEnd:: + createvisualtask AnimTask_IsBallBlockedByTrainerOrDodged, 2 + jumpreteq -1, BallThrowTrainerBlock + jumpreteq -2, BallThrowGhostDodged +BallThrowEnd: waitforvisualfinish createvisualtask AnimTask_FreeBallGfx, 2 end -BallThrowTrainerBlock:: +BallThrowTrainerBlock: loadspritegfx ANIM_TAG_IMPACT delay 25 monbg ANIM_DEF_PARTNER setalpha 12, 8 delay 0 - playsewithpan SE_M_DOUBLE_SLAP, 63 - createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, -20, 1, 2 + playsewithpan SE_M_DOUBLE_SLAP, SOUND_PAN_TARGET + createsprite gBasicHitSplatSpriteTemplate, ANIM_TARGET, 2, -4, -20, ANIM_TARGET, 2 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff goto BallThrowEnd -BallThrowGhostDodged:: +BallThrowGhostDodged: delay 16 createvisualtask AnimTask_WindUpLunge, 2, 1, 48, 6, 16, 48, -48, 16 - playsewithpan SE_M_TAKE_DOWN, 63 - waitplaysewithpan SE_M_TAKE_DOWN, 63, 48 + playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET + waitplaysewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET, 48 waitforvisualfinish goto BallThrowEnd -Special_SafariBallThrow:: - createvisualtask AnimTask_LoadBallGfx, 2, +Special_BallThrowWithTrainer: + createvisualtask AnimTask_LoadBallGfx, 2 delay 0 createvisualtask AnimTask_ThrowBallSpecial, 2 waitforvisualfinish - createvisualtask AnimTask_FreeBallGfx, 2, + createvisualtask AnimTask_FreeBallGfx, 2 end -Special_SubstituteToMon:: - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 1 +Special_SubstituteToMon: + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, TRUE end -Special_MonToSubstitute:: - createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, 0 +Special_MonToSubstitute: + createvisualtask AnimTask_SwapMonSpriteToFromSubstitute, 2, FALSE end diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 57d7c4abd..4fc4e4407 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -346,59 +346,62 @@ #define BG_SOLAR_BEAM_PLAYER 25 #define BG_SOLAR_BEAM_CONTESTS 26 -// table ids for general animations -#define B_ANIM_CASTFORM_CHANGE 0x0 -#define B_ANIM_STATS_CHANGE 0x1 -#define B_ANIM_SUBSTITUTE_FADE 0x2 -#define B_ANIM_SUBSTITUTE_APPEAR 0x3 -#define B_ANIM_BAIT_THROW 0x4 -#define B_ANIM_ITEM_KNOCKOFF 0x5 -#define B_ANIM_TURN_TRAP 0x6 -#define B_ANIM_HELD_ITEM_EFFECT 0x7 -#define B_ANIM_SMOKEBALL_ESCAPE 0x8 -#define B_ANIM_FOCUS_BAND 0x9 -#define B_ANIM_RAIN_CONTINUES 0xA -#define B_ANIM_SUN_CONTINUES 0xB -#define B_ANIM_SANDSTORM_CONTINUES 0xC -#define B_ANIM_HAIL_CONTINUES 0xD -#define B_ANIM_LEECH_SEED_DRAIN 0xE -#define B_ANIM_MON_HIT 0xF -#define B_ANIM_ITEM_STEAL 0x10 -#define B_ANIM_SNATCH_MOVE 0x11 -#define B_ANIM_FUTURE_SIGHT_HIT 0x12 -#define B_ANIM_DOOM_DESIRE_HIT 0x13 -#define B_ANIM_FOCUS_PUNCH_SETUP 0x14 -#define B_ANIM_INGRAIN_HEAL 0x15 -#define B_ANIM_WISH_HEAL 0x16 -#define B_ANIM_MON_SCARED 0x17 -#define B_ANIM_GHOST_GET_OUT 0x18 -#define B_ANIM_SILPH_SCOPED 0x19 -#define B_ANIM_ROCK_THROW 0x1A -#define B_ANIM_SAFARI_REACTION 0x1B +// table ids for general animations (gBattleAnims_General) +#define B_ANIM_CASTFORM_CHANGE 0 +#define B_ANIM_STATS_CHANGE 1 +#define B_ANIM_SUBSTITUTE_FADE 2 +#define B_ANIM_SUBSTITUTE_APPEAR 3 +#define B_ANIM_BAIT_THROW 4 +#define B_ANIM_ITEM_KNOCKOFF 5 +#define B_ANIM_TURN_TRAP 6 +#define B_ANIM_HELD_ITEM_EFFECT 7 +#define B_ANIM_SMOKEBALL_ESCAPE 8 +#define B_ANIM_FOCUS_BAND 9 +#define B_ANIM_RAIN_CONTINUES 10 +#define B_ANIM_SUN_CONTINUES 11 +#define B_ANIM_SANDSTORM_CONTINUES 12 +#define B_ANIM_HAIL_CONTINUES 13 +#define B_ANIM_LEECH_SEED_DRAIN 14 +#define B_ANIM_MON_HIT 15 +#define B_ANIM_ITEM_STEAL 16 +#define B_ANIM_SNATCH_MOVE 17 +#define B_ANIM_FUTURE_SIGHT_HIT 18 +#define B_ANIM_DOOM_DESIRE_HIT 19 +#define B_ANIM_FOCUS_PUNCH_SETUP 20 +#define B_ANIM_INGRAIN_HEAL 21 +#define B_ANIM_WISH_HEAL 22 +#define B_ANIM_MON_SCARED 23 +#define B_ANIM_GHOST_GET_OUT 24 +#define B_ANIM_SILPH_SCOPED 25 +#define B_ANIM_ROCK_THROW 26 +#define B_ANIM_SAFARI_REACTION 27 -// special animations table -#define B_ANIM_LVL_UP 0x0 -#define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1 -#define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2 -#define B_ANIM_BALL_THROW 0x3 -#define B_ANIM_SAFARI_BALL_THROW 0x4 -#define B_ANIM_SUBSTITUTE_TO_MON 0x5 -#define B_ANIM_MON_TO_SUBSTITUTE 0x6 +// special animations table (gBattleAnims_Special) +#define B_ANIM_LVL_UP 0 +#define B_ANIM_SWITCH_OUT_PLAYER_MON 1 +#define B_ANIM_SWITCH_OUT_OPPONENT_MON 2 +#define B_ANIM_BALL_THROW 3 +#define B_ANIM_BALL_THROW_WITH_TRAINER 4 +#define B_ANIM_SUBSTITUTE_TO_MON 5 +#define B_ANIM_MON_TO_SUBSTITUTE 6 -// status animation table -#define B_ANIM_STATUS_PSN 0x0 -#define B_ANIM_STATUS_CONFUSION 0x1 -#define B_ANIM_STATUS_BRN 0x2 -#define B_ANIM_STATUS_INFATUATION 0x3 -#define B_ANIM_STATUS_SLP 0x4 -#define B_ANIM_STATUS_PRZ 0x5 -#define B_ANIM_STATUS_FRZ 0x6 -#define B_ANIM_STATUS_CURSED 0x7 -#define B_ANIM_STATUS_NIGHTMARE 0x8 -#define B_ANIM_STATUS_WRAPPED 0x9 // does not actually exist +// status animation table (gBattleAnims_StatusConditions) +#define B_ANIM_STATUS_PSN 0 +#define B_ANIM_STATUS_CONFUSION 1 +#define B_ANIM_STATUS_BRN 2 +#define B_ANIM_STATUS_INFATUATION 3 +#define B_ANIM_STATUS_SLP 4 +#define B_ANIM_STATUS_PRZ 5 +#define B_ANIM_STATUS_FRZ 6 +#define B_ANIM_STATUS_CURSED 7 +#define B_ANIM_STATUS_NIGHTMARE 8 +#define B_ANIM_STATUS_WRAPPED 9 // does not actually exist // Most tasks return a value to gBattleAnimArgs[7]. -#define ARG_RET_ID 0x7 +#define ARG_RET_ID 7 + +// For createsprite macro to use internally +#define ANIMSPRITE_IS_TARGET (1 << 7) // Trapping Wrap-like moves end turn animation. #define TRAP_ANIM_BIND 0 @@ -415,6 +418,22 @@ #define ANIM_WEATHER_SANDSTORM 3 #define ANIM_WEATHER_HAIL 4 +// Flags given to various functions to indicate which palettes to consider. +// Handled by UnpackSelectedBattlePalettes +#define F_PAL_BG (1 << 0) +#define F_PAL_ATTACKER (1 << 1) +#define F_PAL_TARGET (1 << 2) +#define F_PAL_ATK_PARTNER (1 << 3) +#define F_PAL_DEF_PARTNER (1 << 4) +#define F_PAL_ANIM_1 (1 << 5) // Palette set for GetBattleAnimBg1Data/GetBattleAnimBgDataByPriorityRank. Only used (ineffectually?) by Aromatherapy. +#define F_PAL_ANIM_2 (1 << 6) // Palette set for GetBattleAnimBgData/GetBattleAnimBgDataByPriorityRank. Unused. +#define F_PAL_ATK_SIDE (F_PAL_ATTACKER | F_PAL_ATK_PARTNER) +#define F_PAL_DEF_SIDE (F_PAL_TARGET | F_PAL_DEF_PARTNER) +#define F_PAL_BATTLERS (F_PAL_ATK_SIDE | F_PAL_DEF_SIDE) +// The below are only used by AnimTask_BlendBattleAnimPal to get battler sprite palettes by position rather than by role. +// It's redundant with F_PAL_BATTLERS, because they're only ever used together to refer to all the battlers at once. +#define F_PAL_BATTLERS_2 (1 << 7 | 1 << 8 | 1 << 9 | 1 << 10) + // Battle mon back animations. #define BACK_ANIM_NONE 0x00 #define BACK_ANIM_H_SLIDE_QUICK 0x01 diff --git a/include/constants/rgb.h b/include/constants/rgb.h new file mode 100644 index 000000000..be3049d3c --- /dev/null +++ b/include/constants/rgb.h @@ -0,0 +1,25 @@ +#ifndef GUARD_RGB_H +#define GUARD_RGB_H + +#define GET_R(color) ((color) & 0x1F) +#define GET_G(color) (((color) >> 5) & 0x1F) +#define GET_B(color) (((color) >> 10) & 0x1F) + +#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) +#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) +#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F)) + +#define RGB_ALPHA (1 << 15) +#define IS_ALPHA(color) ((color) & RGB_ALPHA) + +#define RGB_BLACK RGB(0, 0, 0) +#define RGB_WHITE RGB(31, 31, 31) +#define RGB_RED RGB(31, 0, 0) +#define RGB_GREEN RGB(0, 31, 0) +#define RGB_BLUE RGB(0, 0, 31) +#define RGB_YELLOW RGB(31, 31, 0) +#define RGB_MAGENTA RGB(31, 0, 31) +#define RGB_CYAN RGB(0, 31, 31) +#define RGB_WHITEALPHA (RGB_WHITE | RGB_ALPHA) + +#endif // GUARD_RGB_H diff --git a/include/gba/defines.h b/include/gba/defines.h index f0fce824e..860ae5f08 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -79,20 +79,6 @@ #define TOTAL_OBJ_TILE_COUNT 1024 -#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10)) -#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r)) -#define _RGB(r, g, b) ((((b) & 0x1F) << 10) + (((g) & 0x1F) << 5) + ((r) & 0x1F)) - -#define RGB_BLACK RGB(0, 0, 0) -#define RGB_WHITE RGB(31, 31, 31) -#define RGB_RED RGB(31, 0, 0) -#define RGB_GREEN RGB(0, 31, 0) -#define RGB_BLUE RGB(0, 0, 31) -#define RGB_YELLOW RGB(31, 31, 0) -#define RGB_MAGENTA RGB(31, 0, 31) -#define RGB_CYAN RGB(0, 31, 31) -#define RGB_WHITEALPHA (RGB_WHITE | 0x8000) - // Some functions are strictly inline asm #define NAKED __attribute__((naked)) #define UNUSED __attribute__((unused)) diff --git a/include/global.h b/include/global.h index e474e1eaa..27fb57830 100644 --- a/include/global.h +++ b/include/global.h @@ -9,6 +9,7 @@ #include "constants/vars.h" #include "constants/species.h" #include "constants/easy_chat.h" +#include "constants/rgb.h" // Prevent cross-jump optimization. #define BLOCK_CROSS_JUMP asm(""); diff --git a/src/battle_anim_dark.c b/src/battle_anim_dark.c index 7b0a81bb3..39e19bda7 100644 --- a/src/battle_anim_dark.c +++ b/src/battle_anim_dark.c @@ -866,7 +866,7 @@ static void AnimTask_MetallicShine_Step(u8 taskId) // Changes battler's palette to either greyscale or original. // arg0: which battler // arg1: 0 grayscale, 1 original -void AnimTask_SetGreyscaleOrOriginalPal(u8 taskId) +void AnimTask_SetGrayscaleOrOriginalPal(u8 taskId) { u8 spriteId, battler; bool8 calcSpriteId = FALSE; diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index c4df329a3..6de19d163 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -516,7 +516,7 @@ const struct SpriteTemplate gRazorLeafParticleSpriteTemplate = .callback = AnimRazorLeafParticle, }; -const struct SpriteTemplate gTwisterLeafParticleSpriteTemplate = +const struct SpriteTemplate gTwisterLeafSpriteTemplate = { .tileTag = ANIM_TAG_LEAF, .paletteTag = ANIM_TAG_LEAF, @@ -1362,7 +1362,7 @@ static const struct SpriteTemplate sCirclingMusicNoteSpriteTemplate = .callback = AnimCirclingMusicNote, }; -const struct SpriteTemplate gProtectWallSpriteTemplate = +const struct SpriteTemplate gProtectSpriteTemplate = { .tileTag = ANIM_TAG_PROTECT, .paletteTag = ANIM_TAG_PROTECT, @@ -5034,10 +5034,10 @@ static void AnimMoonlightSparkle_Step(struct Sprite* sprite) DestroyAnimSprite(sprite); } -void AnimTask_FadeScreenBlue_Step(u8); +void AnimTask_MoonlightEndFade_Step(u8); -void AnimTask_FadeScreenBlue(u8 taskId) +void AnimTask_MoonlightEndFade(u8 taskId) { int a = GetBattlePalettesMask(TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) & 0xFFFF; int b; @@ -5060,11 +5060,11 @@ void AnimTask_FadeScreenBlue(u8 taskId) b = b | (0x10000 << IndexOfSpritePaletteTag(ANIM_TAG_MOON)); d = IndexOfSpritePaletteTag(ANIM_TAG_GREEN_SPARKLE); BeginNormalPaletteFade((0x10000 << d) | b, 0, 0, 16, RGB(27, 29, 31)); - gTasks[taskId].func = AnimTask_FadeScreenBlue_Step; + gTasks[taskId].func = AnimTask_MoonlightEndFade_Step; gTasks[taskId].func(taskId); } -void AnimTask_FadeScreenBlue_Step(u8 taskId) +void AnimTask_MoonlightEndFade_Step(u8 taskId) { struct Task* task = &gTasks[taskId]; diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index 68a5825a4..bc58491ee 100644 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -32,7 +32,7 @@ static void AnimGuillotinePincer(struct Sprite *); static void AnimGuillotinePincer_Step1(struct Sprite *); static void AnimGuillotinePincer_Step2(struct Sprite *); static void AnimGuillotinePincer_Step3(struct Sprite *); -static void AnimTask_GrowAndGreyscale_Step(u8); +static void AnimTask_GrowAndGrayscale_Step(u8); static void AnimTask_Minimize_Step1(u8); static void CreateMinimizeSprite(struct Task *, u8); static void ClonedMinizeSprite_Step(struct Sprite *); @@ -301,7 +301,7 @@ static const union AffineAnimCmd *const sWaterPulseRingAffineAnimTable[] = sWaterPulseRingAffineAnimCmds, }; -const struct SpriteTemplate gSupersonicWaveSpriteTemplate = +const struct SpriteTemplate gSupersonicRingSpriteTemplate = { .tileTag = ANIM_TAG_GOLD_RING, .paletteTag = ANIM_TAG_GOLD_RING, @@ -312,7 +312,7 @@ const struct SpriteTemplate gSupersonicWaveSpriteTemplate = .callback = TranslateAnimSpriteToTargetMonLocation, }; -const struct SpriteTemplate gScreechWaveSpriteTemplate = +const struct SpriteTemplate gScreechRingSpriteTemplate = { .tileTag = ANIM_TAG_PURPLE_RING, .paletteTag = ANIM_TAG_PURPLE_RING, @@ -2005,7 +2005,7 @@ static void AnimGuillotinePincer_Step3(struct Sprite *sprite) // Scales up the target mon sprite, and sets the palette to greyscale. // Used in MOVE_DISABLE. // No args. -void AnimTask_GrowAndGreyscale(u8 taskId) +void AnimTask_GrowAndGrayscale(u8 taskId) { u8 spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); @@ -2013,10 +2013,10 @@ void AnimTask_GrowAndGreyscale(u8 taskId) SetSpriteRotScale(spriteId, 0xD0, 0xD0, 0); SetGreyscaleOrOriginalPalette(gSprites[spriteId].oam.paletteNum + 16, FALSE); gTasks[taskId].data[0] = 80; - gTasks[taskId].func = AnimTask_GrowAndGreyscale_Step; + gTasks[taskId].func = AnimTask_GrowAndGrayscale_Step; } -static void AnimTask_GrowAndGreyscale_Step(u8 taskId) +static void AnimTask_GrowAndGrayscale_Step(u8 taskId) { if (--gTasks[taskId].data[0] == -1) { diff --git a/src/battle_anim_mon_movement.c b/src/battle_anim_mon_movement.c index 16114456f..a51408016 100644 --- a/src/battle_anim_mon_movement.c +++ b/src/battle_anim_mon_movement.c @@ -792,7 +792,7 @@ void AnimTask_RotateMonSpriteToSide(u8 taskId) gTasks[taskId].data[7] = 1; else { - if (gBattleAnimArgs[2] == 0) + if (gBattleAnimArgs[2] == ANIM_ATTACKER) gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : 0; else gTasks[taskId].data[7] = GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER ? 1 : 0; diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c index e7dbe6394..39bffd4e8 100644 --- a/src/battle_anim_special.c +++ b/src/battle_anim_special.c @@ -2037,7 +2037,7 @@ void AnimTask_IsAttackerBehindSubstitute(u8 taskId) DestroyAnimVisualTask(taskId); } -void AnimTask_TargetToEffectBattler(u8 taskId) +void AnimTask_SetTargetToEffectBattler(u8 taskId) { gBattleAnimTarget = gEffectBattler; DestroyAnimVisualTask(taskId); diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 9b4c8ddfa..d231acf08 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -50,7 +50,7 @@ const u8 gBattleIntroRegOffsBgCnt[] = { REG_OFFSET_BG0CNT, REG_OFFSET_BG1CNT, RE // 8: Player battler right // 9: Enemy battler left // 10: Enemy battler right -void AnimTask_BlendSelected(u8 taskId) +void AnimTask_BlendBattleAnimPal(u8 taskId) { u32 selectedPalettes = UnpackSelectedBattlePalettes(gBattleAnimArgs[0]); @@ -72,7 +72,7 @@ void AnimTask_BlendSelected(u8 taskId) // 5: Blend all // 6: Neither bg nor attacker's partner // 7: Neither bg nor target's partner -void AnimTask_BlendExcept(u8 taskId) +void AnimTask_BlendBattleAnimPalExclude(u8 taskId) { u8 battler; u32 selectedPalettes; diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index b2c8341ef..f03371750 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -1662,7 +1662,7 @@ static void OakOldManHandleSuccessBallThrowAnim(void) { gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; gDoingBattleAnim = TRUE; - InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER); gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } @@ -1672,7 +1672,7 @@ static void OakOldManHandleBallThrowAnim(void) gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; gDoingBattleAnim = TRUE; - InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER); gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 6e7b1ee9a..f0e246457 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -376,7 +376,7 @@ static void SafariHandleSuccessBallThrowAnim(void) { gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; gDoingBattleAnim = TRUE; - InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER); gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } @@ -386,7 +386,7 @@ static void SafariHandleBallThrowAnim(void) gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; gDoingBattleAnim = TRUE; - InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SAFARI_BALL_THROW); + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW_WITH_TRAINER); gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; } From c976547c02629734129b0344a2f5012147a0c1c0 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 19 Aug 2022 09:58:34 -0400 Subject: [PATCH 27/38] Clean up FRLG-specific anim scripts --- data/battle_anim_scripts.s | 50 +++++++++++++++++++------------------- src/battle_anim_ghost.c | 26 +++++++++++--------- 2 files changed, 39 insertions(+), 37 deletions(-) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 0b8743f76..69c9bb7be 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -4844,10 +4844,10 @@ UnusedFutureSightHit: setalpha 8, 8 playsewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET waitplaysewithpan SE_M_SUPERSONIC, SOUND_PAN_TARGET, 8 - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 15, 1 - createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, 1, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 15, 1 + createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, ANIM_TARGET, 1 waitforvisualfinish - createvisualtask AnimTask_ShakeMon, 2, 1, 4, 0, 24, 1 + createvisualtask AnimTask_ShakeMon, 2, ANIM_TARGET, 4, 0, 24, 1 waitforvisualfinish clearmonbg ANIM_DEF_PARTNER blendoff @@ -9759,10 +9759,10 @@ Move_DOOM_DESIRE: UnusedDoomDesireHit: loadspritegfx ANIM_TAG_EXPLOSION - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 0, 16, RGB_WHITE waitforvisualfinish delay 10 - createvisualtask AnimTask_DoomDesireLightBeam, 5, + createvisualtask AnimTask_DoomDesireLightBeam, 5 delay 5 playsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER delay 10 @@ -9786,7 +9786,7 @@ UnusedDoomDesireHit: playsewithpan SE_M_SELF_DESTRUCT, SOUND_PAN_TARGET createsprite gExplosionSpriteTemplate, ANIM_ATTACKER, 3, 16, 16, 1, 1 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 16, 0, RGB_WHITE + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 16, 0, RGB_WHITE waitforvisualfinish end @@ -10892,46 +10892,46 @@ General_WishHeal: waitforvisualfinish call HealingEffect waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 10, 0, 0 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 10, 0, RGB_BLACK end General_MonScared: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1 waitforvisualfinish loadspritegfx ANIM_TAG_SWEAT_BEAD - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 10, 26336 - createvisualtask AnimTask_ShakeMon2, 2, 1, 2, 0, 10, 1 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 0, 10, RGB(0, 23, 25) + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 2, 0, 10, 1 delay 20 createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1 playsewithpan SE_M_SKETCH, SOUND_PAN_TARGET createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 - createvisualtask AnimTask_StretchTargetUp, 3, + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 + createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 10, 0, 26336 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, 2, 10, 0, RGB(0, 23, 25) waitforvisualfinish end General_GhostGetOut: createvisualtask AnimTask_SafariOrGhost_DecideAnimSides, 2, 1 waitforvisualfinish - fadetobg 2 + fadetobg BG_GHOST waitbgfadeout - monbg_static 0 - createvisualtask sub_80B6BBC, 2, + monbg_static ANIM_ATTACKER + createvisualtask AnimTask_GhostGetOut, 2 waitbgfadein loopsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET, 20, 3 waitforvisualfinish - clearmonbg_static 0 + clearmonbg_static ANIM_ATTACKER delay 1 loadspritegfx ANIM_TAG_SWEAT_BEAD - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, -1, 0, 6, 27349 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, -1, 0, 6, RGB(21, 22, 26) createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 0, 1 createsprite gSprayWaterDropletSpriteTemplate, ANIM_TARGET, 5, 1, 1 - createvisualtask AnimTask_ShakeMon2, 2, 1, 4, 0, 5, 1 - createvisualtask AnimTask_StretchTargetUp, 3, + createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 5, 1 + createvisualtask AnimTask_StretchTargetUp, 3 waitforvisualfinish - createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, -1, 6, 0, 27349 + createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, F_PAL_TARGET, -1, 6, 0, RGB(21, 22, 26) waitforvisualfinish restorebg waitbgfadein @@ -10968,11 +10968,11 @@ General_SafariRockThrow: end General_SafariReaction: - createvisualtask AnimTask_SafariGetReaction, 2, + createvisualtask AnimTask_SafariGetReaction, 2 waitforvisualfinish - jumpargeq 7, 0, SafariReaction_WatchingCarefully - jumpargeq 7, 1, SafariReaction_Angry - jumpargeq 7, 2, SafariReaction_Eating + jumpreteq 0, SafariReaction_WatchingCarefully + jumpreteq 1, SafariReaction_Angry + jumpreteq 2, SafariReaction_Eating end SafariReaction_WatchingCarefully: @@ -11075,7 +11075,7 @@ BallThrowTrainerBlock: BallThrowGhostDodged: delay 16 - createvisualtask AnimTask_WindUpLunge, 2, 1, 48, 6, 16, 48, -48, 16 + createvisualtask AnimTask_WindUpLunge, 2, ANIM_TARGET, 48, 6, 16, 48, -48, 16 playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET waitplaysewithpan SE_M_TAKE_DOWN, SOUND_PAN_TARGET, 48 waitforvisualfinish diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index f808e92f6..d9e06b91e 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -38,9 +38,9 @@ static void AnimGhostStatusSprite_End(struct Sprite *sprite); static void AnimTask_GrudgeFlames_Step(u8 taskId); static void AnimGrudgeFlame(struct Sprite *sprite); static void AnimMonMoveCircular(struct Sprite *sprite); -static void sub_80B6BE4(u8 taskId); -static void sub_80B6F30(u8 taskId); -static void sub_80B6FC4(u8 taskId); +static void AnimTask_GhostGetOut_Step1(u8 taskId); +static void AnimTask_GhostGetOut_Step2(u8 taskId); +static void AnimTask_GhostGetOut_Step3(u8 taskId); static void AnimMonMoveCircular_Step(struct Sprite *sprite); static const union AffineAnimCmd sAffineAnim_ConfuseRayBallBounce[] = @@ -1262,16 +1262,18 @@ static void AnimGrudgeFlame(struct Sprite *sprite) } } -void sub_80B6BBC(u8 taskId) +// Used by the ghost Marowak when it hasn't been revealed by the Silph Scope. +// Animates a shimmering copy of the attacker (the ghost) accompanied by the 'Scary Face' graphics +void AnimTask_GhostGetOut(u8 taskId) { struct Task *task = &gTasks[taskId]; task->data[15] = 0; - task->func = sub_80B6BE4; - sub_80B6BE4(taskId); + task->func = AnimTask_GhostGetOut_Step1; + task->func(taskId); } -static void sub_80B6BE4(u8 taskId) +static void AnimTask_GhostGetOut_Step1(u8 taskId) { s16 y; struct BattleAnimBgData animBgData; @@ -1367,14 +1369,14 @@ static void sub_80B6BE4(u8 taskId) SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG1_ON); else SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); - task->func = sub_80B6F30; + task->func = AnimTask_GhostGetOut_Step2; task->data[15] = 0; break; } ++task->data[15]; } -static void sub_80B6F30(u8 taskId) +static void AnimTask_GhostGetOut_Step2(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1388,12 +1390,12 @@ static void sub_80B6F30(u8 taskId) if (task->data[1] == 128) { task->data[15] = 0; - task->func = sub_80B6FC4; - sub_80B6FC4(taskId); + task->func = AnimTask_GhostGetOut_Step3; + task->func(taskId); } } -static void sub_80B6FC4(u8 taskId) +static void AnimTask_GhostGetOut_Step3(u8 taskId) { struct Task *task = &gTasks[taskId]; From 219a38578a5ec8c409454cc18c516bdae703d5ba Mon Sep 17 00:00:00 2001 From: GriffinR Date: Fri, 19 Aug 2022 10:29:25 -0400 Subject: [PATCH 28/38] Sync battle anim - script funcs --- src/battle_anim.c | 225 ++++++++++++++++++++++++---------------------- 1 file changed, 120 insertions(+), 105 deletions(-) diff --git a/src/battle_anim.c b/src/battle_anim.c index 0fb2dfbf9..50f8fe703 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -11,6 +11,11 @@ #include "task.h" #include "constants/battle_anim.h" +/* + This file handles the commands for the macros defined in + battle_anim_script.inc and used in battle_anim_scripts.s +*/ + #define ANIM_SPRITE_INDEX_COUNT 8 EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL; @@ -41,15 +46,15 @@ static void AddSpriteIndex(u16 index); static void ClearSpriteIndex(u16 index); static void WaitAnimFrameCount(void); static void RunAnimScriptCommand(void); -static void sub_8073558(u8 taskId); +static void Task_ClearMonBgStatic(u8 taskId); static void Task_FadeToBg(u8 taskId); static void Task_PanFromInitialToTarget(u8 taskId); -static void task_pA_ma0A_obj_to_bg_pal(u8 taskId); +static void Task_InitUpdateMonBg(u8 taskId); static void LoadMoveBg(u16 bgId); static void LoadDefaultBg(void); static void Task_LoopAndPlaySE(u8 taskId); static void Task_WaitAndPlaySE(u8 taskId); -static void sub_807331C(u8 taskId); +static void Task_ClearMonBg(u8 taskId); static void Cmd_loadspritegfx(void); static void Cmd_unloadspritegfx(void); @@ -57,8 +62,8 @@ static void Cmd_createsprite(void); static void Cmd_createvisualtask(void); static void Cmd_delay(void); static void Cmd_waitforvisualfinish(void); -static void Cmd_hang1(void); -static void Cmd_hang2(void); +static void Cmd_nop(void); +static void Cmd_nop2(void); static void Cmd_end(void); static void Cmd_playse(void); static void Cmd_monbg(void); @@ -78,83 +83,82 @@ static void Cmd_waitbgfadein(void); static void Cmd_changebg(void); static void Cmd_playsewithpan(void); static void Cmd_setpan(void); -static void Cmd_panse_1B(void); +static void Cmd_panse(void); static void Cmd_loopsewithpan(void); static void Cmd_waitplaysewithpan(void); static void Cmd_setbldcnt(void); static void Cmd_createsoundtask(void); static void Cmd_waitsound(void); static void Cmd_jumpargeq(void); -static void Cmd_monbg_22(void); -static void Cmd_clearmonbg_23(void); +static void Cmd_monbg_static(void); +static void Cmd_clearmonbg_static(void); static void Cmd_jumpifcontest(void); static void Cmd_fadetobgfromset(void); -static void Cmd_panse_26(void); -static void Cmd_panse_27(void); -static void Cmd_monbgprio_28(void); -static void Cmd_monbgprio_29(void); -static void Cmd_monbgprio_2A(void); +static void Cmd_panse_adjustnone(void); +static void Cmd_panse_adjustall(void); +static void Cmd_splitbgprio(void); +static void Cmd_splitbgprio_all(void); +static void Cmd_splitbgprio_foes(void); static void Cmd_invisible(void); static void Cmd_visible(void); -static void Cmd_doublebattle_2D(void); -static void Cmd_doublebattle_2E(void); +static void Cmd_teamattack_moveback(void); +static void Cmd_teamattack_movefwd(void); static void Cmd_stopsound(void); #include "data/battle_anim.h" static void (*const sScriptCmdTable[])(void) = { - Cmd_loadspritegfx, - Cmd_unloadspritegfx, - Cmd_createsprite, - Cmd_createvisualtask, - Cmd_delay, - Cmd_waitforvisualfinish, - Cmd_hang1, - Cmd_hang2, - Cmd_end, - Cmd_playse, - Cmd_monbg, - Cmd_clearmonbg, - Cmd_setalpha, - Cmd_blendoff, - Cmd_call, - Cmd_return, - Cmd_setarg, - Cmd_choosetwoturnanim, - Cmd_jumpifmoveturn, - Cmd_goto, - Cmd_fadetobg, - Cmd_restorebg, - Cmd_waitbgfadeout, - Cmd_waitbgfadein, - Cmd_changebg, - Cmd_playsewithpan, - Cmd_setpan, - Cmd_panse_1B, - Cmd_loopsewithpan, - Cmd_waitplaysewithpan, - Cmd_setbldcnt, - Cmd_createsoundtask, - Cmd_waitsound, - Cmd_jumpargeq, - Cmd_monbg_22, - Cmd_clearmonbg_23, - Cmd_jumpifcontest, - Cmd_fadetobgfromset, - Cmd_panse_26, - Cmd_panse_27, - Cmd_monbgprio_28, - Cmd_monbgprio_29, - Cmd_monbgprio_2A, - Cmd_invisible, - Cmd_visible, - Cmd_doublebattle_2D, - Cmd_doublebattle_2E, - Cmd_stopsound + Cmd_loadspritegfx, // 0x00 + Cmd_unloadspritegfx, // 0x01 + Cmd_createsprite, // 0x02 + Cmd_createvisualtask, // 0x03 + Cmd_delay, // 0x04 + Cmd_waitforvisualfinish, // 0x05 + Cmd_nop, // 0x06 + Cmd_nop2, // 0x07 + Cmd_end, // 0x08 + Cmd_playse, // 0x09 + Cmd_monbg, // 0x0A + Cmd_clearmonbg, // 0x0B + Cmd_setalpha, // 0x0C + Cmd_blendoff, // 0x0D + Cmd_call, // 0x0E + Cmd_return, // 0x0F + Cmd_setarg, // 0x10 + Cmd_choosetwoturnanim, // 0x11 + Cmd_jumpifmoveturn, // 0x12 + Cmd_goto, // 0x13 + Cmd_fadetobg, // 0x14 + Cmd_restorebg, // 0x15 + Cmd_waitbgfadeout, // 0x16 + Cmd_waitbgfadein, // 0x17 + Cmd_changebg, // 0x18 + Cmd_playsewithpan, // 0x19 + Cmd_setpan, // 0x1A + Cmd_panse, // 0x1B + Cmd_loopsewithpan, // 0x1C + Cmd_waitplaysewithpan, // 0x1D + Cmd_setbldcnt, // 0x1E + Cmd_createsoundtask, // 0x1F + Cmd_waitsound, // 0x20 + Cmd_jumpargeq, // 0x21 + Cmd_monbg_static, // 0x22 + Cmd_clearmonbg_static, // 0x23 + Cmd_jumpifcontest, // 0x24 + Cmd_fadetobgfromset, // 0x25 + Cmd_panse_adjustnone, // 0x26 + Cmd_panse_adjustall, // 0x27 + Cmd_splitbgprio, // 0x28 + Cmd_splitbgprio_all, // 0x29 + Cmd_splitbgprio_foes, // 0x2A + Cmd_invisible, // 0x2B + Cmd_visible, // 0x2C + Cmd_teamattack_moveback, // 0x2D + Cmd_teamattack_movefwd, // 0x2E + Cmd_stopsound, // 0x2F }; -// Functions void ClearBattleAnimationVars(void) { s32 i; @@ -176,8 +180,8 @@ void ClearBattleAnimationVars(void) for (i = 0; i < ANIM_ARGS_COUNT; i++) gBattleAnimArgs[i] = 0; - sMonAnimTaskIdArray[0] = 0xFF; - sMonAnimTaskIdArray[1] = (s8)0xFF; + sMonAnimTaskIdArray[0] = TASK_NONE; + sMonAnimTaskIdArray[1] = TASK_NONE; gAnimMoveTurn = 0; sAnimBackgroundFadeState = 0; sAnimMoveIndex = 0; @@ -215,8 +219,8 @@ void LaunchBattleAnimation(const u8 *const animsTable[], u16 tableId, bool8 isMo for (i = 0; i < ANIM_ARGS_COUNT; i++) gBattleAnimArgs[i] = 0; - sMonAnimTaskIdArray[0] = 0xFF; - sMonAnimTaskIdArray[1] = (s8)-1; + sMonAnimTaskIdArray[0] = TASK_NONE; + sMonAnimTaskIdArray[1] = TASK_NONE; sBattleAnimScriptPtr = animsTable[tableId]; gAnimScriptActive = TRUE; sAnimFramesToWait = 0; @@ -365,11 +369,11 @@ static void Cmd_createsprite(void) sBattleAnimScriptPtr += 2; } - if (argVar & 0x80) + if (argVar & ANIMSPRITE_IS_TARGET) { - argVar ^= 0x80; - if (argVar >= 0x40) - argVar -= 0x40; + argVar ^= ANIMSPRITE_IS_TARGET; + if (argVar >= 64) + argVar -= 64; else argVar *= -1; @@ -377,8 +381,8 @@ static void Cmd_createsprite(void) } else { - if (argVar >= 0x40) - argVar -= 0x40; + if (argVar >= 64) + argVar -= 64; else argVar *= -1; @@ -449,11 +453,11 @@ static void Cmd_waitforvisualfinish(void) } } -static void Cmd_hang1(void) +static void Cmd_nop(void) { } -static void Cmd_hang2(void) +static void Cmd_nop2(void) { } @@ -464,7 +468,7 @@ static void Cmd_end(void) // Keep waiting as long as there are animations to be done. if (gAnimVisualTaskCount != 0 || gAnimSoundTaskCount != 0 - || sMonAnimTaskIdArray[0] != 0xFF || sMonAnimTaskIdArray[1] != 0xFF) + || sMonAnimTaskIdArray[0] != TASK_NONE || sMonAnimTaskIdArray[1] != TASK_NONE) { sSoundAnimFramesToWait = 0; sAnimFramesToWait = 1; @@ -545,6 +549,7 @@ static void Cmd_monbg(void) else battlerId = gBattleAnimTarget; + // Move designated battler to background if (IsBattlerSpriteVisible(battlerId)) { position = GetBattlerPosition(battlerId); @@ -555,7 +560,7 @@ static void Cmd_monbg(void) MoveBattlerSpriteToBG(battlerId, toBG_2); spriteId = gBattlerSpriteIds[battlerId]; - taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + taskId = CreateTask(Task_InitUpdateMonBg, 10); gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId; gTasks[taskId].data[1] = gSprites[spriteId].x + gSprites[spriteId].x2; gTasks[taskId].data[2] = gSprites[spriteId].y + gSprites[spriteId].y2; @@ -586,7 +591,7 @@ static void Cmd_monbg(void) MoveBattlerSpriteToBG(battlerId, toBG_2); spriteId = gBattlerSpriteIds[battlerId]; - taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10); + taskId = CreateTask(Task_InitUpdateMonBg, 10); gTasks[taskId].data[t1_MONBG_BATTLER] = spriteId; gTasks[taskId].data[1] = gSprites[spriteId].x + gSprites[spriteId].x2; gTasks[taskId].data[2] = gSprites[spriteId].y + gSprites[spriteId].y2; @@ -720,7 +725,7 @@ void ResetBattleAnimBg(bool8 to_BG2) } } -static void task_pA_ma0A_obj_to_bg_pal(u8 taskId) +static void Task_InitUpdateMonBg(u8 taskId) { u8 spriteId, palIndex; s16 x, y; @@ -774,21 +779,21 @@ static void Cmd_clearmonbg(void) else battlerId = gBattleAnimTarget; - if (sMonAnimTaskIdArray[0] != 0xFF) + if (sMonAnimTaskIdArray[0] != TASK_NONE) gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE; - if (animBattlerId > ANIM_TARGET && sMonAnimTaskIdArray[1] != 0xFF) + if (animBattlerId > ANIM_TARGET && sMonAnimTaskIdArray[1] != TASK_NONE) gSprites[gBattlerSpriteIds[battlerId ^ BIT_FLANK]].invisible = FALSE; else animBattlerId = ANIM_ATTACKER; - taskId = CreateTask(sub_807331C, 5); + taskId = CreateTask(Task_ClearMonBg, 5); gTasks[taskId].data[0] = animBattlerId; gTasks[taskId].data[2] = battlerId; sBattleAnimScriptPtr++; } -static void sub_807331C(u8 taskId) +static void Task_ClearMonBg(u8 taskId) { u8 toBG_2; u8 position; @@ -802,23 +807,24 @@ static void sub_807331C(u8 taskId) else toBG_2 = TRUE; - if (sMonAnimTaskIdArray[0] != 0xFF) + if (sMonAnimTaskIdArray[0] != TASK_NONE) { ResetBattleAnimBg(toBG_2); DestroyTask(sMonAnimTaskIdArray[0]); - sMonAnimTaskIdArray[0] = 0xFF; + sMonAnimTaskIdArray[0] = TASK_NONE; } if (gTasks[taskId].data[0] > 1) { ResetBattleAnimBg(toBG_2 ^ 1); DestroyTask(sMonAnimTaskIdArray[1]); - sMonAnimTaskIdArray[1] = 0xFF; + sMonAnimTaskIdArray[1] = TASK_NONE; } DestroyTask(taskId); } } -static void Cmd_monbg_22(void) +// Equivalent to Cmd_monbg but never creates Task_InitUpdateMonBg / Task_UpdateMonBg +static void Cmd_monbg_static(void) { bool8 toBG_2; u8 battlerId; @@ -865,7 +871,7 @@ static void Cmd_monbg_22(void) sBattleAnimScriptPtr++; } -static void Cmd_clearmonbg_23(void) +static void Cmd_clearmonbg_static(void) { u8 animBattlerId; u8 battlerId; @@ -891,14 +897,14 @@ static void Cmd_clearmonbg_23(void) else animBattlerId = ANIM_ATTACKER; - taskId = CreateTask(sub_8073558, 5); + taskId = CreateTask(Task_ClearMonBgStatic, 5); gTasks[taskId].data[0] = animBattlerId; gTasks[taskId].data[2] = battlerId; sBattleAnimScriptPtr++; } -static void sub_8073558(u8 taskId) +static void Task_ClearMonBgStatic(u8 taskId) { bool8 to_BG2; u8 position; @@ -1022,9 +1028,9 @@ bool8 IsContest(void) } // Unused -static bool8 sub_807378C(u16 a) +static bool8 IsSpeciesNotUnown(u16 species) { - if (a == 0xC9) + if (species == SPECIES_UNOWN) return FALSE; else return TRUE; @@ -1270,7 +1276,7 @@ static void Cmd_setpan(void) #define tCurrentPan data[4] #define tFrameCounter data[8] -static void Cmd_panse_1B(void) +static void Cmd_panse(void) { u16 songNum; s8 currentPanArg, incrementPan, incrementPanArg, currentPan, targetPan; @@ -1342,7 +1348,7 @@ static void Task_PanFromInitialToTarget(u8 taskId) } } -static void Cmd_panse_26(void) +static void Cmd_panse_adjustnone(void) { u16 songId; s8 currentPan, targetPan, incrementPan; @@ -1369,7 +1375,7 @@ static void Cmd_panse_26(void) sBattleAnimScriptPtr += 6; } -static void Cmd_panse_27(void) +static void Cmd_panse_adjustall(void) { u16 songId; s8 targetPanArg, incrementPanArg, currentPanArg, currentPan, targetPan, incrementPan; @@ -1575,7 +1581,7 @@ static void Cmd_jumpifcontest(void) sBattleAnimScriptPtr += 5; } -static void Cmd_monbgprio_28(void) +static void Cmd_splitbgprio(void) { u8 wantedBattler; u8 battlerId; @@ -1589,6 +1595,7 @@ static void Cmd_monbgprio_28(void) else battlerId = gBattleAnimAttacker; + // Apply only if the given battler is the lead (on left from team's perspective) battlerPosition = GetBattlerPosition(battlerId); if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT) { @@ -1597,14 +1604,14 @@ static void Cmd_monbgprio_28(void) } } -static void Cmd_monbgprio_29(void) +static void Cmd_splitbgprio_all(void) { sBattleAnimScriptPtr++; SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1); SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2); } -static void Cmd_monbgprio_2A(void) +static void Cmd_splitbgprio_foes(void) { u8 wantedBattler; u8 battlerPosition; @@ -1612,6 +1619,8 @@ static void Cmd_monbgprio_2A(void) wantedBattler = sBattleAnimScriptPtr[1]; sBattleAnimScriptPtr += 2; + + // Apply only if the attacking the opposing side if (GetBattlerSide(gBattleAnimAttacker) != GetBattlerSide(gBattleAnimTarget)) { if (wantedBattler != ANIM_ATTACKER) @@ -1619,6 +1628,7 @@ static void Cmd_monbgprio_2A(void) else battlerId = gBattleAnimAttacker; + // Apply only if the given battler is the lead (on left from team's perspective) battlerPosition = GetBattlerPosition(battlerId); if (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT) { @@ -1633,7 +1643,7 @@ static void Cmd_invisible(void) u8 spriteId; spriteId = GetAnimBattlerSpriteId(sBattleAnimScriptPtr[1]); - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) gSprites[spriteId].invisible = TRUE; sBattleAnimScriptPtr += 2; @@ -1644,13 +1654,14 @@ static void Cmd_visible(void) u8 spriteId; spriteId = GetAnimBattlerSpriteId(sBattleAnimScriptPtr[1]); - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) gSprites[spriteId].invisible = FALSE; sBattleAnimScriptPtr += 2; } -static void Cmd_doublebattle_2D(void) +// Below two commands are never used +static void Cmd_teamattack_moveback(void) { u8 wantedBattler; u8 priority; @@ -1658,6 +1669,8 @@ static void Cmd_doublebattle_2D(void) wantedBattler = sBattleAnimScriptPtr[1]; sBattleAnimScriptPtr += 2; + + // Apply to double battles when attacking own side if (IsDoubleBattle() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) { @@ -1671,7 +1684,7 @@ static void Cmd_doublebattle_2D(void) priority = GetBattlerSpriteBGPriorityRank(gBattleAnimTarget); spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); } - if (spriteId != 0xFF) + if (spriteId != SPRITE_NONE) { gSprites[spriteId].invisible = FALSE; if (priority == 2) @@ -1685,7 +1698,7 @@ static void Cmd_doublebattle_2D(void) } } -static void Cmd_doublebattle_2E(void) +static void Cmd_teamattack_movefwd(void) { u8 wantedBattler; u8 priority; @@ -1693,6 +1706,8 @@ static void Cmd_doublebattle_2E(void) wantedBattler = sBattleAnimScriptPtr[1]; sBattleAnimScriptPtr += 2; + + // Apply to double battles when attacking own side if (IsDoubleBattle() && GetBattlerSide(gBattleAnimAttacker) == GetBattlerSide(gBattleAnimTarget)) { @@ -1707,7 +1722,7 @@ static void Cmd_doublebattle_2E(void) spriteId = GetAnimBattlerSpriteId(ANIM_TARGET); } - if (spriteId != 0xFF && priority == 2) + if (spriteId != SPRITE_NONE && priority == 2) gSprites[spriteId].oam.priority = 2; } } From 72f76b19b35273581f84467efb96a08b9dca6753 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 22 Aug 2022 20:27:23 -0400 Subject: [PATCH 29/38] Sync script.c --- asm/macros/event.inc | 2 +- include/script.h | 29 +++-- src/battle_setup.c | 32 +++--- src/berry_crush.c | 6 +- src/cable_club.c | 22 ++-- src/daycare.c | 6 +- src/dodrio_berry_picking.c | 2 +- src/event_object_movement.c | 2 +- src/field_control_avatar.c | 34 +++--- src/field_effect.c | 44 ++++---- src/field_fadetransition.c | 74 ++++++------- src/field_player_avatar.c | 20 ++-- src/field_poison.c | 4 +- src/field_screen_effect.c | 12 +-- src/field_specials.c | 24 ++--- src/field_tasks.c | 2 +- src/field_weather_effects.c | 2 +- src/fldeff_cut.c | 6 +- src/fldeff_flash.c | 2 +- src/fldeff_rocksmash.c | 6 +- src/fldeff_strength.c | 4 +- src/fldeff_sweetscent.c | 2 +- src/hof_pc.c | 4 +- src/item_menu.c | 4 +- src/item_use.c | 8 +- src/itemfinder.c | 8 +- src/learn_move.c | 2 +- src/map_preview_screen.c | 2 +- src/mevent_client.c | 2 +- src/mystery_event_script.c | 2 +- src/new_game.c | 2 +- src/overworld.c | 80 +++++++------- src/party_menu.c | 4 +- src/party_menu_specials.c | 4 +- src/player_pc.c | 4 +- src/pokemon_jump.c | 2 +- src/pokemon_storage_system_2.c | 6 +- src/quest_log.c | 20 ++-- src/quest_log_player.c | 6 +- src/rfu_union_tool.c | 2 +- src/safari_zone.c | 10 +- src/scrcmd.c | 40 +++---- src/script.c | 190 +++++++++++++++++++-------------- src/script_menu.c | 8 +- src/shop.c | 6 +- src/ss_anne.c | 2 +- src/start_menu.c | 10 +- src/trade_scene.c | 2 +- src/trainer_see.c | 2 +- src/union_room.c | 18 ++-- src/vs_seeker.c | 4 +- src/wild_encounter.c | 2 +- 52 files changed, 408 insertions(+), 385 deletions(-) diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 55c6469a8..50115b361 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -285,7 +285,7 @@ .endm @ Blocks script execution until a command or C code manually unblocks it. Generally used with specific - @ commands and specials. Calling EnableBothScriptContexts for instance will allow execution to continue. + @ commands and specials. Calling ScriptContext_Enable for instance will allow execution to continue. .macro waitstate .byte 0x27 .endm diff --git a/include/script.h b/include/script.h index cd3268181..2a3c727c9 100644 --- a/include/script.h +++ b/include/script.h @@ -28,26 +28,21 @@ u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr); void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void)); void StopScript(struct ScriptContext *ctx); bool8 RunScriptCommand(struct ScriptContext *ctx); -u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr); -const u8 *ScriptPop(struct ScriptContext *ctx); void ScriptJump(struct ScriptContext *ctx, const u8 *ptr); void ScriptCall(struct ScriptContext *ctx, const u8 *ptr); void ScriptReturn(struct ScriptContext *ctx); u16 ScriptReadHalfword(struct ScriptContext *ctx); u32 ScriptReadWord(struct ScriptContext *ctx); -void ScriptContext2_Enable(void); -void ScriptContext2_Disable(void); -bool8 ScriptContext2_IsEnabled(void); -void ScriptContext1_Init(void); -bool8 ScriptContext1_IsScriptSetUp(void); -bool8 ScriptContext2_RunScript(void); -void ScriptContext1_SetupScript(const u8 *ptr); -void ScriptContext1_Stop(void); -void EnableBothScriptContexts(void); -void ScriptContext2_RunNewScript(const u8 *ptr); -u8 *mapheader_get_tagged_pointer(u8 tag); -void mapheader_run_script_by_tag(u8 tag); -u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag); +void LockPlayerFieldControls(void); +void UnlockPlayerFieldControls(void); +bool8 ArePlayerFieldControlsLocked(void); +void ScriptContext_Init(void); +bool8 ScriptContext_IsEnabled(void); +bool8 ScriptContext_RunScript(void); +void ScriptContext_SetupScript(const u8 *ptr); +void ScriptContext_Stop(void); +void ScriptContext_Enable(void); +void RunScriptImmediately(const u8 *ptr); void RunOnLoadMapScript(void); void RunOnTransitionMapScript(void); void RunOnResumeMapScript(void); @@ -60,7 +55,7 @@ void ClearRamScript(void); bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId); const u8 *GetRamScript(u8 objectId, const u8 *script); bool32 ValidateRamScript(void); -void MEventSetRamScript(u8 * script, u16 scriptSize); +void InitRamScript_NoObjectEvent(u8 * script, u16 scriptSize); u8 * GetSavedRamScriptIfValid(void); void RegisterQuestLogInput(u8 var); void ClearMsgBoxCancelableState(void); @@ -77,7 +72,7 @@ bool8 CanWalkAwayToCancelMsgBox(void); void SetWalkingIntoSignVars(void); bool8 IsMsgBoxWalkawayDisabled(void); -extern const u8 *gRAMScriptPtr; +extern const u8 *gRamScriptRetAddr; extern u8 gWalkAwayFromSignInhibitTimer; #endif // GUARD_SCRIPT_H diff --git a/src/battle_setup.c b/src/battle_setup.c index 9f99defd5..375ba3d43 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -236,7 +236,7 @@ void StartWildBattle(void) static void DoStandardWildBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = CB2_EndWildBattle; @@ -248,7 +248,7 @@ static void DoStandardWildBattle(void) void StartRoamerBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = CB2_EndWildBattle; @@ -260,7 +260,7 @@ void StartRoamerBattle(void) static void DoSafariBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = CB2_EndSafariBattle; @@ -270,7 +270,7 @@ static void DoSafariBattle(void) static void DoGhostBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = CB2_EndWildBattle; @@ -291,7 +291,7 @@ static void DoTrainerBattle(void) void StartOldManTutorialBattle(void) { CreateMaleMon(&gEnemyParty[0], SPECIES_WEEDLE, 5); - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic; gBattleTypeFlags = BATTLE_TYPE_OLD_MAN_TUTORIAL; CreateBattleStartTask(B_TRANSITION_SLICED_SCREEN, 0); @@ -299,7 +299,7 @@ void StartOldManTutorialBattle(void) void StartScriptedWildBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_WILD_SCRIPTED; CreateBattleStartTask(GetWildBattleTransition(), 0); @@ -309,7 +309,7 @@ void StartScriptedWildBattle(void) void StartMarowakBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndMarowakBattle; if (CheckBagHasItem(ITEM_SILPH_SCOPE, 1)) { @@ -328,7 +328,7 @@ void StartMarowakBattle(void) void StartSouthernIslandBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; CreateBattleStartTask(GetWildBattleTransition(), 0); @@ -340,7 +340,7 @@ void StartLegendaryBattle(void) { u16 species; - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_LEGENDARY_FRLG; species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES); @@ -369,7 +369,7 @@ void StartLegendaryBattle(void) void StartGroudonKyogreBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; if (gGameVersion == VERSION_FIRE_RED) @@ -382,7 +382,7 @@ void StartGroudonKyogreBattle(void) void StartRegiBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RS_VS_TRAINER); @@ -400,7 +400,7 @@ static void sub_807FAF8(void) // not used static void sub_807FB08(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = sub_807FAF8; @@ -823,8 +823,8 @@ void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerSc gSelectedObjectEvent = trainerEventObjId; gSpecialVar_LastTalked = gObjectEvents[trainerEventObjId].localId; BattleSetup_ConfigureTrainerBattle(trainerScript + 1); - ScriptContext1_SetupScript(EventScript_DoTrainerBattleFromApproach); - ScriptContext2_Enable(); + ScriptContext_SetupScript(EventScript_DoTrainerBattleFromApproach); + LockPlayerFieldControls(); } bool32 GetTrainerFlagFromScriptPointer(const u8 *data) @@ -889,7 +889,7 @@ void StartTrainerBattle(void) gBattleTypeFlags |= BATTLE_TYPE_FIRST_BATTLE; gMain.savedCallback = CB2_EndTrainerBattle; DoTrainerBattle(); - ScriptContext1_Stop(); + ScriptContext_Stop(); } static void CB2_EndTrainerBattle(void) @@ -964,7 +964,7 @@ void StartRematchBattle(void) gBattleTypeFlags = BATTLE_TYPE_TRAINER; gMain.savedCallback = CB2_EndRematchBattle; DoTrainerBattle(); - ScriptContext1_Stop(); + ScriptContext_Stop(); } void ShowTrainerIntroSpeech(void) diff --git a/src/berry_crush.c b/src/berry_crush.c index 7843ce5cb..b21158cbb 100644 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -3178,8 +3178,8 @@ static void Task_ShowBerryCrushRankings(u8 taskId) ClearWindowTilemap(tWindowId); RemoveWindow(tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); - ScriptContext2_Disable(); + ScriptContext_Enable(); + UnlockPlayerFieldControls(); tState = 0; return; } @@ -3190,7 +3190,7 @@ void ShowBerryCrushRankings(void) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); taskId = CreateTask(Task_ShowBerryCrushRankings, 0); gTasks[taskId].tPressingSpeeds(0) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[0]; gTasks[taskId].tPressingSpeeds(1) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[1]; diff --git a/src/cable_club.c b/src/cable_club.c index e4238bb40..42bf2bc59 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -405,7 +405,7 @@ static void Task_Linkup_6a(u8 taskId) if (gLinkType == LINKTYPE_BERRY_BLENDER_SETUP) *UnusedVarNeededToMatch += 0; DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } else @@ -421,7 +421,7 @@ static void Task_Linkup_7(u8 taskId) if (!gReceivedRemoteLinkPlayers) { DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); - EnableBothScriptContexts(); + ScriptContext_Enable(); RemoveWindow(gTasks[taskId].data[5]); DestroyTask(taskId); } @@ -432,7 +432,7 @@ static void Task_Linkup_Canceled(u8 taskId) gSpecialVar_Result = 5; DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); HideFieldMessageBox(); - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } @@ -441,7 +441,7 @@ static void Task_Linkup_ErroredOut(u8 taskId) gSpecialVar_Result = 6; DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); HideFieldMessageBox(); - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } @@ -807,7 +807,7 @@ static void Task_EnterCableClubSeat(u8 taskId) SetLinkWaitingForScript(); sub_80F771C(TRUE); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); break; } } @@ -816,7 +816,7 @@ static void CreateEnterCableClubSeatTaskWithFollowupFunc(TaskFunc followUpFunc) { u8 taskId = CreateTask(Task_EnterCableClubSeat, 80); SetTaskFuncWithFollowupFunc(taskId, Task_EnterCableClubSeat, followUpFunc); - ScriptContext1_Stop(); + ScriptContext_Stop(); } static void Task_StartWiredCableClubTrade(u8 taskId) @@ -825,7 +825,7 @@ static void Task_StartWiredCableClubTrade(u8 taskId) switch (task->data[0]) { case 0: - ScriptContext2_Enable(); + LockPlayerFieldControls(); FadeScreen(FADE_TO_BLACK, 0); ClearLinkCallback_2(); task->data[0]++; @@ -857,7 +857,7 @@ static void Task_StartWirelessCableClubTrade(u8 taskId) switch (data[0]) { case 0: - ScriptContext2_Enable(); + LockPlayerFieldControls(); FadeScreen(FADE_TO_BLACK, 0); ClearLinkRfuCallback(); data[0]++; @@ -899,7 +899,7 @@ static void CreateTask_StartWiredCableClubTrade(void) void StartWiredCableClubTrade(void) { CreateTask_StartWiredCableClubTrade(); - ScriptContext1_Stop(); + ScriptContext_Stop(); } void EnterColosseumPlayerSpot(void) @@ -914,7 +914,7 @@ void EnterColosseumPlayerSpot(void) static void Debug_CreateTaskEnterCableClubSeat(void) { CreateTask(Task_EnterCableClubSeat, 80); - ScriptContext1_Stop(); + ScriptContext_Stop(); } void Script_ShowLinkTrainerCard(void) @@ -952,7 +952,7 @@ static void sub_8081AE4(u8 taskId) { if (!gReceivedRemoteLinkPlayers) { - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } } diff --git a/src/daycare.c b/src/daycare.c index f45aaceff..5c7e8ee9a 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1515,7 +1515,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId) ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); RemoveWindow(gTasks[taskId].tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } else if (gMain.newKeys & B_BUTTON) { @@ -1524,7 +1524,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId) ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); RemoveWindow(gTasks[taskId].tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } @@ -1756,7 +1756,7 @@ static void VBlankCB_EggHatch(void) void EggHatch(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_EggHatch, 10); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, 0); HelpSystem_Disable(); diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 24f5bc8e6..69b42f24a 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -2984,7 +2984,7 @@ static void Task_ShowDodrioBerryPickingRecords(u8 taskId) { RemoveWindow(tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } break; } diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 3c2707173..c7f6b24f0 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1690,7 +1690,7 @@ void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callba do { - if (ScriptContext1_IsScriptSetUp() != TRUE && sub_8112CAC() == TRUE) + if (ScriptContext_IsEnabled() != TRUE && sub_8112CAC() == TRUE) spriteTemplate->callback = sub_811246C; else spriteTemplate->callback = callback; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 9b3d23fe7..949369b77 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -97,7 +97,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) u8 tileTransitionState = gPlayerAvatar.tileTransitionState; bool8 forcedMove = MetatileBehavior_IsForcedMovementTile(GetPlayerCurMetatileBehavior()); - if (!ScriptContext1_IsScriptSetUp() && IsQuestLogInputDpad() == TRUE) + if (!ScriptContext_IsEnabled() && IsQuestLogInputDpad() == TRUE) { QuestLogOverrideJoyVars(input, &newKeys, &heldKeys); } @@ -300,7 +300,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input) void FieldInput_HandleCancelSignpost(struct FieldInput * input) { - if (ScriptContext1_IsScriptSetUp() == TRUE) + if (ScriptContext_IsEnabled() == TRUE) { if (gWalkAwayFromSignInhibitTimer != 0) gWalkAwayFromSignInhibitTimer--; @@ -318,13 +318,13 @@ void FieldInput_HandleCancelSignpost(struct FieldInput * input) RegisterQuestLogInput(QL_INPUT_LEFT); else if (input->dpadDirection == DIR_EAST) RegisterQuestLogInput(QL_INPUT_RIGHT); - ScriptContext1_SetupScript(EventScript_CancelMessageBox); - ScriptContext2_Enable(); + ScriptContext_SetupScript(EventScript_CancelMessageBox); + LockPlayerFieldControls(); } else if (input->pressedStartButton) { - ScriptContext1_SetupScript(EventScript_CancelMessageBox); - ScriptContext2_Enable(); + ScriptContext_SetupScript(EventScript_CancelMessageBox); + LockPlayerFieldControls(); if (!FuncIsActiveTask(Task_QuestLogPlayback_OpenStartMenu)) CreateTask(Task_QuestLogPlayback_OpenStartMenu, 8); } @@ -334,7 +334,7 @@ void FieldInput_HandleCancelSignpost(struct FieldInput * input) static void Task_QuestLogPlayback_OpenStartMenu(u8 taskId) { - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { PlaySE(SE_WIN_OPEN); ShowStartMenu(); @@ -379,7 +379,7 @@ static bool8 TryStartInteractionScript(struct MapPosition *position, u16 metatil && script != EventScript_PC) PlaySE(SE_SELECT); - ScriptContext1_SetupScript(script); + ScriptContext_SetupScript(script); return TRUE; } @@ -636,7 +636,7 @@ static bool8 TryStartCoordEventScript(struct MapPosition *position) if (script == NULL) return FALSE; - ScriptContext1_SetupScript(script); + ScriptContext_SetupScript(script); return TRUE; } @@ -659,18 +659,18 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior) { if (UpdateVsSeekerStepCounter() == TRUE) { - ScriptContext1_SetupScript(EventScript_VsSeekerChargingDone); + ScriptContext_SetupScript(EventScript_VsSeekerChargingDone); return TRUE; } else if (UpdatePoisonStepCounter() == TRUE) { - ScriptContext1_SetupScript(EventScript_FieldPoison); + ScriptContext_SetupScript(EventScript_FieldPoison); return TRUE; } else if (ShouldEggHatch()) { IncrementGameStat(GAME_STAT_HATCHED_EGGS); - ScriptContext1_SetupScript(EventScript_EggHatch); + ScriptContext_SetupScript(EventScript_EggHatch); return TRUE; } } @@ -807,7 +807,7 @@ static u8 GetFacingSignpostType(u16 metatileBehavior, u8 playerDirection) static void SetUpWalkIntoSignScript(const u8 *script, u8 playerDirection) { gSpecialVar_Facing = playerDirection; - ScriptContext1_SetupScript(script); + ScriptContext_SetupScript(script); SetWalkingIntoSignVars(); MsgSetSignPost(); } @@ -889,7 +889,7 @@ static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileB if (MetatileBehavior_IsFallWarp(metatileBehavior) == TRUE) { ResetInitialPlayerAvatarState(); - ScriptContext1_SetupScript(EventScript_1C1361); + ScriptContext_SetupScript(EventScript_1C1361); return TRUE; } DoWarp(); @@ -1033,7 +1033,7 @@ static const u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent) } if (coordEvent->trigger == 0) { - ScriptContext2_RunNewScript(coordEvent->script); + RunScriptImmediately(coordEvent->script); return NULL; } if (VarGet(coordEvent->trigger) == (u8)coordEvent->index) @@ -1086,8 +1086,8 @@ void HandleBoulderActivateVictoryRoadSwitch(u16 x, u16 y) if (events[i].x + 7 == x && events[i].y + 7 == y) { QuestLog_CutRecording(); - ScriptContext1_SetupScript(events[i].script); - ScriptContext2_Enable(); + ScriptContext_SetupScript(events[i].script); + LockPlayerFieldControls(); } } } diff --git a/src/field_effect.c b/src/field_effect.c index 541ceba13..f30774815 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1071,7 +1071,7 @@ static void FieldCallback_UseFly(void) { FadeInFromBlack(); CreateTask(Task_UseFly, 0); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gFieldCallback = NULL; } @@ -1108,7 +1108,7 @@ static void FieldCallback_FlyIntoMap(void) gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) ObjectEventTurn(&gObjectEvents[gPlayerAvatar.objectEventId], DIR_WEST); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gFieldCallback = NULL; } @@ -1126,7 +1126,7 @@ static void Task_FlyIntoMap(u8 taskId) } if (!FieldEffectActiveListContains(FLDEFF_FLY_IN)) { - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); DestroyTask(taskId); } @@ -1156,7 +1156,7 @@ void FieldCB_FallWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CreateTask(Task_FallWarpFieldEffect, 0); gFieldCallback = NULL; @@ -1274,7 +1274,7 @@ static bool8 FallWarpEffect_7(struct Task *task) { s16 x, y; gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); CameraObjectReset1(); UnfreezeObjectEvents(); InstallCameraPanAheadCallback(); @@ -1459,7 +1459,7 @@ static void FieldCB_EscalatorWarpIn(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CreateTask(Task_EscalatorWarpInFieldEffect, 0); gFieldCallback = NULL; @@ -1576,7 +1576,7 @@ static bool8 EscalatorWarpInEffect_7(struct Task *task) if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { CameraObjectReset1(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); ObjectEventSetHeldMovement(objectEvent, GetWalkNormalMovementAction(DIR_EAST)); DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpInFieldEffect)); @@ -1617,7 +1617,7 @@ static void Task_UseWaterfall(u8 taskId) static bool8 waterfall_0_setup(struct Task *task, struct ObjectEvent * playerObj) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; task->data[0]++; return FALSE; @@ -1625,7 +1625,7 @@ static bool8 waterfall_0_setup(struct Task *task, struct ObjectEvent * playerObj static bool8 waterfall_1_do_anim_probably(struct Task *task, struct ObjectEvent * playerObj) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); if (!ObjectEventIsMovementOverridden(playerObj)) { ObjectEventClearHeldMovementIfFinished(playerObj); @@ -1660,7 +1660,7 @@ static bool8 waterfall_4_wait_player_move_probably(struct Task *task, struct Obj task->data[0] = 3; return TRUE; } - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(Task_UseWaterfall)); FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL); @@ -1702,7 +1702,7 @@ static bool8 DiveFieldEffect_Init(struct Task *task) static bool8 DiveFieldEffect_ShowMon(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gFieldEffectArguments[0] = task->data[15]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; @@ -1869,7 +1869,7 @@ static void FieldCB_LavaridgeGymB1FWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); gFieldCallback = NULL; CreateTask(Task_LavaridgeGymB1FWarpExit, 0); } @@ -1922,7 +1922,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task *task, struct ObjectEve if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); DestroyTask(FindTaskIdByFunc(Task_LavaridgeGymB1FWarpExit)); } @@ -2084,7 +2084,7 @@ static void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *task) = void StartEscapeRopeFieldEffect(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CreateTask(Task_EscapeRopeWarpOut, 80); } @@ -2270,7 +2270,7 @@ static void FieldCallback_EscapeRopeExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gFieldCallback = NULL; gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; @@ -2311,7 +2311,7 @@ static void EscapeRopeWarpInEffect_Spin(struct Task *task) { playerObj->invisible = FALSE; playerObj->fixedPriority = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); DestroyTask(FindTaskIdByFunc(Task_EscapeRopeWarpIn)); } @@ -2360,7 +2360,7 @@ static void Task_DoTeleportFieldEffect(u8 taskId) static void TeleportFieldEffectTask1(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CameraObjectReset2(); task->data[15] = GetPlayerFacingDirection(); @@ -2447,7 +2447,7 @@ static void FieldCallback_TeleportIn(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gFieldCallback = NULL; gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; @@ -2528,7 +2528,7 @@ static void TeleportInFieldEffectTask3(struct Task *task) task->data[1] = 8; if ((++task->data[2]) > 4 && task->data[14] == objectEvent->facingDirection) { - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); CameraObjectReset1(); UnfreezeObjectEvents(); DestroyTask(FindTaskIdByFunc(Task_DoTeleportInFieldEffect)); @@ -2997,7 +2997,7 @@ static void Task_FldEffUseSurf(u8 taskId) static void UseSurfEffect_1(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gPlayerAvatar.preventStep = TRUE; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING); @@ -3058,7 +3058,7 @@ static void UseSurfEffect_5(struct Task *task) ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection)); SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_PLAYER_AND_MON); UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); FieldEffectActiveListRemove(FLDEFF_USE_SURF); DestroyTask(FindTaskIdByFunc(Task_FldEffUseSurf)); SetHelpContext(HELPCONTEXT_SURFING); @@ -3093,7 +3093,7 @@ static void Task_FldEffUseVsSeeker(u8 taskId) static void UseVsSeekerEffect_1(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gPlayerAvatar.preventStep = TRUE; task->data[0]++; diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 31de46ab2..020798f46 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -137,7 +137,7 @@ static void Task_ContinueScriptUnionRoom(u8 taskId) void FieldCB_ContinueScriptUnionRoom(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); FadeInFromBlack(); CreateTask(Task_ContinueScriptUnionRoom, 10); @@ -148,13 +148,13 @@ static void Task_ContinueScript(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } void FieldCB_ContinueScriptHandleMusic(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); FadeInFromBlack(); CreateTask(Task_ContinueScript, 10); @@ -162,7 +162,7 @@ void FieldCB_ContinueScriptHandleMusic(void) void FieldCB_ContinueScript(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FadeInFromBlack(); CreateTask(Task_ContinueScript, 10); } @@ -186,7 +186,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId) case 2: if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -195,7 +195,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId) void FieldCB_ReturnToFieldCableLink(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); palette_bg_faded_fill_black(); CreateTask(Task_ReturnToFieldCableLink, 10); @@ -221,7 +221,7 @@ static void Task_ReturnToFieldRecordMixing(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { StartSendingKeysToLink(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -230,7 +230,7 @@ static void Task_ReturnToFieldRecordMixing(u8 taskId) void FieldCB_ReturnToFieldWirelessLink(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); palette_bg_faded_fill_black(); CreateTask(Task_ReturnToFieldRecordMixing, 10); @@ -290,7 +290,7 @@ void FieldCB_DefaultWarpExit(void) Overworld_PlaySpecialMapMusic(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); SetUpWarpExitTask(FALSE); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } void FieldCB_WarpExitFadeFromBlack(void) @@ -298,7 +298,7 @@ void FieldCB_WarpExitFadeFromBlack(void) Overworld_PlaySpecialMapMusic(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); SetUpWarpExitTask(TRUE); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void FieldCB_TeleportWarpIn(void) @@ -308,7 +308,7 @@ static void FieldCB_TeleportWarpIn(void) QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); PlaySE(SE_WARP_OUT); CreateTask(Task_TeleportWarpIn, 10); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void Task_ExitDoor(u8 taskId) @@ -393,7 +393,7 @@ static void Task_ExitDoor(u8 taskId) break; case 4: UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); break; } @@ -429,7 +429,7 @@ static void Task_ExitNonAnimDoor(u8 taskId) break; case 3: UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); break; } @@ -441,14 +441,14 @@ static void Task_ExitNonDoor(u8 taskId) { case 0: FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); gTasks[taskId].data[0]++; break; case 1: if (FieldFadeTransitionBackgroundEffectIsFinished()) { UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -461,7 +461,7 @@ static void Task_TeleportWarpIn(u8 taskId) { case 0: FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); StartTeleportInPlayerAnim(); gTasks[taskId].data[0]++; break; @@ -469,7 +469,7 @@ static void Task_TeleportWarpIn(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() && WaitTeleportInPlayerAnim() != TRUE) { UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -489,7 +489,7 @@ void FadeTransition_FadeInOnReturnToStartMenu(void) { FadeInFromBlack(); CreateTask(Task_WaitFadeAndCreateStartMenuTask, 80); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } bool8 FieldCB_ReturnToFieldOpenStartMenu(void) @@ -502,7 +502,7 @@ static void Task_SafariZoneRanOutOfBalls(u8 taskId) { if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); } @@ -510,7 +510,7 @@ static void Task_SafariZoneRanOutOfBalls(u8 taskId) void FieldCB_SafariZoneRanOutOfBalls(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); FadeInFromBlack(); CreateTask(Task_SafariZoneRanOutOfBalls, 10); @@ -531,7 +531,7 @@ bool32 FieldFadeTransitionBackgroundEffectIsFinished(void) void DoWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); PlayRainStoppingSoundEffect(); @@ -542,7 +542,7 @@ void DoWarp(void) void DoDiveWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); PlayRainStoppingSoundEffect(); @@ -560,21 +560,21 @@ void DoStairWarp(u16 metatileBehavior, u16 delay) void DoDoorWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gFieldCallback = FieldCB_DefaultWarpExit; CreateTask(Task_DoorWarp, 10); } void DoTeleport2Warp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_Teleport2Warp, 10); gFieldCallback = FieldCB_TeleportWarpIn; } void DoUnionRoomWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gFieldCallback = FieldCB_DefaultWarpExit; CreateTask(Task_TeleportWarp, 10); } @@ -587,25 +587,25 @@ void DoFallWarp(void) void DoEscalatorWarp(u8 metatileBehavior) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); StartEscalatorWarp(metatileBehavior, 10); } void DoLavaridgeGymB1FWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); StartLavaridgeGymB1FWarp(10); } void DoLavaridgeGym1FWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); StartLavaridgeGym1FWarp(10); } void DoTeleportWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); TryFadeOutOldMapMusic(); CreateTask(Task_TeleportWarp, 10); gFieldCallback = FieldCB_TeleportWarpIn; @@ -613,7 +613,7 @@ void DoTeleportWarp(void) static void DoPortholeWarp(void) // Unused { - ScriptContext2_Enable(); + LockPlayerFieldControls(); WarpFadeOutScreen(); CreateTask(Task_Teleport2Warp, 10); gFieldCallback = nullsub_60; @@ -625,7 +625,7 @@ static void Task_CableClubWarp(u8 taskId) switch (task->data[0]) { case 0: - ScriptContext2_Enable(); + LockPlayerFieldControls(); task->data[0]++; break; case 1: @@ -642,7 +642,7 @@ static void Task_CableClubWarp(u8 taskId) void DoCableClubWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); PlaySE(SE_EXIT); @@ -691,7 +691,7 @@ static void Task_Teleport2Warp(u8 taskId) { case 0: FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); task->data[0]++; break; case 1: @@ -713,7 +713,7 @@ static void Task_TeleportWarp(u8 taskId) { case 0: FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); PlaySE(SE_WARP_IN); StartTeleportWarpOutPlayerAnim(); task->data[0]++; @@ -796,7 +796,7 @@ static void Task_StairWarp(u8 taskId) switch (data[0]) { case 0: - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CameraObjectReset2(); data[0]++; @@ -898,14 +898,14 @@ static void Task_ExitStairs(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { CameraObjectReset1(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; case 0: Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); ExitStairsMovement(&data[1], &data[2], &data[3], &data[4], &data[5]); data[0]++; break; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index fd1c67ccd..41a5306c1 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -1417,7 +1417,7 @@ static void Task_BumpBoulder(u8 taskId) static bool8 DoBoulderInit(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; task->data[0]++; return FALSE; @@ -1453,7 +1453,7 @@ static bool8 DoBoulderFinish(struct Task *task, struct ObjectEvent *playerObject HandleBoulderFallThroughHole(strengthObject); HandleBoulderActivateVictoryRoadSwitch(strengthObject->currentCoords.x, strengthObject->currentCoords.y); gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(FindTaskIdByFunc(Task_BumpBoulder)); } return FALSE; @@ -1518,7 +1518,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct Objec task->data[0]++; task->data[1] = objectEvent->movementDirection; gPlayerAvatar.preventStep = TRUE; - ScriptContext2_Enable(); + LockPlayerFieldControls(); PlaySE(SE_WARP_IN); return TRUE; } @@ -1564,7 +1564,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct Objec if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { QL_TryRecordPlayerStepWithDuration0(objectEvent, GetWalkSlowerMovementAction(GetOppositeDirection(task->data[1]))); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin)); } @@ -1575,7 +1575,7 @@ static void CreateStopSurfingTask(u8 direction) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); Overworld_ClearSavedMusic(); Overworld_ChangeMusicToDefault(); @@ -1591,7 +1591,7 @@ void CreateStopSurfingTask_NoMusicChange(u8 direction) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING; gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT; @@ -1633,7 +1633,7 @@ static void Task_WaitStopSurfing(u8 taskId) ObjectEventSetGraphicsId(playerObjEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_NORMAL)); QL_TryRecordPlayerStepWithDuration0(playerObjEvent, GetFaceDirectionMovementAction(playerObjEvent->facingDirection)); gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); DestroySprite(&gSprites[playerObjEvent->fieldEffectSpriteId]); DestroyTask(taskId); @@ -1696,7 +1696,7 @@ static void Task_Fishing(u8 taskId) static bool8 Fishing1(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; task->tStep++; return FALSE; @@ -1880,7 +1880,7 @@ static bool8 Fishing11(struct Task *task) if (task->tFrameCounter != 0) { gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); FishingWildEncounter(task->tFishingRod); DestroyTask(FindTaskIdByFunc(Task_Fishing)); } @@ -1940,7 +1940,7 @@ static bool8 Fishing16(struct Task *task) if (!IsTextPrinterActive(0)) { gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); ClearDialogWindowAndFrame(0, TRUE); DestroyTask(FindTaskIdByFunc(Task_Fishing)); diff --git a/src/field_poison.c b/src/field_poison.c index 1e2a30c0c..f9f3d8142 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -77,7 +77,7 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) gSpecialVar_Result = TRUE; else gSpecialVar_Result = FALSE; - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); break; } @@ -86,7 +86,7 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) void TryFieldPoisonWhiteOut(void) { CreateTask(Task_TryFieldPoisonWhiteOut, 80); - ScriptContext1_Stop(); + ScriptContext_Stop(); } s32 DoPoisonFieldEffect(void) diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index d827fc88e..52dc0ba55 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -154,7 +154,7 @@ static void sub_807EF7C(u8 taskId) { if (!FuncIsActiveTask(UpdateFlashLevelEffect)) { - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } } @@ -198,7 +198,7 @@ void AnimateFlash(u8 flashLevel) value = TRUE; sub_807EFC8(120, 80, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], value, 2); sub_807EFA4(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } void WriteFlashScanlineEffectBuffer(u8 flashLevel) @@ -221,7 +221,7 @@ static void Task_EnableScriptAfterMusicFade(u8 taskId) if (BGMusicStopped() == TRUE) { DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } @@ -435,14 +435,14 @@ static void Task_RushInjuredPokemonToCenter(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { DestroyTask(taskId); - ScriptContext1_SetupScript(EventScript_AfterWhiteOutHeal); + ScriptContext_SetupScript(EventScript_AfterWhiteOutHeal); } break; case 6: if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { DestroyTask(taskId); - ScriptContext1_SetupScript(EventScript_AfterWhiteOutMomHeal); + ScriptContext_SetupScript(EventScript_AfterWhiteOutMomHeal); } break; } @@ -452,7 +452,7 @@ void FieldCB_RushInjuredPokemonToCenter(void) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); palette_bg_faded_fill_black(); taskId = CreateTask(Task_RushInjuredPokemonToCenter, 10); gTasks[taskId].data[0] = 0; diff --git a/src/field_specials.c b/src/field_specials.c index e9574f429..c943ce5c1 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -91,7 +91,7 @@ void ShowDiploma(void) { QuestLog_CutRecording(); SetMainCallback2(CB2_ShowDiploma); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } void ForcePlayerOntoBike(void) @@ -497,7 +497,7 @@ static void Task_ShakeScreen(u8 taskId) static void Task_EndScreenShake(u8 taskId) { DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } #undef tYtrans @@ -1083,7 +1083,7 @@ static void Task_ElevatorShake(u8 taskId) { PlaySE(SE_DING_DONG); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); InstallCameraPanAheadCallback(); } } @@ -1336,7 +1336,7 @@ static void Task_CreateScriptListMenu(u8 taskId) s32 mwidth; struct Task *task = &gTasks[taskId]; u8 windowId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); if (gSpecialVar_0x8004 == LISTMENU_SILPHCO_FLOORS) sListMenuLastScrollPosition = sElevatorScroll; else @@ -1432,7 +1432,7 @@ static void Task_ListMenuHandleInput(u8 taskId) { Task_ListMenuRemoveScrollIndicatorArrowPair(taskId); task->func = Task_SuspendListMenu; - EnableBothScriptContexts(); + ScriptContext_Enable(); } break; } @@ -1450,7 +1450,7 @@ static void Task_DestroyListMenu(u8 taskId) CopyWindowToVram(task->data[13], COPYWIN_GFX); RemoveWindow(task->data[13]); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } static void Task_SuspendListMenu(u8 taskId) @@ -1470,14 +1470,14 @@ void ReturnToListMenu(void) { u8 taskId = FindTaskIdByFunc(Task_SuspendListMenu); if (taskId == 0xFF) - EnableBothScriptContexts(); + ScriptContext_Enable(); else gTasks[taskId].data[6]++; } static void Task_RedrawScrollArrowsAndWaitInput(u8 taskId) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Task_CreateMenuRemoveScrollIndicatorArrowPair(taskId); gTasks[taskId].func = Task_ListMenuHandleInput; } @@ -2317,7 +2317,7 @@ void CutMoveOpenDottedHoleDoor(void) DrawWholeMapView(); PlaySE(SE_BANG); FlagSet(FLAG_USED_CUT_ON_RUIN_VALLEY_BRAILLE); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } static const u16 sDeoxysObjectPals[][16] = { @@ -2373,7 +2373,7 @@ static void Task_DoDeoxysTriangleInteraction(u8 taskId) if (FlagGet(FLAG_SYS_DEOXYS_AWAKENED) == TRUE) { gSpecialVar_Result = 3; - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } else @@ -2392,7 +2392,7 @@ static void Task_DoDeoxysTriangleInteraction(u8 taskId) { FlagSet(FLAG_SYS_DEOXYS_AWAKENED); gSpecialVar_Result = 2; - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } else @@ -2434,7 +2434,7 @@ static void Task_WaitDeoxysFieldEffect(u8 taskId) { if (!FieldEffectActiveListContains(FLDEFF_MOVE_DEOXYS_ROCK)) { - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } } diff --git a/src/field_tasks.c b/src/field_tasks.c index 20dcb4696..a1f32b895 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -57,7 +57,7 @@ static void Task_RunTimeBasedEvents(u8 taskId) { s16 *data = gTasks[taskId].data; - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { if (!QL_IS_PLAYBACK_STATE) { diff --git a/src/field_weather_effects.c b/src/field_weather_effects.c index 32f945803..ce8fe231c 100644 --- a/src/field_weather_effects.c +++ b/src/field_weather_effects.c @@ -315,7 +315,7 @@ static void UpdateDroughtBlend(u8 taskId) task->tState++; break; case 4: - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); break; } diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index e6029448c..20fff2606 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -177,7 +177,7 @@ bool8 FldEff_UseCutOnGrass(void) static void FieldCallback_CutTree(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); - ScriptContext1_SetupScript(EventScript_FldEffCut); + ScriptContext_SetupScript(EventScript_FldEffCut); } bool8 FldEff_UseCutOnTree(void) @@ -284,12 +284,12 @@ static void SpriteCallback_CutGrass_Cleanup(struct Sprite *sprite) FieldEffectStop(&gSprites[sCutGrassSpriteArrayPtr[0]], FLDEFF_CUT_GRASS); Free(sCutGrassSpriteArrayPtr); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } static void FieldMoveCallback_CutTree(void) { PlaySE(SE_M_CUT); FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE); - EnableBothScriptContexts(); + ScriptContext_Enable(); } diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index 8129a1a54..352ef7bc8 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -185,7 +185,7 @@ static void FldEff_UseFlash(void) { PlaySE(SE_M_REFLECT); FlagSet(FLAG_SYS_FLASH_ACTIVE); - ScriptContext1_SetupScript(EventScript_FldEffFlash); + ScriptContext_SetupScript(EventScript_FldEffFlash); } // Map transition animatics diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index c5bc0d072..74e92e9ee 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -46,7 +46,7 @@ static void Task_FieldEffectShowMon_Init(u8 taskId) { u8 mapObjId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; mapObjId = gPlayerAvatar.objectEventId; if (!ObjectEventIsMovementOverridden(&gObjectEvents[mapObjId]) @@ -117,7 +117,7 @@ bool8 SetUpFieldMove_RockSmash(void) static void sub_80C9A10(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); - ScriptContext1_SetupScript(EventScript_FldEffRockSmash); + ScriptContext_SetupScript(EventScript_FldEffRockSmash); } bool8 FldEff_UseRockSmash(void) @@ -133,5 +133,5 @@ static void sub_80C9A60(void) { PlaySE(SE_M_ROCK_THROW); FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH); - EnableBothScriptContexts(); + ScriptContext_Enable(); } diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c index c5dbfa6cd..bad0f05df 100644 --- a/src/fldeff_strength.c +++ b/src/fldeff_strength.c @@ -28,7 +28,7 @@ bool8 SetUpFieldMove_Strength(void) static void FieldCB_UseStrength(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); - ScriptContext1_SetupScript(EventScript_FldEffStrength); + ScriptContext_SetupScript(EventScript_FldEffStrength); } bool8 FldEff_UseStrength(void) @@ -42,5 +42,5 @@ bool8 FldEff_UseStrength(void) static void ShowMonCB_UseStrength(void) { FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH); - EnableBothScriptContexts(); + ScriptContext_Enable(); } diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index e9373bd05..606709e44 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -94,7 +94,7 @@ static void FailSweetScentEncounter(u8 taskId) CpuFastCopy(sPlttBufferBak, gPlttBufferUnfaded, PLTT_SIZE); WeatherProcessingIdle(); Free(sPlttBufferBak); - ScriptContext1_SetupScript(EventScript_FailSweetScent); + ScriptContext_SetupScript(EventScript_FailSweetScent); DestroyTask(taskId); } } diff --git a/src/hof_pc.c b/src/hof_pc.c index 4bbbc7bec..791a4d1fc 100644 --- a/src/hof_pc.c +++ b/src/hof_pc.c @@ -23,7 +23,7 @@ static void Task_WaitFadeAndSetCallback(u8 taskId) void HallOfFamePCBeginFade(void) { BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_WaitFadeAndSetCallback, 0); } @@ -35,7 +35,7 @@ void ReturnFromHallOfFamePC(void) static void ReshowPCMenuAfterHallOfFamePC(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); CreatePCMenu(); ScriptMenu_DisplayPCStartupPrompt(); diff --git a/src/item_menu.c b/src/item_menu.c index ceddc9675..bf51d2f31 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -2033,7 +2033,7 @@ bool8 UseRegisteredKeyItemOnField(void) { if (CheckBagHasItem(gSaveBlock1Ptr->registeredItem, 1) == TRUE) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); HandleEnforcedLookDirectionOnPlayerStopMoving(); StopPlayerAvatar(); @@ -2044,7 +2044,7 @@ bool8 UseRegisteredKeyItemOnField(void) } gSaveBlock1Ptr->registeredItem = ITEM_NONE; } - ScriptContext1_SetupScript(EventScript_BagItemCanBeRegistered); + ScriptContext_SetupScript(EventScript_BagItemCanBeRegistered); return TRUE; } diff --git a/src/item_use.c b/src/item_use.c index 716d42b9a..92a476e96 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -197,7 +197,7 @@ static void Task_ItemUse_CloseMessageBoxAndReturnToField(u8 taskId) ClearDialogWindowAndFrame(0, 1); DestroyTask(taskId); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) @@ -218,7 +218,7 @@ static void sub_80A1184(void) static bool8 sub_80A1194(void) { FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FadeInFromBlack(); CreateTask(sub_80A11C0, 10); gExitStairsMovementDisabled = FALSE; @@ -230,7 +230,7 @@ static void sub_80A11C0(u8 taskId) if (IsWeatherNotFadingIn() == TRUE) { UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } } @@ -278,7 +278,7 @@ static void ItemUseOnFieldCB_Bicycle(u8 taskId) PlaySE(SE_BIKE_BELL); GetOnOffBike(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } diff --git a/src/itemfinder.c b/src/itemfinder.c index 95887985f..375b4ac38 100644 --- a/src/itemfinder.c +++ b/src/itemfinder.c @@ -151,7 +151,7 @@ static void Task_NoResponse_CleanUp(u8 taskId) { ClearDialogWindowAndFrame(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } @@ -487,7 +487,7 @@ static void Task_ItemfinderResponseCleanUp(u8 taskId) DestroyArrowAndStarTiles(); ClearDialogWindowAndFrame(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } @@ -500,8 +500,8 @@ static void Task_ItemfinderUnderfootDigUpItem(u8 taskId) { DestroyArrowAndStarTiles(); DestroyTask(taskId); - ScriptContext1_SetupScript(EventScript_ItemfinderDigUpUnderfootItem); - ScriptContext2_Enable(); + ScriptContext_SetupScript(EventScript_ItemfinderDigUpUnderfootItem); + LockPlayerFieldControls(); } #undef tStartSpriteId diff --git a/src/learn_move.c b/src/learn_move.c index 314125c9e..165b1adb4 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -366,7 +366,7 @@ static void VBlankCB_MoveRelearner(void) void DisplayMoveTutorMenu(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_InitMoveRelearnerMenu, 10); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); } diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index 65b8ba793..de42a0a4f 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -436,7 +436,7 @@ void MapPreview_StartForestTransition(u8 mapsec) SetGpuRegBits(REG_OFFSET_WININ, WININ_WIN0_CLR | WININ_WIN1_CLR); SetGpuRegBits(REG_OFFSET_WINOUT, WINOUT_WIN01_CLR); gTasks[taskId].data[11] = MapPreview_CreateMapNameWindow(mapsec); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } u16 MapPreview_CreateMapNameWindow(u8 mapsec) diff --git a/src/mevent_client.c b/src/mevent_client.c index 3838558df..e2d226ed6 100644 --- a/src/mevent_client.c +++ b/src/mevent_client.c @@ -215,7 +215,7 @@ static u32 client_mainseq_4(struct mevent_client * svr) MEvent_ReceiveDistributionMon(svr->recvBuffer); break; case 17: - MEventSetRamScript(svr->recvBuffer, 1000); + InitRamScript_NoObjectEvent(svr->recvBuffer, 1000); break; case 18: memcpy(&gSaveBlock2Ptr->battleTower.ereaderTrainer, svr->recvBuffer, sizeof(struct BattleTowerEReaderTrainer)); diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 06c1c9bbf..ab2e4fa9e 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -145,7 +145,7 @@ bool8 MEScrCmd_setmsg(struct ScriptContext *ctx) bool8 MEScrCmd_runscript(struct ScriptContext *ctx) { u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); - ScriptContext2_RunNewScript(script); + RunScriptImmediately(script); return FALSE; } diff --git a/src/new_game.c b/src/new_game.c index 741d1d602..0bd25b23c 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -146,7 +146,7 @@ void NewGameInitData(void) InitMEventData(); SetAllRenewableItemFlags(); WarpToPlayersRoom(); - ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags); + RunScriptImmediately(EventScript_ResetAllMapFlags); StringCopy(gSaveBlock1Ptr->rivalName, rivalName); ResetTrainerTowerResults(); } diff --git a/src/overworld.c b/src/overworld.c index 6c1420418..a26c494d0 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -242,7 +242,7 @@ static const u16 sWhiteOutMoneyLossBadgeFlagIDs[] = { static void DoWhiteOut(void) { - ScriptContext2_RunNewScript(EventScript_ResetEliteFourEnd); + RunScriptImmediately(EventScript_ResetEliteFourEnd); RemoveMoney(&gSaveBlock1Ptr->money, ComputeWhiteOutMoneyLoss()); HealPlayerParty(); Overworld_ResetStateAfterWhitingOut(); @@ -1393,13 +1393,13 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) FieldClearPlayerInput(&fieldInput); FieldGetPlayerInput(&fieldInput, newKeys, heldKeys); FieldInput_HandleCancelSignpost(&fieldInput); - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { if (ProcessPlayerFieldInput(&fieldInput) == TRUE) { if (gQuestLogPlaybackState == 2) sub_81127F8(&gInputToStoreInQuestLogMaybe); - ScriptContext2_Enable(); + LockPlayerFieldControls(); DismissMapNamePopup(); } else @@ -1420,11 +1420,11 @@ static void DoCB1_Overworld_QuestLogPlayback(void) FieldClearPlayerInput(&fieldInput); fieldInput = gQuestLogFieldInput; FieldInput_HandleCancelSignpost(&fieldInput); - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { if (ProcessPlayerFieldInput(&fieldInput) == TRUE) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); DismissMapNamePopup(); } else @@ -1452,7 +1452,7 @@ void CB1_Overworld(void) static void OverworldBasic(void) { - ScriptContext2_RunScript(); + ScriptContext_RunScript(); RunTasks(); AnimateSprites(); CameraUpdate(); @@ -1518,8 +1518,8 @@ void CB2_NewGame(void) NewGameInitData(); ResetInitialPlayerAvatarState(); PlayTimeCounter_Start(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); gFieldCallback = FieldCB_WarpExitFadeFromBlack; gFieldCallback2 = NULL; DoMapLoadLoop(&gMain.state); @@ -1539,8 +1539,8 @@ void CB2_WhiteOut(void) ResetSafariZoneFlag_(); DoWhiteOut(); SetInitialPlayerAvatarStateWithDirection(DIR_NORTH); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); gFieldCallback = FieldCB_RushInjuredPokemonToCenter; val = 0; DoMapLoadLoop(&val); @@ -1554,8 +1554,8 @@ void CB2_WhiteOut(void) void CB2_LoadMap(void) { FieldClearVBlankHBlankCallbacks(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); SetMainCallback1(NULL); SetMainCallback2(CB2_DoChangeMap); gMain.savedCallback = CB2_LoadMap2; @@ -1634,8 +1634,8 @@ void CB2_ReturnToFieldFromMultiplayer(void) else gFieldCallback = FieldCB_ReturnToFieldCableLink; - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); CB2_ReturnToField(); } @@ -1685,8 +1685,8 @@ void CB2_ContinueSavedGame(void) Overworld_ResetStateOnContinue(); InitMapFromSavedGame(); PlayTimeCounter_Start(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); gFieldCallback2 = NULL; gExitStairsMovementDisabled = TRUE; if (UseContinueGameWarp() == TRUE) @@ -1760,8 +1760,8 @@ static bool32 LoadMapInStepsLink(u8 *state) { case 0: InitOverworldBgs(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); (*state)++; break; case 1: @@ -2197,8 +2197,8 @@ void CB2_SetUpOverworldForQLPlaybackWithWarpExit(void) { FieldClearVBlankHBlankCallbacks(); gGlobalFieldTintMode = QL_TINT_GRAYSCALE; - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); SetMainCallback1(NULL); SetMainCallback2(CB2_DoChangeMap); gMain.savedCallback = CB2_LoadMapForQLPlayback; @@ -2209,8 +2209,8 @@ void CB2_SetUpOverworldForQLPlayback(void) FieldClearVBlankHBlankCallbacks(); gGlobalFieldTintMode = QL_TINT_GRAYSCALE; LoadSaveblockMapHeader(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); SetMainCallback1(NULL); SetMainCallback2(CB2_LoadMapForQLPlayback); } @@ -2317,7 +2317,7 @@ void CB2_EnterFieldFromQuestLog(void) Overworld_ResetStateOnContinue(); InitMapFromSavedGame(); PlayTimeCounter_Start(); - ScriptContext1_Init(); + ScriptContext_Init(); gExitStairsMovementDisabled = TRUE; if (UseContinueGameWarp() == TRUE) { @@ -2388,8 +2388,8 @@ static bool32 SetUpScrollSceneForCredits(u8 *state, u8 unused) sCreditsOverworld_CmdLength = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_4; WarpIntoMap(); gPaletteFade.bufferTransferDisabled = TRUE; - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); SetMainCallback1(NULL); gFieldCallback2 = FieldCB2_Credits_WaitFade; gMain.state = 0; @@ -2845,7 +2845,7 @@ static void ResetPlayerHeldKeys(u16 *keys) static u16 KeyInterCB_SelfIdle(u32 key) { - if (ScriptContext2_IsEnabled() == TRUE) + if (ArePlayerFieldControlsLocked() == TRUE) return LINK_KEY_CODE_EMPTY; if (GetLinkRecvQueueLength() > 4) return LINK_KEY_CODE_HANDLE_RECV_QUEUE; @@ -2865,7 +2865,7 @@ static u16 KeyInterCB_Idle(u32 key) static u16 KeyInterCB_DeferToEventScript(u32 key) { u16 retVal; - if (ScriptContext2_IsEnabled() == TRUE) + if (ArePlayerFieldControlsLocked() == TRUE) { retVal = LINK_KEY_CODE_EMPTY; } @@ -2888,7 +2888,7 @@ static u16 KeyInterCB_DeferToRecvQueue(u32 key) else { retVal = LINK_KEY_CODE_IDLE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); SetKeyInterceptCallback(KeyInterCB_Idle); } return retVal; @@ -2905,7 +2905,7 @@ static u16 KeyInterCB_DeferToSendQueue(u32 key) else { retVal = LINK_KEY_CODE_IDLE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); SetKeyInterceptCallback(KeyInterCB_Idle); } return retVal; @@ -2958,7 +2958,7 @@ static u16 KeyInterCB_WaitForPlayersToExit(u32 keyOrPlayerId) CheckRfuKeepAliveTimer(); if (AreAllPlayersInLinkState(PLAYER_LINK_STATE_EXITING_ROOM) == TRUE) { - ScriptContext1_SetupScript(CableClub_EventScript_DoLinkRoomExit); + ScriptContext_SetupScript(CableClub_EventScript_DoLinkRoomExit); SetKeyInterceptCallback(KeyInterCB_SendNothing); } return LINK_KEY_CODE_EMPTY; @@ -3136,41 +3136,41 @@ static u16 GetDirectionForEventScript(const u8 *script) static void InitLinkPlayerQueueScript(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void InitLinkRoomStartMenuScript(void) { PlaySE(SE_WIN_OPEN); ShowStartMenu(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void RunInteractLocalPlayerScript(const u8 *script) { PlaySE(SE_SELECT); - ScriptContext1_SetupScript(script); - ScriptContext2_Enable(); + ScriptContext_SetupScript(script); + LockPlayerFieldControls(); } static void CreateConfirmLeaveTradeRoomPrompt(void) { PlaySE(SE_WIN_OPEN); - ScriptContext1_SetupScript(TradeCenter_ConfirmLeaveRoom); - ScriptContext2_Enable(); + ScriptContext_SetupScript(TradeCenter_ConfirmLeaveRoom); + LockPlayerFieldControls(); } static void InitMenuBasedScript(const u8 *script) { PlaySE(SE_SELECT); - ScriptContext1_SetupScript(script); - ScriptContext2_Enable(); + ScriptContext_SetupScript(script); + LockPlayerFieldControls(); } static void RunTerminateLinkScript(void) { - ScriptContext1_SetupScript(TradeCenter_TerminateLink); - ScriptContext2_Enable(); + ScriptContext_SetupScript(TradeCenter_TerminateLink); + LockPlayerFieldControls(); } bool32 Overworld_LinkRecvQueueLengthMoreThan2(void) diff --git a/src/party_menu.c b/src/party_menu.c index ee2800801..347d4ecb1 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -6368,7 +6368,7 @@ static void Task_PartyMenuWaitForFade(u8 taskId) if (IsWeatherNotFadingIn()) { DestroyTask(taskId); - ScriptContext2_Disable(); - EnableBothScriptContexts(); + UnlockPlayerFieldControls(); + ScriptContext_Enable(); } } diff --git a/src/party_menu_specials.c b/src/party_menu_specials.c index aaa066980..23934773c 100644 --- a/src/party_menu_specials.c +++ b/src/party_menu_specials.c @@ -15,7 +15,7 @@ void ChoosePartyMon(void) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); taskId = CreateTask(sub_80BF97C, 10); gTasks[taskId].data[0] = PARTY_MENU_TYPE_CHOOSE_MON; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); @@ -25,7 +25,7 @@ void SelectMoveTutorMon(void) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); taskId = CreateTask(sub_80BF97C, 10); gTasks[taskId].data[0] = PARTY_MENU_TYPE_MOVE_RELEARNER; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); diff --git a/src/player_pc.c b/src/player_pc.c index a150828b3..dd5df17d3 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -257,9 +257,9 @@ static void Task_PlayerPcMailbox(u8 taskId) static void Task_PlayerPcTurnOff(u8 taskId) { if (gPlayerPcMenuManager.notInRoom == FALSE) - ScriptContext1_SetupScript(EventScript_PalletTown_PlayersHouse_2F_ShutDownPC); + ScriptContext_SetupScript(EventScript_PalletTown_PlayersHouse_2F_ShutDownPC); else - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index a29397d37..1c501bac6 100644 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -4535,7 +4535,7 @@ static void Task_ShowPokemonJumpRecords(u8 taskId) { RemoveWindow(tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } break; } diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index 918ffaf7d..1f9c7a4e5 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -300,8 +300,8 @@ static void Task_PCMainMenu(u8 taskId) case OPTION_EXIT: ClearStdWindowAndFrame(0, TRUE); ClearStdWindowAndFrame(task->tWindowId, TRUE); - ScriptContext2_Disable(); - EnableBothScriptContexts(); + UnlockPlayerFieldControls(); + ScriptContext_Enable(); DestroyTask(taskId); break; default: @@ -374,7 +374,7 @@ void ShowPokemonStorageSystemPC(void) u8 taskId = CreateTask(Task_PCMainMenu, 80); gTasks[taskId].tState = 0; gTasks[taskId].tSelectedOption = 0; - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void FieldTask_ReturnToPcMenu(void) diff --git a/src/quest_log.c b/src/quest_log.c index 7eeb76e04..8a6a835fa 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -256,7 +256,7 @@ static void QLogCB_Playback(void) else { sQuestLogCurrentScene.sceneEndMode = 2; - ScriptContext2_Enable(); + LockPlayerFieldControls(); QuestLog_BeginFadeAtEndOfScene(0); } } @@ -791,7 +791,7 @@ static void QuestLog_AdvancePlayhead(void) { if (!gPaletteFade.active) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); if (++sCurrentSceneNum < QUEST_LOG_SCENE_COUNT && gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType != 0) { sNumScenes--; @@ -1051,7 +1051,7 @@ static void QuestLog_WaitFadeAndCancelPlayback(void) { if (!gPaletteFade.active) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); for (sCurrentSceneNum = sCurrentSceneNum; sCurrentSceneNum < QUEST_LOG_SCENE_COUNT; sCurrentSceneNum++) { if (gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType == 0) @@ -1087,12 +1087,12 @@ static void Task_FinalScene_WaitFade(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (ScriptContext2_IsEnabled() != TRUE) + if (ArePlayerFieldControlsLocked() != TRUE) { FreezeObjectEvents(); HandleEnforcedLookDirectionOnPlayerStopMoving(); StopPlayerAvatar(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); task->func = Task_QuestLogScene_SavedGame; } } @@ -1113,7 +1113,7 @@ static void Task_QuestLogScene_SavedGame(u8 taskId) task->data[1] = 0; task->func = Task_WaitAtEndOfQuestLog; FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } } @@ -1179,7 +1179,7 @@ static void Task_EndQuestLog(u8 taskId) Free(sPalettesBackup); sQuestLogCurrentScene = (struct UnkStruct_203AE94){}; ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); gTextFlags.autoScroll = FALSE; gGlobalFieldTintMode = QL_TINT_NONE; DisableWildEncounters(FALSE); @@ -1417,7 +1417,7 @@ void sub_81127F8(struct FieldInput * a0) sCurQuestLogEntry[sQuestLogCursor].mapGroup = r2 >> 16; sCurQuestLogEntry[sQuestLogCursor].animId = r2 >> 24; // always 0 sQuestLogCursor++; - if (ScriptContext2_IsEnabled()) + if (ArePlayerFieldControlsLocked()) sNextStepDelay = TRUE; else sNextStepDelay = FALSE; @@ -1590,7 +1590,7 @@ void sub_8112B3C(void) } break; case 2: - if (ScriptContext2_IsEnabled() != TRUE) + if (ArePlayerFieldControlsLocked() != TRUE) { sNextStepDelay++; if (sQuestLogCursor >= sNumEventsInLogEntry) @@ -1627,7 +1627,7 @@ u8 sub_8112CAC(void) static bool8 RecordHeadAtEndOfEntryOrScriptContext2Enabled(void) { - if (sQuestLogCursor >= sNumEventsInLogEntry || ScriptContext2_IsEnabled() == TRUE) + if (sQuestLogCursor >= sNumEventsInLogEntry || ArePlayerFieldControlsLocked() == TRUE) return TRUE; return FALSE; } diff --git a/src/quest_log_player.c b/src/quest_log_player.c index bb7372c35..8c2ef6196 100644 --- a/src/quest_log_player.c +++ b/src/quest_log_player.c @@ -80,7 +80,7 @@ static void QL_GfxTransition_Fish(void) if (gQuestLogPlaybackState == 1 || gQuestLogPlaybackState == 3) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; taskId = CreateTask(Task_QLFishMovement, 0xFF); gTasks[taskId].data[0] = 0; @@ -129,7 +129,7 @@ static void Task_QLFishMovement(u8 taskId) ObjectEventTurn(objectEvent, objectEvent->movementDirection); sprite->x2 = 0; sprite->y2 = 0; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -166,7 +166,7 @@ static void Task_QLVSSeekerMovement(u8 taskId) if (!FieldEffectActiveListContains(FLDEFF_USE_VS_SEEKER)) { UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } } diff --git a/src/rfu_union_tool.c b/src/rfu_union_tool.c index d6c1c411e..f08291445 100644 --- a/src/rfu_union_tool.c +++ b/src/rfu_union_tool.c @@ -200,7 +200,7 @@ static bool32 TryReleaseUnionRoomPlayerObjectEvent(u32 playerIdx) { return FALSE; } - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { UnfreezeObjectEvent(object); } diff --git a/src/safari_zone.c b/src/safari_zone.c index 748a7d996..a61cc7fdf 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -46,7 +46,7 @@ bool8 SafariZoneTakeStep(void) gSafariZoneStepCounter--; if (gSafariZoneStepCounter == 0) { - ScriptContext1_SetupScript(SafariZone_EventScript_TimesUp); + ScriptContext_SetupScript(SafariZone_EventScript_TimesUp); return TRUE; } return FALSE; @@ -54,7 +54,7 @@ bool8 SafariZoneTakeStep(void) void SafariZoneRetirePrompt(void) { - ScriptContext1_SetupScript(SafariZone_EventScript_RetirePrompt); + ScriptContext_SetupScript(SafariZone_EventScript_RetirePrompt); } void CB2_EndSafariBattle(void) @@ -65,15 +65,15 @@ void CB2_EndSafariBattle(void) } else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS) { - ScriptContext2_RunNewScript(SafariZone_EventScript_OutOfBallsMidBattle); + RunScriptImmediately(SafariZone_EventScript_OutOfBallsMidBattle); WarpIntoMap(); gFieldCallback = FieldCB_SafariZoneRanOutOfBalls; SetMainCallback2(CB2_LoadMap); } else if (gBattleOutcome == B_OUTCOME_CAUGHT) { - ScriptContext1_SetupScript(SafariZone_EventScript_OutOfBalls); - ScriptContext1_Stop(); + ScriptContext_SetupScript(SafariZone_EventScript_OutOfBalls); + ScriptContext_Stop(); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } } diff --git a/src/scrcmd.c b/src/scrcmd.c index 37e7bfefb..d7933a882 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -125,7 +125,7 @@ bool8 ScrCmd_callnative(struct ScriptContext * ctx) bool8 ScrCmd_waitstate(struct ScriptContext * ctx) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -254,7 +254,7 @@ bool8 ScrCmd_callstd_if(struct ScriptContext * ctx) bool8 ScrCmd_returnram(struct ScriptContext * ctx) { - ScriptJump(ctx, gRAMScriptPtr); + ScriptJump(ctx, gRamScriptRetAddr); return FALSE; } @@ -276,7 +276,7 @@ bool8 ScrCmd_trywondercardscript(struct ScriptContext * ctx) const u8 * script = GetSavedRamScriptIfValid(); if (script != NULL) { - gRAMScriptPtr = ctx->scriptPtr; + gRamScriptRetAddr = ctx->scriptPtr; ScriptJump(ctx, script); } return FALSE; @@ -604,7 +604,7 @@ bool8 ScrCmd_setworldmapflag(struct ScriptContext * ctx) bool8 ScrCmd_animateflash(struct ScriptContext * ctx) { AnimateFlash(ScriptReadByte(ctx)); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1414,7 +1414,7 @@ bool8 ScrCmd_yesnobox(struct ScriptContext * ctx) if (ScriptMenu_YesNo(left, top) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } else @@ -1432,7 +1432,7 @@ bool8 ScrCmd_multichoice(struct ScriptContext * ctx) if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } else @@ -1451,7 +1451,7 @@ bool8 ScrCmd_multichoicedefault(struct ScriptContext * ctx) if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } else @@ -1481,7 +1481,7 @@ bool8 ScrCmd_multichoicegrid(struct ScriptContext * ctx) if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } else @@ -1510,7 +1510,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext * ctx) /*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; }*/ return FALSE; @@ -1548,7 +1548,7 @@ bool8 ScrCmd_showcontestpainting(struct ScriptContext * ctx) SetContestWinnerForPainting(contestWinnerId); ShowContestPainting(); - ScriptContext1_Stop() + ScriptContext_Stop() return TRUE; */ return FALSE; @@ -1932,7 +1932,7 @@ bool8 ScrCmd_setwildbattle(struct ScriptContext * ctx) bool8 ScrCmd_dowildbattle(struct ScriptContext * ctx) { StartScriptedWildBattle(); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1941,7 +1941,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext * ctx) const void *ptr = (void *)ScriptReadWord(ctx); CreatePokemartMenu(ptr); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1950,7 +1950,7 @@ bool8 ScrCmd_pokemartdecoration(struct ScriptContext * ctx) const void *ptr = (void *)ScriptReadWord(ctx); CreateDecorationShop1Menu(ptr); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1960,7 +1960,7 @@ bool8 ScrCmd_pokemartdecoration2(struct ScriptContext * ctx) const void *ptr = (void *)ScriptReadWord(ctx); CreateDecorationShop2Menu(ptr); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1969,7 +1969,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext * ctx) u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx)); PlaySlotMachine(slotMachineIndex, CB2_ReturnToFieldContinueScriptPlayMapMusic); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1997,7 +1997,7 @@ bool8 ScrCmd_getpokenewsactive(struct ScriptContext * ctx) bool8 ScrCmd_choosecontestmon(struct ScriptContext * ctx) { // ChooseContestMon(); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -2005,7 +2005,7 @@ bool8 ScrCmd_choosecontestmon(struct ScriptContext * ctx) bool8 ScrCmd_startcontest(struct ScriptContext * ctx) { // StartContest(); -// ScriptContext1_Stop(); +// ScriptContext_Stop(); // return TRUE; return FALSE; } @@ -2013,7 +2013,7 @@ bool8 ScrCmd_startcontest(struct ScriptContext * ctx) bool8 ScrCmd_showcontestresults(struct ScriptContext * ctx) { // ShowContestResults(); -// ScriptContext1_Stop(); +// ScriptContext_Stop(); // return TRUE; return FALSE; } @@ -2021,7 +2021,7 @@ bool8 ScrCmd_showcontestresults(struct ScriptContext * ctx) bool8 ScrCmd_contestlinktransfer(struct ScriptContext * ctx) { // ContestLinkTransfer(gSpecialVar_ContestCategory); -// ScriptContext1_Stop(); +// ScriptContext_Stop(); // return TRUE; return FALSE; } @@ -2176,7 +2176,7 @@ bool8 ScrCmd_addelevmenuitem(struct ScriptContext * ctx) bool8 ScrCmd_showelevmenu(struct ScriptContext * ctx) { /*ScriptShowElevatorMenu(); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE;*/ return FALSE; } diff --git a/src/script.c b/src/script.c index 1592170cd..0ae8d9a8f 100644 --- a/src/script.c +++ b/src/script.c @@ -3,32 +3,35 @@ #include "event_data.h" #include "quest_log.h" #include "constants/maps.h" - -#define RAM_SCRIPT_MAGIC 51 -#define SCRIPT_STACK_SIZE 20 - +#include "constants/map_scripts.h" extern void ResetContextNpcTextColor(void); // field_specials extern u16 CalcCRC16WithTable(u8 *data, int length); // util extern bool32 ValidateReceivedWonderCard(void); // mevent -enum -{ +#define RAM_SCRIPT_MAGIC 51 + +enum { SCRIPT_MODE_STOPPED, SCRIPT_MODE_BYTECODE, SCRIPT_MODE_NATIVE, }; -EWRAM_DATA u8 gWalkAwayFromSignInhibitTimer = 0; -EWRAM_DATA const u8 *gRAMScriptPtr = NULL; +enum { + CONTEXT_RUNNING, + CONTEXT_WAITING, + CONTEXT_SHUTDOWN, +}; -// iwram bss -static u8 sScriptContext1Status; +EWRAM_DATA u8 gWalkAwayFromSignInhibitTimer = 0; +EWRAM_DATA const u8 *gRamScriptRetAddr = NULL; + +static u8 sGlobalScriptContextStatus; static u32 sUnusedVariable1; -static struct ScriptContext sScriptContext1; +static struct ScriptContext sGlobalScriptContext; static u32 sUnusedVariable2; -static struct ScriptContext sScriptContext2; -static bool8 sScriptContext2Enabled; +static struct ScriptContext sImmediateScriptContext; +static bool8 sLockFieldControls; static u8 sMsgBoxWalkawayDisabled; static u8 sMsgBoxIsCancelable; static u8 sQuestLogInput; @@ -50,10 +53,10 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable ctx->cmdTable = cmdTable; ctx->cmdTableEnd = cmdTableEnd; - for (i = 0; i < 4; i++) + for (i = 0; i < (int)ARRAY_COUNT(ctx->data); i++) ctx->data[i] = 0; - for (i = 0; i < SCRIPT_STACK_SIZE; i++) + for (i = 0; i < (int)ARRAY_COUNT(ctx->stack); i++) ctx->stack[i] = 0; } @@ -90,6 +93,8 @@ bool8 RunScriptCommand(struct ScriptContext *ctx) case SCRIPT_MODE_STOPPED: return FALSE; case SCRIPT_MODE_NATIVE: + // Try to call a function in C + // Continue to bytecode if no function or it returns TRUE if (ctx->nativePtr) { if (ctx->nativePtr() == TRUE) @@ -97,6 +102,7 @@ bool8 RunScriptCommand(struct ScriptContext *ctx) return TRUE; } ctx->mode = SCRIPT_MODE_BYTECODE; + // fallthrough case SCRIPT_MODE_BYTECODE: while (1) { @@ -133,9 +139,9 @@ bool8 RunScriptCommand(struct ScriptContext *ctx) return TRUE; } -u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) +static u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) { - if (ctx->stackDepth + 1 >= SCRIPT_STACK_SIZE) + if (ctx->stackDepth + 1 >= (int)ARRAY_COUNT(ctx->stack)) { return 1; } @@ -147,7 +153,7 @@ u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) } } -const u8 *ScriptPop(struct ScriptContext *ctx) +static const u8 *ScriptPop(struct ScriptContext *ctx) { if (ctx->stackDepth == 0) return NULL; @@ -188,19 +194,19 @@ u32 ScriptReadWord(struct ScriptContext *ctx) return (((((value3 << 8) + value2) << 8) + value1) << 8) + value0; } -void ScriptContext2_Enable(void) +void LockPlayerFieldControls(void) { - sScriptContext2Enabled = TRUE; + sLockFieldControls = TRUE; } -void ScriptContext2_Disable(void) +void UnlockPlayerFieldControls(void) { - sScriptContext2Enabled = FALSE; + sLockFieldControls = FALSE; } -bool8 ScriptContext2_IsEnabled(void) +bool8 ArePlayerFieldControlsLocked(void) { - return sScriptContext2Enabled; + return sLockFieldControls; } void SetQuestLogInputIsDpadFlag(void) @@ -294,70 +300,86 @@ void ResetFacingNpcOrSignPostVars(void) MsgSetNotSignPost(); } -bool8 ScriptContext1_IsScriptSetUp(void) +// The ScriptContext_* functions work with the primary script context, +// which yields control back to native code should the script make a wait call. + +// Checks if the global script context is able to be run right now. +bool8 ScriptContext_IsEnabled(void) { - if (sScriptContext1Status == 0) + if (sGlobalScriptContextStatus == CONTEXT_RUNNING) return TRUE; else return FALSE; } -void ScriptContext1_Init(void) +// Re-initializes the global script context to zero. +void ScriptContext_Init(void) { - InitScriptContext(&sScriptContext1, gScriptCmdTable, gScriptCmdTableEnd); - sScriptContext1Status = 2; + InitScriptContext(&sGlobalScriptContext, gScriptCmdTable, gScriptCmdTableEnd); + sGlobalScriptContextStatus = CONTEXT_SHUTDOWN; } -bool8 ScriptContext2_RunScript(void) +// Runs the script until the script makes a wait* call, then returns true if +// there's more script to run, or false if the script has hit the end. +// This function also returns false if the context is finished +// or waiting (after a call to _Stop) +bool8 ScriptContext_RunScript(void) { - if (sScriptContext1Status == 2) - return 0; + if (sGlobalScriptContextStatus == CONTEXT_SHUTDOWN) + return FALSE; - if (sScriptContext1Status == 1) - return 0; + if (sGlobalScriptContextStatus == CONTEXT_WAITING) + return FALSE; - ScriptContext2_Enable(); + LockPlayerFieldControls(); - if (!RunScriptCommand(&sScriptContext1)) + if (!RunScriptCommand(&sGlobalScriptContext)) { - sScriptContext1Status = 2; - ScriptContext2_Disable(); - return 0; + sGlobalScriptContextStatus = CONTEXT_SHUTDOWN; + UnlockPlayerFieldControls(); + return FALSE; } - return 1; + return TRUE; } -void ScriptContext1_SetupScript(const u8 *ptr) +// Sets up a new script in the global context and enables the context +void ScriptContext_SetupScript(const u8 *ptr) { ClearMsgBoxCancelableState(); EnableMsgBoxWalkaway(); ClearQuestLogInputIsDpadFlag(); - InitScriptContext(&sScriptContext1, gScriptCmdTable, gScriptCmdTableEnd); - SetupBytecodeScript(&sScriptContext1, ptr); - ScriptContext2_Enable(); - sScriptContext1Status = 0; + + InitScriptContext(&sGlobalScriptContext, gScriptCmdTable, gScriptCmdTableEnd); + SetupBytecodeScript(&sGlobalScriptContext, ptr); + LockPlayerFieldControls(); + sGlobalScriptContextStatus = CONTEXT_RUNNING; } -void ScriptContext1_Stop(void) +// Puts the script into waiting mode; usually called from a wait* script command. +void ScriptContext_Stop(void) { - sScriptContext1Status = 1; + sGlobalScriptContextStatus = CONTEXT_WAITING; } -void EnableBothScriptContexts(void) +// Puts the script into running mode. +void ScriptContext_Enable(void) { - sScriptContext1Status = 0; - ScriptContext2_Enable(); + sGlobalScriptContextStatus = CONTEXT_RUNNING; + LockPlayerFieldControls(); } -void ScriptContext2_RunNewScript(const u8 *ptr) +// Sets up and runs a script in its own context immediately. The script will be +// finished when this function returns. Used mainly by all of the map header +// scripts (except the frame table scripts). +void RunScriptImmediately(const u8 *ptr) { - InitScriptContext(&sScriptContext2, &gScriptCmdTable, &gScriptCmdTableEnd); - SetupBytecodeScript(&sScriptContext2, ptr); - while (RunScriptCommand(&sScriptContext2) == TRUE); + InitScriptContext(&sImmediateScriptContext, &gScriptCmdTable, &gScriptCmdTableEnd); + SetupBytecodeScript(&sImmediateScriptContext, ptr); + while (RunScriptCommand(&sImmediateScriptContext) == TRUE); } -u8 *mapheader_get_tagged_pointer(u8 tag) +static u8 *MapHeaderGetScriptTable(u8 tag) { const u8 *mapScripts = gMapHeader.mapScripts; @@ -377,16 +399,16 @@ u8 *mapheader_get_tagged_pointer(u8 tag) } } -void mapheader_run_script_by_tag(u8 tag) +static void MapHeaderRunScriptType(u8 tag) { - u8 *ptr = mapheader_get_tagged_pointer(tag); + u8 *ptr = MapHeaderGetScriptTable(tag); if (ptr != NULL) - ScriptContext2_RunNewScript(ptr); + RunScriptImmediately(ptr); } -u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) +static u8 *MapHeaderCheckScriptTable(u8 tag) { - u8 *ptr = mapheader_get_tagged_pointer(tag); + u8 *ptr = MapHeaderGetScriptTable(tag); if (ptr == NULL) return NULL; @@ -395,64 +417,70 @@ u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) { u16 varIndex1; u16 varIndex2; - varIndex1 = ptr[0] | (ptr[1] << 8); + + // Read first var (or .2byte terminal value) + varIndex1 = T1_READ_16(ptr); if (!varIndex1) - return NULL; + return NULL; // Reached end of table ptr += 2; - varIndex2 = ptr[0] | (ptr[1] << 8); + + // Read second var + varIndex2 = T1_READ_16(ptr); ptr += 2; + + // Run map script if vars are equal if (VarGet(varIndex1) == VarGet(varIndex2)) - return (u8 *)(ptr[0] + (ptr[1] << 8) + (ptr[2] << 16) + (ptr[3] << 24)); + return T2_READ_PTR(ptr); ptr += 4; } } void RunOnLoadMapScript(void) { - mapheader_run_script_by_tag(1); + MapHeaderRunScriptType(MAP_SCRIPT_ON_LOAD); } void RunOnTransitionMapScript(void) { - mapheader_run_script_by_tag(3); + MapHeaderRunScriptType(MAP_SCRIPT_ON_TRANSITION); } void RunOnResumeMapScript(void) { - mapheader_run_script_by_tag(5); + MapHeaderRunScriptType(MAP_SCRIPT_ON_RESUME); } void RunOnReturnToFieldMapScript(void) { - mapheader_run_script_by_tag(7); + MapHeaderRunScriptType(MAP_SCRIPT_ON_RETURN_TO_FIELD); } void RunOnDiveWarpMapScript(void) { - mapheader_run_script_by_tag(6); + MapHeaderRunScriptType(MAP_SCRIPT_ON_DIVE_WARP); } bool8 TryRunOnFrameMapScript(void) { u8 *ptr; - if(gQuestLogState == QL_STATE_PLAYBACK_LAST) - return 0; + if (gQuestLogState == QL_STATE_PLAYBACK_LAST) + return FALSE; - ptr = mapheader_get_first_match_from_tagged_ptr_list(2); + ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_FRAME_TABLE); if (!ptr) - return 0; + return FALSE; - ScriptContext1_SetupScript(ptr); - return 1; + ScriptContext_SetupScript(ptr); + return TRUE; } void TryRunOnWarpIntoMapScript(void) { - u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(4); + u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE); if (ptr) - ScriptContext2_RunNewScript(ptr); + RunScriptImmediately(ptr); } u32 CalculateRamScriptChecksum(void) @@ -486,7 +514,7 @@ bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objec const u8 *GetRamScript(u8 objectId, const u8 *script) { struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data; - gRAMScriptPtr = NULL; + gRamScriptRetAddr = NULL; if (scriptData->magic != RAM_SCRIPT_MAGIC) return script; if (scriptData->mapGroup != gSaveBlock1Ptr->location.mapGroup) @@ -502,7 +530,7 @@ const u8 *GetRamScript(u8 objectId, const u8 *script) } else { - gRAMScriptPtr = script; + gRamScriptRetAddr = script; return scriptData->script; } } @@ -547,9 +575,9 @@ u8 *GetSavedRamScriptIfValid(void) } } -void MEventSetRamScript(u8 *script, u16 scriptSize) +void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize) { if (scriptSize > sizeof(gSaveBlock1Ptr->ramScript.data.script)) scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script); - InitRamScript(script, scriptSize, 0xFF, 0xFF, 0xFF); + InitRamScript(script, scriptSize, MAP_GROUP(UNDEFINED), MAP_NUM(UNDEFINED), 0xFF); } diff --git a/src/script_menu.c b/src/script_menu.c index d59ed07f7..f7f466f5b 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -816,7 +816,7 @@ static void Task_MultichoiceMenu_HandleInput(u8 taskId) } DestroyScriptMenuWindow(data[6]); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } } @@ -885,7 +885,7 @@ static void Task_YesNoMenu_HandleInput(u8 taskId) break; } DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } @@ -936,7 +936,7 @@ static void Hask_MultichoiceGridMenu_HandleInput(u8 taskId) } DestroyScriptMenuWindow(data[6]); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } bool8 CreatePCMenu(void) @@ -1172,7 +1172,7 @@ void QLPlaybackCB_DestroyScriptMenuMonPicSprites(void) { u8 taskId; s16 *data; - ScriptContext1_SetupScript(EventScript_ReleaseEnd); + ScriptContext_SetupScript(EventScript_ReleaseEnd); taskId = FindTaskIdByFunc(Task_ScriptShowMonPic); if (taskId != 0xFF) { diff --git a/src/shop.c b/src/shop.c index 7f815c486..f10391324 100644 --- a/src/shop.c +++ b/src/shop.c @@ -1129,7 +1129,7 @@ void CreatePokemartMenu(const u16 *itemsForSale) { SetShopItemsForSale(itemsForSale); CreateShopMenu(MART_TYPE_REGULAR); - SetShopMenuCallback(EnableBothScriptContexts); + SetShopMenuCallback(ScriptContext_Enable); DebugFunc_PrintShopMenuHistoryBeforeClearMaybe(); memset(&gShopMenuHistory, 0, sizeof(gShopMenuHistory)); gShopMenuHistory[0].unk8 = gMapHeader.regionMapSectionId; @@ -1140,13 +1140,13 @@ void CreateDecorationShop1Menu(const u16 *itemsForSale) { SetShopItemsForSale(itemsForSale); CreateShopMenu(MART_TYPE_DECOR); - SetShopMenuCallback(EnableBothScriptContexts); + SetShopMenuCallback(ScriptContext_Enable); } void CreateDecorationShop2Menu(const u16 *itemsForSale) { SetShopItemsForSale(itemsForSale); CreateShopMenu(MART_TYPE_DECOR2); - SetShopMenuCallback(EnableBothScriptContexts); + SetShopMenuCallback(ScriptContext_Enable); } diff --git a/src/ss_anne.c b/src/ss_anne.c index 78ed5b48b..ce46bc6f6 100644 --- a/src/ss_anne.c +++ b/src/ss_anne.c @@ -137,7 +137,7 @@ static void Task_SSAnneFinish(u8 taskId) FreeSpriteTilesByTag(SPRITE_TAG_WAKE); FreeSpriteTilesByTag(SPRITE_TAG_SMOKE); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } diff --git a/src/start_menu.c b/src/start_menu.c index 80381216e..f81399cb3 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -394,7 +394,7 @@ void ShowStartMenu(void) StopPlayerAvatar(); } OpenStartMenuWithFollowupFunc(Task_StartMenuHandleInput); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static bool8 StartCB_HandleInput(void) @@ -575,7 +575,7 @@ static bool8 StartCB_Save2(void) case SAVECB_RETURN_OKAY: ClearDialogWindowAndFrameToTransparent(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); RestoreHelpContext(); return TRUE; case SAVECB_RETURN_CANCEL: @@ -587,7 +587,7 @@ static bool8 StartCB_Save2(void) case SAVECB_RETURN_ERROR: ClearDialogWindowAndFrameToTransparent(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); RestoreHelpContext(); return TRUE; } @@ -641,7 +641,7 @@ static void task50_save_game(u8 taskId) break; } DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); RestoreHelpContext(); } @@ -995,7 +995,7 @@ static void CloseStartMenu(void) ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE); RemoveStartMenuWindow(); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } void AppendToList(u8 *list, u8 *cursor, u8 newEntry) diff --git a/src/trade_scene.c b/src/trade_scene.c index c3b36db16..4d0f72ee8 100644 --- a/src/trade_scene.c +++ b/src/trade_scene.c @@ -2728,7 +2728,7 @@ static void LinkTrade_TearDownAssets(void) void DoInGameTradeScene(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_WaitFadeAndStartInGameTradeAnim, 10); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); HelpSystem_Disable(); diff --git a/src/trainer_see.c b/src/trainer_see.c index f008cdb86..12d47f247 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -550,7 +550,7 @@ void EndTrainerApproach(void) static void Task_DestroyTrainerApproachTask(u8 taskId) { DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } // Trainer See Excl Mark Field Effect diff --git a/src/union_room.c b/src/union_room.c index cc7df613a..2ba85970e 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -1019,12 +1019,12 @@ static void Task_TryBecomeLinkLeader(u8 taskId) data->state++; break; case 24: - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); gSpecialVar_Result = 5; break; case 22: - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); gSpecialVar_Result = 8; break; @@ -2003,7 +2003,7 @@ static void Task_StartActivity(u8 taskId) DestroyTask(taskId); gSpecialVar_Result = 1; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } static void Task_RunScriptAndFadeToActivity(u8 taskId) @@ -2015,11 +2015,11 @@ static void Task_RunScriptAndFadeToActivity(u8 taskId) { case 0: gSpecialVar_Result = 1; - EnableBothScriptContexts(); + ScriptContext_Enable(); data[0]++; break; case 1: - if (!ScriptContext1_IsScriptSetUp()) + if (!ScriptContext_IsEnabled()) { FadeScreen(FADE_TO_BLACK, 0); data[0]++; @@ -2776,7 +2776,7 @@ static void Task_RunUnionRoom(u8 taskId) gSpecialVar_Result = 0; } } - else if (ScriptContext2_IsEnabled() != TRUE) + else if (ArePlayerFieldControlsLocked() != TRUE) { if (JOY_NEW(A_BUTTON)) { @@ -3977,7 +3977,7 @@ static void JoinGroup_BlankBg0AndEnableScriptContexts(void) { FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0); CopyBgTilemapBufferToVram(0); - EnableBothScriptContexts(); + ScriptContext_Enable(); } static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx) @@ -4644,7 +4644,7 @@ static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 mul static void HandleCancelTrade(bool32 unlockObjs) { UR_BlankBg0(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnionRoom_UnlockPlayerAndChatPartner(); sPlayerCurrActivity = 0; if (unlockObjs) @@ -4656,7 +4656,7 @@ static void HandleCancelTrade(bool32 unlockObjs) static void UR_EnableScriptContext2AndFreezeObjectEvents(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjects_WaitForPlayer(); } diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 4962a7cf8..d4032b5fc 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -624,7 +624,7 @@ static void Task_ResetObjectsRematchWantedState(u8 taskId) { DestroyTask(taskId); StopPlayerAvatar(); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } @@ -837,7 +837,7 @@ static void Task_VsSeeker_3(u8 taskId) StartAllRespondantIdleMovements(); ClearDialogWindowAndFrame(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } Free(sVsSeeker); diff --git a/src/wild_encounter.c b/src/wild_encounter.c index b513ad47e..d3f076c43 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -593,7 +593,7 @@ bool8 UpdateRepelCounter(void) VarSet(VAR_REPEL_STEP_COUNT, steps); if (steps == 0) { - ScriptContext1_SetupScript(EventScript_RepelWoreOff); + ScriptContext_SetupScript(EventScript_RepelWoreOff); return TRUE; } } From da955aaf6450e2de06d0c493a2ffc352b0bc3d0f Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 23 Aug 2022 11:11:50 -0400 Subject: [PATCH 30/38] Document safari reactions, move b string ids to constants --- data/battle_anim_scripts.s | 7 ++-- data/battle_scripts_1.s | 2 +- data/battle_scripts_2.s | 4 +- include/battle.h | 4 +- include/battle_message.h | 1 + include/{ => constants}/battle_string_ids.h | 9 +++-- src/battle_ai_script_commands.c | 4 +- src/battle_anim_special.c | 3 +- src/battle_controller_oak_old_man.c | 1 - src/battle_controller_pokedude.c | 1 - src/battle_main.c | 43 ++++++++++----------- src/battle_message.c | 3 +- src/battle_script_commands.c | 1 - src/battle_util.c | 1 - src/evolution_scene.c | 1 - 15 files changed, 41 insertions(+), 44 deletions(-) rename include/{ => constants}/battle_string_ids.h (99%) diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s index 69c9bb7be..3304833c7 100644 --- a/data/battle_anim_scripts.s +++ b/data/battle_anim_scripts.s @@ -1,5 +1,6 @@ #include "constants/battle.h" #include "constants/battle_anim.h" +#include "constants/battle_string_ids.h" #include "constants/rgb.h" #include "constants/songs.h" #include "constants/sound.h" @@ -10970,9 +10971,9 @@ General_SafariRockThrow: General_SafariReaction: createvisualtask AnimTask_SafariGetReaction, 2 waitforvisualfinish - jumpreteq 0, SafariReaction_WatchingCarefully - jumpreteq 1, SafariReaction_Angry - jumpreteq 2, SafariReaction_Eating + jumpreteq B_MSG_MON_WATCHING, SafariReaction_WatchingCarefully + jumpreteq B_MSG_MON_ANGRY, SafariReaction_Angry + jumpreteq B_MSG_MON_EATING, SafariReaction_Eating end SafariReaction_WatchingCarefully: diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 6cf321c02..674bb50d8 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -11,7 +11,7 @@ #include "constants/songs.h" #include "constants/trainers.h" #include "constants/game_stat.h" -#include "battle_string_ids.h" +#include "constants/battle_string_ids.h" .include "asm/macros/battle_script.inc" @ Define these here since misc_constants.inc conflicts with the C headers .set NULL, 0 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 7a69b2320..6f41e3ce1 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -9,7 +9,7 @@ #include "constants/pokemon.h" #include "constants/songs.h" #include "constants/game_stat.h" -#include "battle_string_ids.h" +#include "constants/battle_string_ids.h" .include "asm/macros/battle_script.inc" @ Define these here since misc_constants.inc conflicts with the C headers .set NULL, 0 @@ -209,7 +209,7 @@ BattleScript_PokeFluteEnd:: finishaction BattleScript_WatchesCarefully:: - printfromtable gSafariPokeblockResultStringIds + printfromtable gSafariReactionStringIds waitmessage B_WAIT_TIME_LONG playanimation BS_OPPONENT1, B_ANIM_SAFARI_REACTION end2 diff --git a/include/battle.h b/include/battle.h index 625c6c017..ce3f89f2d 100644 --- a/include/battle.h +++ b/include/battle.h @@ -402,8 +402,8 @@ struct BattleStruct u8 runTries; u8 caughtMonNick[POKEMON_NAME_LENGTH + 1]; u8 field_78; // unused - u8 safariGoNearCounter; - u8 safariPkblThrowCounter; + u8 safariRockThrowCounter; + u8 safariBaitThrowCounter; u8 safariEscapeFactor; u8 safariCatchFactor; u8 linkBattleVsSpriteId_V; diff --git a/include/battle_message.h b/include/battle_message.h index 7e882e3a8..ef5cbcd88 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -2,6 +2,7 @@ #define GUARD_BATTLE_MESSAGE_H #include "global.h" +#include "constants/battle_string_ids.h" // for 0xFD diff --git a/include/battle_string_ids.h b/include/constants/battle_string_ids.h similarity index 99% rename from include/battle_string_ids.h rename to include/constants/battle_string_ids.h index d05863c3c..c648ad7be 100644 --- a/include/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -551,10 +551,11 @@ #define B_MSG_CREPT_CLOSER 0 #define B_MSG_CANT_GET_CLOSER 1 -// gSafariPokeblockResultStringIds -#define B_MSG_MON_WATCHING 0 -#define B_MSG_MON_ANGRY 1 -#define B_MSG_MON_EATING 2 +// gSafariReactionStringIds +#define B_MSG_MON_WATCHING 0 +#define B_MSG_MON_ANGRY 1 +#define B_MSG_MON_EATING 2 +#define NUM_SAFARI_REACTIONS 3 // gFlashFireStringIds #define B_MSG_FLASH_FIRE_BOOST 0 diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index eaa203a54..fdecaccd0 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -1714,13 +1714,13 @@ static void Cmd_if_random_safari_flee(void) { u8 safariFleeRate; - if (gBattleStruct->safariGoNearCounter) + if (gBattleStruct->safariRockThrowCounter) { safariFleeRate = gBattleStruct->safariEscapeFactor * 2; if (safariFleeRate > 20) safariFleeRate = 20; } - else if (gBattleStruct->safariPkblThrowCounter != 0) + else if (gBattleStruct->safariBaitThrowCounter != 0) { safariFleeRate = gBattleStruct->safariEscapeFactor / 4; if (safariFleeRate == 0) diff --git a/src/battle_anim_special.c b/src/battle_anim_special.c index 39bffd4e8..8850ebc3a 100644 --- a/src/battle_anim_special.c +++ b/src/battle_anim_special.c @@ -3,6 +3,7 @@ #include "battle.h" #include "battle_anim.h" #include "battle_main.h" +#include "battle_message.h" #include "battle_controllers.h" #include "battle_interface.h" #include "decompress.h" @@ -2278,7 +2279,7 @@ void AnimTask_SafariOrGhost_DecideAnimSides(u8 taskId) void AnimTask_SafariGetReaction(u8 taskId) { - if (gBattleCommunication[MULTISTRING_CHOOSER] > 2) + if (gBattleCommunication[MULTISTRING_CHOOSER] >= NUM_SAFARI_REACTIONS) gBattleAnimArgs[7] = 0; else gBattleAnimArgs[7] = gBattleCommunication[MULTISTRING_CHOOSER]; diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index f03371750..50331c3d3 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -15,7 +15,6 @@ #include "battle_interface.h" #include "battle_message.h" #include "reshow_battle_screen.h" -#include "battle_string_ids.h" #include "constants/songs.h" #include "constants/items.h" diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c index 9f27cd1c3..432084b72 100644 --- a/src/battle_controller_pokedude.c +++ b/src/battle_controller_pokedude.c @@ -15,7 +15,6 @@ #include "battle_controllers.h" #include "battle_interface.h" #include "battle_message.h" -#include "battle_string_ids.h" #include "reshow_battle_screen.h" #include "teachy_tv.h" #include "constants/songs.h" diff --git a/src/battle_main.c b/src/battle_main.c index 681230482..349d5e12f 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -9,7 +9,6 @@ #include "battle_message.h" #include "battle_scripts.h" #include "battle_setup.h" -#include "battle_string_ids.h" #include "berry.h" #include "data.h" #include "decompress.h" @@ -2274,8 +2273,8 @@ static void BattleStartClearSetData(void) gLeveledUpInBattle = 0; gAbsentBattlerFlags = 0; gBattleStruct->runTries = 0; - gBattleStruct->safariGoNearCounter = 0; - gBattleStruct->safariPkblThrowCounter = 0; + gBattleStruct->safariRockThrowCounter = 0; + gBattleStruct->safariBaitThrowCounter = 0; *(&gBattleStruct->safariCatchFactor) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275; *(&gBattleStruct->safariEscapeFactor) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].safariZoneFleeRate * 100 / 1275; if (gBattleStruct->safariEscapeFactor <= 1) @@ -4331,32 +4330,32 @@ static void HandleAction_WatchesCarefully(void) gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - if (gBattleStruct->safariGoNearCounter != 0) + if (gBattleStruct->safariRockThrowCounter != 0) { - --gBattleStruct->safariGoNearCounter; - if (gBattleStruct->safariGoNearCounter == 0) + --gBattleStruct->safariRockThrowCounter; + if (gBattleStruct->safariRockThrowCounter == 0) { *(&gBattleStruct->safariCatchFactor) = gBaseStats[GetMonData(gEnemyParty, MON_DATA_SPECIES)].catchRate * 100 / 1275; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_WATCHING; } else { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_ANGRY; } } else { - if (gBattleStruct->safariPkblThrowCounter != 0) + if (gBattleStruct->safariBaitThrowCounter != 0) { - --gBattleStruct->safariPkblThrowCounter; - if (gBattleStruct->safariPkblThrowCounter == 0) - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + --gBattleStruct->safariBaitThrowCounter; + if (gBattleStruct->safariBaitThrowCounter == 0) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_WATCHING; else - gBattleCommunication[5] = 2; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_EATING; } else { - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_MON_WATCHING; } } gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0]; @@ -4379,10 +4378,10 @@ static void HandleAction_ThrowBait(void) gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - gBattleStruct->safariPkblThrowCounter += Random() % 5 + 2; - if (gBattleStruct->safariPkblThrowCounter > 6) - gBattleStruct->safariPkblThrowCounter = 6; - gBattleStruct->safariGoNearCounter = 0; + gBattleStruct->safariBaitThrowCounter += Random() % 5 + 2; + if (gBattleStruct->safariBaitThrowCounter > 6) + gBattleStruct->safariBaitThrowCounter = 6; + gBattleStruct->safariRockThrowCounter = 0; gBattleStruct->safariCatchFactor >>= 1; if (gBattleStruct->safariCatchFactor <= 2) gBattleStruct->safariCatchFactor = 3; @@ -4395,10 +4394,10 @@ static void HandleAction_ThrowRock(void) gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; gBattle_BG0_Y = 0; - gBattleStruct->safariGoNearCounter += Random() % 5 + 2; - if (gBattleStruct->safariGoNearCounter > 6) - gBattleStruct->safariGoNearCounter = 6; - gBattleStruct->safariPkblThrowCounter = 0; + gBattleStruct->safariRockThrowCounter += Random() % 5 + 2; + if (gBattleStruct->safariRockThrowCounter > 6) + gBattleStruct->safariRockThrowCounter = 6; + gBattleStruct->safariBaitThrowCounter = 0; gBattleStruct->safariCatchFactor <<= 1; if (gBattleStruct->safariCatchFactor > 20) gBattleStruct->safariCatchFactor = 20; diff --git a/src/battle_message.c b/src/battle_message.c index cf332fece..43ebc8444 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -1,6 +1,5 @@ #include "global.h" #include "gflib.h" -#include "battle_string_ids.h" #include "battle.h" #include "battle_anim.h" #include "strings.h" @@ -1186,7 +1185,7 @@ const u16 gInobedientStringIds[] = [B_MSG_PRETEND_NOT_NOTICE] = STRINGID_PKMNPRETENDNOTNOTICE }; -const u16 gSafariPokeblockResultStringIds[] = +const u16 gSafariReactionStringIds[NUM_SAFARI_REACTIONS] = { [B_MSG_MON_WATCHING] = STRINGID_PKMNWATCHINGCAREFULLY, [B_MSG_MON_ANGRY] = STRINGID_PKMNANGRY, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 272c900bb..5642fa8a6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -23,7 +23,6 @@ #include "battle_anim.h" #include "battle_ai_script_commands.h" #include "battle_scripts.h" -#include "battle_string_ids.h" #include "reshow_battle_screen.h" #include "battle_controllers.h" #include "battle_interface.h" diff --git a/src/battle_util.c b/src/battle_util.c index bad9457a2..be2422ff7 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -15,7 +15,6 @@ #include "battle_message.h" #include "constants/battle_anim.h" #include "battle_controllers.h" -#include "battle_string_ids.h" #include "battle_ai_script_commands.h" #include "constants/battle.h" #include "constants/moves.h" diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 8ab93a353..4b2a0fc70 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -22,7 +22,6 @@ #include "task.h" #include "text_window.h" #include "trig.h" -#include "battle_string_ids.h" #include "constants/moves.h" #include "constants/songs.h" #include "constants/pokemon.h" From b06d2045fc9910a01bb6ac8ba1fcf058cb62d98f Mon Sep 17 00:00:00 2001 From: GriffinR Date: Wed, 24 Aug 2022 18:17:18 -0400 Subject: [PATCH 31/38] Script_HeartIcon -> Script_XIcon --- data/field_effect_scripts.s | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s index a2bff536f..0dc13e882 100644 --- a/data/field_effect_scripts.s +++ b/data/field_effect_scripts.s @@ -48,7 +48,7 @@ gFieldEffectScriptPointers:: .4byte gFldEffScript_UseWaterfall @ FLDEFF_USE_WATERFALL .4byte gFldEffScript_UseDive @ FLDEFF_USE_DIVE .4byte gFldEffScript_Pokeball @ FLDEFF_POKEBALL - .4byte gFldEffScript_HeartIcon @ FLDEFF_X_ICON + .4byte gFldEffScript_XIcon @ FLDEFF_X_ICON .4byte gFldEffScript_Nop47 @ FLDEFF_NOP_47 .4byte gFldEffScript_Nop48 @ FLDEFF_NOP_48 .4byte gFldEffScript_PopOutOfAsh @ FLDEFF_POP_OUT_OF_ASH @@ -256,7 +256,7 @@ gFldEffScript_Pokeball:: callnative FldEff_Pokeball end -gFldEffScript_HeartIcon:: +gFldEffScript_XIcon:: callnative FldEff_XIcon end From 321f5371d8cfea9d2b58481e354865d2c135f099 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 25 Aug 2022 15:03:04 -0400 Subject: [PATCH 32/38] Sync cable club --- data/scripts/cable_club.inc | 76 ++-- include/battle_records.h | 2 +- include/cable_club.h | 11 +- include/constants/cable_club.h | 17 + include/constants/maps.h | 2 + include/field_message_box.h | 7 + include/link.h | 35 +- include/mevent.h | 8 +- include/new_menu_helpers.h | 2 +- include/strings.h | 10 +- src/battle_controllers.c | 2 +- src/battle_records.c | 2 +- src/cable_club.c | 709 ++++++++++++++++++--------------- src/field_fadetransition.c | 2 +- src/field_message_box.c | 9 +- src/link.c | 36 +- src/link_rfu_2.c | 12 +- src/mevent.c | 2 +- src/new_menu_helpers.c | 2 +- src/overworld.c | 11 +- src/strings.c | 10 +- src/trade.c | 22 +- src/trade_scene.c | 4 +- src/union_room.c | 4 +- 24 files changed, 535 insertions(+), 462 deletions(-) diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index b225958a3..a9dba5bdd 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -275,12 +275,12 @@ CableClub_EventScript_TryEnterColosseum:: special TryBattleLinkup waitstate call EventScript_RestorePrevTextColor - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterColosseum - goto_if_eq VAR_RESULT, 2, CableClub_EventScript_AbortLinkSomeoneNotReady - goto_if_eq VAR_RESULT, 3, CableClub_EventScript_AbortLinkDifferentSelections - goto_if_eq VAR_RESULT, 4, CableClub_EventScript_AbortLinkIncorrectNumberOfBattlers - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_AbortLink - goto_if_eq VAR_RESULT, 6, CableClub_EventScript_AbortLinkConnectionError + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterColosseum + goto_if_eq VAR_RESULT, LINKUP_SOMEONE_NOT_READY, CableClub_EventScript_AbortLinkSomeoneNotReady + goto_if_eq VAR_RESULT, LINKUP_DIFF_SELECTIONS, CableClub_EventScript_AbortLinkDifferentSelections + goto_if_eq VAR_RESULT, LINKUP_WRONG_NUM_PLAYERS, CableClub_EventScript_AbortLinkIncorrectNumberOfBattlers + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_AbortLink + goto_if_eq VAR_RESULT, LINKUP_CONNECTION_ERROR, CableClub_EventScript_AbortLinkConnectionError end CableClub_EventScript_EnterColosseum:: @@ -373,14 +373,14 @@ CableClub_EventScript_TradeCenter:: special TryTradeLinkup waitstate call EventScript_RestorePrevTextColor - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterTradeCenter - goto_if_eq VAR_RESULT, 2, CableClub_EventScript_AbortLinkSomeoneNotReady - goto_if_eq VAR_RESULT, 3, CableClub_EventScript_AbortLinkDifferentSelections - goto_if_eq VAR_RESULT, 4, CableClub_EventScript_AbortLinkIncorrectNumberOfParticipants - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_AbortLink - goto_if_eq VAR_RESULT, 6, CableClub_EventScript_AbortLinkConnectionError - goto_if_eq VAR_RESULT, 7, CableClub_EventScript_AbortLinkPlayerNotReady - goto_if_eq VAR_RESULT, 9, CableClub_EventScript_AbortLinkOtherTrainerNotReady + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterTradeCenter + goto_if_eq VAR_RESULT, LINKUP_SOMEONE_NOT_READY, CableClub_EventScript_AbortLinkSomeoneNotReady + goto_if_eq VAR_RESULT, LINKUP_DIFF_SELECTIONS, CableClub_EventScript_AbortLinkDifferentSelections + goto_if_eq VAR_RESULT, LINKUP_WRONG_NUM_PLAYERS, CableClub_EventScript_AbortLinkIncorrectNumberOfParticipants + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_AbortLink + goto_if_eq VAR_RESULT, LINKUP_CONNECTION_ERROR, CableClub_EventScript_AbortLinkConnectionError + goto_if_eq VAR_RESULT, LINKUP_PLAYER_NOT_READY, CableClub_EventScript_AbortLinkPlayerNotReady + goto_if_eq VAR_RESULT, LINKUP_PARTNER_NOT_READY, CableClub_EventScript_AbortLinkOtherTrainerNotReady end CableClub_EventScript_EnterTradeCenter:: @@ -963,17 +963,17 @@ CableClub_EventScript_ChooseLinkLeaderFrom2:: CableClub_EventScript_TryLeadGroup2Players:: call CableClub_EventScript_TryBecomeLinkLeader - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderFrom2 - goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryLeadGroup2Players + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom2 + goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryLeadGroup2Players release return CableClub_EventScript_TryJoinGroup2Players:: call CableClub_EventScript_TryJoinLinkGroup - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderFrom2 - goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryJoinGroup2Players + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom2 + goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinGroup2Players release return @@ -992,17 +992,17 @@ CableClub_EventScript_ChooseLinkLeaderFrom4:: CableClub_EventScript_TryLeadGroup4Players:: call CableClub_EventScript_TryBecomeLinkLeader - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderFrom4 - goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryLeadGroup4Players + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom4 + goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryLeadGroup4Players release return CableClub_EventScript_TryJoinGroup4Players:: call CableClub_EventScript_TryJoinLinkGroup - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderFrom4 - goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryJoinGroup4Players + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderFrom4 + goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinGroup4Players release return @@ -1021,17 +1021,17 @@ CableClub_EventScript_ChooseLinkLeader:: CableClub_EventScript_TryLeadGroupXPlayers:: call CableClub_EventScript_TryBecomeLinkLeader - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeader - goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryLeadGroupXPlayers + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeader + goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryLeadGroupXPlayers release return CableClub_EventScript_TryJoinGroupXPlayers:: call CableClub_EventScript_TryJoinLinkGroup - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterWirelessLinkRoom - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeader - goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryJoinGroupXPlayers + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterWirelessLinkRoom + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeader + goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinGroupXPlayers release return @@ -1217,17 +1217,17 @@ CableClub_EventScript_ChooseLinkLeaderMinigame:: CableClub_EventScript_TryBecomeMinigameLinkLeader:: call CableClub_EventScript_TryBecomeLinkLeader - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterMinigame - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderMinigame - goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryBecomeMinigameLinkLeader + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterMinigame + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderMinigame + goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryBecomeMinigameLinkLeader release return CableClub_EventScript_TryJoinMinigameLinkGroup:: call CableClub_EventScript_TryJoinLinkGroup - goto_if_eq VAR_RESULT, 1, CableClub_EventScript_EnterMinigame - goto_if_eq VAR_RESULT, 5, CableClub_EventScript_ChooseLinkLeaderMinigame - goto_if_eq VAR_RESULT, 8, CableClub_EventScript_TryJoinMinigameLinkGroup + goto_if_eq VAR_RESULT, LINKUP_SUCCESS, CableClub_EventScript_EnterMinigame + goto_if_eq VAR_RESULT, LINKUP_FAILED, CableClub_EventScript_ChooseLinkLeaderMinigame + goto_if_eq VAR_RESULT, LINKUP_RETRY_ROLE_ASSIGN, CableClub_EventScript_TryJoinMinigameLinkGroup release return diff --git a/include/battle_records.h b/include/battle_records.h index b66fbd686..cb6cd3747 100644 --- a/include/battle_records.h +++ b/include/battle_records.h @@ -2,6 +2,6 @@ #define GUARD_BATTLE_RECORDS_H void ClearPlayerLinkBattleRecords(void); -void TryRecordLinkBattleOutcome(s32 battlerId); +void UpdatePlayerLinkBattleRecords(s32 battlerId); #endif // GUARD_BATTLE_RECORDS_H diff --git a/include/cable_club.h b/include/cable_club.h index d89e8222c..7a36c5767 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -1,15 +1,8 @@ #ifndef GUARD_CABLE_CLUB_H #define GUARD_CABLE_CLUB_H -#include "task.h" - -// Exported type declarations - -// Exported RAM declarations - -// Exported ROM declarations -void Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout(u8 taskId); -u8 CreateTask_ReestablishLinkInCableClubRoom(void); +void Task_WaitForLinkPlayerConnection(u8 taskId); +u8 CreateTask_ReestablishCableClubLink(void); void CB2_ReturnFromCableClubBattle(void); bool32 GetSeeingLinkPlayerCardMsg(u8 who); diff --git a/include/constants/cable_club.h b/include/constants/cable_club.h index f2aa4120c..7c2fedb42 100644 --- a/include/constants/cable_club.h +++ b/include/constants/cable_club.h @@ -12,4 +12,21 @@ #define USING_MINIGAME 8 #define USING_BATTLE_TOWER 9 +// Return states for the group of specials that use CreateLinkupTask +// A few also used by TryBecomeLinkLeader and TryJoinLinkGroup +#define LINKUP_ONGOING 0 +#define LINKUP_SUCCESS 1 +#define LINKUP_SOMEONE_NOT_READY 2 +#define LINKUP_DIFF_SELECTIONS 3 +#define LINKUP_WRONG_NUM_PLAYERS 4 +#define LINKUP_FAILED 5 +#define LINKUP_CONNECTION_ERROR 6 +#define LINKUP_PLAYER_NOT_READY 7 +#define LINKUP_RETRY_ROLE_ASSIGN 8 +#define LINKUP_PARTNER_NOT_READY 9 + +#define CABLE_SEAT_WAITING 0 +#define CABLE_SEAT_SUCCESS 1 +#define CABLE_SEAT_FAILED 2 + #endif //GUARD_CONSTANTS_CABLE_CLUB_H diff --git a/include/constants/maps.h b/include/constants/maps.h index 57cc1d078..6e127ede6 100644 --- a/include/constants/maps.h +++ b/include/constants/maps.h @@ -12,6 +12,8 @@ #define MAP(map) MAP_GROUP(map), MAP_NUM(map) +#define WARP_ID_DYNAMIC 0x7F + // Used to indicate an invalid warp id, for dummy warps or when a warp should // use the given coordinates rather than the coordinates of a target warp. #define WARP_ID_NONE (-1) diff --git a/include/field_message_box.h b/include/field_message_box.h index 0f81efb20..430f2baf0 100644 --- a/include/field_message_box.h +++ b/include/field_message_box.h @@ -3,6 +3,13 @@ #include "global.h" +enum { + FIELD_MESSAGE_BOX_HIDDEN, + FIELD_MESSAGE_BOX_UNUSED, + FIELD_MESSAGE_BOX_NORMAL, + FIELD_MESSAGE_BOX_AUTO_SCROLL, +}; + bool8 ShowFieldMessage(const u8 *message); bool8 ShowFieldAutoScrollMessage(const u8 *message); void HideFieldMessageBox(void); diff --git a/include/link.h b/include/link.h index 47f85bb9d..0f436ef8e 100644 --- a/include/link.h +++ b/include/link.h @@ -68,7 +68,7 @@ #define LINKTYPE_TRADE 0x1111 // trade #define LINKTYPE_0x1122 0x1122 // trade -#define LINKTYPE_0x1133 0x1133 // trade +#define LINKTYPE_TRADE_SETUP 0x1133 #define LINKTYPE_0x1144 0x1144 // trade #define LINKTYPE_BATTLE 0x2211 #define LINKTYPE_0x2222 0x2222 // unused battle? @@ -78,11 +78,19 @@ #define LINKTYPE_BATTLE_TOWER_50 0x2266 #define LINKTYPE_BATTLE_TOWER_OPEN 0x2277 #define LINKTYPE_BATTLE_TOWER 0x2288 -#define LINKTYPE_0x3311 0x3311 -#define LINKTYPE_0x3322 0x3322 +#define LINKTYPE_RECORD_MIX_BEFORE 0x3311 +#define LINKTYPE_RECORD_MIX_AFTER 0x3322 #define LINKTYPE_BERRY_BLENDER_SETUP 0x4411 #define LINKTYPE_CONTEST_GMODE 0x6601 +enum { + BLOCK_REQ_SIZE_NONE, // Identical to 200 + BLOCK_REQ_SIZE_200, + BLOCK_REQ_SIZE_100, + BLOCK_REQ_SIZE_220, + BLOCK_REQ_SIZE_40, +}; + #define MASTER_HANDSHAKE 0x8FFF #define SLAVE_HANDSHAKE 0xB9A0 @@ -102,11 +110,10 @@ enum EXCHANGE_NOT_STARTED, EXCHANGE_COMPLETE, EXCHANGE_TIMED_OUT, - EXCHANGE_IN_PROGRESS, - EXCHANGE_STAT_4, - EXCHANGE_STAT_5, - EXCHANGE_STAT_6, - EXCHANGE_STAT_7 + EXCHANGE_DIFF_SELECTIONS, + EXCHANGE_PLAYER_NOT_READY, + EXCHANGE_PARTNER_NOT_READY, + EXCHANGE_WRONG_NUM_PLAYERS, }; enum @@ -269,17 +276,17 @@ void ClearLinkCallback_2(void); void Rfu_SetLinkStandbyCallback(void); void ConvertLinkPlayerName(struct LinkPlayer * linkPlayer); bool8 IsWirelessAdapterConnected(void); -bool8 Link_PrepareCmd0xCCCC_Rfu0xA100(u8 blockRequestType); +bool8 SendBlockRequest(u8 blockRequestType); void LinkVSync(void); bool8 HandleLinkConnection(void); void LocalLinkPlayerToBlock(void); void LinkPlayerFromBlock(u32 who); void SetLinkErrorFromRfu(u32 status, u8 lastSendQueueCount, u8 lastRecvQueueCount, u8 isConnectionError); -u8 sub_800A8D4(void); -void sub_800AA24(void); -void sub_800A900(u8 a0); -u8 sub_800A8A4(void); -void sub_800A9A4(void); +u8 GetLinkPlayerCountAsBitFlags(void); +void ResetLinkPlayerCount(void); +void SaveLinkPlayers(u8 numPlayers); +u8 GetSavedLinkPlayerCountAsBitFlags(void); +void CheckLinkPlayersMatchSaved(void); void SetLocalLinkPlayerId(u8 playerId); bool32 IsSendingKeysToLink(void); u32 GetLinkRecvQueueLength(void); diff --git a/include/mevent.h b/include/mevent.h index 3dc1621b0..8a75dde65 100644 --- a/include/mevent.h +++ b/include/mevent.h @@ -3,6 +3,12 @@ #include "global.h" +#define CARD_STAT_BATTLES_WON 0 +#define CARD_STAT_BATTLES_LOST 1 +#define CARD_STAT_NUM_TRADES 2 +#define CARD_STAT_NUM_STAMPS 3 +#define CARD_STAT_MAX_STAMPS 4 + struct MEventClientHeaderStruct { u32 unk_00; @@ -85,7 +91,7 @@ bool32 WonderCard_Test_Unk_08_6(void); u32 MENews_GetInput(u16 input); void InitMEventData(void); u16 MEvent_GetBattleCardCount(u32 command); -void MEvent_RecordIdOfWonderCardSenderByEventType(u32 eventId, u32 trainerId); +void MysteryGift_TryIncrementStat(u32 eventId, u32 trainerId); u16 *GetMEventProfileECWordsMaybe(void); void ResetReceivedWonderCardFlag(void); bool32 MEventHandleReceivedWonderCard(u16 flagId); diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index 99a8e1400..a44595257 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -31,7 +31,7 @@ void DrawDialogueFrame(u8 windowId, bool8 transfer); void DrawStdWindowFrame(u8 windowId, bool8 copyNow); void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram); void ClearStdWindowAndFrame(u8 windowId, bool8 copyNow); -void sub_80F771C(bool8 copyToVram); +void EraseFieldMessageBox(bool8 copyToVram); void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram); void sub_80F7768(u8 windowId, bool8 copyToVram); void Menu_LoadStdPal(void); diff --git a/include/strings.h b/include/strings.h index 63fed5e97..d904442f1 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1174,11 +1174,11 @@ extern const u8 gText_ExcellentsInARow[]; extern const u8 gText_PkmnJumpRecords[]; // cable_club -extern const u8 gUnknown_841DF82[]; -extern const u8 gUnknown_841DF8B[]; -extern const u8 gUnknown_841DF92[]; -extern const u8 gUnknown_841DF99[]; -extern const u8 gUnknown_841DFA0[]; +extern const u8 gText_NumPlayerLink[]; +extern const u8 gText_BronzeCard[]; +extern const u8 gText_CopperCard[]; +extern const u8 gText_SilverCard[]; +extern const u8 gText_GoldCard[]; // berry_crush extern const u8 gText_BerryCrush_AreYouReady[]; diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 205c49362..cd4f2c89d 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -36,7 +36,7 @@ void HandleLinkBattleSetup(void) SetWirelessCommType1(); if (!gReceivedRemoteLinkPlayers) OpenLink(); - CreateTask(Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout, 0); + CreateTask(Task_WaitForLinkPlayerConnection, 0); CreateTasksForSendRecvLinkBuffers(); } } diff --git a/src/battle_records.c b/src/battle_records.c index 4bde6aec9..dbf8ccef2 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -440,7 +440,7 @@ static void UpdateBattleOutcomeOnTrainerCards(s32 battlerId) } } -void TryRecordLinkBattleOutcome(s32 battlerId) +void UpdatePlayerLinkBattleRecords(s32 battlerId) { if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(UNION_ROOM) || gSaveBlock1Ptr->location.mapNum != MAP_NUM(UNION_ROOM)) { diff --git a/src/cable_club.c b/src/cable_club.c index e4238bb40..80e6fc78e 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -25,28 +25,38 @@ #include "constants/songs.h" #include "constants/cable_club.h" #include "constants/field_weather.h" +#include "constants/maps.h" u32 UnusedVarNeededToMatch[8]; -static void Task_Linkup0(u8 taskId); -static void Task_Linkup1(u8 taskId); -static void Task_LinkupMaster_2(u8 taskId); -static void Task_LinkupMaster_3(u8 taskId); -static void Task_LinkupMaster_4(u8 taskId); -static void Task_LinkupMaster_5(u8 taskId); -static void Task_LinkupSlave_2(u8 taskId); -static void Task_LinkupMaster_6(u8 taskId); -static void Task_Linkup_6a(u8 taskId); -static void Task_Linkup_7(u8 taskId); -static void Task_Linkup_Canceled(u8 taskId); -static void Task_Linkup_ErroredOut(u8 taskId); -static bool8 Task_Linkup_TimedOut(u8 taskId); -static void Task_ReestablishLinkInCableClubRoom_0(u8 taskId); -static void Task_ReestablishLinkInCableClubRoom_1(u8 taskId); -static void Task_ReestablishLinkInCableClubRoom_Master(u8 taskId); -static void Task_ReestablishLinkInCableClubRoom_2(u8 taskId); +static void Task_LinkupStart(u8 taskId); +static void Task_LinkupAwaitConnection(u8 taskId); +static void Task_LinkupConfirmWhenReady(u8 taskId); +static void Task_LinkupAwaitConfirmation(u8 taskId); +static void Task_LinkupTryConfirmation(u8 taskId); +static void Task_LinkupConfirm(u8 taskId); +static void Task_LinkupExchangeDataWithLeader(u8 taskId); +static void Task_LinkupCheckStatusAfterConfirm(u8 taskId); +static void Task_LinkupAwaitTrainerCardData(u8 taskId); +static void Task_StopLinkup(u8 taskId); +static void Task_LinkupFailed(u8 taskId); +static void Task_LinkupConnectionError(u8 taskId); +static bool8 TryLinkTimeout(u8 taskId); +static void Task_ReestablishLink(u8 taskId); +static void Task_ReestablishLinkAwaitConnection(u8 taskId); +static void Task_ReestablishLinkLeader(u8 taskId); +static void Task_ReestablishLinkAwaitConfirmation(u8 taskId); -static const struct WindowTemplate gUnknown_83C6AB0 = { +#define tState data[0] + + +#define tMinPlayers data[1] +#define tMaxPlayers data[2] +#define tNumPlayers data[3] +#define tTimer data[4] +#define tWindowId data[5] + +static const struct WindowTemplate sWindowTemplate_LinkPlayerCount = { .bg = 0, .tilemapLeft = 16, .tilemapTop = 11, @@ -56,270 +66,290 @@ static const struct WindowTemplate gUnknown_83C6AB0 = { .baseBlock = 0x125 }; -static const u8 *const sStarsMessagePtrs[] = { - gUnknown_841DF8B, - gUnknown_841DF92, - gUnknown_841DF99, - gUnknown_841DFA0 +static const u8 *const sTrainerCardColorNames[] = { + gText_BronzeCard, + gText_CopperCard, + gText_SilverCard, + gText_GoldCard }; -static void CreateLinkupTask(u8 lower, u8 higher) +static void CreateLinkupTask(u8 minPlayers, u8 maxPlayers) { u8 taskId; - if (FindTaskIdByFunc(Task_Linkup0) == 0xFF) + if (FindTaskIdByFunc(Task_LinkupStart) == TASK_NONE) { - taskId = CreateTask(Task_Linkup0, 80); - gTasks[taskId].data[1] = lower; - gTasks[taskId].data[2] = higher; + taskId = CreateTask(Task_LinkupStart, 80); + gTasks[taskId].tMinPlayers = minPlayers; + gTasks[taskId].tMaxPlayers = maxPlayers; } } -static void PrintNewCountOnLinkPlayerCountDisplayWindow(u16 windowId, s32 num) +static void PrintNumPlayersInLink(u16 windowId, s32 numPlayers) { - ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_LEFT_ALIGN, 1); + ConvertIntToDecimalStringN(gStringVar1, numPlayers, STR_CONV_MODE_LEFT_ALIGN, 1); SetStdWindowBorderStyle(windowId, FALSE); - StringExpandPlaceholders(gStringVar4, gUnknown_841DF82); + StringExpandPlaceholders(gStringVar4, gText_NumPlayerLink); AddTextPrinterParameterized(windowId, FONT_2, gStringVar4, 0, 0, TEXT_SKIP_DRAW, NULL); CopyWindowToVram(windowId, COPYWIN_FULL); } -static void DestroyLinkPlayerCountDisplayWindow(u16 windowId) +static void ClearLinkPlayerCountWindow(u16 windowId) { ClearStdWindowAndFrame(windowId, FALSE); CopyWindowToVram(windowId, COPYWIN_FULL); } -static void UpdateLinkPlayerCountDisplay(u8 taskId, u8 num) +static void UpdateLinkPlayerCountDisplay(u8 taskId, u8 numPlayers) { s16 *data = gTasks[taskId].data; - if (num != data[3]) + if (numPlayers != tNumPlayers) { - if (num < 2) - DestroyLinkPlayerCountDisplayWindow(data[5]); + if (numPlayers < 2) + ClearLinkPlayerCountWindow(tWindowId); else - PrintNewCountOnLinkPlayerCountDisplayWindow(data[5], num); - data[3] = num; + PrintNumPlayersInLink(tWindowId, numPlayers); + tNumPlayers = numPlayers; } } -static u16 sub_8080844(u8 lower, u8 higher) +static u16 ExchangeDataAndGetLinkupStatus(u8 minPlayers, u8 maxPlayers) { - switch (GetLinkPlayerDataExchangeStatusTimed(lower, higher)) + switch (GetLinkPlayerDataExchangeStatusTimed(minPlayers, maxPlayers)) { case EXCHANGE_COMPLETE: - return 1; - case EXCHANGE_IN_PROGRESS: - return 3; - case EXCHANGE_STAT_4: - return 7; - case EXCHANGE_STAT_5: - return 9; - case EXCHANGE_STAT_6: + return LINKUP_SUCCESS; + case EXCHANGE_DIFF_SELECTIONS: + return LINKUP_DIFF_SELECTIONS; + case EXCHANGE_PLAYER_NOT_READY: + return LINKUP_PLAYER_NOT_READY; + case EXCHANGE_PARTNER_NOT_READY: + return LINKUP_PARTNER_NOT_READY; + case EXCHANGE_WRONG_NUM_PLAYERS: ConvertIntToDecimalStringN(gStringVar1, GetLinkPlayerCount_2(), STR_CONV_MODE_LEFT_ALIGN, 1); - return 4; + return LINKUP_WRONG_NUM_PLAYERS; default: - return 0; + return LINKUP_ONGOING; } } -static bool32 sub_80808BC(u8 taskId) +static bool32 CheckLinkErrored(u8 taskId) { if (HasLinkErrorOccurred() == TRUE) { - gTasks[taskId].func = Task_Linkup_ErroredOut; + gTasks[taskId].func = Task_LinkupConnectionError; return TRUE; } return FALSE; } -static bool32 sub_80808F0(u8 taskId) +static bool32 CheckLinkCanceledBeforeConnection(u8 taskId) { if (JOY_NEW(B_BUTTON) && !IsLinkConnectionEstablished()) { gLinkType = 0; - gTasks[taskId].func = Task_Linkup_Canceled; + gTasks[taskId].func = Task_LinkupFailed; return TRUE; } return FALSE; } -static bool32 sub_808093C(u8 taskId) +static bool32 CheckLinkCanceled(u8 taskId) { if (IsLinkConnectionEstablished()) - { SetSuppressLinkErrorMessage(TRUE); - } + if (JOY_NEW(B_BUTTON)) { gLinkType = 0; - gTasks[taskId].func = Task_Linkup_Canceled; + gTasks[taskId].func = Task_LinkupFailed; return TRUE; } return FALSE; } -static bool32 sub_8080990(u8 taskId) +static bool32 CheckSioErrored(u8 taskId) { if (GetSioMultiSI() == TRUE) { - gTasks[taskId].func = Task_Linkup_ErroredOut; + gTasks[taskId].func = Task_LinkupConnectionError; return TRUE; } return FALSE; } -static void sub_80809C4(u8 taskId) +// Unused +static void Task_DelayedBlockRequest(u8 taskId) { gTasks[taskId].data[0]++; if (gTasks[taskId].data[0] == 10) { - Link_PrepareCmd0xCCCC_Rfu0xA100(2); + SendBlockRequest(BLOCK_REQ_SIZE_100); DestroyTask(taskId); } } -static void Task_Linkup0(u8 taskId) +static void Task_LinkupStart(u8 taskId) { s16 *data = gTasks[taskId].data; if (data[0] == 0) { OpenLinkTimed(); - sub_800AA24(); + ResetLinkPlayerCount(); ResetLinkPlayers(); - data[5] = AddWindow(&gUnknown_83C6AB0); + tWindowId = AddWindow(&sWindowTemplate_LinkPlayerCount); } else if (data[0] > 9) { - gTasks[taskId].func = Task_Linkup1; + gTasks[taskId].func = Task_LinkupAwaitConnection; } data[0]++; } -static void Task_Linkup1(u8 taskId) +static void Task_LinkupAwaitConnection(u8 taskId) { - u8 linkPlayerCount = GetLinkPlayerCount_2(); - if (sub_80808F0(taskId) != TRUE && sub_808093C(taskId) != TRUE && linkPlayerCount >= 2) + u8 playerCount = GetLinkPlayerCount_2(); + if (CheckLinkCanceledBeforeConnection(taskId) == TRUE + || CheckLinkCanceled(taskId) == TRUE + || playerCount < 2) + return; + + SetSuppressLinkErrorMessage(TRUE); + gTasks[taskId].data[3] = 0; + if (IsLinkMaster() == TRUE) { - SetSuppressLinkErrorMessage(TRUE); - gTasks[taskId].data[3] = 0; - if (IsLinkMaster() == TRUE) - { - PlaySE(SE_PIN); - ShowFieldAutoScrollMessage(CableClub_Text_WhenAllPlayersReadyAConfirmBCancel); - gTasks[taskId].func = Task_LinkupMaster_2; - } - else - { - PlaySE(SE_BOO); - ShowFieldAutoScrollMessage(CableClub_Text_AwaitingLinkupBCancel); - gTasks[taskId].func = Task_LinkupSlave_2; - } + PlaySE(SE_PIN); + ShowFieldAutoScrollMessage(CableClub_Text_WhenAllPlayersReadyAConfirmBCancel); + gTasks[taskId].func = Task_LinkupConfirmWhenReady; + } + else + { + PlaySE(SE_BOO); + ShowFieldAutoScrollMessage(CableClub_Text_AwaitingLinkupBCancel); + gTasks[taskId].func = Task_LinkupExchangeDataWithLeader; } } -static void Task_LinkupMaster_2(u8 taskId) +static void Task_LinkupConfirmWhenReady(u8 taskId) { - if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE && !GetFieldMessageBoxType()) + if (CheckLinkCanceledBeforeConnection(taskId) == TRUE + || CheckSioErrored(taskId) == TRUE + || CheckLinkErrored(taskId) == TRUE) + return; + + if (GetFieldMessageBoxType() == FIELD_MESSAGE_BOX_HIDDEN) { - gTasks[taskId].data[3] = 0; - gTasks[taskId].func = Task_LinkupMaster_3; + gTasks[taskId].tNumPlayers = 0; + gTasks[taskId].func = Task_LinkupAwaitConfirmation; } } -static void Task_LinkupMaster_3(u8 taskId) +static void Task_LinkupAwaitConfirmation(u8 taskId) { s16 *data = gTasks[taskId].data; s32 linkPlayerCount = GetLinkPlayerCount_2(); - if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE) + + if (CheckLinkCanceledBeforeConnection(taskId) == TRUE + || CheckSioErrored(taskId) == TRUE + || CheckLinkErrored(taskId) == TRUE) + return; + + UpdateLinkPlayerCountDisplay(taskId, linkPlayerCount); + if (JOY_NEW(A_BUTTON) && linkPlayerCount >= tMinPlayers) { - UpdateLinkPlayerCountDisplay(taskId, linkPlayerCount); - if (JOY_NEW(A_BUTTON) && linkPlayerCount >= data[1]) - { - sub_800A900(linkPlayerCount); - DestroyLinkPlayerCountDisplayWindow(data[5]); - ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); - ShowFieldAutoScrollMessage(CableClub_Text_StartLinkWithXPlayersAConfirmBCancel); - gTasks[taskId].func = Task_LinkupMaster_4; - } + SaveLinkPlayers(linkPlayerCount); + ClearLinkPlayerCountWindow(tWindowId); + ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); + ShowFieldAutoScrollMessage(CableClub_Text_StartLinkWithXPlayersAConfirmBCancel); + gTasks[taskId].func = Task_LinkupTryConfirmation; } + } -static void Task_LinkupMaster_4(u8 taskId) +static void Task_LinkupTryConfirmation(u8 taskId) { - if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE && !GetFieldMessageBoxType()) + if (CheckLinkCanceledBeforeConnection(taskId) == TRUE + || CheckSioErrored(taskId) == TRUE + || CheckLinkErrored(taskId) == TRUE) + return; + + if (GetFieldMessageBoxType() == FIELD_MESSAGE_BOX_HIDDEN) { if (GetSavedPlayerCount() != GetLinkPlayerCount_2()) { ShowFieldAutoScrollMessage(CableClub_Text_WhenAllPlayersReadyAConfirmBCancel); - gTasks[taskId].func = Task_LinkupMaster_2; + gTasks[taskId].func = Task_LinkupConfirmWhenReady; } else if (JOY_HELD(B_BUTTON)) { ShowFieldAutoScrollMessage(CableClub_Text_WhenAllPlayersReadyAConfirmBCancel); - gTasks[taskId].func = Task_LinkupMaster_2; + gTasks[taskId].func = Task_LinkupConfirmWhenReady; } else if (JOY_HELD(A_BUTTON)) { PlaySE(SE_SELECT); CheckShouldAdvanceLinkState(); - gTasks[taskId].func = Task_LinkupMaster_5; + gTasks[taskId].func = Task_LinkupConfirm; } } } -static void Task_LinkupMaster_5(u8 taskId) +static void Task_LinkupConfirm(u8 taskId) { - u8 lower = gTasks[taskId].data[1]; - u8 higher = gTasks[taskId].data[2]; - u16 *res; - if (sub_80808BC(taskId) != TRUE && Task_Linkup_TimedOut(taskId) != TRUE) + u8 minPlayers = gTasks[taskId].tMinPlayers; + u8 maxPlayers = gTasks[taskId].tMaxPlayers; + + if (CheckLinkErrored(taskId) == TRUE + || TryLinkTimeout(taskId) == TRUE) + return; + + if (GetLinkPlayerCount_2() != GetSavedPlayerCount()) { - if (GetLinkPlayerCount_2() != GetSavedPlayerCount()) - { - gTasks[taskId].func = Task_Linkup_ErroredOut; - } - else - { - res = &gSpecialVar_Result; - *res = sub_8080844(lower, higher); - if (*res) - gTasks[taskId].func = Task_LinkupMaster_6; - } + gTasks[taskId].func = Task_LinkupConnectionError; + } + else + { + u16 *result = &gSpecialVar_Result; + *result = ExchangeDataAndGetLinkupStatus(minPlayers, maxPlayers); + if (*result) + gTasks[taskId].func = Task_LinkupCheckStatusAfterConfirm; } } -static void Task_LinkupSlave_2(u8 taskId) +static void Task_LinkupExchangeDataWithLeader(u8 taskId) { - u8 lower = gTasks[taskId].data[1]; - u8 higher = gTasks[taskId].data[2]; - u16 *res; - if (sub_80808F0(taskId) != TRUE && sub_80808BC(taskId) != TRUE) + u8 minPlayers = gTasks[taskId].tMinPlayers; + u8 maxPlayers = gTasks[taskId].tMaxPlayers; + u16 *result; + + if (CheckLinkCanceledBeforeConnection(taskId) == TRUE + || CheckLinkErrored(taskId) == TRUE) + return; + + result = &gSpecialVar_Result; + *result = ExchangeDataAndGetLinkupStatus(minPlayers, maxPlayers); + if (*result == LINKUP_ONGOING) + return; + if (*result == LINKUP_DIFF_SELECTIONS + || *result == LINKUP_WRONG_NUM_PLAYERS) { - res = &gSpecialVar_Result; - *res = sub_8080844(lower, higher); - if (*res) - { - if (*res == 3 || *res == 4) - { - SetCloseLinkCallback(); - HideFieldMessageBox(); - gTasks[taskId].func = Task_Linkup_7; - } - else if (*res == 7 || *res == 9) - { - CloseLink(); - HideFieldMessageBox(); - gTasks[taskId].func = Task_Linkup_7; - } - else - { - gFieldLinkPlayerCount = GetLinkPlayerCount_2(); - gLocalLinkPlayerId = GetMultiplayerId(); - sub_800A900(gFieldLinkPlayerCount); - TrainerCard_GenerateCardForLinkPlayer((void *)gBlockSendBuffer); - gTasks[taskId].func = Task_Linkup_6a; - } - } + SetCloseLinkCallback(); + HideFieldMessageBox(); + gTasks[taskId].func = Task_StopLinkup; + } + else if (*result == LINKUP_PLAYER_NOT_READY + || *result == LINKUP_PARTNER_NOT_READY) + { + CloseLink(); + HideFieldMessageBox(); + gTasks[taskId].func = Task_StopLinkup; + } + else + { + gFieldLinkPlayerCount = GetLinkPlayerCount_2(); + gLocalLinkPlayerId = GetMultiplayerId(); + SaveLinkPlayers(gFieldLinkPlayerCount); + TrainerCard_GenerateCardForLinkPlayer((void *)gBlockSendBuffer); + gTasks[taskId].func = Task_LinkupAwaitTrainerCardData; } } @@ -337,120 +367,124 @@ static bool32 AnyConnectedPartnersPlayingRS(void) return FALSE; } -static void Task_LinkupMaster_6(u8 taskId) +static void Task_LinkupCheckStatusAfterConfirm(u8 taskId) { - if (sub_80808BC(taskId) != TRUE) + if (CheckLinkErrored(taskId) == TRUE) + return; + + if (gSpecialVar_Result == LINKUP_WRONG_NUM_PLAYERS) { - if (gSpecialVar_Result == 4) - { - if (AnyConnectedPartnersPlayingRS() == TRUE) - CloseLink(); - else - SetCloseLinkCallback(); - HideFieldMessageBox(); - gTasks[taskId].func = Task_Linkup_7; - } - else if (gSpecialVar_Result == 3) - { - SetCloseLinkCallback(); - HideFieldMessageBox(); - gTasks[taskId].func = Task_Linkup_7; - } - else if (gSpecialVar_Result == 7 || gSpecialVar_Result == 9) - { + if (AnyConnectedPartnersPlayingRS() == TRUE) CloseLink(); - HideFieldMessageBox(); - gTasks[taskId].func = Task_Linkup_7; - } else - { - gFieldLinkPlayerCount = GetLinkPlayerCount_2(); - gLocalLinkPlayerId = GetMultiplayerId(); - sub_800A900(gFieldLinkPlayerCount); - TrainerCard_GenerateCardForLinkPlayer((void *)gBlockSendBuffer); - gTasks[taskId].func = Task_Linkup_6a; - Link_PrepareCmd0xCCCC_Rfu0xA100(2); - } + SetCloseLinkCallback(); + HideFieldMessageBox(); + gTasks[taskId].func = Task_StopLinkup; + } + else if (gSpecialVar_Result == LINKUP_DIFF_SELECTIONS) + { + SetCloseLinkCallback(); + HideFieldMessageBox(); + gTasks[taskId].func = Task_StopLinkup; + } + else if (gSpecialVar_Result == LINKUP_PLAYER_NOT_READY + || gSpecialVar_Result == LINKUP_PARTNER_NOT_READY) + { + CloseLink(); + HideFieldMessageBox(); + gTasks[taskId].func = Task_StopLinkup; + } + else + { + gFieldLinkPlayerCount = GetLinkPlayerCount_2(); + gLocalLinkPlayerId = GetMultiplayerId(); + SaveLinkPlayers(gFieldLinkPlayerCount); + TrainerCard_GenerateCardForLinkPlayer((void *)gBlockSendBuffer); + gTasks[taskId].func = Task_LinkupAwaitTrainerCardData; + SendBlockRequest(BLOCK_REQ_SIZE_100); } } -static void Task_Linkup_6a(u8 taskId) +static void Task_LinkupAwaitTrainerCardData(u8 taskId) { u8 i; u16 version; u8 * dest; - if (sub_80808BC(taskId) != TRUE && GetBlockReceivedStatus() == sub_800A8A4()) + + if (CheckLinkErrored(taskId) == TRUE) + return; + + if (GetBlockReceivedStatus() != GetSavedLinkPlayerCountAsBitFlags()) + return; + + for (i = 0; i < GetLinkPlayerCount(); i++) { - for(i = 0; i < GetLinkPlayerCount(); i++) + version = gLinkPlayers[i].version & 0xFF; + if (version != VERSION_FIRE_RED && version != VERSION_LEAF_GREEN) { - version = gLinkPlayers[i].version & 0xFF; - if (version != VERSION_FIRE_RED && version != VERSION_LEAF_GREEN) - { - const struct TrainerCardRSE * src = (const struct TrainerCardRSE *)gBlockRecvBuffer[i]; - gTrainerCards[i].rse = *src; - gTrainerCards[i].version = gLinkPlayers[i].version; - } - else - { - const struct TrainerCard * src = (const struct TrainerCard *)gBlockRecvBuffer[i]; - gTrainerCards[i] = *src; - } - } - SetSuppressLinkErrorMessage(FALSE); - ResetBlockReceivedFlags(); - HideFieldMessageBox(); - if (gSpecialVar_Result == 1) - { - // Dumb trick required to match - if (gLinkType == LINKTYPE_BERRY_BLENDER_SETUP) - *UnusedVarNeededToMatch += 0; - DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); - EnableBothScriptContexts(); - DestroyTask(taskId); + const struct TrainerCardRSE * src = (const struct TrainerCardRSE *)gBlockRecvBuffer[i]; + gTrainerCards[i].rse = *src; + gTrainerCards[i].version = gLinkPlayers[i].version; } else { - SetCloseLinkCallback(); - gTasks[taskId].func = Task_Linkup_7; + const struct TrainerCard * src = (const struct TrainerCard *)gBlockRecvBuffer[i]; + gTrainerCards[i] = *src; } } + SetSuppressLinkErrorMessage(FALSE); + ResetBlockReceivedFlags(); + HideFieldMessageBox(); + if (gSpecialVar_Result == LINKUP_SUCCESS) + { + // Dumb trick required to match + if (gLinkType == LINKTYPE_BERRY_BLENDER_SETUP) + *UnusedVarNeededToMatch += 0; + ClearLinkPlayerCountWindow(gTasks[taskId].tWindowId); + EnableBothScriptContexts(); + DestroyTask(taskId); + } + else + { + SetCloseLinkCallback(); + gTasks[taskId].func = Task_StopLinkup; + } } -static void Task_Linkup_7(u8 taskId) +static void Task_StopLinkup(u8 taskId) { if (!gReceivedRemoteLinkPlayers) { - DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); + ClearLinkPlayerCountWindow(gTasks[taskId].tWindowId); EnableBothScriptContexts(); - RemoveWindow(gTasks[taskId].data[5]); + RemoveWindow(gTasks[taskId].tWindowId); DestroyTask(taskId); } } -static void Task_Linkup_Canceled(u8 taskId) +static void Task_LinkupFailed(u8 taskId) { - gSpecialVar_Result = 5; - DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); + gSpecialVar_Result = LINKUP_FAILED; + ClearLinkPlayerCountWindow(gTasks[taskId].tWindowId); HideFieldMessageBox(); EnableBothScriptContexts(); DestroyTask(taskId); } -static void Task_Linkup_ErroredOut(u8 taskId) +static void Task_LinkupConnectionError(u8 taskId) { - gSpecialVar_Result = 6; - DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); + gSpecialVar_Result = LINKUP_CONNECTION_ERROR; + ClearLinkPlayerCountWindow(gTasks[taskId].tWindowId); HideFieldMessageBox(); EnableBothScriptContexts(); DestroyTask(taskId); } -static bool8 Task_Linkup_TimedOut(u8 taskId) +static bool8 TryLinkTimeout(u8 taskId) { - gTasks[taskId].data[4]++; - if (gTasks[taskId].data[4] > 600) + if (++gTasks[taskId].tTimer > 600) { - gTasks[taskId].func = Task_Linkup_ErroredOut; + gTasks[taskId].func = Task_LinkupConnectionError; return TRUE; } return FALSE; @@ -458,37 +492,47 @@ static bool8 Task_Linkup_TimedOut(u8 taskId) void TryBattleLinkup(void) { - u8 lower, higher; - higher = lower = 2; + u8 minPlayers = 2; + u8 maxPlayers = 2; + switch (gSpecialVar_0x8004) { case USING_SINGLE_BATTLE: - higher = lower = 2; + minPlayers = 2; + maxPlayers = 2; gLinkType = LINKTYPE_SINGLE_BATTLE; break; case USING_DOUBLE_BATTLE: - higher = lower = 2; + minPlayers = 2; + maxPlayers = 2; gLinkType = LINKTYPE_DOUBLE_BATTLE; break; case USING_MULTI_BATTLE: - higher = lower = 4; + minPlayers = 4; + maxPlayers = 4; gLinkType = LINKTYPE_MULTI_BATTLE; break; } - CreateLinkupTask(lower, higher); + CreateLinkupTask(minPlayers, maxPlayers); } +#undef tMinPlayers +#undef tMaxPlayers +#undef tNumPlayers +#undef tTimer +#undef tWindowId + void TryTradeLinkup(void) { - gLinkType = LINKTYPE_0x1133; + gLinkType = LINKTYPE_TRADE_SETUP; gBattleTypeFlags = 0; CreateLinkupTask(2, 2); } void TryRecordMixLinkup(void) { - gSpecialVar_Result = 0; - gLinkType = LINKTYPE_0x3311; + gSpecialVar_Result = LINKUP_ONGOING; + gLinkType = LINKTYPE_RECORD_MIX_BEFORE; gBattleTypeFlags = 0; CreateLinkupTask(2, 4); } @@ -500,10 +544,11 @@ void TryContestLinkup(void) CreateLinkupTask(4, 4); } -u8 CreateTask_ReestablishLinkInCableClubRoom(void) +u8 CreateTask_ReestablishCableClubLink(void) { - if (FuncIsActiveTask(Task_ReestablishLinkInCableClubRoom_0)) - return 0xFF; + if (FuncIsActiveTask(Task_ReestablishLink)) + return TASK_NONE; + switch (gSpecialVar_0x8004) { case USING_SINGLE_BATTLE: @@ -519,92 +564,94 @@ u8 CreateTask_ReestablishLinkInCableClubRoom(void) gLinkType = LINKTYPE_TRADE; break; case USING_RECORD_CORNER: - gLinkType = LINKTYPE_0x3322; + gLinkType = LINKTYPE_RECORD_MIX_AFTER; break; } - return CreateTask(Task_ReestablishLinkInCableClubRoom_0, 80); + return CreateTask(Task_ReestablishLink, 80); } -static void Task_ReestablishLinkInCableClubRoom_0(u8 taskId) +static void Task_ReestablishLink(u8 taskId) { s16 *data = gTasks[taskId].data; + if (data[0] == 0) { OpenLink(); ResetLinkPlayers(); - CreateTask(Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout, 80); + CreateTask(Task_WaitForLinkPlayerConnection, 80); } else if (data[0] > 9) - gTasks[taskId].func = Task_ReestablishLinkInCableClubRoom_1; + { + gTasks[taskId].func = Task_ReestablishLinkAwaitConnection; + } data[0]++; } -static void Task_ReestablishLinkInCableClubRoom_1(u8 taskId) +static void Task_ReestablishLinkAwaitConnection(u8 taskId) { if (GetLinkPlayerCount_2() >= 2) { if (IsLinkMaster() == TRUE) - { - gTasks[taskId].func = Task_ReestablishLinkInCableClubRoom_Master; - } + gTasks[taskId].func = Task_ReestablishLinkLeader; else - { - gTasks[taskId].func = Task_ReestablishLinkInCableClubRoom_2; - } + gTasks[taskId].func = Task_ReestablishLinkAwaitConfirmation; } } -static void Task_ReestablishLinkInCableClubRoom_Master(u8 taskId) +static void Task_ReestablishLinkLeader(u8 taskId) { if (GetSavedPlayerCount() == GetLinkPlayerCount_2()) { CheckShouldAdvanceLinkState(); - gTasks[taskId].func = Task_ReestablishLinkInCableClubRoom_2; + gTasks[taskId].func = Task_ReestablishLinkAwaitConfirmation; } } -static void Task_ReestablishLinkInCableClubRoom_2(u8 taskId) +static void Task_ReestablishLinkAwaitConfirmation(u8 taskId) { if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE) { - sub_800A9A4(); + CheckLinkPlayersMatchSaved(); StartSendingKeysToLink(); DestroyTask(taskId); } } +// Unused void CableClub_AskSaveTheGame(void) { Field_AskSaveTheGame(); } +#define tTimer data[1] + static void Task_StartWiredCableClubBattle(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + + switch (task->tState) { case 0: FadeScreen(FADE_TO_BLACK, 0); gLinkType = LINKTYPE_BATTLE; ClearLinkCallback_2(); - task->data[0]++; + task->tState++; break; case 1: if (!gPaletteFade.active) - task->data[0]++; + task->tState++; break; case 2: - task->data[1]++; - if (task->data[1] > 20) - task->data[0]++; + if (++task->tTimer > 20) + task->tState++; break; case 3: SetCloseLinkCallback(); - task->data[0]++; + task->tState++; break; case 4: if (!gReceivedRemoteLinkPlayers) - task->data[0]++; + task->tState++; break; case 5: if (gLinkPlayers[0].trainerId & 1) @@ -637,24 +684,25 @@ static void Task_StartWirelessCableClubBattle(u8 taskId) { s16 *data = gTasks[taskId].data; int i; - switch (data[0]) + + switch (tState) { case 0: FadeScreen(FADE_TO_BLACK, 0); gLinkType = LINKTYPE_BATTLE; ClearLinkCallback_2(); - data[0] = 1; + tState = 1; break; case 1: if (!gPaletteFade.active) - data[0] = 2; + tState = 2; break; case 2: - SendBlock(0, &gLocalLinkPlayer, sizeof(struct LinkPlayer)); - data[0] = 3; + SendBlock(0, &gLocalLinkPlayer, sizeof(gLocalLinkPlayer)); + tState = 3; break; case 3: - if (GetBlockReceivedStatus() == sub_800A8D4()) + if (GetBlockReceivedStatus() == GetLinkPlayerCountAsBitFlags()) { for (i = 0; i < GetLinkPlayerCount(); i++) { @@ -662,21 +710,20 @@ static void Task_StartWirelessCableClubBattle(u8 taskId) ConvertLinkPlayerName(&gLinkPlayers[i]); ResetBlockReceivedFlag(i); } - data[0] = 4; + tState = 4; } break; case 4: - data[1]++; - if (data[1] > 20) - data[0] = 5; + if (++tTimer > 20) + tState = 5; break; case 5: SetLinkStandbyCallback(); - data[0] = 6; + tState = 6; break; case 6: if (IsLinkTaskFinished()) - data[0] = 7; + tState = 7; break; case 7: if (gLinkPlayers[0].trainerId & 1) @@ -706,7 +753,9 @@ static void Task_StartWirelessCableClubBattle(u8 taskId) } } -static void sub_8081624(void) +#undef tTimer + +static void CB2_ReturnFromUnionRoomBattle(void) { switch (gMain.state) { @@ -728,41 +777,42 @@ void CB2_ReturnFromCableClubBattle(void) LoadPlayerParty(); SavePlayerBag(); Special_UpdateTrainerFansAfterLinkBattle(); + if (gSpecialVar_0x8004 != USING_MULTI_BATTLE) { - TryRecordLinkBattleOutcome(gLocalLinkPlayerId ^ 1); + UpdatePlayerLinkBattleRecords(gLocalLinkPlayerId ^ 1); if (gWirelessCommType != 0) { switch (gBattleOutcome) { case B_OUTCOME_WON: - MEvent_RecordIdOfWonderCardSenderByEventType(0, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId); + MysteryGift_TryIncrementStat(CARD_STAT_BATTLES_WON, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId); break; case B_OUTCOME_LOST: - MEvent_RecordIdOfWonderCardSenderByEventType(1, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId); + MysteryGift_TryIncrementStat(CARD_STAT_BATTLES_LOST, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId); break; } } } + if (InUnionRoom() == TRUE) - { - gMain.savedCallback = sub_8081624; - } + gMain.savedCallback = CB2_ReturnFromUnionRoomBattle; else - { gMain.savedCallback = CB2_ReturnToFieldFromMultiplayer; - } + SetMainCallback2(CB2_SetUpSaveAfterLinkBattle); } void CleanupLinkRoomState(void) { - if (gSpecialVar_0x8004 == USING_SINGLE_BATTLE || gSpecialVar_0x8004 == USING_DOUBLE_BATTLE || gSpecialVar_0x8004 == USING_MULTI_BATTLE) + if (gSpecialVar_0x8004 == USING_SINGLE_BATTLE + || gSpecialVar_0x8004 == USING_DOUBLE_BATTLE + || gSpecialVar_0x8004 == USING_MULTI_BATTLE) { LoadPlayerParty(); SavePlayerBag(); } - SetWarpDestinationToDynamicWarp(127); + SetWarpDestinationToDynamicWarp(WARP_ID_DYNAMIC); } void ExitLinkRoom(void) @@ -770,76 +820,79 @@ void ExitLinkRoom(void) QueueExitLinkRoomKey(); } +// Note: gSpecialVar_0x8005 contains the id of the seat the player entered static void Task_EnterCableClubSeat(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: ShowFieldMessage(CableClub_Text_PleaseWaitBCancel); - task->data[0] = 1; + task->tState = 1; break; case 1: if (IsFieldMessageBoxHidden()) { SetInCableClubSeat(); SetLocalLinkPlayerId(gSpecialVar_0x8005); - task->data[0] = 2; + task->tState = 2; } break; case 2: switch (GetCableClubPartnersReady()) { - case 0: + case CABLE_SEAT_WAITING: break; - case 1: + case CABLE_SEAT_SUCCESS: + // Partners linked and ready, switch to relevant link function HideFieldMessageBox(); - task->data[0] = 0; + task->tState = 0; SetStartedCableClubActivity(); SwitchTaskToFollowupFunc(taskId); break; - case 2: - task->data[0] = 3; + case CABLE_SEAT_FAILED: + task->tState = 3; break; } break; case 3: + // Exit, failure SetLinkWaitingForScript(); - sub_80F771C(TRUE); + EraseFieldMessageBox(TRUE); DestroyTask(taskId); EnableBothScriptContexts(); break; } } -static void CreateEnterCableClubSeatTaskWithFollowupFunc(TaskFunc followUpFunc) +static void CreateTask_EnterCableClubSeat(TaskFunc followUpFunc) { u8 taskId = CreateTask(Task_EnterCableClubSeat, 80); SetTaskFuncWithFollowupFunc(taskId, Task_EnterCableClubSeat, followUpFunc); ScriptContext1_Stop(); } -static void Task_StartWiredCableClubTrade(u8 taskId) +static void Task_StartWiredTrade(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: ScriptContext2_Enable(); FadeScreen(FADE_TO_BLACK, 0); ClearLinkCallback_2(); - task->data[0]++; + task->tState++; break; case 1: if (!gPaletteFade.active) - task->data[0]++; + task->tState++; break; case 2: - gSelectedTradeMonPositions[0] = 0; - gSelectedTradeMonPositions[1] = 0; + gSelectedTradeMonPositions[TRADE_PLAYER] = 0; + gSelectedTradeMonPositions[TRADE_PARTNER] = 0; m4aMPlayAllStop(); SetCloseLinkCallback(); - task->data[0]++; + task->tState++; break; case 3: if (!gReceivedRemoteLinkPlayers) @@ -851,27 +904,27 @@ static void Task_StartWiredCableClubTrade(u8 taskId) } } -static void Task_StartWirelessCableClubTrade(u8 taskId) +static void Task_StartWirelessTrade(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (data[0]) + switch (tState) { case 0: ScriptContext2_Enable(); FadeScreen(FADE_TO_BLACK, 0); ClearLinkRfuCallback(); - data[0]++; + tState++; break; case 1: if (!gPaletteFade.active) - data[0]++; + tState++; break; case 2: - gSelectedTradeMonPositions[0] = 0; - gSelectedTradeMonPositions[1] = 0; + gSelectedTradeMonPositions[TRADE_PLAYER] = 0; + gSelectedTradeMonPositions[TRADE_PARTNER] = 0; m4aMPlayAllStop(); SetLinkStandbyCallback(); - data[0]++; + tState++; break; case 3: if (IsLinkTaskFinished()) @@ -886,19 +939,19 @@ static void Task_StartWirelessCableClubTrade(u8 taskId) void EnterTradeSeat(void) { if (gWirelessCommType) - CreateEnterCableClubSeatTaskWithFollowupFunc(Task_StartWirelessCableClubTrade); + CreateTask_EnterCableClubSeat(Task_StartWirelessTrade); else - CreateEnterCableClubSeatTaskWithFollowupFunc(Task_StartWiredCableClubTrade); + CreateTask_EnterCableClubSeat(Task_StartWiredTrade); } -static void CreateTask_StartWiredCableClubTrade(void) +static void CreateTask_StartWiredTrade(void) { - CreateTask(Task_StartWiredCableClubTrade, 80); + CreateTask(Task_StartWiredTrade, 80); } void StartWiredCableClubTrade(void) { - CreateTask_StartWiredCableClubTrade(); + CreateTask_StartWiredTrade(); ScriptContext1_Stop(); } @@ -906,12 +959,13 @@ void EnterColosseumPlayerSpot(void) { gLinkType = LINKTYPE_BATTLE; if (gWirelessCommType) - CreateEnterCableClubSeatTaskWithFollowupFunc(Task_StartWirelessCableClubBattle); + CreateTask_EnterCableClubSeat(Task_StartWirelessCableClubBattle); else - CreateEnterCableClubSeatTaskWithFollowupFunc(Task_StartWiredCableClubBattle); + CreateTask_EnterCableClubSeat(Task_StartWiredCableClubBattle); } -static void Debug_CreateTaskEnterCableClubSeat(void) +// Unused +static void CreateTask_EnterCableClubSeatNoFollowup(void) { CreateTask(Task_EnterCableClubSeat, 80); ScriptContext1_Stop(); @@ -922,23 +976,27 @@ void Script_ShowLinkTrainerCard(void) ShowTrainerCardInLink(gSpecialVar_0x8006, CB2_ReturnToFieldContinueScriptPlayMapMusic); } -bool32 GetSeeingLinkPlayerCardMsg(u8 who) +bool32 GetSeeingLinkPlayerCardMsg(u8 linkPlayerIndex) { - u8 stars; - gSpecialVar_0x8006 = who; - StringCopy(gStringVar1, gLinkPlayers[who].name); - stars = GetTrainerCardStars(who); - if (stars == 0) + u8 numStars; + + gSpecialVar_0x8006 = linkPlayerIndex; + StringCopy(gStringVar1, gLinkPlayers[linkPlayerIndex].name); + + numStars = GetTrainerCardStars(linkPlayerIndex); + if (numStars == 0) return FALSE; - StringCopy(gStringVar2, sStarsMessagePtrs[stars - 1]); + + StringCopy(gStringVar2, sTrainerCardColorNames[numStars - 1]); return TRUE; } -void Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout(u8 taskId) +#define tTimer data[0] + +void Task_WaitForLinkPlayerConnection(u8 taskId) { struct Task *task = &gTasks[taskId]; - task->data[0]++; - if (task->data[0] > 300) + if (++task->tTimer > 300) { CloseLink(); SetMainCallback2(CB2_LinkError); @@ -948,7 +1006,7 @@ void Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout(u8 taskId) DestroyTask(taskId); } -static void sub_8081AE4(u8 taskId) +static void Task_WaitExitToScript(u8 taskId) { if (!gReceivedRemoteLinkPlayers) { @@ -957,8 +1015,9 @@ static void sub_8081AE4(u8 taskId) } } -static void sub_8081B08(u8 taskId) +// Unused +static void ExitLinkToScript(u8 taskId) { SetCloseLinkCallback(); - gTasks[taskId].func = sub_8081AE4; + gTasks[taskId].func = Task_WaitExitToScript; } diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 31de46ab2..fb1d71257 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -173,7 +173,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId) switch (task->data[0]) { case 0: - task->data[1] = CreateTask_ReestablishLinkInCableClubRoom(); + task->data[1] = CreateTask_ReestablishCableClubLink(); task->data[0]++; break; case 1: diff --git a/src/field_message_box.c b/src/field_message_box.c index 5a682c382..8f75ce78d 100644 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -1,18 +1,11 @@ #include "global.h" +#include "field_message_box.h" #include "gflib.h" #include "new_menu_helpers.h" #include "quest_log.h" #include "script.h" #include "text_window.h" -enum -{ - FIELD_MESSAGE_BOX_HIDDEN, - FIELD_MESSAGE_BOX_UNUSED, - FIELD_MESSAGE_BOX_NORMAL, - FIELD_MESSAGE_BOX_AUTO_SCROLL, -}; - static EWRAM_DATA u8 sMessageBoxType = 0; static void ExpandStringAndStartDrawFieldMessageBox(const u8 *str); diff --git a/src/link.c b/src/link.c index b5167198e..26fd943c0 100644 --- a/src/link.c +++ b/src/link.c @@ -163,11 +163,11 @@ static const u16 sLinkTestFontPal[] = INCBIN_U16("graphics/interface/link_test_f static const u16 sLinkTestFontGfx[] = INCBIN_U16("graphics/interface/link_test_font.4bpp"); static const struct BlockRequest sBlockRequests[] = { - {gBlockSendBuffer, 200}, - {gBlockSendBuffer, 200}, - {gBlockSendBuffer, 100}, - {gBlockSendBuffer, 220}, - {gBlockSendBuffer, 40} + [BLOCK_REQ_SIZE_NONE] = { gBlockSendBuffer, 200 }, + [BLOCK_REQ_SIZE_200] = { gBlockSendBuffer, 200 }, + [BLOCK_REQ_SIZE_100] = { gBlockSendBuffer, 100 }, + [BLOCK_REQ_SIZE_220] = { gBlockSendBuffer, 220 }, + [BLOCK_REQ_SIZE_40] = { gBlockSendBuffer, 40 } }; static const char sASCIIGameFreakInc[] = "GameFreak inc."; static const char sASCIITestPrint[] = "TEST PRINT\n" @@ -788,8 +788,8 @@ u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper) cmpVal = GetLinkPlayerCount_2(); if (lower > cmpVal || cmpVal > upper) { - sPlayerDataExchangeStatus = EXCHANGE_STAT_6; - return EXCHANGE_STAT_6; + sPlayerDataExchangeStatus = EXCHANGE_WRONG_NUM_PLAYERS; + return sPlayerDataExchangeStatus; } else { @@ -815,10 +815,10 @@ u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper) sPlayerDataExchangeStatus = EXCHANGE_COMPLETE; break; case 1: - sPlayerDataExchangeStatus = EXCHANGE_STAT_4; + sPlayerDataExchangeStatus = EXCHANGE_PLAYER_NOT_READY; break; case 2: - sPlayerDataExchangeStatus = EXCHANGE_STAT_5; + sPlayerDataExchangeStatus = EXCHANGE_PARTNER_NOT_READY; break; } } @@ -829,7 +829,7 @@ u8 GetLinkPlayerDataExchangeStatusTimed(int lower, int upper) } else { - sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS; + sPlayerDataExchangeStatus = EXCHANGE_DIFF_SELECTIONS; } } } @@ -862,7 +862,7 @@ bool8 IsLinkPlayerDataExchangeComplete(void) else { retval = FALSE; - sPlayerDataExchangeStatus = EXCHANGE_IN_PROGRESS; + sPlayerDataExchangeStatus = EXCHANGE_DIFF_SELECTIONS; } return retval; } @@ -999,7 +999,7 @@ bool8 SendBlock(u8 unused, const void *src, u16 size) return InitBlockSend(src, size); } -bool8 Link_PrepareCmd0xCCCC_Rfu0xA100(u8 blockRequestType) +bool8 SendBlockRequest(u8 blockRequestType) { if (gWirelessCommType == 1) { @@ -1195,7 +1195,7 @@ void SetLinkDebugValues(u32 seed, u32 flags) gLinkDebugFlags = flags; } -u8 sub_800A8A4(void) +u8 GetSavedLinkPlayerCountAsBitFlags(void) { int i; u8 flags; @@ -1208,7 +1208,7 @@ u8 sub_800A8A4(void) return flags; } -u8 sub_800A8D4(void) +u8 GetLinkPlayerCountAsBitFlags(void) { int i; u8 flags; @@ -1221,11 +1221,11 @@ u8 sub_800A8D4(void) return flags; } -void sub_800A900(u8 a0) +void SaveLinkPlayers(u8 numPlayers) { int i; - gSavedLinkPlayerCount = a0; + gSavedLinkPlayerCount = numPlayers; gSavedMultiplayerId = GetMultiplayerId(); for (i = 0; i < MAX_RFU_PLAYERS; i++) { @@ -1265,7 +1265,7 @@ bool8 sub_800A95C(void) return FALSE; } -void sub_800A9A4(void) +void CheckLinkPlayersMatchSaved(void) { u8 i; @@ -1280,7 +1280,7 @@ void sub_800A9A4(void) } } -void sub_800AA24(void) +void ResetLinkPlayerCount(void) { gSavedLinkPlayerCount = 0; gSavedMultiplayerId = 0; diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index 2cac8210a..8860deb4f 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -168,11 +168,11 @@ static const u8 sNumTrailingZeroes[] = { }; static const struct BlockRequest sBlockRequests[] = { - { gBlockSendBuffer, 200 }, - { gBlockSendBuffer, 200 }, - { gBlockSendBuffer, 100 }, - { gBlockSendBuffer, 220 }, - { gBlockSendBuffer, 40 } + [BLOCK_REQ_SIZE_NONE] = { gBlockSendBuffer, 200 }, + [BLOCK_REQ_SIZE_200] = { gBlockSendBuffer, 200 }, + [BLOCK_REQ_SIZE_100] = { gBlockSendBuffer, 100 }, + [BLOCK_REQ_SIZE_220] = { gBlockSendBuffer, 220 }, + [BLOCK_REQ_SIZE_40] = { gBlockSendBuffer, 40 } }; static const u16 sAcceptedSerialNos[] = { @@ -1709,7 +1709,7 @@ static void sub_80FA834(u8 taskId) { if (AreNoPlayersReceiving()) { - Rfu.cmdA100_blockRequestType = 0; + Rfu.cmdA100_blockRequestType = BLOCK_REQ_SIZE_NONE; RfuPrepareSendBuffer(RFUCMD_SEND_BLOCK_REQ); gTasks[taskId].data[0]++; } diff --git a/src/mevent.c b/src/mevent.c index 68b3cd610..386437259 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -961,7 +961,7 @@ bool32 MEventHandleReceivedWonderCard(u16 flagId) return TRUE; } -void MEvent_RecordIdOfWonderCardSenderByEventType(u32 eventId, u32 trainerId) +void MysteryGift_TryIncrementStat(u32 eventId, u32 trainerId) { if (sReceivedWonderCardIsValid) { diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c index e11dbb36b..58952c3c0 100644 --- a/src/new_menu_helpers.c +++ b/src/new_menu_helpers.c @@ -592,7 +592,7 @@ static void WindowFunc_ClearDialogWindowAndFrame(u8 bg, u8 tilemapLeft, u8 tilem FillBgTilemapBufferRect(bg, 0, tilemapLeft - 2, tilemapTop - 1, width + 4, height + 2, STD_WINDOW_PALETTE_NUM); } -void sub_80F771C(bool8 copyToVram) +void EraseFieldMessageBox(bool8 copyToVram) { FillBgTilemapBufferRect(0, 0, 0, 0, 0x20, 0x20, 0x11); if (copyToVram == TRUE) diff --git a/src/overworld.c b/src/overworld.c index 6c1420418..3911c868d 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -47,6 +47,7 @@ #include "trainer_pokemon_sprites.h" #include "vs_seeker.h" #include "wild_encounter.h" +#include "constants/cable_club.h" #include "constants/maps.h" #include "constants/region_map_sections.h" #include "constants/songs.h" @@ -2979,14 +2980,14 @@ static u16 KeyInterCB_SendNothing_2(u32 key) u32 GetCableClubPartnersReady(void) { if (IsAnyPlayerInLinkState(PLAYER_LINK_STATE_EXITING_ROOM) == TRUE) - return 2; + return CABLE_SEAT_FAILED; if (sPlayerKeyInterceptCallback == KeyInterCB_Ready && sPlayerLinkStates[gLocalLinkPlayerId] != PLAYER_LINK_STATE_READY) - return 0; + return CABLE_SEAT_WAITING; if (sPlayerKeyInterceptCallback == KeyInterCB_DoNothingAndKeepAlive && sPlayerLinkStates[gLocalLinkPlayerId] == PLAYER_LINK_STATE_BUSY) - return 2; + return CABLE_SEAT_FAILED; if (AreAllPlayersInLinkState(PLAYER_LINK_STATE_READY) != FALSE) - return 1; - return 0; + return CABLE_SEAT_SUCCESS; + return CABLE_SEAT_WAITING; } static bool32 IsAnyPlayerExitingCableClub(void) diff --git a/src/strings.c b/src/strings.c index abbcded06..c8f85b50f 100644 --- a/src/strings.c +++ b/src/strings.c @@ -1168,11 +1168,11 @@ const u8 gText_CommErrorEllipsis[] = _("Communication error…"); const u8 gText_MoveCloserToLinkPartner[] = _("Move closer to your link partner(s).\nAvoid obstacles between partners."); const u8 gText_ABtnRegistrationCounter[] = _("A Button: Registration Counter"); const u8 gText_ABtnTitleScreen[] = _("A Button: Title Screen"); -const u8 gUnknown_841DF82[] = _("{STR_VAR_1}P LINK"); -const u8 gUnknown_841DF8B[] = _("BRONZE"); -const u8 gUnknown_841DF92[] = _("COPPER"); -const u8 gUnknown_841DF99[] = _("SILVER"); -const u8 gUnknown_841DFA0[] = _("GOLD"); +const u8 gText_NumPlayerLink[] = _("{STR_VAR_1}P LINK"); +const u8 gText_BronzeCard[] = _("BRONZE"); +const u8 gText_CopperCard[] = _("COPPER"); +const u8 gText_SilverCard[] = _("SILVER"); +const u8 gText_GoldCard[] = _("GOLD"); const u8 gText_HelpSystemControls_A_Next[] = _("{A_BUTTON}NEXT"); const u8 gText_HelpSystemControls_PickOkEnd[] = _("{DPAD_UPDOWN}PICK {A_BUTTON}OK {B_BUTTON}END"); const u8 gText_HelpSystemControls_AorBtoCancel[] = _("{A_BUTTON}{B_BUTTON}CANCEL"); diff --git a/src/trade.c b/src/trade.c index c5a580b1b..a442c14c1 100644 --- a/src/trade.c +++ b/src/trade.c @@ -767,7 +767,7 @@ static void CB2_ReturnFromLinkTrade2(void) gMain.state++; } if (gWirelessCommType == 0) - CreateTask(Task_WaitForReceivedRemoteLinkPlayers5SecondTimeout, 1); + CreateTask(Task_WaitForLinkPlayerConnection, 1); } else { @@ -1346,9 +1346,7 @@ static bool8 shedinja_maker_maybe(void) break; case 3: if (id == 0) - { - Link_PrepareCmd0xCCCC_Rfu0xA100(1); - } + SendBlockRequest(BLOCK_REQ_SIZE_200); sTradeMenuResourcesPtr->state++; break; case 4: @@ -1365,9 +1363,7 @@ static bool8 shedinja_maker_maybe(void) break; case 7: if (id == 0) - { - Link_PrepareCmd0xCCCC_Rfu0xA100(1); - } + SendBlockRequest(BLOCK_REQ_SIZE_200); sTradeMenuResourcesPtr->state++; break; case 8: @@ -1384,9 +1380,7 @@ static bool8 shedinja_maker_maybe(void) break; case 11: if (id == 0) - { - Link_PrepareCmd0xCCCC_Rfu0xA100(1); - } + SendBlockRequest(BLOCK_REQ_SIZE_200); sTradeMenuResourcesPtr->state++; break; case 12: @@ -1403,9 +1397,7 @@ static bool8 shedinja_maker_maybe(void) break; case 15: if (id == 0) - { - Link_PrepareCmd0xCCCC_Rfu0xA100(3); - } + SendBlockRequest(BLOCK_REQ_SIZE_220); sTradeMenuResourcesPtr->state++; break; case 16: @@ -1422,9 +1414,7 @@ static bool8 shedinja_maker_maybe(void) break; case 19: if (id == 0) - { - Link_PrepareCmd0xCCCC_Rfu0xA100(4); - } + SendBlockRequest(BLOCK_REQ_SIZE_40); sTradeMenuResourcesPtr->state++; break; case 20: diff --git a/src/trade_scene.c b/src/trade_scene.c index c3b36db16..db1625648 100644 --- a/src/trade_scene.c +++ b/src/trade_scene.c @@ -2583,9 +2583,7 @@ static void CB2_HandleTradeEnded(void) IncrementGameStat(GAME_STAT_POKEMON_TRADES); } if (gWirelessCommType) - { - MEvent_RecordIdOfWonderCardSenderByEventType(2, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId); - } + MysteryGift_TryIncrementStat(CARD_STAT_NUM_TRADES, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId); SetContinueGameWarpStatusToDynamicWarp(); LinkFullSave_Init(); gMain.state++; diff --git a/src/union_room.c b/src/union_room.c index 45960c10a..51fbafedf 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -1794,11 +1794,11 @@ static void Task_ExchangeCards(u8 taskId) { case 0: if (GetMultiplayerId() == 0) - Link_PrepareCmd0xCCCC_Rfu0xA100(2); + SendBlockRequest(BLOCK_REQ_SIZE_100); gTasks[taskId].data[0]++; break; case 1: - if (GetBlockReceivedStatus() == sub_800A8D4()) + if (GetBlockReceivedStatus() == GetLinkPlayerCountAsBitFlags()) { s32 i; u16 *recvBuff; From ce612de462244305d574ccbc9a7bb76b863c8343 Mon Sep 17 00:00:00 2001 From: Jaizu Date: Sun, 28 Aug 2022 16:51:45 +0200 Subject: [PATCH 33/38] Add Common_ to movements.inc --- data/event_scripts.s | 8 +-- data/maps/CeladonCity/scripts.inc | 4 +- data/maps/CeladonCity_GameCorner/scripts.inc | 2 +- data/maps/CeruleanCity/scripts.inc | 14 ++--- data/maps/CeruleanCity_House4/scripts.inc | 10 +-- data/maps/CinnabarIsland/scripts.inc | 12 ++-- data/maps/CinnabarIsland_Gym/scripts.inc | 20 +++--- .../FiveIsland_MemorialPillar/scripts.inc | 10 +-- .../FiveIsland_ResortGorgeous/scripts.inc | 2 +- .../scripts.inc | 12 ++-- .../FiveIsland_RocketWarehouse/scripts.inc | 12 ++-- data/maps/FourIsland/scripts.inc | 6 +- .../FourIsland_IcefallCave_Back/scripts.inc | 12 ++-- .../scripts.inc | 2 +- data/maps/MtEmber_Exterior/scripts.inc | 14 ++--- data/maps/MtMoon_B2F/scripts.inc | 2 +- .../OneIsland_PokemonCenter_1F/scripts.inc | 62 +++++++++---------- data/maps/PalletTown/scripts.inc | 22 +++---- .../PalletTown_PlayersHouse_1F/scripts.inc | 2 +- .../PalletTown_ProfessorOaksLab/scripts.inc | 62 +++++++++---------- data/maps/PalletTown_RivalsHouse/scripts.inc | 6 +- data/maps/PewterCity/scripts.inc | 12 ++-- data/maps/PewterCity_House1/scripts.inc | 2 +- data/maps/PewterCity_Museum_1F/scripts.inc | 10 +-- .../maps/PokemonLeague_BrunosRoom/scripts.inc | 6 +- .../PokemonLeague_ChampionsRoom/scripts.inc | 6 +- .../maps/PokemonLeague_HallOfFame/scripts.inc | 8 +-- data/maps/PokemonTower_2F/scripts.inc | 12 ++-- .../maps/Route16_NorthEntrance_1F/scripts.inc | 2 +- data/maps/Route18_EastEntrance_1F/scripts.inc | 2 +- data/maps/Route24/scripts.inc | 4 +- data/maps/Route5_SouthEntrance/scripts.inc | 2 +- data/maps/Route6_NorthEntrance/scripts.inc | 2 +- data/maps/Route7_EastEntrance/scripts.inc | 2 +- data/maps/Route8_WestEntrance/scripts.inc | 2 +- data/maps/SSAnne_2F_Corridor/scripts.inc | 2 +- data/maps/SSAnne_CaptainsOffice/scripts.inc | 6 +- data/maps/SSAnne_Exterior/scripts.inc | 2 +- data/maps/SaffronCity/scripts.inc | 2 +- data/maps/SaffronCity_Dojo/scripts.inc | 8 +-- .../scripts.inc | 8 +-- data/maps/SevenIsland_House_Room1/scripts.inc | 2 +- .../scripts.inc | 6 +- data/maps/SilphCo_11F/scripts.inc | 2 +- data/maps/SilphCo_7F/scripts.inc | 6 +- .../scripts.inc | 16 ++--- .../SixIsland_PokemonCenter_1F/scripts.inc | 6 +- data/maps/SixIsland_RuinValley/scripts.inc | 4 +- data/maps/ThreeIsland/scripts.inc | 36 +++++------ data/maps/ThreeIsland_BerryForest/scripts.inc | 4 +- .../ThreeIsland_DunsparceTunnel/scripts.inc | 2 +- .../TwoIsland_JoyfulGameCorner/scripts.inc | 14 ++--- data/maps/VermilionCity/scripts.inc | 4 +- .../VermilionCity_PokemonFanClub/scripts.inc | 8 +-- data/maps/ViridianCity/scripts.inc | 14 ++--- data/maps/ViridianCity_Mart/scripts.inc | 2 +- data/maps/ViridianCity_School/scripts.inc | 6 +- data/scripts/cable_club.inc | 2 +- data/scripts/movement.inc | 34 +++++----- data/scripts/pkmn_center_nurse.inc | 4 +- data/scripts/pokemon_league.inc | 6 +- data/scripts/questionnaire.inc | 8 +-- data/scripts/route23.inc | 6 +- data/scripts/seagallop.inc | 2 +- data/scripts/trainer_card.inc | 8 +-- data/scripts/trainer_tower.inc | 24 +++---- data/scripts/white_out.inc | 2 +- 67 files changed, 312 insertions(+), 312 deletions(-) diff --git a/data/event_scripts.s b/data/event_scripts.s index e76eb50f5..5e349996d 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -1175,16 +1175,16 @@ EventScript_ReleaseEnd:: @ Unused EventScript_DelayedLookAround:: lockall - applymovement VAR_0x8004, Movement_WalkInPlaceFasterLeft + applymovement VAR_0x8004, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 delay 20 - applymovement VAR_0x8004, Movement_WalkInPlaceFasterUp + applymovement VAR_0x8004, Common_Movement_WalkInPlaceFasterUp waitmovement 0 delay 20 - applymovement VAR_0x8004, Movement_WalkInPlaceFasterRight + applymovement VAR_0x8004, Common_Movement_WalkInPlaceFasterRight waitmovement 0 delay 20 - applymovement VAR_0x8004, Movement_WalkInPlaceFasterDown + applymovement VAR_0x8004, Common_Movement_WalkInPlaceFasterDown waitmovement 0 delay 20 releaseall diff --git a/data/maps/CeladonCity/scripts.inc b/data/maps/CeladonCity/scripts.inc index 505e8b95f..adf2f5457 100644 --- a/data/maps/CeladonCity/scripts.inc +++ b/data/maps/CeladonCity/scripts.inc @@ -36,7 +36,7 @@ CeladonCity_EventScript_FatMan:: faceplayer msgbox CeladonCity_Text_MyTrustedPalPoliwrath closemessage - applymovement LOCALID_FAT_MAN, Movement_FaceOriginalDirection + applymovement LOCALID_FAT_MAN, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -49,7 +49,7 @@ CeladonCity_EventScript_Poliwrath:: msgbox CeladonCity_Text_Poliwrath closemessage waitmoncry - applymovement LOCALID_POLIWRATH, Movement_FaceOriginalDirection + applymovement LOCALID_POLIWRATH, Common_Movement_FaceOriginalDirection waitmovement 0 release end diff --git a/data/maps/CeladonCity_GameCorner/scripts.inc b/data/maps/CeladonCity_GameCorner/scripts.inc index 120c59af1..a0e4e67b4 100644 --- a/data/maps/CeladonCity_GameCorner/scripts.inc +++ b/data/maps/CeladonCity_GameCorner/scripts.inc @@ -106,7 +106,7 @@ CeladonCity_GameCorner_EventScript_BaldingMan:: CeladonCity_GameCorner_EventScript_FaceSlotMachine:: closemessage - applymovement VAR_LAST_TALKED, Movement_FaceOriginalDirection + applymovement VAR_LAST_TALKED, Common_Movement_FaceOriginalDirection waitmovement 0 release end diff --git a/data/maps/CeruleanCity/scripts.inc b/data/maps/CeruleanCity/scripts.inc index be2405292..98b9faa0c 100644 --- a/data/maps/CeruleanCity/scripts.inc +++ b/data/maps/CeruleanCity/scripts.inc @@ -204,9 +204,9 @@ CeruleanCity_EventScript_NoRoomForTM28:: CeruleanCity_EventScript_GruntTriggerTop:: lockall setvar VAR_TEMP_1, 0 - applymovement LOCALID_GRUNT, Movement_WalkInPlaceFasterUp + applymovement LOCALID_GRUNT, Common_Movement_WalkInPlaceFasterUp waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 goto CeruleanCity_EventScript_GruntTrigger end @@ -214,9 +214,9 @@ CeruleanCity_EventScript_GruntTriggerTop:: CeruleanCity_EventScript_GruntTriggerBottom:: lockall setvar VAR_TEMP_1, 1 - applymovement LOCALID_GRUNT, Movement_WalkInPlaceFasterDown + applymovement LOCALID_GRUNT, Common_Movement_WalkInPlaceFasterDown waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 goto CeruleanCity_EventScript_GruntTrigger end @@ -235,7 +235,7 @@ CeruleanCity_EventScript_Policeman:: faceplayer msgbox CeruleanCity_Text_PeopleHereWereRobbed closemessage - applymovement LOCALID_POLICEMAN, Movement_FaceOriginalDirection + applymovement LOCALID_POLICEMAN, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -270,7 +270,7 @@ CeruleanCity_EventScript_Woman:: faceplayer msgbox CeruleanCity_Text_WantBrightRedBicycle closemessage - applymovement LOCALID_WOMAN, Movement_FaceOriginalDirection + applymovement LOCALID_WOMAN, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -285,7 +285,7 @@ CeruleanCity_EventScript_Lass:: waitmessage delay 40 playse SE_PIN - applymovement LOCALID_SLOWBRO, Movement_QuestionMark + applymovement LOCALID_SLOWBRO, Common_Movement_QuestionMark waitmovement 0 delay 30 call_if_eq VAR_0x8008, 0, CeruleanCity_EventScript_SlowbroFailed1 diff --git a/data/maps/CeruleanCity_House4/scripts.inc b/data/maps/CeruleanCity_House4/scripts.inc index 8774b70ef..e812d3b73 100644 --- a/data/maps/CeruleanCity_House4/scripts.inc +++ b/data/maps/CeruleanCity_House4/scripts.inc @@ -40,7 +40,7 @@ CeruleanCity_House4_EventScript_News2:: end CeruleanCity_House4_EventScript_NewsNotSpread:: - applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Movement_FacePlayer + applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_FacePlayer waitmovement 0 msgbox CeruleanCity_House4_Text_WishCouldShareNewsWithOthers release @@ -63,7 +63,7 @@ CeruleanCity_House4_EventScript_NewsSpread2:: end CeruleanCity_House4_EventScript_NewsDone:: - applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Movement_FacePlayer + applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_FacePlayer waitmovement 0 msgbox CeruleanCity_House4_Text_EnjoyingMyselfWithAllSortsOfNews release @@ -71,11 +71,11 @@ CeruleanCity_House4_EventScript_NewsDone:: CeruleanCity_House4_EventScript_MovementReactionToNews:: playse SE_PIN - applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Movement_ExclamationMark + applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Movement_FacePlayer + applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_FacePlayer waitmovement 0 - applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Movement_Delay48 + applymovement LOCALID_WONDER_NEWS_BERRY_MAN, Common_Movement_Delay48 waitmovement 0 return diff --git a/data/maps/CinnabarIsland/scripts.inc b/data/maps/CinnabarIsland/scripts.inc index 7746af9a7..e2e17385a 100644 --- a/data/maps/CinnabarIsland/scripts.inc +++ b/data/maps/CinnabarIsland/scripts.inc @@ -94,9 +94,9 @@ CinnabarIsland_EventScript_BillScene:: call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BillFacePlayer1 call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BillFacePlayer2 playse SE_PIN - applymovement LOCALID_BILL, Movement_ExclamationMark + applymovement LOCALID_BILL, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_BILL, Movement_Delay48 + applymovement LOCALID_BILL, Common_Movement_Delay48 waitmovement 0 call_if_unset FLAG_TEMP_2, CinnabarIsland_EventScript_BillApproachPlayer1 call_if_set FLAG_TEMP_2, CinnabarIsland_EventScript_BillApproachPlayer2 @@ -107,12 +107,12 @@ CinnabarIsland_EventScript_BillScene:: end CinnabarIsland_EventScript_BillFacePlayer1:: - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterUp + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return CinnabarIsland_EventScript_BillFacePlayer2:: - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return @@ -124,7 +124,7 @@ CinnabarIsland_EventScript_BillApproachPlayer1:: CinnabarIsland_EventScript_BillApproachPlayer2:: applymovement LOCALID_BILL, CinnabarIsland_Movement_BillApproachPlayer2 waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 return @@ -313,7 +313,7 @@ CinnabarIsland_Movement_PlayerBoardBoatFromShore:: @ Triggered when VAR_TEMP_1 is 0 CinnabarIsland_EventScript_GymDoorLocked:: lockall - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 delay 20 msgbox CinnabarIsland_Text_DoorIsLocked diff --git a/data/maps/CinnabarIsland_Gym/scripts.inc b/data/maps/CinnabarIsland_Gym/scripts.inc index 58da8ac3f..38ec546f6 100644 --- a/data/maps/CinnabarIsland_Gym/scripts.inc +++ b/data/maps/CinnabarIsland_Gym/scripts.inc @@ -271,13 +271,13 @@ CinnabarIsland_Gym_EventScript_BattleQuinn:: end CinnabarIsland_Gym_EventScript_QuinnApproachLeft:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_QUINN, CinnabarIsland_Gym_Movement_QuinnApproachLeft waitmovement 0 return CinnabarIsland_Gym_EventScript_QuinnApproachRight:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_QUINN, CinnabarIsland_Gym_Movement_QuinnApproachRight waitmovement 0 return @@ -424,13 +424,13 @@ CinnabarIsland_Gym_EventScript_BattleRamon:: end CinnabarIsland_Gym_EventScript_RamonApproachLeft:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_RAMON, CinnabarIsland_Gym_Movement_RamonApproachLeft waitmovement 0 return CinnabarIsland_Gym_EventScript_RamonApproachRight:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_RAMON, CinnabarIsland_Gym_Movement_RamonApproachRight waitmovement 0 return @@ -496,13 +496,13 @@ CinnabarIsland_Gym_EventScript_BattleDerek:: end CinnabarIsland_Gym_EventScript_DerekApproachLeft:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_DEREK, CinnabarIsland_Gym_Movement_DerekApproachLeft waitmovement 0 return CinnabarIsland_Gym_EventScript_DerekApproachRight:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_DEREK, CinnabarIsland_Gym_Movement_DerekApproachRight waitmovement 0 return @@ -568,13 +568,13 @@ CinnabarIsland_Gym_EventScript_BattleDusty:: end CinnabarIsland_Gym_EventScript_DustyApproachLeft:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_DUSTY, CinnabarIsland_Gym_Movement_DustyApproachLeft waitmovement 0 return CinnabarIsland_Gym_EventScript_DustyApproachRight:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_DUSTY, CinnabarIsland_Gym_Movement_DustyApproachRight waitmovement 0 return @@ -640,13 +640,13 @@ CinnabarIsland_Gym_EventScript_BattleZac:: end CinnabarIsland_Gym_EventScript_ZacApproachLeft:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_ZAC, CinnabarIsland_Gym_Movement_ZacApproachLeft waitmovement 0 return CinnabarIsland_Gym_EventScript_ZacApproachRight:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight applymovement LOCALID_ZAC, CinnabarIsland_Gym_Movement_ZacApproachRight waitmovement 0 return diff --git a/data/maps/FiveIsland_MemorialPillar/scripts.inc b/data/maps/FiveIsland_MemorialPillar/scripts.inc index 336b45902..0fb6a4a24 100644 --- a/data/maps/FiveIsland_MemorialPillar/scripts.inc +++ b/data/maps/FiveIsland_MemorialPillar/scripts.inc @@ -9,11 +9,11 @@ FiveIsland_MemorialPillar_EventScript_MemorialMan:: goto_if_set FLAG_NO_ROOM_FOR_TM42_AT_MEMORIAL_PILLAR, FiveIsland_MemorialPillar_EventScript_ReturnedForTM42 msgbox FiveIsland_MemorialPillar_Text_ScrubScrub closemessage - applymovement LOCALID_MEMORIAL_MAN, Movement_FacePlayer + applymovement LOCALID_MEMORIAL_MAN, Common_Movement_FacePlayer waitmovement 0 delay 45 msgbox FiveIsland_MemorialPillar_Text_YourMonsLookHealthy - applymovement LOCALID_MEMORIAL_MAN, Movement_WalkInPlaceFasterUp + applymovement LOCALID_MEMORIAL_MAN, Common_Movement_WalkInPlaceFasterUp waitmovement 0 msgbox FiveIsland_MemorialPillar_Text_ThisIsWhereIBuriedMyOnix release @@ -54,10 +54,10 @@ FiveIsland_MemorialPillar_EventScript_PlaceLemonade:: removeitem ITEM_LEMONADE msgbox FiveIsland_MemorialPillar_Text_PlacedCanOfLemonade closemessage - applymovement LOCALID_MEMORIAL_MAN, Movement_WalkInPlaceFasterRight + applymovement LOCALID_MEMORIAL_MAN, Common_Movement_WalkInPlaceFasterRight waitmovement 0 delay 45 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 textcolor NPC_TEXT_COLOR_MALE msgbox FiveIsland_MemorialPillar_Text_ThankYouPleaseTakeThis @@ -69,7 +69,7 @@ FiveIsland_MemorialPillar_EventScript_PlaceLemonade:: FiveIsland_MemorialPillar_EventScript_ReceivedTM42:: msgbox FiveIsland_MemorialPillar_Text_BeGoodToYourMonsToo - applymovement LOCALID_MEMORIAL_MAN, Movement_WalkInPlaceFasterUp + applymovement LOCALID_MEMORIAL_MAN, Common_Movement_WalkInPlaceFasterUp waitmovement 0 setflag FLAG_GOT_TM42_AT_MEMORIAL_PILLAR return diff --git a/data/maps/FiveIsland_ResortGorgeous/scripts.inc b/data/maps/FiveIsland_ResortGorgeous/scripts.inc index a9ad66461..6ff14d475 100644 --- a/data/maps/FiveIsland_ResortGorgeous/scripts.inc +++ b/data/maps/FiveIsland_ResortGorgeous/scripts.inc @@ -22,7 +22,7 @@ FiveIsland_ResortGorgeous_EventScript_SelphyReturnHomeScene:: textcolor NPC_TEXT_COLOR_FEMALE msgbox FiveIsland_ResortGorgeous_Text_SelphyThanksYouMayGoNow closemessage - applymovement LOCALID_SELPHY, Movement_WalkInPlaceFasterUp + applymovement LOCALID_SELPHY, Common_Movement_WalkInPlaceFasterUp waitmovement 0 opendoor 39, 8 waitdooranim diff --git a/data/maps/FiveIsland_ResortGorgeous_House/scripts.inc b/data/maps/FiveIsland_ResortGorgeous_House/scripts.inc index 36ada6601..885ae0d87 100644 --- a/data/maps/FiveIsland_ResortGorgeous_House/scripts.inc +++ b/data/maps/FiveIsland_ResortGorgeous_House/scripts.inc @@ -44,7 +44,7 @@ FiveIsland_ResortGorgeous_House_EventScript_ShowRequestedMon:: waitmovement 0 textcolor NPC_TEXT_COLOR_MALE msgbox FiveIsland_ResortGorgeous_House_Text_ButlerYesMyLady - applymovement LOCALID_SELPHY, Movement_WalkInPlaceFasterUp + applymovement LOCALID_SELPHY, Common_Movement_WalkInPlaceFasterUp waitmovement 0 textcolor NPC_TEXT_COLOR_FEMALE msgbox FiveIsland_ResortGorgeous_House_Text_SelphyGiveTokenOfAppreciation @@ -65,25 +65,25 @@ FiveIsland_ResortGorgeous_House_EventScript_ShowRequestedMon:: end FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerNorth:: - applymovement LOCALID_SELPHY, Movement_WalkInPlaceFasterDown + applymovement LOCALID_SELPHY, Common_Movement_WalkInPlaceFasterDown applymovement LOCALID_BUTLER, FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerNorth waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerSouth:: applymovement LOCALID_BUTLER, FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerSouth waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return FiveIsland_ResortGorgeous_House_EventScript_ButlerApproachPlayerEast:: - applymovement LOCALID_SELPHY, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_SELPHY, Common_Movement_WalkInPlaceFasterLeft applymovement LOCALID_BUTLER, FiveIsland_ResortGorgeous_House_Movement_ButlerApproachPlayerEast waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return diff --git a/data/maps/FiveIsland_RocketWarehouse/scripts.inc b/data/maps/FiveIsland_RocketWarehouse/scripts.inc index a5b30422f..26dd0a5b5 100644 --- a/data/maps/FiveIsland_RocketWarehouse/scripts.inc +++ b/data/maps/FiveIsland_RocketWarehouse/scripts.inc @@ -43,7 +43,7 @@ FiveIsland_RocketWarehouse_EventScript_Computer:: FiveIsland_RocketWarehouse_EventScript_Admin2Trigger:: lockall - applymovement LOCALID_ADMIN2, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_ADMIN2, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 setvar VAR_MAP_SCENE_ROCKET_WAREHOUSE, 1 releaseall @@ -100,7 +100,7 @@ FiveIsland_RocketWarehouse_EventScript_DefeatedAdmin2:: end FiveIsland_RocketWarehouse_EventScript_PlayerFaceAdmin2:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 return @@ -138,7 +138,7 @@ FiveIsland_RocketWarehouse_EventScript_DefeatedAdmin1:: FiveIsland_RocketWarehouse_EventScript_PlayerFaceAdmin1:: goto_if_eq PLAYER_X_POS, 27, EventScript_Return - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 return @@ -153,17 +153,17 @@ FiveIsland_RocketWarehouse_EventScript_AdminWalkToSwitch:: return FiveIsland_RocketWarehouse_EventScript_AdminFaceSwitch:: - applymovement LOCALID_ADMIN1, Movement_WalkInPlaceFasterUp + applymovement LOCALID_ADMIN1, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return FiveIsland_RocketWarehouse_EventScript_AdminFacePlayerLeft:: - applymovement LOCALID_ADMIN1, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_ADMIN1, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return FiveIsland_RocketWarehouse_EventScript_AdminFacePlayerDown:: - applymovement LOCALID_ADMIN1, Movement_WalkInPlaceFasterDown + applymovement LOCALID_ADMIN1, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return diff --git a/data/maps/FourIsland/scripts.inc b/data/maps/FourIsland/scripts.inc index be6dcd7cf..8d19847d2 100644 --- a/data/maps/FourIsland/scripts.inc +++ b/data/maps/FourIsland/scripts.inc @@ -29,12 +29,12 @@ FourIsland_OnFrame:: FourIsland_EventScript_RivalScene:: lockall textcolor NPC_TEXT_COLOR_MALE - applymovement LOCALID_RIVAL, Movement_WalkInPlaceFasterDown + applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown waitmovement 0 playbgm MUS_ENCOUNTER_RIVAL, 0 - applymovement LOCALID_RIVAL, Movement_ExclamationMark + applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_RIVAL, Movement_Delay48 + applymovement LOCALID_RIVAL, Common_Movement_Delay48 waitmovement 0 delay 25 applymovement LOCALID_RIVAL, FourIsland_Movement_RivalApproach diff --git a/data/maps/FourIsland_IcefallCave_Back/scripts.inc b/data/maps/FourIsland_IcefallCave_Back/scripts.inc index 987a08764..67faf20ac 100644 --- a/data/maps/FourIsland_IcefallCave_Back/scripts.inc +++ b/data/maps/FourIsland_IcefallCave_Back/scripts.inc @@ -25,19 +25,19 @@ FourIsland_IcefallCave_Back_EventScript_LoreleiRocketsScene:: msgbox FourIsland_IcefallCave_Back_Text_ShutItLadyLeaveUsBe closemessage playse SE_PIN - applymovement LOCALID_LORELEI, Movement_ExclamationMark + applymovement LOCALID_LORELEI, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_LORELEI, Movement_WalkInPlaceFasterDown + applymovement LOCALID_LORELEI, Common_Movement_WalkInPlaceFasterDown waitmovement 0 - applymovement LOCALID_LORELEI, Movement_Delay48 + applymovement LOCALID_LORELEI, Common_Movement_Delay48 waitmovement 0 textcolor NPC_TEXT_COLOR_FEMALE msgbox FourIsland_IcefallCave_Back_Text_LoreleiPlayerHelpMeKickPoachersOut closemessage - applymovement LOCALID_LORELEI, Movement_WalkInPlaceFasterRight + applymovement LOCALID_LORELEI, Common_Movement_WalkInPlaceFasterRight waitmovement 0 delay 18 - applymovement LOCALID_LORELEI, Movement_WalkInPlaceFasterDown + applymovement LOCALID_LORELEI, Common_Movement_WalkInPlaceFasterDown waitmovement 0 delay 35 applymovement LOCALID_ROCKET3, FourIsland_IcefallCave_Back_Movement_Rocket3FaceLorelei @@ -81,7 +81,7 @@ FourIsland_IcefallCave_Back_EventScript_LoreleiRocketsScene:: delay 50 applymovement LOCALID_LORELEI, FourIsland_IcefallCave_Back_Movement_LoreleiWalkToPlayer waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 textcolor NPC_TEXT_COLOR_FEMALE msgbox FourIsland_IcefallCave_Back_Text_ThankYouThisIsAwful diff --git a/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc b/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc index 474f29023..77cd336ce 100644 --- a/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc +++ b/data/maps/FuchsiaCity_SafariZone_Entrance/scripts.inc @@ -100,7 +100,7 @@ FuchsiaCity_SafariZone_Entrance_EventScript_EntryTriggerLeft:: FuchsiaCity_SafariZone_Entrance_EventScript_AskEnterSafariZone:: textcolor NPC_TEXT_COLOR_MALE msgbox FuchsiaCity_SafariZone_Entrance_Text_WelcomeToSafariZone - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 showmoneybox 0, 0 msgbox FuchsiaCity_SafariZone_Entrance_Text_PlaySafariGameFor500, MSGBOX_YESNO diff --git a/data/maps/MtEmber_Exterior/scripts.inc b/data/maps/MtEmber_Exterior/scripts.inc index d5519c96a..6bfe3cbfa 100644 --- a/data/maps/MtEmber_Exterior/scripts.inc +++ b/data/maps/MtEmber_Exterior/scripts.inc @@ -38,7 +38,7 @@ MtEmber_Exterior_EventScript_Grunt1Defeated:: end MtEmber_Exterior_EventScript_BattleGrunt1:: - applymovement LOCALID_GRUNT1, Movement_FacePlayer + applymovement LOCALID_GRUNT1, Common_Movement_FacePlayer waitmovement 0 playbgm MUS_ENCOUNTER_ROCKET, 0 msgbox MtEmber_Exterior_Text_Grunt1Intro @@ -65,7 +65,7 @@ MtEmber_Exterior_EventScript_Grunt2:: goto_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 4, MtEmber_Exterior_EventScript_BattleGrunt2 msgbox MtEmber_Exterior_Text_YoureInTheWayGetLost closemessage - applymovement LOCALID_GRUNT2, Movement_FaceOriginalDirection + applymovement LOCALID_GRUNT2, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -91,18 +91,18 @@ MtEmber_Exterior_EventScript_RocketPasswordScene:: message MtEmber_Exterior_Text_WhatsPasswordAgain waitmessage playse SE_PIN - applymovement LOCALID_GRUNT2, Movement_QuestionMark + applymovement LOCALID_GRUNT2, Common_Movement_QuestionMark waitmovement 0 waitbuttonpress msgbox MtEmber_Exterior_Text_FirstPasswordGoldeen - applymovement LOCALID_GRUNT1, Movement_WalkInPlaceFasterDown + applymovement LOCALID_GRUNT1, Common_Movement_WalkInPlaceFasterDown waitmovement 0 playse SE_PIN - applymovement LOCALID_GRUNT1, Movement_ExclamationMark + applymovement LOCALID_GRUNT1, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_GRUNT1, Movement_Delay48 + applymovement LOCALID_GRUNT1, Common_Movement_Delay48 waitmovement 0 - applymovement LOCALID_GRUNT2, Movement_WalkInPlaceFasterDown + applymovement LOCALID_GRUNT2, Common_Movement_WalkInPlaceFasterDown waitmovement 0 call MtEmber_Exterior_EventScript_RocketsFaceDown msgbox MtEmber_Exterior_Text_SnoopsBeenListeningIn diff --git a/data/maps/MtMoon_B2F/scripts.inc b/data/maps/MtMoon_B2F/scripts.inc index 32213a5b4..d69d69d96 100644 --- a/data/maps/MtMoon_B2F/scripts.inc +++ b/data/maps/MtMoon_B2F/scripts.inc @@ -17,7 +17,7 @@ MtMoon_B2F_EventScript_ShowFossils:: MtMoon_B2F_EventScript_MiguelTrigger:: lockall - applymovement LOCALID_MIGUEL, Movement_WalkInPlaceFasterRight + applymovement LOCALID_MIGUEL, Common_Movement_WalkInPlaceFasterRight waitmovement 0 call MtMoon_B2F_EventScript_BattleMiguel releaseall diff --git a/data/maps/OneIsland_PokemonCenter_1F/scripts.inc b/data/maps/OneIsland_PokemonCenter_1F/scripts.inc index 05c082315..879be6934 100644 --- a/data/maps/OneIsland_PokemonCenter_1F/scripts.inc +++ b/data/maps/OneIsland_PokemonCenter_1F/scripts.inc @@ -63,46 +63,46 @@ OneIsland_PokemonCenter_1F_EventScript_MeetCelioScene:: applymovement LOCALID_BILL, OneIsland_PokemonCenter_1F_Movement_BillWalkToCelio waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_BillHeyThereCelio - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 playse SE_PIN - applymovement LOCALID_CELIO, Movement_ExclamationMark + applymovement LOCALID_CELIO, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_CELIO, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 - applymovement LOCALID_CELIO, Movement_Delay48 + applymovement LOCALID_CELIO, Common_Movement_Delay48 waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_CelioCantBelieveYouCameOut msgbox OneIsland_PokemonCenter_1F_Text_BillHowsYourResearchComing - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterDown - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_ThisIsMyBuddyCelio - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterRight + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterRight waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 call_if_set FLAG_SYS_GAME_CLEAR, OneIsland_PokemonCenter_1F_EventScript_IntroducePlayerChamp call_if_unset FLAG_SYS_GAME_CLEAR, OneIsland_PokemonCenter_1F_EventScript_IntroducePlayerNotChamp - applymovement LOCALID_CELIO, Movement_WalkInPlaceFasterDown + applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterDown waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_CelioThatsReallyImpressive msgbox OneIsland_PokemonCenter_1F_Text_BillBringMeUpToSpeed - applymovement LOCALID_CELIO, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_CelioPCsCantLinkWithYours closemessage - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterUp + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterUp waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_BillLetMeHelpYou - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterDown waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_CanYouDeliverThisMeteoritePlayer msgreceiveditem OneIsland_PokemonCenter_1F_Text_AcceptedMeteoriteFromBill, ITEM_METEORITE, 1, MUS_OBTAIN_KEY_ITEM additem ITEM_METEORITE - applymovement LOCALID_CELIO, Movement_WalkInPlaceFasterDown + applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterDown waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_CelioPleaseTakeThis giveitem_msg OneIsland_PokemonCenter_1F_Text_ObtainedTriPass, ITEM_TRI_PASS, 1, MUS_OBTAIN_KEY_ITEM @@ -112,9 +112,9 @@ OneIsland_PokemonCenter_1F_EventScript_MeetCelioScene:: setflag FLAG_SYS_SEVII_MAP_123 msgbox OneIsland_PokemonCenter_1F_Text_BillCatchYouLater closemessage - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterUp + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterUp waitmovement 0 - applymovement LOCALID_CELIO, Movement_WalkInPlaceFasterUp + applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterUp waitmovement 0 setflag FLAG_SYS_PC_STORAGE_DISABLED setvar VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 1 @@ -192,7 +192,7 @@ OneIsland_PokemonCenter_1F_EventScript_Bill:: end OneIsland_PokemonCenter_1F_EventScript_BillGoTakeStroll:: - applymovement LOCALID_BILL, Movement_FacePlayer + applymovement LOCALID_BILL, Common_Movement_FacePlayer waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_GotPCWorkingStrollAWhileMore release @@ -212,7 +212,7 @@ OneIsland_PokemonCenter_1F_EventScript_Celio:: goto_if_eq VAR_MAP_SCENE_ONE_ISLAND_POKEMON_CENTER_1F, 3, OneIsland_PokemonCenter_1F_EventScript_CelioPlayerMissingNationalDex msgbox OneIsland_PokemonCenter_1F_Text_SorryForBeingPoorHost closemessage - applymovement LOCALID_CELIO, Movement_FaceOriginalDirection + applymovement LOCALID_CELIO, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -272,7 +272,7 @@ OneIsland_PokemonCenter_1F_EventScript_GiveCelioSapphire:: call OneIsland_PokemonCenter_1F_EventScript_SetNetworkMachineOn special DrawWholeMapView msgbox OneIsland_PokemonCenter_1F_Text_LinkedUpWithLanette - applymovement LOCALID_CELIO, Movement_FacePlayer + applymovement LOCALID_CELIO, Common_Movement_FacePlayer waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_ManagedToLinkWithHoennThankYou special SetPostgameFlags @@ -304,7 +304,7 @@ OneIsland_PokemonCenter_1F_EventScript_GiveCelioRuby:: call OneIsland_PokemonCenter_1F_EventScript_SetRubyMetatile special DrawWholeMapView delay 30 - applymovement LOCALID_CELIO, Movement_FacePlayer + applymovement LOCALID_CELIO, Common_Movement_FacePlayer waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_MayIAskOneMoreFavor, MSGBOX_YESNO goto_if_eq VAR_RESULT, NO, OneIsland_PokemonCenter_1F_EventScript_DeclineHelpCelio @@ -344,10 +344,10 @@ OneIsland_PokemonCenter_1F_EventScript_CelioWaitingForRuby:: OneIsland_PokemonCenter_1F_EventScript_CelioRequestRuby:: msgbox OneIsland_PokemonCenter_1F_Text_CelioCaughtMoreMonMaybeICanBeUseful - applymovement LOCALID_CELIO, Movement_WalkInPlaceFasterUp + applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterUp waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_YoullBeTradingFromTrainersFarAway - applymovement LOCALID_CELIO, Movement_FacePlayer + applymovement LOCALID_CELIO, Common_Movement_FacePlayer waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_NeedsSpecialGemstone setvar VAR_MAP_SCENE_MT_EMBER_EXTERIOR, 1 @@ -440,7 +440,7 @@ OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandTriggerBottom:: OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandScene:: textcolor NPC_TEXT_COLOR_MALE playse SE_PIN - applymovement LOCALID_BILL, Movement_ExclamationMark + applymovement LOCALID_BILL, Common_Movement_ExclamationMark waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_BillOhHeyPlayer closemessage @@ -450,30 +450,30 @@ OneIsland_PokemonCenter_1F_EventScript_LeaveOneIslandScene:: call_if_eq VAR_TEMP_1, 4, OneIsland_PokemonCenter_1F_EventScript_PlayerWalkToBillBottom delay 10 msgbox OneIsland_PokemonCenter_1F_Text_BillWeGotItDone - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_CelioJobWentQuick - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterDown waitmovement 0 - applymovement LOCALID_CELIO, Movement_WalkInPlaceFasterUp + applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterUp waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_BillYouveLearnedALot msgbox OneIsland_PokemonCenter_1F_Text_CelioOhReallyEhehe closemessage - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 delay 10 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 delay 15 msgbox OneIsland_PokemonCenter_1F_Text_BillWeShouldHeadBackToKanto closemessage - applymovement LOCALID_BILL, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BILL, Common_Movement_WalkInPlaceFasterDown waitmovement 0 delay 15 - applymovement LOCALID_CELIO, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_CELIO, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 msgbox OneIsland_PokemonCenter_1F_Text_CelioPromiseIllShowYouAroundSometime closemessage diff --git a/data/maps/PalletTown/scripts.inc b/data/maps/PalletTown/scripts.inc index 00202f054..95f757e71 100644 --- a/data/maps/PalletTown/scripts.inc +++ b/data/maps/PalletTown/scripts.inc @@ -190,10 +190,10 @@ PalletTown_EventScript_OakTrigger:: waitmessage delay 85 closemessage - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 playse SE_PIN - applymovement OBJ_EVENT_ID_PLAYER, Movement_ExclamationMark + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_ExclamationMark waitmovement 0 delay 30 addobject LOCALID_PROF_OAK @@ -332,12 +332,12 @@ PalletTown_EventScript_SignLady:: goto_if_eq SIGN_LADY_READY, TRUE, PalletTown_EventScript_SignLadyStartShowSign goto_if_set FLAG_TEMP_2, PalletTown_EventScript_SignLadyGoReadSign msgbox PalletTown_Text_HmmIsThatRight - applymovement LOCALID_SIGN_LADY, Movement_FacePlayer + applymovement LOCALID_SIGN_LADY, Common_Movement_FacePlayer waitmovement 0 playse SE_PIN - applymovement LOCALID_SIGN_LADY, Movement_ExclamationMark + applymovement LOCALID_SIGN_LADY, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_SIGN_LADY, Movement_Delay48 + applymovement LOCALID_SIGN_LADY, Common_Movement_Delay48 waitmovement 0 msgbox PalletTown_Text_OhLookLook closemessage @@ -359,21 +359,21 @@ PalletTown_EventScript_SignLadyMoveOutOfWayLeft:: return PalletTown_EventScript_SignLadyDone:: - applymovement LOCALID_SIGN_LADY, Movement_FacePlayer + applymovement LOCALID_SIGN_LADY, Common_Movement_FacePlayer waitmovement 0 msgbox PalletTown_Text_RaisingMonsToo release end PalletTown_EventScript_SignLadyGoReadSign:: - applymovement LOCALID_SIGN_LADY, Movement_FacePlayer + applymovement LOCALID_SIGN_LADY, Common_Movement_FacePlayer waitmovement 0 msgbox PalletTown_Text_ReadItReadIt release end PalletTown_EventScript_SignLadyJustShowedSign:: - applymovement LOCALID_SIGN_LADY, Movement_FacePlayer + applymovement LOCALID_SIGN_LADY, Common_Movement_FacePlayer waitmovement 0 msgbox PalletTown_Text_SignsAreUsefulArentThey release @@ -421,8 +421,8 @@ PalletTown_EventScript_TrainerTips:: PalletTown_EventScript_SignLadyTrigger:: lockall - applymovement LOCALID_SIGN_LADY, Movement_WalkInPlaceFasterRight - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_SIGN_LADY, Common_Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 call PalletTown_EventScript_SignLadyShowSign releaseall @@ -445,7 +445,7 @@ PalletTown_EventScript_SignLadyShowSign:: return PalletTown_EventScript_SignLadyStartShowSign:: - applymovement LOCALID_SIGN_LADY, Movement_FacePlayer + applymovement LOCALID_SIGN_LADY, Common_Movement_FacePlayer waitmovement 0 call PalletTown_EventScript_SignLadyShowSign release diff --git a/data/maps/PalletTown_PlayersHouse_1F/scripts.inc b/data/maps/PalletTown_PlayersHouse_1F/scripts.inc index 01028e6fb..a5a7b35bb 100644 --- a/data/maps/PalletTown_PlayersHouse_1F/scripts.inc +++ b/data/maps/PalletTown_PlayersHouse_1F/scripts.inc @@ -11,7 +11,7 @@ PalletTown_PlayersHouse_1F_EventScript_Mom:: call_if_eq VAR_RESULT, MALE, PalletTown_PlayersHouse_1F_EventScript_MomOakLookingForYouMale call_if_eq VAR_RESULT, FEMALE, PalletTown_PlayersHouse_1F_EventScript_MomOakLookingForYouFemale closemessage - applymovement LOCALID_MOM, Movement_FaceOriginalDirection + applymovement LOCALID_MOM, Common_Movement_FaceOriginalDirection waitmovement 0 release end diff --git a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc index 8b646176d..0bd06bebb 100644 --- a/data/maps/PalletTown_ProfessorOaksLab/scripts.inc +++ b/data/maps/PalletTown_ProfessorOaksLab/scripts.inc @@ -140,7 +140,7 @@ PalletTown_ProfessorOaksLab_EventScript_NationalDexSceneRivalEnterEastWest:: setobjectxyperm LOCALID_RIVAL, 6, 10 addobject LOCALID_RIVAL playbgm MUS_ENCOUNTER_RIVAL, 0 - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterDown + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterDown applymovement OBJ_EVENT_ID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchRivalEnterEastWest applymovement LOCALID_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter waitmovement 0 @@ -150,18 +150,18 @@ PalletTown_ProfessorOaksLab_EventScript_NationalDexSceneRivalEnterSouth:: setobjectxyperm LOCALID_RIVAL, 6, 10 addobject LOCALID_RIVAL playbgm MUS_ENCOUNTER_RIVAL, 0 - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterDown + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterDown applymovement LOCALID_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter waitmovement 0 return PalletTown_ProfessorOaksLab_EventScript_PlayerFaceOakNorth:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return PalletTown_ProfessorOaksLab_EventScript_PlayerFaceOakWest:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return @@ -215,7 +215,7 @@ PalletTown_ProfessorOaksLab_ChooseStarterScene:: clearflag FLAG_HIDE_OAK_IN_HIS_LAB applymovement OBJ_EVENT_ID_PLAYER, PalletTown_ProfessorOaksLab_Movement_PlayerEnter waitmovement 0 - applymovement LOCALID_RIVAL, Movement_WalkInPlaceFasterUp + applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterUp waitmovement 0 clearflag FLAG_DONT_TRANSITION_MUSIC savebgm MUS_DUMMY @@ -262,7 +262,7 @@ PalletTown_ProfessorOaksLab_Movement_RivalReact:: PalletTown_ProfessorOaksLab_EventScript_LeaveStarterSceneTrigger:: lockall textcolor NPC_TEXT_COLOR_MALE - applymovement LOCALID_PROF_OAK, Movement_FaceDown + applymovement LOCALID_PROF_OAK, Common_Movement_FaceDown waitmovement 0 msgbox PalletTown_ProfessorOaksLab_Text_OakHeyDontGoAwayYet closemessage @@ -296,13 +296,13 @@ PalletTown_ProfessorOaksLab_EventScript_RivalBattleTriggerRight:: PalletTown_ProfessorOaksLab_EventScript_RivalBattle:: textcolor NPC_TEXT_COLOR_MALE playbgm MUS_ENCOUNTER_RIVAL, 0 - applymovement LOCALID_RIVAL, Movement_WalkInPlaceFasterDown + applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 msgbox PalletTown_ProfessorOaksLab_Text_RivalLetsCheckOutMons closemessage - applymovement LOCALID_PROF_OAK, Movement_FaceDown + applymovement LOCALID_PROF_OAK, Common_Movement_FaceDown waitmovement 0 goto_if_eq VAR_STARTER_MON, 0, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleCharmander goto_if_eq VAR_STARTER_MON, 1, PalletTown_ProfessorOaksLab_EventScript_RivalApproachForBattleBulbasaur @@ -625,9 +625,9 @@ PalletTown_ProfessorOaksLab_EventScript_ReceiveDexScene:: closemessage delay 30 playse SE_PIN - applymovement LOCALID_PROF_OAK, Movement_ExclamationMark + applymovement LOCALID_PROF_OAK, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_PROF_OAK, Movement_Delay48 + applymovement LOCALID_PROF_OAK, Common_Movement_Delay48 waitmovement 0 call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalSouth call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalEast @@ -644,7 +644,7 @@ PalletTown_ProfessorOaksLab_EventScript_ReceiveDexScene:: delay 40 msgbox PalletTown_ProfessorOaksLab_Text_OakTakeTheseWithYou closemessage - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterUp + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterUp waitmovement 0 removeobject LOCALID_POKEDEX_1 delay 10 @@ -804,7 +804,7 @@ PalletTown_ProfessorOaksLab_EventScript_DexCompleted:: call_if_eq VAR_FACING, DIR_SOUTH, PalletTown_ProfessorOaksLab_EventScript_OakExcitedSouth call_if_eq VAR_FACING, DIR_EAST, PalletTown_ProfessorOaksLab_EventScript_OakExcitedEast call_if_eq VAR_FACING, DIR_WEST, PalletTown_ProfessorOaksLab_EventScript_OakExcitedWest - applymovement LOCALID_PROF_OAK, Movement_FacePlayer + applymovement LOCALID_PROF_OAK, Common_Movement_FacePlayer waitmovement 0 closemessage delay 70 @@ -966,7 +966,7 @@ PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterNorth:: PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterEastWest:: setobjectxyperm LOCALID_RIVAL, 6, 10 addobject LOCALID_RIVAL - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterDown + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterDown applymovement OBJ_EVENT_ID_PLAYER, PalletTown_ProfessorOaksLab_Movement_WatchRivalEnterEastWest applymovement LOCALID_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter waitmovement 0 @@ -975,52 +975,52 @@ PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterEastWest:: PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalEnterSouth:: setobjectxyperm LOCALID_RIVAL, 6, 10 addobject LOCALID_RIVAL - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterDown + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterDown applymovement LOCALID_RIVAL, PalletTown_ProfessorOaksLab_Movement_RivalEnter waitmovement 0 return PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalSouth:: - applymovement LOCALID_PROF_OAK, Movement_FacePlayer + applymovement LOCALID_PROF_OAK, Common_Movement_FacePlayer waitmovement 0 delay 15 - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterDown + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalWest:: - applymovement LOCALID_PROF_OAK, Movement_FacePlayer + applymovement LOCALID_PROF_OAK, Common_Movement_FacePlayer waitmovement 0 delay 15 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalEast:: - applymovement LOCALID_PROF_OAK, Movement_FacePlayer + applymovement LOCALID_PROF_OAK, Common_Movement_FacePlayer waitmovement 0 delay 15 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerNorth:: - applymovement LOCALID_RIVAL, Movement_FacePlayer - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_RIVAL, Common_Movement_FacePlayer + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerSouth:: - applymovement LOCALID_RIVAL, Movement_WalkInPlaceFasterUp - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return PalletTown_ProfessorOaksLab_EventScript_DexSceneRivalFacePlayerEastWest:: - applymovement LOCALID_RIVAL, Movement_FacePlayer - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement LOCALID_RIVAL, Common_Movement_FacePlayer + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return @@ -1036,7 +1036,7 @@ PalletTown_ProfessorOaksLab_EventScript_RivalExit:: return PalletTown_ProfessorOaksLab_EventScript_DexSceneOakFacePlayerAndRivalNorth:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return @@ -1088,7 +1088,7 @@ PalletTown_ProfessorOaksLab_EventScript_BulbasaurBall:: end PalletTown_ProfessorOaksLab_EventScript_ConfirmStarterChoice:: - applymovement LOCALID_PROF_OAK, Movement_FaceRight + applymovement LOCALID_PROF_OAK, Common_Movement_FaceRight waitmovement 0 showmonpic PLAYER_STARTER_SPECIES, 10, 3 textcolor NPC_TEXT_COLOR_MALE diff --git a/data/maps/PalletTown_RivalsHouse/scripts.inc b/data/maps/PalletTown_RivalsHouse/scripts.inc index 7dbca25da..1f0fd3381 100644 --- a/data/maps/PalletTown_RivalsHouse/scripts.inc +++ b/data/maps/PalletTown_RivalsHouse/scripts.inc @@ -32,7 +32,7 @@ PalletTown_RivalsHouse_EventScript_Daisy:: goto_if_ge VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB, 1, PalletTown_RivalsHouse_EventScript_HeardBattledRival msgbox PalletTown_RivalsHouse_Text_HiBrothersAtLab closemessage - applymovement LOCALID_DAISY, Movement_FaceOriginalDirection + applymovement LOCALID_DAISY, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -136,12 +136,12 @@ PalletTown_RivalsHouse_EventScript_GiveTownMap:: closemessage checkitemspace ITEM_TOWN_MAP goto_if_eq VAR_RESULT, FALSE, PalletTown_RivalsHouse_EventScript_NoRoomForTownMap - applymovement LOCALID_DAISY, Movement_WalkInPlaceFasterRight + applymovement LOCALID_DAISY, Common_Movement_WalkInPlaceFasterRight waitmovement 0 removeobject LOCALID_TOWN_MAP setvar VAR_MAP_SCENE_PALLET_TOWN_RIVALS_HOUSE, 2 delay 15 - applymovement LOCALID_DAISY, Movement_FacePlayer + applymovement LOCALID_DAISY, Common_Movement_FacePlayer waitmovement 0 delay 12 giveitem_msg PalletTown_RivalsHouse_Text_ReceivedTownMapFromDaisy, ITEM_TOWN_MAP, 1, MUS_OBTAIN_KEY_ITEM diff --git a/data/maps/PewterCity/scripts.inc b/data/maps/PewterCity/scripts.inc index e559e3322..3cb0e4ccb 100644 --- a/data/maps/PewterCity/scripts.inc +++ b/data/maps/PewterCity/scripts.inc @@ -691,9 +691,9 @@ PewterCity_EventScript_AideGiveRunningShoes:: call_if_eq VAR_TEMP_1, 3, PewterCity_EventScript_AideNoticePlayer waitse playse SE_PIN - applymovement LOCALID_AIDE, Movement_ExclamationMark + applymovement LOCALID_AIDE, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_AIDE, Movement_Delay48 + applymovement LOCALID_AIDE, Common_Movement_Delay48 waitmovement 0 msgbox PewterCity_Text_OhPlayer call_if_eq VAR_TEMP_1, 0, PewterCity_EventScript_AideApproachPlayer0 @@ -728,7 +728,7 @@ PewterCity_EventScript_AideGiveRunningShoes:: return PewterCity_EventScript_AideNoticePlayer:: - applymovement LOCALID_AIDE, Movement_WalkInPlaceFasterDown + applymovement LOCALID_AIDE, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return @@ -740,7 +740,7 @@ PewterCity_EventScript_AideApproachPlayer0:: PewterCity_EventScript_AideApproachPlayer1:: closemessage - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return @@ -748,7 +748,7 @@ PewterCity_EventScript_AideApproachPlayer2:: closemessage applymovement LOCALID_AIDE, PewterCity_Movement_AideApproachPlayerMid waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return @@ -756,7 +756,7 @@ PewterCity_EventScript_AideApproachPlayer3:: closemessage applymovement LOCALID_AIDE, PewterCity_Movement_AideApproachPlayerBottom waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return diff --git a/data/maps/PewterCity_House1/scripts.inc b/data/maps/PewterCity_House1/scripts.inc index 9003913dd..d4dfee4e8 100644 --- a/data/maps/PewterCity_House1/scripts.inc +++ b/data/maps/PewterCity_House1/scripts.inc @@ -18,7 +18,7 @@ PewterCity_House1_EventScript_Nidoran:: lock faceplayer call PewterCity_House1_EventScript_DoNidoranCry - applymovement LOCALID_NIDORAN, Movement_FaceOriginalDirection + applymovement LOCALID_NIDORAN, Common_Movement_FaceOriginalDirection waitmovement 0 release end diff --git a/data/maps/PewterCity_Museum_1F/scripts.inc b/data/maps/PewterCity_Museum_1F/scripts.inc index e41feef0d..28c09240b 100644 --- a/data/maps/PewterCity_Museum_1F/scripts.inc +++ b/data/maps/PewterCity_Museum_1F/scripts.inc @@ -22,14 +22,14 @@ PewterCity_Museum_1F_EventScript_Scientist1BehindCounter:: PewterCity_Museum_1F_EventScript_AmberHasGeneticMatter:: msgbox PewterCity_Museum_1F_Text_AmberContainsGeneticMatter - applymovement LOCALID_SCIENTIST1, Movement_FaceOriginalDirection + applymovement LOCALID_SCIENTIST1, Common_Movement_FaceOriginalDirection waitmovement 0 release end PewterCity_Museum_1F_EventScript_ExplainAmber:: msgbox PewterCity_Museum_1F_Text_AmberIsFossilizedSap - applymovement LOCALID_SCIENTIST1, Movement_FaceOriginalDirection + applymovement LOCALID_SCIENTIST1, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -37,7 +37,7 @@ PewterCity_Museum_1F_EventScript_ExplainAmber:: PewterCity_Museum_1F_EventScript_EntranceTriggerLeft:: lockall setvar VAR_TEMP_1, 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 goto PewterCity_Museum_1F_EventScript_EntranceTrigger end @@ -45,7 +45,7 @@ PewterCity_Museum_1F_EventScript_EntranceTriggerLeft:: PewterCity_Museum_1F_EventScript_EntranceTriggerMid:: lockall setvar VAR_TEMP_1, 1 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 goto PewterCity_Museum_1F_EventScript_EntranceTrigger end @@ -53,7 +53,7 @@ PewterCity_Museum_1F_EventScript_EntranceTriggerMid:: PewterCity_Museum_1F_EventScript_EntranceTriggerRight:: lockall setvar VAR_TEMP_1, 2 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 goto PewterCity_Museum_1F_EventScript_EntranceTrigger end diff --git a/data/maps/PokemonLeague_BrunosRoom/scripts.inc b/data/maps/PokemonLeague_BrunosRoom/scripts.inc index a54266d4e..b1d6de506 100644 --- a/data/maps/PokemonLeague_BrunosRoom/scripts.inc +++ b/data/maps/PokemonLeague_BrunosRoom/scripts.inc @@ -100,16 +100,16 @@ PokemonLeague_BrunosRoom_EventScript_DefeatedBruno:: end PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayLeft:: - applymovement LOCALID_BRUNO, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_BRUNO, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayRight:: - applymovement LOCALID_BRUNO, Movement_WalkInPlaceFasterRight + applymovement LOCALID_BRUNO, Common_Movement_WalkInPlaceFasterRight waitmovement 0 return PokemonLeague_BrunosRoom_EventScript_BrunoLookAwayDown:: - applymovement LOCALID_BRUNO, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BRUNO, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return diff --git a/data/maps/PokemonLeague_ChampionsRoom/scripts.inc b/data/maps/PokemonLeague_ChampionsRoom/scripts.inc index c45d61e8b..cdbb93a2e 100644 --- a/data/maps/PokemonLeague_ChampionsRoom/scripts.inc +++ b/data/maps/PokemonLeague_ChampionsRoom/scripts.inc @@ -78,12 +78,12 @@ PokemonLeague_ChampionsRoom_EventScript_EnterRoom:: specialvar VAR_RESULT, GetStarterSpecies bufferspeciesname STR_VAR_1, VAR_RESULT msgbox PokemonLeague_ChampionsRoom_Text_OakCongratulations - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterRight - applymovement LOCALID_RIVAL, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterRight + applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 msgbox PokemonLeague_ChampionsRoom_Text_OakImDisappointedRival closemessage - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterDown + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterDown waitmovement 0 delay 20 msgbox PokemonLeague_ChampionsRoom_Text_OakPlayerComeWithMe diff --git a/data/maps/PokemonLeague_HallOfFame/scripts.inc b/data/maps/PokemonLeague_HallOfFame/scripts.inc index 426f594b9..e8fae588d 100644 --- a/data/maps/PokemonLeague_HallOfFame/scripts.inc +++ b/data/maps/PokemonLeague_HallOfFame/scripts.inc @@ -22,14 +22,14 @@ PokemonLeague_HallOfFame_EventScript_EnterRoom:: textcolor NPC_TEXT_COLOR_MALE applymovement OBJ_EVENT_ID_PLAYER, PokemonLeague_HallOfFame_Movement_EnterRoom waitmovement 0 - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterLeft - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 delay 18 msgbox PokemonLeague_HallOfFame_Text_OakCongratulations closemessage - applymovement LOCALID_PROF_OAK, Movement_WalkInPlaceFasterUp - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement LOCALID_PROF_OAK, Common_Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 delay 20 dofieldeffect FLDEFF_HALL_OF_FAME_RECORD diff --git a/data/maps/PokemonTower_2F/scripts.inc b/data/maps/PokemonTower_2F/scripts.inc index 3d7a6b715..e03faf21f 100644 --- a/data/maps/PokemonTower_2F/scripts.inc +++ b/data/maps/PokemonTower_2F/scripts.inc @@ -24,9 +24,9 @@ PokemonTower_2F_EventScript_Rival:: playbgm MUS_ENCOUNTER_RIVAL, 0 call_if_eq VAR_TEMP_1, 0, PokemonTower_2F_EventScript_RivalFacePlayerRight call_if_eq VAR_TEMP_1, 1, PokemonTower_2F_EventScript_RivalFacePlayerDown - applymovement LOCALID_RIVAL, Movement_ExclamationMark + applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_RIVAL, Movement_Delay48 + applymovement LOCALID_RIVAL, Common_Movement_Delay48 waitmovement 0 msgbox PokemonTower_2F_Text_RivalIntro setvar VAR_LAST_TALKED, LOCALID_RIVAL @@ -47,14 +47,14 @@ PokemonTower_2F_EventScript_Rival:: end PokemonTower_2F_EventScript_RivalFacePlayerRight:: - applymovement LOCALID_RIVAL, Movement_WalkInPlaceFasterRight - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return PokemonTower_2F_EventScript_RivalFacePlayerDown:: - applymovement LOCALID_RIVAL, Movement_WalkInPlaceFasterDown - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return diff --git a/data/maps/Route16_NorthEntrance_1F/scripts.inc b/data/maps/Route16_NorthEntrance_1F/scripts.inc index b7e9fcfcc..d0e52d70f 100644 --- a/data/maps/Route16_NorthEntrance_1F/scripts.inc +++ b/data/maps/Route16_NorthEntrance_1F/scripts.inc @@ -49,7 +49,7 @@ Route16_NorthEntrance_1F_EventScript_NeedBikeTrigger:: textcolor NPC_TEXT_COLOR_MALE msgbox Route16_NorthEntrance_1F_Text_ExcuseMeWaitUp closemessage - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 delay 20 call_if_eq VAR_0x8008, 1, Route16_NorthEntrance_1F_EventScript_PlayerWalkToCounterMidTop diff --git a/data/maps/Route18_EastEntrance_1F/scripts.inc b/data/maps/Route18_EastEntrance_1F/scripts.inc index 0c05c8beb..05e2526e4 100644 --- a/data/maps/Route18_EastEntrance_1F/scripts.inc +++ b/data/maps/Route18_EastEntrance_1F/scripts.inc @@ -49,7 +49,7 @@ Route18_EastEntrance_1F_EventScript_NeedBikeTrigger:: textcolor NPC_TEXT_COLOR_MALE msgbox Route18_EastEntrance_1F_Text_ExcuseMe closemessage - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 delay 20 call_if_eq VAR_0x8008, 1, Route18_EastEntrance_1F_EventScript_PlayerWalkToCounterMidTop diff --git a/data/maps/Route24/scripts.inc b/data/maps/Route24/scripts.inc index bf8c685da..6a0befab8 100644 --- a/data/maps/Route24/scripts.inc +++ b/data/maps/Route24/scripts.inc @@ -40,7 +40,7 @@ Route24_EventScript_RocketTrigger:: textcolor NPC_TEXT_COLOR_MALE call_if_eq VAR_TEMP_1, 0, Route24_EventScript_RocketApproachPlayer call_if_eq VAR_TEMP_1, 1, Route24_EventScript_RocketMotionToPlayer - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 msgbox Route24_Text_JustEarnedFabulousPrize checkitemspace ITEM_NUGGET @@ -67,7 +67,7 @@ Route24_EventScript_RocketApproachPlayer:: return Route24_EventScript_RocketMotionToPlayer:: - applymovement LOCALID_ROCKET, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_ROCKET, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return diff --git a/data/maps/Route5_SouthEntrance/scripts.inc b/data/maps/Route5_SouthEntrance/scripts.inc index fe8e06607..307de8b0d 100644 --- a/data/maps/Route5_SouthEntrance/scripts.inc +++ b/data/maps/Route5_SouthEntrance/scripts.inc @@ -25,7 +25,7 @@ Route5_SouthEntrance_EventScript_GuardTriggerRight:: Route5_SouthEntrance_EventScript_GuardTrigger:: textcolor NPC_TEXT_COLOR_MALE - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 goto_if_set FLAG_GOT_TEA, Route5_SouthEntrance_EventScript_GiveTea msgbox Route5_SouthEntrance_Text_ThirstyOnGuardDuty diff --git a/data/maps/Route6_NorthEntrance/scripts.inc b/data/maps/Route6_NorthEntrance/scripts.inc index 9f27430d6..c7c8cb95e 100644 --- a/data/maps/Route6_NorthEntrance/scripts.inc +++ b/data/maps/Route6_NorthEntrance/scripts.inc @@ -25,7 +25,7 @@ Route6_NorthEntrance_EventScript_GuardTriggerRight:: Route6_NorthEntrance_EventScript_GuardTrigger:: textcolor NPC_TEXT_COLOR_MALE - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 goto_if_set FLAG_GOT_TEA, Route6_NorthEntrance_EventScript_GiveTea msgbox Route6_NorthEntrance_Text_ThirstyOnGuardDuty diff --git a/data/maps/Route7_EastEntrance/scripts.inc b/data/maps/Route7_EastEntrance/scripts.inc index 30c776d0b..a13ec857c 100644 --- a/data/maps/Route7_EastEntrance/scripts.inc +++ b/data/maps/Route7_EastEntrance/scripts.inc @@ -25,7 +25,7 @@ Route7_EastEntrance_EventScript_GuardTriggerBottom:: Route7_EastEntrance_EventScript_GuardTrigger:: textcolor NPC_TEXT_COLOR_MALE - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 goto_if_set FLAG_GOT_TEA, Route7_EastEntrance_EventScript_GiveTea msgbox Route7_EastEntrance_Text_ThirstyOnGuardDuty diff --git a/data/maps/Route8_WestEntrance/scripts.inc b/data/maps/Route8_WestEntrance/scripts.inc index 1ef74df1b..e0a8b5f27 100644 --- a/data/maps/Route8_WestEntrance/scripts.inc +++ b/data/maps/Route8_WestEntrance/scripts.inc @@ -25,7 +25,7 @@ Route8_WestEntrance_EventScript_GuardTriggerBottom:: Route8_WestEntrance_EventScript_GuardTrigger:: textcolor NPC_TEXT_COLOR_MALE - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 goto_if_set FLAG_GOT_TEA, Route8_WestEntrance_EventScript_GiveTea msgbox Route8_WestEntrance_Text_ThirstyOnGuardDuty diff --git a/data/maps/SSAnne_2F_Corridor/scripts.inc b/data/maps/SSAnne_2F_Corridor/scripts.inc index e3d30efe1..3d09bd4bb 100644 --- a/data/maps/SSAnne_2F_Corridor/scripts.inc +++ b/data/maps/SSAnne_2F_Corridor/scripts.inc @@ -28,7 +28,7 @@ SSAnne_2F_Corridor_EventScript_RivalTrigger:: playbgm MUS_ENCOUNTER_RIVAL, 0 addobject LOCALID_RIVAL delay 10 - applymovement LOCALID_RIVAL, Movement_WalkInPlaceFasterDown + applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown waitmovement 0 delay 20 call_if_eq VAR_TEMP_1, 0, SSAnne_2F_Corridor_EventScript_RivalApproachLeft diff --git a/data/maps/SSAnne_CaptainsOffice/scripts.inc b/data/maps/SSAnne_CaptainsOffice/scripts.inc index 485b93807..6ac9cb693 100644 --- a/data/maps/SSAnne_CaptainsOffice/scripts.inc +++ b/data/maps/SSAnne_CaptainsOffice/scripts.inc @@ -14,7 +14,7 @@ SSAnne_CaptainsOffice_EventScript_Captain:: waitfanfare call EventScript_RestorePrevTextColor delay 50 - applymovement LOCALID_CAPTAIN, Movement_FacePlayer + applymovement LOCALID_CAPTAIN, Common_Movement_FacePlayer waitmovement 0 msgbox SSAnne_CaptainsOffice_Text_ThankYouHaveHMForCut giveitem_msg SSAnne_CaptainsOffice_Text_ObtainedHM01FromCaptain, ITEM_HM01, 1, MUS_OBTAIN_KEY_ITEM @@ -28,13 +28,13 @@ SSAnne_CaptainsOffice_EventScript_Captain:: SSAnne_CaptainsOffice_EventScript_NoRoomForCut:: msgbox SSAnne_CaptainsOffice_Text_YouHaveNoRoomForThis closemessage - applymovement LOCALID_CAPTAIN, Movement_FaceOriginalDirection + applymovement LOCALID_CAPTAIN, Common_Movement_FaceOriginalDirection waitmovement 0 release end SSAnne_CaptainsOffice_EventScript_AlreadyGotCut:: - applymovement LOCALID_CAPTAIN, Movement_FacePlayer + applymovement LOCALID_CAPTAIN, Common_Movement_FacePlayer waitmovement 0 msgbox SSAnne_CaptainsOffice_Text_SSAnneWillSetSailSoon release diff --git a/data/maps/SSAnne_Exterior/scripts.inc b/data/maps/SSAnne_Exterior/scripts.inc index e6043855d..ed084fb89 100644 --- a/data/maps/SSAnne_Exterior/scripts.inc +++ b/data/maps/SSAnne_Exterior/scripts.inc @@ -38,7 +38,7 @@ SSAnne_Exterior_WalkDown:: return SSAnne_Exterior_WalkInPlaceDown:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return diff --git a/data/maps/SaffronCity/scripts.inc b/data/maps/SaffronCity/scripts.inc index 530ce140c..3d517bf43 100644 --- a/data/maps/SaffronCity/scripts.inc +++ b/data/maps/SaffronCity/scripts.inc @@ -44,7 +44,7 @@ SaffronCity_EventScript_RocketGrunt7:: SaffronCity_EventScript_DoorGuardGrunt:: lock goto_if_set FLAG_RESCUED_MR_FUJI, SaffronCity_EventScript_DoorGuardAsleep - applymovement LOCALID_DOOR_GUARD_GRUNT, Movement_FacePlayer + applymovement LOCALID_DOOR_GUARD_GRUNT, Common_Movement_FacePlayer waitmovement 0 msgbox SaffronCity_Text_ImASecurityGuard release diff --git a/data/maps/SaffronCity_Dojo/scripts.inc b/data/maps/SaffronCity_Dojo/scripts.inc index 680dc871e..b66ad6cee 100644 --- a/data/maps/SaffronCity_Dojo/scripts.inc +++ b/data/maps/SaffronCity_Dojo/scripts.inc @@ -6,7 +6,7 @@ SaffronCity_Dojo_MapScripts:: SaffronCity_Dojo_EventScript_TriggerMasterBattleLeft:: lockall setvar VAR_MAP_SCENE_SAFFRON_CITY_DOJO, 1 - applymovement LOCALID_KARATE_MASTER, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_KARATE_MASTER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 releaseall end @@ -14,7 +14,7 @@ SaffronCity_Dojo_EventScript_TriggerMasterBattleLeft:: SaffronCity_Dojo_EventScript_TriggerMasterBattleRight:: lockall setvar VAR_MAP_SCENE_SAFFRON_CITY_DOJO, 1 - applymovement LOCALID_KARATE_MASTER, Movement_WalkInPlaceFasterRight + applymovement LOCALID_KARATE_MASTER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 releaseall end @@ -25,7 +25,7 @@ SaffronCity_Dojo_EventScript_HitmonleeBall:: goto_if_set FLAG_GOT_HITMON_FROM_DOJO, SaffronCity_Dojo_EventScript_AlreadyGotHitmon showmonpic SPECIES_HITMONLEE, 10, 3 setvar VAR_TEMP_1, SPECIES_HITMONLEE - applymovement LOCALID_KARATE_MASTER, Movement_WalkInPlaceFasterUp + applymovement LOCALID_KARATE_MASTER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 textcolor NPC_TEXT_COLOR_MALE msgbox SaffronCity_Dojo_Text_YouWantHitmonlee, MSGBOX_YESNO @@ -46,7 +46,7 @@ SaffronCity_Dojo_EventScript_HitmonchanBall:: goto_if_set FLAG_GOT_HITMON_FROM_DOJO, SaffronCity_Dojo_EventScript_AlreadyGotHitmon showmonpic SPECIES_HITMONCHAN, 10, 3 setvar VAR_TEMP_1, SPECIES_HITMONCHAN - applymovement LOCALID_KARATE_MASTER, Movement_WalkInPlaceFasterUp + applymovement LOCALID_KARATE_MASTER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 textcolor NPC_TEXT_COLOR_MALE msgbox SaffronCity_Dojo_Text_YouWantHitmonchan, MSGBOX_YESNO diff --git a/data/maps/SaffronCity_PokemonTrainerFanClub/scripts.inc b/data/maps/SaffronCity_PokemonTrainerFanClub/scripts.inc index d4979c25c..698abf617 100644 --- a/data/maps/SaffronCity_PokemonTrainerFanClub/scripts.inc +++ b/data/maps/SaffronCity_PokemonTrainerFanClub/scripts.inc @@ -19,18 +19,18 @@ SaffronCity_PokemonTrainerFanClub_OnFrame:: SaffronCity_PokemonTrainerFanClub_EventScript_MeetFirstFans:: lockall textcolor NPC_TEXT_COLOR_FEMALE - applymovement LOCALID_BATTLE_GIRL, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BATTLE_GIRL, Common_Movement_WalkInPlaceFasterDown waitmovement 0 playse SE_PIN - applymovement LOCALID_BATTLE_GIRL, Movement_ExclamationMark + applymovement LOCALID_BATTLE_GIRL, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_BATTLE_GIRL, Movement_Delay48 + applymovement LOCALID_BATTLE_GIRL, Common_Movement_Delay48 waitmovement 0 msgbox SaffronCity_PokemonTrainerFanClub_Text_HuhYou closemessage applymovement LOCALID_BATTLE_GIRL, SaffronCity_PokemonTrainerFanClub_Movement_FanApproachPlayer waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 msgbox SaffronCity_PokemonTrainerFanClub_Text_YourePlayerWereYourFansNow setvar VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB, 2 diff --git a/data/maps/SevenIsland_House_Room1/scripts.inc b/data/maps/SevenIsland_House_Room1/scripts.inc index d9da2eca2..056519ed2 100644 --- a/data/maps/SevenIsland_House_Room1/scripts.inc +++ b/data/maps/SevenIsland_House_Room1/scripts.inc @@ -39,7 +39,7 @@ SevenIsland_House_Room1_EventScript_OldWomanCommentOnBattle:: applymovement LOCALID_OLD_WOMAN, SevenIsland_House_Room1_Movement_OldWomanWalkBehindPlayer waitmovement 0 copyobjectxytoperm LOCALID_OLD_WOMAN - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 call_if_eq VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 1, SevenIsland_House_Room1_EventScript_BattleWonComment call_if_eq VAR_MAP_SCENE_SEVEN_ISLAND_HOUSE_ROOM1, 2, SevenIsland_House_Room1_EventScript_BattleLostComment diff --git a/data/maps/SevenIsland_SevaultCanyon_House/scripts.inc b/data/maps/SevenIsland_SevaultCanyon_House/scripts.inc index f8b966a94..07cd151e7 100644 --- a/data/maps/SevenIsland_SevaultCanyon_House/scripts.inc +++ b/data/maps/SevenIsland_SevaultCanyon_House/scripts.inc @@ -11,7 +11,7 @@ SevenIsland_SevaultCanyon_House_EventScript_BaldingMan:: waitmovement 0 fadedefaultbgm delay 30 - applymovement LOCALID_BALDING_MAN, Movement_FacePlayer + applymovement LOCALID_BALDING_MAN, Common_Movement_FacePlayer waitmovement 0 msgbox SevenIsland_SevaultCanyon_House_Text_ChanseyDanceJoinIn textcolor NPC_TEXT_COLOR_NEUTRAL @@ -34,12 +34,12 @@ SevenIsland_SevaultCanyon_House_EventScript_BaldingMan:: end SevenIsland_SevaultCanyon_House_EventScript_PlayerFaceDown:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return SevenIsland_SevaultCanyon_House_EventScript_AlreadyDanced:: - applymovement LOCALID_BALDING_MAN, Movement_FacePlayer + applymovement LOCALID_BALDING_MAN, Common_Movement_FacePlayer waitmovement 0 msgbox SevenIsland_SevaultCanyon_House_Text_ChanseyDanceJoinIn release diff --git a/data/maps/SilphCo_11F/scripts.inc b/data/maps/SilphCo_11F/scripts.inc index 08411f199..3cc1f6841 100644 --- a/data/maps/SilphCo_11F/scripts.inc +++ b/data/maps/SilphCo_11F/scripts.inc @@ -61,7 +61,7 @@ SilphCo_11F_EventScript_GiovanniTriggerRight:: SilphCo_11F_EventScript_BattleGiovanni:: textcolor NPC_TEXT_COLOR_MALE - applymovement LOCALID_GIOVANNI, Movement_WalkInPlaceFasterDown + applymovement LOCALID_GIOVANNI, Common_Movement_WalkInPlaceFasterDown waitmovement 0 delay 25 msgbox SilphCo_11F_Text_GiovanniIntro diff --git a/data/maps/SilphCo_7F/scripts.inc b/data/maps/SilphCo_7F/scripts.inc index afa40c8fb..d4db57800 100644 --- a/data/maps/SilphCo_7F/scripts.inc +++ b/data/maps/SilphCo_7F/scripts.inc @@ -35,10 +35,10 @@ SilphCo_7F_EventScript_RivalTriggerBottom:: SilphCo_7F_EventScript_RivalScene:: textcolor NPC_TEXT_COLOR_MALE playbgm MUS_ENCOUNTER_RIVAL, 0 - applymovement LOCALID_RIVAL, Movement_ExclamationMark + applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown - applymovement LOCALID_RIVAL, Movement_Delay48 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown + applymovement LOCALID_RIVAL, Common_Movement_Delay48 waitmovement 0 msgbox SilphCo_7F_Text_RivalWhatKeptYou call_if_eq VAR_TEMP_1, 0, SilphCo_7F_EventScript_RivalApproachTop diff --git a/data/maps/SixIsland_DottedHole_SapphireRoom/scripts.inc b/data/maps/SixIsland_DottedHole_SapphireRoom/scripts.inc index 59c3a7e17..bb32e7d0c 100644 --- a/data/maps/SixIsland_DottedHole_SapphireRoom/scripts.inc +++ b/data/maps/SixIsland_DottedHole_SapphireRoom/scripts.inc @@ -60,22 +60,22 @@ SixIsland_DottedHole_SapphireRoom_EventScript_Sapphire:: @ Lots of redundant scripts below SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefLeft2:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefDown2:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefLeft:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return SixIsland_DottedHole_SapphireRoom_EventScript_PlayerFaceThiefDown:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return @@ -102,28 +102,28 @@ SixIsland_DottedHole_SapphireRoom_EventScript_ThiefLookAtSapphireWest:: SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireNorth:: applymovement LOCALID_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromLeft waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireSouth:: applymovement LOCALID_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromLeft waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireEast:: applymovement LOCALID_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromBelow waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 return SixIsland_DottedHole_SapphireRoom_EventScript_ThiefGetSapphireWest:: applymovement LOCALID_THIEF, SixIsland_DottedHole_SapphireRoom_Movement_ThiefGetSapphireFromBelow waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return diff --git a/data/maps/SixIsland_PokemonCenter_1F/scripts.inc b/data/maps/SixIsland_PokemonCenter_1F/scripts.inc index 3e23e6839..9efdc8681 100644 --- a/data/maps/SixIsland_PokemonCenter_1F/scripts.inc +++ b/data/maps/SixIsland_PokemonCenter_1F/scripts.inc @@ -22,12 +22,12 @@ SixIsland_PokemonCenter_1F_OnFrame:: SixIsland_PokemonCenter_1F_EventScript_RivalScene:: lockall textcolor NPC_TEXT_COLOR_MALE - applymovement LOCALID_RIVAL, Movement_WalkInPlaceFasterDown + applymovement LOCALID_RIVAL, Common_Movement_WalkInPlaceFasterDown waitmovement 0 playbgm MUS_ENCOUNTER_RIVAL, 0 - applymovement LOCALID_RIVAL, Movement_ExclamationMark + applymovement LOCALID_RIVAL, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_RIVAL, Movement_Delay48 + applymovement LOCALID_RIVAL, Common_Movement_Delay48 waitmovement 0 delay 25 applymovement LOCALID_RIVAL, SixIsland_PokemonCenter_1F_Movement_RivalApproach diff --git a/data/maps/SixIsland_RuinValley/scripts.inc b/data/maps/SixIsland_RuinValley/scripts.inc index 808bed3d0..6df247886 100644 --- a/data/maps/SixIsland_RuinValley/scripts.inc +++ b/data/maps/SixIsland_RuinValley/scripts.inc @@ -15,10 +15,10 @@ SixIsland_RuinValley_EventScript_OpenDottedHoleDoor:: SixIsland_RuinValley_EventScript_Scientist:: lock msgbox SixIsland_RuinValley_Text_CantFigureOutHowToGetInside - applymovement LOCALID_SCIENTIST, Movement_FacePlayer + applymovement LOCALID_SCIENTIST, Common_Movement_FacePlayer waitmovement 0 msgbox SixIsland_RuinValley_Text_IFoundThisPlace - applymovement LOCALID_SCIENTIST, Movement_FaceOriginalDirection + applymovement LOCALID_SCIENTIST, Common_Movement_FaceOriginalDirection waitmovement 0 release end diff --git a/data/maps/ThreeIsland/scripts.inc b/data/maps/ThreeIsland/scripts.inc index c88307195..589ddca21 100644 --- a/data/maps/ThreeIsland/scripts.inc +++ b/data/maps/ThreeIsland/scripts.inc @@ -44,14 +44,14 @@ ThreeIsland_EventScript_AntiBiker1:: end ThreeIsland_EventScript_AntiBiker1GotFullRestore:: - applymovement LOCALID_ANTIBIKER1, Movement_FacePlayer + applymovement LOCALID_ANTIBIKER1, Common_Movement_FacePlayer waitmovement 0 msgbox ThreeIsland_Text_YouveGotImpressiveMons release end ThreeIsland_EventScript_GiveFullRestore:: - applymovement LOCALID_ANTIBIKER1, Movement_FacePlayer + applymovement LOCALID_ANTIBIKER1, Common_Movement_FacePlayer waitmovement 0 msgbox ThreeIsland_Text_ThankYouOhYourMonGotHurt checkitemspace ITEM_FULL_RESTORE @@ -95,23 +95,23 @@ ThreeIsland_EventScript_BikerArgumentScene:: return ThreeIsland_EventScript_PlayerFaceUp:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 return @ Unused ThreeIsland_EventScript_PlayerFaceDown:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterDown + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 return ThreeIsland_EventScript_PlayerFaceLeft:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 return ThreeIsland_EventScript_PlayerFaceRight:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 return @@ -136,7 +136,7 @@ ThreeIsland_EventScript_AntiBiker2:: end ThreeIsland_EventScript_AntiBiker2BikersGone:: - applymovement LOCALID_ANTIBIKER2, Movement_FacePlayer + applymovement LOCALID_ANTIBIKER2, Common_Movement_FacePlayer waitmovement 0 msgbox ThreeIsland_Text_LostelleWentOffTowardsBondBridge release @@ -204,12 +204,12 @@ ThreeIsland_EventScript_BattleBikersTriggerRight:: ThreeIsland_EventScript_BattleBikersScene:: textcolor NPC_TEXT_COLOR_MALE - applymovement LOCALID_BIKER1, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BIKER1, Common_Movement_WalkInPlaceFasterDown waitmovement 0 playse SE_PIN - applymovement LOCALID_BIKER1, Movement_ExclamationMark + applymovement LOCALID_BIKER1, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_BIKER1, Movement_Delay48 + applymovement LOCALID_BIKER1, Common_Movement_Delay48 waitmovement 0 applymovement LOCALID_BIKER1, ThreeIsland_Movement_BikerApproach waitmovement 0 @@ -239,10 +239,10 @@ ThreeIsland_EventScript_BattleBikersScene:: msgbox ThreeIsland_Text_Biker3Intro setvar VAR_LAST_TALKED, LOCALID_BIKER3 trainerbattle_no_intro TRAINER_BIKER_GOON_3, ThreeIsland_Text_Biker3Defeat - applymovement LOCALID_BIKER3, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_BIKER3, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 - applymovement LOCALID_BIKER4, Movement_WalkInPlaceFasterDown - applymovement LOCALID_BIKER5, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BIKER4, Common_Movement_WalkInPlaceFasterDown + applymovement LOCALID_BIKER5, Common_Movement_WalkInPlaceFasterDown waitmovement 0 msgbox ThreeIsland_Text_Biker3PostBattle closemessage @@ -272,33 +272,33 @@ ThreeIsland_EventScript_BattleBikersScene:: end ThreeIsland_EventScript_PaxtonApproachLeft:: - applymovement LOCALID_BIKER3, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BIKER3, Common_Movement_WalkInPlaceFasterDown applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachLeft waitmovement 0 return ThreeIsland_EventScript_PaxtonApproachMidLeft:: - applymovement LOCALID_BIKER3, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BIKER3, Common_Movement_WalkInPlaceFasterDown applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachMidLeft waitmovement 0 return ThreeIsland_EventScript_PaxtonApproachMid:: - applymovement LOCALID_BIKER3, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BIKER3, Common_Movement_WalkInPlaceFasterDown applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachMid applymovement OBJ_EVENT_ID_PLAYER, ThreeIsland_Movement_PlayerFacePaxton waitmovement 0 return ThreeIsland_EventScript_PaxtonApproachMidRight:: - applymovement LOCALID_BIKER3, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BIKER3, Common_Movement_WalkInPlaceFasterDown applymovement OBJ_EVENT_ID_PLAYER, ThreeIsland_Movement_PlayerFacePaxton applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachMidRight waitmovement 0 return ThreeIsland_EventScript_PaxtonApproachRight:: - applymovement LOCALID_BIKER3, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BIKER3, Common_Movement_WalkInPlaceFasterDown applymovement OBJ_EVENT_ID_PLAYER, ThreeIsland_Movement_PlayerFacePaxton applymovement LOCALID_PAXTON, ThreeIsland_Movement_PaxtonApproachRight waitmovement 0 diff --git a/data/maps/ThreeIsland_BerryForest/scripts.inc b/data/maps/ThreeIsland_BerryForest/scripts.inc index c5e8841de..8aeed468c 100644 --- a/data/maps/ThreeIsland_BerryForest/scripts.inc +++ b/data/maps/ThreeIsland_BerryForest/scripts.inc @@ -14,7 +14,7 @@ ThreeIsland_BerryForest_EventScript_Lostelle:: faceplayer msgbox ThreeIsland_BerryForest_Text_HelpScaryPokemon playse SE_PIN - applymovement LOCALID_LOSTELLE, Movement_ExclamationMark + applymovement LOCALID_LOSTELLE, Common_Movement_ExclamationMark waitmovement 0 applymovement LOCALID_LOSTELLE, ThreeIsland_BerryForest_Movement_LostelleLookAround waitmovement 0 @@ -26,7 +26,7 @@ ThreeIsland_BerryForest_EventScript_Lostelle:: setwildbattle SPECIES_HYPNO, 30 dowildbattle special QuestLog_CutRecording - applymovement LOCALID_LOSTELLE, Movement_FacePlayer + applymovement LOCALID_LOSTELLE, Common_Movement_FacePlayer waitmovement 0 msgbox ThreeIsland_BerryForest_Text_ThankYouHaveThis giveitem ITEM_IAPAPA_BERRY diff --git a/data/maps/ThreeIsland_DunsparceTunnel/scripts.inc b/data/maps/ThreeIsland_DunsparceTunnel/scripts.inc index 20826c539..2c66fb6f4 100644 --- a/data/maps/ThreeIsland_DunsparceTunnel/scripts.inc +++ b/data/maps/ThreeIsland_DunsparceTunnel/scripts.inc @@ -29,7 +29,7 @@ ThreeIsland_DunsparceTunnel_EventScript_Prospector:: goto_if_eq VAR_RESULT, TRUE, ThreeIsland_DunsparceTunnel_EventScript_ProspectorStruckGold msgbox ThreeIsland_DunsparceTunnel_Text_ProspectingForGold closemessage - applymovement LOCALID_PROSPECTOR, Movement_FaceOriginalDirection + applymovement LOCALID_PROSPECTOR, Common_Movement_FaceOriginalDirection waitmovement 0 release end diff --git a/data/maps/TwoIsland_JoyfulGameCorner/scripts.inc b/data/maps/TwoIsland_JoyfulGameCorner/scripts.inc index ab2e4a8bf..aaa26dce3 100644 --- a/data/maps/TwoIsland_JoyfulGameCorner/scripts.inc +++ b/data/maps/TwoIsland_JoyfulGameCorner/scripts.inc @@ -43,7 +43,7 @@ TwoIsland_JoyfulGameCorner_EventScript_FoundLostelleScene:: special BufferBigGuyOrBigGirlString msgbox TwoIsland_JoyfulGameCorner_Text_LostelleItsOkayDaddy closemessage - applymovement LOCALID_LOSTELLE, Movement_WalkInPlaceFasterDown + applymovement LOCALID_LOSTELLE, Common_Movement_WalkInPlaceFasterDown waitmovement 0 setvar VAR_MAP_SCENE_TWO_ISLAND_JOYFUL_GAME_CORNER, 3 releaseall @@ -56,16 +56,16 @@ TwoIsland_JoyfulGameCorner_EventScript_HelpFindLostelleScene:: waitmovement 0 msgbox TwoIsland_JoyfulGameCorner_Text_WhereHasLostelleGottenTo closemessage - applymovement LOCALID_DADDY, Movement_WalkInPlaceFasterDown + applymovement LOCALID_DADDY, Common_Movement_WalkInPlaceFasterDown waitmovement 0 playse SE_PIN - applymovement LOCALID_DADDY, Movement_ExclamationMark + applymovement LOCALID_DADDY, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_DADDY, Movement_Delay48 + applymovement LOCALID_DADDY, Common_Movement_Delay48 waitmovement 0 applymovement LOCALID_DADDY, Movement_171527 waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 msgbox TwoIsland_JoyfulGameCorner_Text_PleaseHelpFindLostelle closemessage @@ -78,12 +78,12 @@ TwoIsland_JoyfulGameCorner_EventScript_HelpFindLostelleScene:: applymovement LOCALID_BIKER, TwoIsland_JoyfulGameCorner_Movement_BikerLookAround waitmovement 0 msgbox TwoIsland_JoyfulGameCorner_Text_IsThisOnlyThreeIsland - applymovement LOCALID_BIKER, Movement_WalkInPlaceFasterRight + applymovement LOCALID_BIKER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 msgbox TwoIsland_JoyfulGameCorner_Text_ThisIsTwoIslandMoveIt msgbox TwoIsland_JoyfulGameCorner_Text_TheseIslandsAreConfusing closemessage - applymovement LOCALID_BIKER, Movement_WalkInPlaceFasterDown + applymovement LOCALID_BIKER, Common_Movement_WalkInPlaceFasterDown waitmovement 0 playse SE_EXIT removeobject LOCALID_BIKER diff --git a/data/maps/VermilionCity/scripts.inc b/data/maps/VermilionCity/scripts.inc index 9b7028145..004d6e7c6 100644 --- a/data/maps/VermilionCity/scripts.inc +++ b/data/maps/VermilionCity/scripts.inc @@ -191,8 +191,8 @@ VermilionCity_EventScript_ExitedTicketCheck:: VermilionCity_EventScript_CheckTicket:: textcolor NPC_TEXT_COLOR_MALE - applymovement LOCALID_FERRY_SAILOR, Movement_WalkInPlaceFasterLeft - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement LOCALID_FERRY_SAILOR, Common_Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 goto_if_eq VAR_MAP_SCENE_VERMILION_CITY, 3, VermilionCity_EventScript_CheckSeagallopPresentTrigger msgbox VermilionCity_Text_DoYouHaveATicket diff --git a/data/maps/VermilionCity_PokemonFanClub/scripts.inc b/data/maps/VermilionCity_PokemonFanClub/scripts.inc index 1ef77430e..b5c9e005c 100644 --- a/data/maps/VermilionCity_PokemonFanClub/scripts.inc +++ b/data/maps/VermilionCity_PokemonFanClub/scripts.inc @@ -57,7 +57,7 @@ VermilionCity_PokemonFanClub_EventScript_Woman:: goto_if_set SPOKE_TO_FAT_MAN_LAST, VermilionCity_PokemonFanClub_EventScript_WomanSpokeToFatMan msgbox VermilionCity_PokemonFanClub_Text_AdoreMySeel closemessage - applymovement LOCALID_WOMAN, Movement_FaceOriginalDirection + applymovement LOCALID_WOMAN, Common_Movement_FaceOriginalDirection waitmovement 0 setflag SPOKE_TO_WOMAN_LAST release @@ -66,7 +66,7 @@ VermilionCity_PokemonFanClub_EventScript_Woman:: VermilionCity_PokemonFanClub_EventScript_WomanSpokeToFatMan:: msgbox VermilionCity_PokemonFanClub_Text_SeelFarMoreAttractive closemessage - applymovement LOCALID_WOMAN, Movement_FaceOriginalDirection + applymovement LOCALID_WOMAN, Common_Movement_FaceOriginalDirection waitmovement 0 clearflag SPOKE_TO_FAT_MAN_LAST release @@ -78,7 +78,7 @@ VermilionCity_PokemonFanClub_EventScript_FatMan:: goto_if_set SPOKE_TO_WOMAN_LAST, VermilionCity_PokemonFanClub_EventScript_FatManSpokeToWoman msgbox VermilionCity_PokemonFanClub_Text_AdmirePikachusTail closemessage - applymovement LOCALID_FAT_MAN, Movement_FaceOriginalDirection + applymovement LOCALID_FAT_MAN, Common_Movement_FaceOriginalDirection waitmovement 0 setflag SPOKE_TO_FAT_MAN_LAST release @@ -87,7 +87,7 @@ VermilionCity_PokemonFanClub_EventScript_FatMan:: VermilionCity_PokemonFanClub_EventScript_FatManSpokeToWoman:: msgbox VermilionCity_PokemonFanClub_Text_PikachuTwiceAsCute closemessage - applymovement LOCALID_FAT_MAN, Movement_FaceOriginalDirection + applymovement LOCALID_FAT_MAN, Common_Movement_FaceOriginalDirection waitmovement 0 clearflag SPOKE_TO_WOMAN_LAST release diff --git a/data/maps/ViridianCity/scripts.inc b/data/maps/ViridianCity/scripts.inc index 85edc6686..5793034d9 100644 --- a/data/maps/ViridianCity/scripts.inc +++ b/data/maps/ViridianCity/scripts.inc @@ -43,7 +43,7 @@ ViridianCity_EventScript_TryUnlockGym:: ViridianCity_EventScript_GymDoorLocked:: lockall textcolor NPC_TEXT_COLOR_NEUTRAL - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 delay 20 msgbox ViridianCity_Text_GymDoorsAreLocked @@ -88,7 +88,7 @@ ViridianCity_EventScript_OldMan:: goto_if_eq VAR_MAP_SCENE_VIRIDIAN_CITY_GYM_DOOR, 1, ViridianCity_EventScript_OldManGymLeaderReturned msgbox ViridianCity_Text_GymClosedWonderWhoLeaderIs closemessage - applymovement LOCALID_OLD_MAN, Movement_FaceOriginalDirection + applymovement LOCALID_OLD_MAN, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -180,7 +180,7 @@ ViridianCity_EventScript_Woman:: ViridianCity_EventScript_WomanRoadBlocked:: msgbox ViridianCity_Text_GrandpaHasntHadCoffeeYet closemessage - applymovement LOCALID_WOMAN, Movement_FaceOriginalDirection + applymovement LOCALID_WOMAN, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -206,9 +206,9 @@ ViridianCity_Movement_WalkDown:: ViridianCity_EventScript_TutorialTriggerLeft:: lockall textcolor NPC_TEXT_COLOR_MALE - applymovement LOCALID_TUTORIAL_MAN, Movement_WalkInPlaceFasterLeft + applymovement LOCALID_TUTORIAL_MAN, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterRight + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterRight waitmovement 0 call ViridianCity_EventScript_DoTutorialBattle release @@ -217,9 +217,9 @@ ViridianCity_EventScript_TutorialTriggerLeft:: ViridianCity_EventScript_TutorialTriggerRight:: lockall textcolor NPC_TEXT_COLOR_MALE - applymovement LOCALID_TUTORIAL_MAN, Movement_WalkInPlaceFasterRight + applymovement LOCALID_TUTORIAL_MAN, Common_Movement_WalkInPlaceFasterRight waitmovement 0 - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterLeft + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 call ViridianCity_EventScript_DoTutorialBattle release diff --git a/data/maps/ViridianCity_Mart/scripts.inc b/data/maps/ViridianCity_Mart/scripts.inc index 6ff805858..4a2ed71d1 100644 --- a/data/maps/ViridianCity_Mart/scripts.inc +++ b/data/maps/ViridianCity_Mart/scripts.inc @@ -21,7 +21,7 @@ ViridianCity_Mart_OnFrame:: ViridianCity_Mart_EventScript_ParcelScene:: lockall textcolor NPC_TEXT_COLOR_MALE - applymovement LOCALID_CLERK, Movement_WalkInPlaceFasterDown + applymovement LOCALID_CLERK, Common_Movement_WalkInPlaceFasterDown waitmovement 0 msgbox ViridianCity_Mart_Text_YouCameFromPallet closemessage diff --git a/data/maps/ViridianCity_School/scripts.inc b/data/maps/ViridianCity_School/scripts.inc index 658dfdf0c..fdb02d481 100644 --- a/data/maps/ViridianCity_School/scripts.inc +++ b/data/maps/ViridianCity_School/scripts.inc @@ -9,7 +9,7 @@ ViridianCity_School_EventScript_Lass:: faceplayer msgbox ViridianCity_School_Text_TryingToMemorizeNotes closemessage - applymovement LOCALID_LASS, Movement_WalkInPlaceFasterUp + applymovement LOCALID_LASS, Common_Movement_WalkInPlaceFasterUp waitmovement 0 release end @@ -19,7 +19,7 @@ ViridianCity_School_EventScript_Woman:: faceplayer msgbox ViridianCity_School_Text_ReadBlackboardCarefully closemessage - applymovement LOCALID_WOMAN, Movement_FaceOriginalDirection + applymovement LOCALID_WOMAN, Common_Movement_FaceOriginalDirection waitmovement 0 release end @@ -36,7 +36,7 @@ ViridianCity_School_EventScript_Notebook:: msgbox ViridianCity_School_Text_TurnThePage, MSGBOX_YESNO goto_if_eq VAR_RESULT, NO, ViridianCity_School_EventScript_StopReadingNotebook msgbox ViridianCity_School_Text_NotebookFourthPage - applymovement LOCALID_LASS, Movement_WalkInPlaceFasterUp + applymovement LOCALID_LASS, Common_Movement_WalkInPlaceFasterUp waitmovement 0 textcolor NPC_TEXT_COLOR_FEMALE msgbox ViridianCity_School_Text_HeyDontLookAtMyNotes diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc index b225958a3..d4936ab7f 100644 --- a/data/scripts/cable_club.inc +++ b/data/scripts/cable_club.inc @@ -181,7 +181,7 @@ CableClub_EventScript_PlayerExitLinkRoom:: CableClub_EventScript_Tutorial:: lockall textcolor NPC_TEXT_COLOR_FEMALE - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkInPlaceFasterUp + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkInPlaceFasterUp waitmovement 0 msgbox CableClub_Text_FirstTimeRightThisWay closemessage diff --git a/data/scripts/movement.inc b/data/scripts/movement.inc index 52e5a2c96..51e486794 100644 --- a/data/scripts/movement.inc +++ b/data/scripts/movement.inc @@ -1,55 +1,55 @@ -Movement_QuestionMark:: +Common_Movement_QuestionMark:: emote_question_mark step_end -Movement_ExclamationMark:: +Common_Movement_ExclamationMark:: emote_exclamation_mark step_end -Movement_Delay48:: +Common_Movement_Delay48:: delay_16 delay_16 delay_16 step_end -Movement_FacePlayer:: +Common_Movement_FacePlayer:: face_player step_end @ Unused -Movement_FaceAwayPlayer:: +Common_Movement_FaceAwayPlayer:: face_away_player step_end -Movement_FaceOriginalDirection:: +Common_Movement_FaceOriginalDirection:: face_original_direction step_end -Movement_WalkInPlaceFasterLeft:: +Common_Movement_WalkInPlaceFasterLeft:: walk_in_place_faster_left step_end -Movement_WalkInPlaceFasterUp:: +Common_Movement_WalkInPlaceFasterUp:: walk_in_place_faster_up step_end -Movement_WalkInPlaceFasterRight:: +Common_Movement_WalkInPlaceFasterRight:: walk_in_place_faster_right step_end -Movement_WalkInPlaceFasterDown:: +Common_Movement_WalkInPlaceFasterDown:: walk_in_place_faster_down step_end -Movement_FaceRight:: +Common_Movement_FaceRight:: face_right step_end -Movement_FaceDown:: +Common_Movement_FaceDown:: face_down step_end -Movement_WalkUp5:: +Common_Movement_WalkUp5:: walk_up walk_up walk_up @@ -58,25 +58,25 @@ Movement_WalkUp5:: step_end @ Unused -Movement_WalkUp4:: +Common_Movement_WalkUp4:: walk_up walk_up walk_up walk_up step_end -Movement_Delay32:: +Common_Movement_Delay32:: delay_16 delay_16 step_end @ Unused -Movement_WalkUp:: +Common_Movement_WalkUp:: walk_up step_end @ Unused -Movement_WalkUp2:: +Common_Movement_WalkUp2:: walk_up walk_up step_end diff --git a/data/scripts/pkmn_center_nurse.inc b/data/scripts/pkmn_center_nurse.inc index bec40c40c..f92ff3183 100644 --- a/data/scripts/pkmn_center_nurse.inc +++ b/data/scripts/pkmn_center_nurse.inc @@ -19,11 +19,11 @@ EventScript_PkmnCenterNurse_HealPkmn:: end EventScript_PkmnCenterNurse_TakeAndHealPkmn:: - applymovement VAR_LAST_TALKED, Movement_WalkInPlaceFasterLeft + applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 dofieldeffect FLDEFF_POKECENTER_HEAL waitfieldeffect FLDEFF_POKECENTER_HEAL - applymovement VAR_LAST_TALKED, Movement_WalkInPlaceFasterDown + applymovement VAR_LAST_TALKED, Common_Movement_WalkInPlaceFasterDown waitmovement 0 special HealPlayerParty return diff --git a/data/scripts/pokemon_league.inc b/data/scripts/pokemon_league.inc index 03295279e..f1d018499 100644 --- a/data/scripts/pokemon_league.inc +++ b/data/scripts/pokemon_league.inc @@ -1,5 +1,5 @@ PokemonLeague_EventScript_OpenDoor:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_Delay32 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_Delay32 waitmovement 0 playse SE_RS_DOOR call PokemonLeague_EventScript_SetDoorOpen @@ -8,7 +8,7 @@ PokemonLeague_EventScript_OpenDoor:: return PokemonLeague_EventScript_EnterRoom:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_WalkUp5 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_WalkUp5 waitmovement 0 setflag FLAG_TEMP_2 playse SE_UNLOCK @@ -32,7 +32,7 @@ PokemonLeague_EventScript_PreventExit:: end PokemonLeague_EventScript_OpenDoorLance:: - applymovement OBJ_EVENT_ID_PLAYER, Movement_Delay32 + applymovement OBJ_EVENT_ID_PLAYER, Common_Movement_Delay32 waitmovement 0 playse SE_RS_DOOR setmetatile 6, 4, METATILE_PokemonLeague_Door_Top_Open, 1 diff --git a/data/scripts/questionnaire.inc b/data/scripts/questionnaire.inc index f3bb76a3b..dd79200c6 100644 --- a/data/scripts/questionnaire.inc +++ b/data/scripts/questionnaire.inc @@ -15,12 +15,12 @@ EventScript_Questionnaire:: end EventScript_EnableMysteryGift:: - applymovement VAR_0x8008, Movement_FaceDown + applymovement VAR_0x8008, Common_Movement_FaceDown waitmovement 0 playse SE_PIN - applymovement VAR_0x8008, Movement_ExclamationMark + applymovement VAR_0x8008, Common_Movement_ExclamationMark waitmovement 0 - applymovement VAR_0x8008, Movement_Delay48 + applymovement VAR_0x8008, Common_Movement_Delay48 waitmovement 0 msgbox Text_YouKnowThoseWords setflag FLAG_SYS_MYSTERY_GIFT_ENABLED @@ -37,7 +37,7 @@ EventScript_DeclineQuestionnaire:: end EventScript_TookQuestionnaire:: - applymovement VAR_0x8008, Movement_FaceDown + applymovement VAR_0x8008, Common_Movement_FaceDown waitmovement 0 msgbox Text_QuestionnaireThankYou releaseall diff --git a/data/scripts/route23.inc b/data/scripts/route23.inc index 7a7b838a0..9d9a616cb 100644 --- a/data/scripts/route23.inc +++ b/data/scripts/route23.inc @@ -114,7 +114,7 @@ Route23_EventScript_RecognizeBadge:: Route23_EventScript_BadgeGuardTrigger:: textcolor NPC_TEXT_COLOR_MALE - applymovement VAR_0x8009, Movement_WalkInPlaceFasterLeft + applymovement VAR_0x8009, Common_Movement_WalkInPlaceFasterLeft waitmovement 0 switch VAR_TEMP_1 case 1, Route23_EventScript_CheckBoulderBadgeTrigger @@ -173,7 +173,7 @@ Route23_EventScript_MissingBoulderBadgeTrigger:: msgbox Text_CantLetYouPass closemessage applymovement OBJ_EVENT_ID_PLAYER, Route23_Movement_WalkDown - applymovement VAR_0x8009, Movement_WalkInPlaceFasterDown + applymovement VAR_0x8009, Common_Movement_WalkInPlaceFasterDown waitmovement 0 releaseall end @@ -186,7 +186,7 @@ Route23_EventScript_MissingBadgeTrigger:: closemessage waitse applymovement OBJ_EVENT_ID_PLAYER, Route23_Movement_WalkDown - applymovement VAR_0x8009, Movement_WalkInPlaceFasterDown + applymovement VAR_0x8009, Common_Movement_WalkInPlaceFasterDown waitmovement 0 releaseall end diff --git a/data/scripts/seagallop.inc b/data/scripts/seagallop.inc index 9cbd502b6..f2c8bae3a 100644 --- a/data/scripts/seagallop.inc +++ b/data/scripts/seagallop.inc @@ -117,7 +117,7 @@ EventScript_CancelSail:: VermilionCity_EventScript_WalkUpPier:: closemessage - applymovement LOCALID_FERRY_SAILOR, Movement_FaceOriginalDirection + applymovement LOCALID_FERRY_SAILOR, Common_Movement_FaceOriginalDirection applymovement OBJ_EVENT_ID_PLAYER, VermilionCity_Movement_WalkUp waitmovement 0 releaseall diff --git a/data/scripts/trainer_card.inc b/data/scripts/trainer_card.inc index 09a4c38f5..3bb906554 100644 --- a/data/scripts/trainer_card.inc +++ b/data/scripts/trainer_card.inc @@ -74,12 +74,12 @@ FourIsland_House2_EventScript_StickerMan:: FourIsland_House2_EventScript_MeetStickerMan:: setflag FLAG_MET_STICKER_MAN msgbox FourIsland_House2_Text_WishICouldShowOffStickers - applymovement LOCALID_STICKER_MAN, Movement_FacePlayer + applymovement LOCALID_STICKER_MAN, Common_Movement_FacePlayer waitmovement 0 playse SE_PIN - applymovement LOCALID_STICKER_MAN, Movement_ExclamationMark + applymovement LOCALID_STICKER_MAN, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_STICKER_MAN, Movement_Delay48 + applymovement LOCALID_STICKER_MAN, Common_Movement_Delay48 waitmovement 0 goto_if_eq VAR_0x8008, 0, FourIsland_House2_EventScript_StickerManNothingToBrag message FourIsland_House2_Text_GiveYouStickerIfYouBrag @@ -88,7 +88,7 @@ FourIsland_House2_EventScript_MeetStickerMan:: end FourIsland_House2_EventScript_StickerManAskForBrag:: - applymovement LOCALID_STICKER_MAN, Movement_FacePlayer + applymovement LOCALID_STICKER_MAN, Common_Movement_FacePlayer waitmovement 0 goto_if_questlog EventScript_ReleaseEnd special QuestLog_CutRecording diff --git a/data/scripts/trainer_tower.inc b/data/scripts/trainer_tower.inc index fe239dd1d..e64f9b768 100644 --- a/data/scripts/trainer_tower.inc +++ b/data/scripts/trainer_tower.inc @@ -109,9 +109,9 @@ TrainerTower_EventScript_TriggerBattle:: TrainerTower_EventScript_DoSingleBattle: ttower_encountermusic - applymovement LOCALID_TRAINER_SINGLES, Movement_ExclamationMark + applymovement LOCALID_TRAINER_SINGLES, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_TRAINER_SINGLES, Movement_Delay48 + applymovement LOCALID_TRAINER_SINGLES, Common_Movement_Delay48 waitmovement 0 setvar DISABLE_SINGLES_TRIGGER, TRUE applymovement LOCALID_TRAINER_SINGLES, TrainerTower_Movement_SingleTrainerApproach @@ -144,9 +144,9 @@ TrainerTower_EventScript_DoKnockoutBattle:: TrainerTower_EventScript_DoKnockoutBattle1: ttower_encountermusic - applymovement LOCALID_TRAINER_KNOCKOUT, Movement_ExclamationMark + applymovement LOCALID_TRAINER_KNOCKOUT, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_TRAINER_KNOCKOUT, Movement_Delay48 + applymovement LOCALID_TRAINER_KNOCKOUT, Common_Movement_Delay48 waitmovement 0 applymovement LOCALID_TRAINER_KNOCKOUT, TrainerTower_Movement_BottomKnockoutTrainerApproach waitmovement 0 @@ -154,9 +154,9 @@ TrainerTower_EventScript_DoKnockoutBattle1: TrainerTower_EventScript_DoKnockoutBattle2:: ttower_encountermusic - applymovement LOCALID_TRAINER_DOUBLES1, Movement_ExclamationMark + applymovement LOCALID_TRAINER_DOUBLES1, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_TRAINER_DOUBLES1, Movement_Delay48 + applymovement LOCALID_TRAINER_DOUBLES1, Common_Movement_Delay48 waitmovement 0 applymovement LOCALID_TRAINER_DOUBLES1, TrainerTower_Movement_TopKnockoutTrainerApproach waitmovement 0 @@ -164,9 +164,9 @@ TrainerTower_EventScript_DoKnockoutBattle2:: TrainerTower_EventScript_DoKnockoutBattle3:: ttower_encountermusic - applymovement LOCALID_TRAINER_SINGLES, Movement_ExclamationMark + applymovement LOCALID_TRAINER_SINGLES, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_TRAINER_SINGLES, Movement_Delay48 + applymovement LOCALID_TRAINER_SINGLES, Common_Movement_Delay48 waitmovement 0 applymovement LOCALID_TRAINER_SINGLES, TrainerTower_Movement_RightKnockoutTrainerApproach waitmovement 0 @@ -339,9 +339,9 @@ TrainerTower_EventScript_DoubleBattleTriggerTop:: ttower_checkdoubles goto_if_ne VAR_RESULT, PLAYER_HAS_TWO_USABLE_MONS, TrainerTower_EventScript_IneligibleForDoubleBattle ttower_encountermusic - applymovement LOCALID_TRAINER_DOUBLES1, Movement_ExclamationMark + applymovement LOCALID_TRAINER_DOUBLES1, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_TRAINER_DOUBLES1, Movement_Delay48 + applymovement LOCALID_TRAINER_DOUBLES1, Common_Movement_Delay48 goto TrainerTower_EventScript_TriggerDoubleBattle TrainerTower_EventScript_DoubleBattleTriggerBottom:: @@ -349,9 +349,9 @@ TrainerTower_EventScript_DoubleBattleTriggerBottom:: ttower_checkdoubles goto_if_ne VAR_RESULT, PLAYER_HAS_TWO_USABLE_MONS, TrainerTower_EventScript_IneligibleForDoubleBattle ttower_encountermusic - applymovement LOCALID_TRAINER_DOUBLES2, Movement_ExclamationMark + applymovement LOCALID_TRAINER_DOUBLES2, Common_Movement_ExclamationMark waitmovement 0 - applymovement LOCALID_TRAINER_DOUBLES2, Movement_Delay48 + applymovement LOCALID_TRAINER_DOUBLES2, Common_Movement_Delay48 TrainerTower_EventScript_TriggerDoubleBattle: waitmovement 0 setvar DISABLE_DOUBLES_TRIGGER, TRUE diff --git a/data/scripts/white_out.inc b/data/scripts/white_out.inc index cbf593c82..6ec14717b 100644 --- a/data/scripts/white_out.inc +++ b/data/scripts/white_out.inc @@ -24,7 +24,7 @@ EventScript_AfterWhiteOutHealMsg:: EventScript_AfterWhiteOutMomHeal:: lockall textcolor NPC_TEXT_COLOR_FEMALE - applymovement LOCALID_MOM, Movement_WalkInPlaceFasterDown + applymovement LOCALID_MOM, Common_Movement_WalkInPlaceFasterDown waitmovement 0 msgbox Text_HadQuiteAnExperienceTakeRest call EventScript_OutOfCenterPartyHeal From 17a8498701bbcb1cad82b81388d580399e69ae98 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 30 Aug 2022 14:07:57 -0400 Subject: [PATCH 34/38] Fix battle message charmap copied from emerald --- charmap.txt | 10 +++------- data/battle_scripts_1.s | 4 ++-- include/constants/battle_string_ids.h | 4 ++-- src/battle_message.c | 15 +++++++++------ 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/charmap.txt b/charmap.txt index 150b4a156..8aba3a327 100644 --- a/charmap.txt +++ b/charmap.txt @@ -406,13 +406,9 @@ B_ATK_PREFIX2 = FD 2A B_DEF_PREFIX2 = FD 2B B_ATK_PREFIX3 = FD 2C B_DEF_PREFIX3 = FD 2D -B_TRAINER2_CLASS = FD 2E -B_TRAINER2_NAME = FD 2F -B_TRAINER2_LOSE_TEXT = FD 30 -B_TRAINER2_WIN_TEXT = FD 31 -B_PARTNER_CLASS = FD 32 -B_PARTNER_NAME = FD 33 -B_BUFF3 = FD 34 +B_TRAINER2_LOSE_TEXT = FD 2E +B_TRAINER2_WIN_TEXT = FD 2F +B_BUFF3 = FD 30 @ indicates the end of a town/city name (before " TOWN" or " CITY") NAME_END = FC 00 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 674bb50d8..8aa0a1004 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2977,7 +2977,7 @@ BattleScript_BattleTowerLostLostSkipMonRecall:: waitstate printstring STRINGID_TRAINER1WINTEXT jumpifnotbattletype BATTLE_TYPE_DOUBLE, BattleScript_BattleTowerLostLostSkipDouble - printstring STRINGID_TRAINER2NAME + printstring STRINGID_TRAINER2WINTEXT BattleScript_BattleTowerLostLostSkipDouble:: end2 @@ -2995,7 +2995,7 @@ BattleScript_BattleTowerTrainerBattleWon:: jumpifnotbattletype BATTLE_TYPE_TRAINER_TOWER, BattleScript_BattleTowerEtcTrainerBattleWonSkipText printstring STRINGID_TRAINER1LOSETEXT jumpifnotbattletype BATTLE_TYPE_DOUBLE, BattleScript_BattleTowerEtcTrainerBattleWonSkipText - printstring STRINGID_TRAINER2CLASS + printstring STRINGID_TRAINER2LOSETEXT BattleScript_BattleTowerEtcTrainerBattleWonSkipText:: pickup end2 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index c648ad7be..24cc01ca6 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -373,8 +373,8 @@ #define STRINGID_POKEFLUTECATCHY 372 #define STRINGID_POKEFLUTE 373 #define STRINGID_MONHEARINGFLUTEAWOKE 374 -#define STRINGID_TRAINER2CLASS 375 -#define STRINGID_TRAINER2NAME 376 +#define STRINGID_TRAINER2LOSETEXT 375 +#define STRINGID_TRAINER2WINTEXT 376 #define STRINGID_PLAYERWHITEDOUT 377 #define STRINGID_MONTOOSCAREDTOMOVE 378 #define STRINGID_GHOSTGETOUTGETOUT 379 diff --git a/src/battle_message.c b/src/battle_message.c index 43ebc8444..f1d6430da 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -44,13 +44,13 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); static const u8 sText_Empty1[] = _(""); static const u8 sText_Trainer1LoseText[] = _("{B_TRAINER1_LOSE_TEXT}"); -static const u8 sText_Trainer2Class[] = _("{B_TRAINER2_CLASS}"); +static const u8 sText_Trainer2LoseText[] = _("{B_TRAINER2_LOSE_TEXT}"); static const u8 sText_Trainer1RecallPkmn1[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME}, come back!"); static const u8 sText_Trainer1WinText[] = _("{B_TRAINER1_WIN_TEXT}"); static const u8 sText_Trainer1RecallPkmn2[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON2_NAME}, come back!"); static const u8 sText_Trainer1RecallBoth[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME}, come back!"); -static const u8 sText_Trainer2Name[] = _("{B_TRAINER2_NAME}"); -static const u8 sText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_TRAINER2_LOSE_TEXT} EXP. Points!\p"); +static const u8 sText_Trainer2WinText[] = _("{B_TRAINER2_WIN_TEXT}"); +static const u8 sText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_BUFF3} EXP. Points!\p"); static const u8 sText_EmptyString4[] = _(""); static const u8 sText_ABoosted[] = _(" a boosted"); static const u8 sText_PkmnGrewToLv[] = _("{B_BUFF1} grew to\nLV. {B_BUFF2}!{WAIT_SE}\p"); @@ -878,8 +878,8 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_ST [STRINGID_POKEFLUTECATCHY - BATTLESTRINGS_TABLE_START] = sText_PlayedFluteCatchyTune, [STRINGID_POKEFLUTE - BATTLESTRINGS_TABLE_START] = sText_PlayedThe, [STRINGID_MONHEARINGFLUTEAWOKE - BATTLESTRINGS_TABLE_START] = sText_PkmnHearingFluteAwoke, - [STRINGID_TRAINER2CLASS - BATTLESTRINGS_TABLE_START] = sText_Trainer2Class, - [STRINGID_TRAINER2NAME - BATTLESTRINGS_TABLE_START] = sText_Trainer2Name, + [STRINGID_TRAINER2LOSETEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer2LoseText, + [STRINGID_TRAINER2WINTEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer2WinText, [STRINGID_PLAYERWHITEDOUT - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout2, [STRINGID_MONTOOSCAREDTOMOVE - BATTLESTRINGS_TABLE_START] = sText_TooScaredToMove, [STRINGID_GHOSTGETOUTGETOUT - BATTLESTRINGS_TABLE_START] = sText_GetOutGetOut, @@ -2805,7 +2805,10 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) { bool8 BattleStringShouldBeColored(u16 stringId) { - if (stringId == STRINGID_TRAINER1LOSETEXT || stringId == STRINGID_TRAINER2CLASS || stringId == STRINGID_TRAINER1WINTEXT || stringId == STRINGID_TRAINER2NAME) + if (stringId == STRINGID_TRAINER1LOSETEXT + || stringId == STRINGID_TRAINER2LOSETEXT + || stringId == STRINGID_TRAINER1WINTEXT + || stringId == STRINGID_TRAINER2WINTEXT) return TRUE; return FALSE; } From 859ca7994eb2f5cd6cd5bcd8b50fcba5989f0e2e Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Sat, 3 Sep 2022 23:27:56 +0800 Subject: [PATCH 35/38] Document Pokemon storage system --- include/box_party_pokemon_dropdown.h | 26 +- include/graphics.h | 10 +- include/pokemon_storage_system.h | 21 +- include/pokemon_storage_system_internal.h | 625 +++--- src/berry_pouch.c | 2 +- src/box_party_pokemon_dropdown.c | 268 +-- src/graphics.c | 12 +- src/item_menu.c | 2 +- src/pokemon_storage_system_2.c | 290 ++- src/pokemon_storage_system_3.c | 2123 +++++++++++---------- src/pokemon_storage_system_4.c | 1266 ++++++------ src/pokemon_storage_system_5.c | 1576 ++++++++------- src/pokemon_storage_system_6.c | 154 +- src/pokemon_storage_system_7.c | 500 +++-- src/pokemon_storage_system_8.c | 349 ++-- src/tm_case.c | 2 +- 16 files changed, 3645 insertions(+), 3581 deletions(-) diff --git a/include/box_party_pokemon_dropdown.h b/include/box_party_pokemon_dropdown.h index 795a22e67..5e925e8a2 100644 --- a/include/box_party_pokemon_dropdown.h +++ b/include/box_party_pokemon_dropdown.h @@ -1,24 +1,12 @@ #ifndef GUARD_BOX_PARTY_POKEMON_DROPDOWN_H #define GUARD_BOX_PARTY_POKEMON_DROPDOWN_H -enum -{ - BPPD_MOVE_INNER_LEFT = 0, - BPPD_MOVE_OUTER_LEFT, - BPPD_MOVE_INNER_TOP, - BPPD_MOVE_OUTER_TOP, - BPPD_MOVE_INNER_X, - BPPD_MOVE_INNER_Y -}; - -void AllocBoxPartyPokemonDropdowns(u8 num); -void FreeBoxPartyPokemonDropdowns(void); -void CopyAllBoxPartyPokemonDropdownsToVram(void); -void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void *src, u16 width, u16 height); -void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void *src); -void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y); -void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height); -void AdjustBoxPartyPokemonDropdownPos(u8 a0, u8 a1, s8 a2); -void CopyBoxPartyPokemonDropdownToBgTilemapBuffer(u8 idx); +void TilemapUtil_Init(u8 numTilemapIds); +void TilemapUtil_Free(void); +void TilemapUtil_SetTilemap(u8 tilemapId, u8 bg, const void *tilemap, u16 width, u16 height); +void TilemapUtil_SetPos(u8 tilemapId, u16 destX, u16 destY); +void TilemapUtil_SetRect(u8 tilemapId, u16 x, u16 y, u16 width, u16 height); +void TilemapUtil_Move(u8 tilemapId, u8 mode, s8 param); +void TilemapUtil_Update(u8 tilemapId); #endif //GUARD_BOX_PARTY_POKEMON_DROPDOWN_H diff --git a/include/graphics.h b/include/graphics.h index 6739f937b..02cc0082e 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4928,11 +4928,11 @@ extern const u16 gNamingScreenInputArrow_Gfx[]; extern const u16 gNamingScreenUnderscore_Gfx[]; // pokemon_storage_system -extern const u32 gPSSMenu_Gfx[]; -extern const u32 gUnknown_8E9CAEC[]; -extern const u16 gPSSMenu_Pal[]; -extern const u16 gUnknown_8E9C3F8[]; -extern const u16 gUnknown_8E9C418[]; +extern const u32 gPokeStorageMenu_Gfx[]; +extern const u32 gPokeStoragePartyMenu_Tilemap[]; +extern const u16 gPokeStoragePartyMenu_Pal[]; +extern const u16 gPokeStorageInterface_Pal[]; +extern const u16 gPokeStorageInterface_NoDisplayMon_Pal[]; // pokedex_screen extern const u16 gDexScreen_TopMenuIconPals_AtoZ[]; diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index f111796d8..388d3dba5 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -4,7 +4,18 @@ #include "global.h" #define TOTAL_BOXES_COUNT 14 -#define IN_BOX_COUNT 30 +#define IN_BOX_ROWS 5 // Number of rows, 6 Pokémon per row +#define IN_BOX_COLUMNS 6 // Number of columns, 5 Pokémon per column +#define IN_BOX_COUNT (IN_BOX_ROWS * IN_BOX_COLUMNS) + +/* + COLUMNS +ROWS 0 1 2 3 4 5 + 6 7 8 9 10 11 + 12 13 14 15 16 17 + 18 19 20 21 22 23 + 24 25 26 27 28 29 +*/ enum { @@ -20,10 +31,10 @@ enum WALLPAPER_SEAFLOOR, WALLPAPER_RIVER, WALLPAPER_SKY, - WALLPAPER_POLKADOT, + WALLPAPER_STARS, WALLPAPER_POKECENTER, - WALLPAPER_MACHINE, - WALLPAPER_PLAIN, + WALLPAPER_TILES, + WALLPAPER_SIMPLE, WALLPAPER_COUNT }; #define MAX_DEFAULT_WALLPAPER WALLPAPER_SAVANNA @@ -34,7 +45,7 @@ void SetBoxMonNickAt(u8 boxId, u8 monPosition, const u8 *newNick); s16 CompactPartySlots(void); u32 GetBoxMonDataAt(u8 boxId, u8 monPosition, s32 request); void ZeroBoxMonAt(u8 boxId, u8 monPosition); -void Cb2_ReturnToPSS(void); +void CB2_ReturnToPokeStorage(void); void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer); diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h index 3582d1f32..9c1984825 100644 --- a/include/pokemon_storage_system_internal.h +++ b/include/pokemon_storage_system_internal.h @@ -4,9 +4,6 @@ #include "pokemon_storage_system.h" #include "mon_markings.h" -#define IN_BOX_COLUMNS 5 -#define IN_BOX_ROWS 6 - // The maximum number of Pokémon icons that can appear on-screen. // By default the limit is 40 (though in practice only 37 can be). #define MAX_MON_ICONS (IN_BOX_COUNT + PARTY_SIZE + 1 >= 40 ? IN_BOX_COUNT + PARTY_SIZE + 1 : 40) @@ -16,13 +13,6 @@ // between 2 Pokémon with held items #define MAX_ITEM_ICONS 3 -enum -{ - MODE_PARTY, - MODE_BOX, - MODE_2, -}; - enum { OPTION_WITHDRAW, @@ -35,139 +25,200 @@ enum enum { - PC_TEXT_EXIT_BOX, - PC_TEXT_WHAT_YOU_DO, - PC_TEXT_PICK_A_THEME, - PC_TEXT_PICK_A_WALLPAPER, - PC_TEXT_IS_SELECTED, - PC_TEXT_JUMP_TO_WHICH_BOX, - PC_TEXT_DEPOSIT_IN_WHICH_BOX, - PC_TEXT_WAS_DEPOSITED, - PC_TEXT_BOX_IS_FULL, - PC_TEXT_RELEASE_POKE, - PC_TEXT_WAS_RELEASED, - PC_TEXT_BYE_BYE, - PC_TEXT_MARK_POKE, - PC_TEXT_LAST_POKE, - PC_TEXT_PARTY_FULL, - PC_TEXT_HOLDING_POKE, - PC_TEXT_WHICH_ONE_WILL_TAKE, - PC_TEXT_CANT_RELEASE_EGG, - PC_TEXT_CONTINUE_BOX, - PC_TEXT_CAME_BACK, - PC_TEXT_WORRIED, - PC_TEXT_SURPRISE, - PC_TEXT_PLEASE_REMOVE_MAIL, - PC_TEXT_IS_SELECTED2, - PC_TEXT_GIVE_TO_MON, - PC_TEXT_PLACED_IN_BAG, - PC_TEXT_BAG_FULL, - PC_TEXT_PUT_IN_BAG, - PC_TEXT_ITEM_IS_HELD, - PC_TEXT_CHANGED_TO_ITEM, - PC_TEXT_CANT_STORE_MAIL, + MENU_TEXT_CANCEL, + MENU_TEXT_STORE, + MENU_TEXT_WITHDRAW, + MENU_TEXT_MOVE, + MENU_TEXT_SHIFT, + MENU_TEXT_PLACE, + MENU_TEXT_SUMMARY, + MENU_TEXT_RELEASE, + MENU_TEXT_MARK, + MENU_TEXT_JUMP, + MENU_TEXT_WALLPAPER, + MENU_TEXT_NAME, + MENU_TEXT_TAKE, + MENU_TEXT_GIVE, + MENU_TEXT_GIVE2, + MENU_TEXT_SWITCH, + MENU_TEXT_BAG, + MENU_TEXT_INFO, + MENU_TEXT_SCENERY_1, + MENU_TEXT_SCENERY_2, + MENU_TEXT_SCENERY_3, + MENU_TEXT_ETCETERA, + MENU_TEXT_FOREST, + MENU_TEXT_CITY, + MENU_TEXT_DESERT, + MENU_TEXT_SAVANNA, + MENU_TEXT_CRAG, + MENU_TEXT_VOLCANO, + MENU_TEXT_SNOW, + MENU_TEXT_CAVE, + MENU_TEXT_BEACH, + MENU_TEXT_SEAFLOOR, + MENU_TEXT_RIVER, + MENU_TEXT_SKY, + MENU_TEXT_POLKADOT, + MENU_TEXT_POKECENTER, + MENU_TEXT_MACHINE, + MENU_TEXT_SIMPLE, +}; + +// Return IDs for input handlers +enum { + INPUT_NONE, + INPUT_MOVE_CURSOR, + INPUT_2, // Unused + INPUT_3, // Unused + INPUT_CLOSE_BOX, + INPUT_SHOW_PARTY, + INPUT_HIDE_PARTY, + INPUT_BOX_OPTIONS, + INPUT_IN_MENU, + INPUT_SCROLL_RIGHT, + INPUT_SCROLL_LEFT, + INPUT_DEPOSIT, + INPUT_WITHDRAW, + INPUT_MOVE_MON, + INPUT_SHIFT_MON, + INPUT_PLACE_MON, + INPUT_TAKE_ITEM, + INPUT_GIVE_ITEM, + INPUT_SWITCH_ITEMS, + INPUT_PRESSED_B, + INPUT_MULTIMOVE_START, + INPUT_MULTIMOVE_CHANGE_SELECTION, + INPUT_MULTIMOVE_SINGLE, + INPUT_MULTIMOVE_GRAB_SELECTION, + INPUT_MULTIMOVE_UNABLE, + INPUT_MULTIMOVE_MOVE_MONS, + INPUT_MULTIMOVE_PLACE_MONS, }; enum { - PC_TEXT_FMT_NORMAL, - PC_TEXT_FMT_MON_NAME_1, - PC_TEXT_FMT_MON_NAME_2, - PC_TEXT_FMT_MON_NAME_3, - PC_TEXT_FMT_MON_NAME_4, - PC_TEXT_FMT_MON_NAME_5, - PC_TEXT_FMT_MON_NAME_6, - PC_TEXT_FMT_ITEM_NAME, + RELEASE_MON_NOT_ALLOWED, + RELEASE_MON_ALLOWED, + RELEASE_MON_UNDETERMINED = -1, }; enum { - PC_TEXT_CANCEL, - PC_TEXT_STORE, - PC_TEXT_WITHDRAW, - PC_TEXT_MOVE, - PC_TEXT_SHIFT, - PC_TEXT_PLACE, - PC_TEXT_SUMMARY, - PC_TEXT_RELEASE, - PC_TEXT_MARK, - PC_TEXT_JUMP, - PC_TEXT_WALLPAPER, - PC_TEXT_NAME, - PC_TEXT_TAKE, - PC_TEXT_GIVE, - PC_TEXT_GIVE2, - PC_TEXT_SWITCH, - PC_TEXT_BAG, - PC_TEXT_INFO, - PC_TEXT_SCENERY1, - PC_TEXT_SCENERY2, - PC_TEXT_SCENERY3, - PC_TEXT_ETCETERA, - PC_TEXT_FOREST, - PC_TEXT_CITY, - PC_TEXT_DESERT, - PC_TEXT_SAVANNA, - PC_TEXT_CRAG, - PC_TEXT_VOLCANO, - PC_TEXT_SNOW, - PC_TEXT_CAVE, - PC_TEXT_BEACH, - PC_TEXT_SEAFLOOR, - PC_TEXT_RIVER, - PC_TEXT_SKY, - PC_TEXT_POLKADOT, - PC_TEXT_POKECENTER, - PC_TEXT_MACHINE, - PC_TEXT_SIMPLE, + MODE_PARTY, + MODE_BOX, + MODE_MOVE, }; enum { CURSOR_AREA_IN_BOX, CURSOR_AREA_IN_PARTY, - CURSOR_AREA_BOX, + CURSOR_AREA_BOX_TITLE, CURSOR_AREA_BUTTONS, // Party Pokemon and Close Box }; +#define CURSOR_AREA_IN_HAND CURSOR_AREA_BOX_TITLE // Alt name for cursor area used by Move Items + +// IDs for InitMonPlaceChange +enum +{ + CHANGE_GRAB, + CHANGE_PLACE, + CHANGE_SHIFT, +}; + +// IDs for the main functions for moving multiple Pokémon. +// Given as arguments to MultiMove_SetFunction +enum +{ + MULTIMOVE_START, + MULTIMOVE_SINGLE, + MULTIMOVE_CHANGE_SELECTION, + MULTIMOVE_GRAB_SELECTION, + MULTIMOVE_MOVE_MONS, + MULTIMOVE_PLACE_MONS, +}; enum { - SCREEN_CHANGE_EXIT_BOX, - SCREEN_CHANGE_SUMMARY_SCREEN, - SCREEN_CHANGE_NAME_BOX, - SCREEN_CHANGE_ITEM_FROM_BAG, + PALTAG_MON_ICON_0 = 56000, + PALTAG_MON_ICON_1, // Used implicitly in CreateMonIconSprite + PALTAG_MON_ICON_2, // Used implicitly in CreateMonIconSprite + PALTAG_3, // Unused + PALTAG_4, // Unused + PALTAG_5, // Unused + PALTAG_DISPLAY_MON, + PALTAG_MISC_1, // Used by cursor in multimove mode, choose box menu popup + PALTAG_MARKING_COMBO, + PALTAG_BOX_TITLE, + PALTAG_MISC_2, // Used by waveforms, cursor in normal mode, cursor shadow, box scroll arrows + PALTAG_ITEM_ICON_0, + PALTAG_ITEM_ICON_1, // Used implicitly in CreateItemIconSprites + PALTAG_ITEM_ICON_2, // Used implicitly in CreateItemIconSprites + PALTAG_MARKING_MENU, }; -#define TAG_PAL_WAVEFORM 0xDACA -#define TAG_PAL_DAC8 0xDAC8 -#define TAG_PAL_DAC6 0xDAC6 -#define TAG_PAL_DACE 0xDACE -#define TAG_PAL_DAC7 0xDAC7 -#define TAG_PAL_DAC9 0xDAC9 -#define TAG_PAL_DAC0 0xDAC0 -#define TAG_PAL_DACB 0xDACB +enum +{ + GFXTAG_CURSOR, + GFXTAG_CURSOR_SHADOW, + GFXTAG_DISPLAY_MON, + GFXTAG_BOX_TITLE, + GFXTAG_BOX_TITLE_ALT, + GFXTAG_WAVEFORM, + GFXTAG_BOX_SCROLL_ARROW, + GFXTAG_ITEM_ICON_0, + GFXTAG_ITEM_ICON_1, // Used implicitly in CreateItemIconSprites + GFXTAG_ITEM_ICON_2, // Used implicitly in CreateItemIconSprites + GFXTAG_CHOOSE_BOX_MENU_CENTER, + GFXTAG_CHOOSE_BOX_MENU_CORNERS, // Used implicitly in LoadChooseBoxMenuGfx + GFXTAG_12, // Unused + GFXTAG_MARKING_MENU, + GFXTAG_14, // Unused + GFXTAG_15, // Unused + GFXTAG_MARKING_COMBO, + GFXTAG_17, // Unused + GFXTAG_MON_ICON, +}; -#define TAG_TILE_WAVEFORM 0x5 -#define TAG_TILE_10 0x10 -#define TAG_TILE_2 0x2 -#define TAG_TILE_D 0xD -#define TAG_TILE_A 0xA -#define TAG_TILE_3 0x3 -#define TAG_TILE_4 0x4 -#define TAG_TILE_12 0x12 -#define TAG_TILE_7 0x7 -#define TAG_TILE_0 0x0 -#define TAG_TILE_1 0x1 -#define TAG_TILE_6 0x6 +// Special box ids for the choose box menu +#define BOXID_NONE_CHOSEN 200 +#define BOXID_CANCELED 201 -struct WallpaperTable + +enum { + CURSOR_ANIM_BOUNCE, + CURSOR_ANIM_STILL, + CURSOR_ANIM_OPEN, + CURSOR_ANIM_FIST, +}; + +enum +{ + RELEASE_ANIM_RELEASE, + RELEASE_ANIM_COME_BACK, +}; + +// IDs for the item icons affine anims +enum +{ + ITEM_ANIM_NONE, + ITEM_ANIM_APPEAR, + ITEM_ANIM_DISAPPEAR, + ITEM_ANIM_PICK_UP, + ITEM_ANIM_PUT_DOWN, + ITEM_ANIM_PUT_AWAY, + ITEM_ANIM_LARGE, +}; + +struct Wallpaper { const u32 *tiles; const u32 *tileMap; const u16 *palettes; }; -struct StorageAction +struct StorageMessage { const u8 *text; u8 format; @@ -176,7 +227,7 @@ struct StorageAction struct ChooseBoxMenu { struct Sprite *menuSprite; - struct Sprite *menuSideSprites[4]; + struct Sprite *menuCornerSprites[4]; u32 unused1[3]; struct Sprite *arrowSprites[2]; u8 buffer[0x200]; // passed but not used @@ -212,7 +263,7 @@ struct UnkUtil u8 max; }; -struct PSS_ItemIconSprite +struct PokeStorageItemIcon { struct Sprite *sprite; u8 *tiles; @@ -222,12 +273,12 @@ struct PSS_ItemIconSprite u8 active; }; -struct PssQuestLogBuffer +struct PokeStorageQuestLogData { - u16 species; + u16 species1; u16 species2; - u8 fromBox; - u8 toBox; + u8 box1; + u8 box2; }; struct PokemonStorageSystemData @@ -235,7 +286,7 @@ struct PokemonStorageSystemData u8 state; u8 boxOption; u8 screenChangeType; - bool8 isReshowingPSS; + bool8 isReopening; u8 taskId; struct UnkUtil unkUtil; struct UnkUtilData unkUtilData[8]; @@ -262,8 +313,8 @@ struct PokemonStorageSystemData u16 scrollUnused5; // Never read u16 scrollUnused6; // Never read u8 filler1[22]; - u8 field_2F8[512]; - u8 field_4F8[512]; + u8 boxTitleTiles[512]; + u8 boxTitleUnused[512]; u8 boxTitleCycleId; u8 wallpaperLoadState; // Written to, but never read. u8 wallpaperLoadBoxId; @@ -276,7 +327,7 @@ struct PokemonStorageSystemData struct Sprite *arrowSprites[2]; u32 wallpaperPalBits; u8 filler2[80]; // Unused - u16 unkUnused1; // Never read. + u16 unusedField1; // Never read. s16 wallpaperSetId; s16 wallpaperId; u16 wallpaperTilemap[360]; @@ -285,112 +336,114 @@ struct PokemonStorageSystemData u8 scrollToBoxId; s8 scrollDirection; // u8 *wallpaperTiles; // used only in Emerald for Walda - /* 0a68 */ struct Sprite *movingMonSprite; - /* 0a6c */ struct Sprite *partySprites[PARTY_SIZE]; - /* 0a84 */ struct Sprite *boxMonsSprites[IN_BOX_COUNT]; - /* 0afc */ struct Sprite **shiftMonSpritePtr; - /* 0b00 */ struct Sprite **releaseMonSpritePtr; - /* 0b04 */ u16 numIconsPerSpecies[MAX_MON_ICONS]; - /* 0b54 */ u16 iconSpeciesList[MAX_MON_ICONS]; - /* 0ba4 */ u16 boxSpecies[IN_BOX_COUNT]; - /* 0be0 */ u32 boxPersonalities[IN_BOX_COUNT]; - /* 0c58 */ u8 incomingBoxId; - /* 0c59 */ u8 shiftTimer; - /* 0c5a */ u8 numPartyToCompact; - /* 0c5c */ u16 iconScrollDistance; - /* 0c5e */ s16 iconScrollPos; - /* 0c60 */ s16 iconScrollSpeed; - /* 0c62 */ u16 iconScrollNumIncoming; - /* 0c64 */ u8 iconScrollCurColumn; - /* 0c65 */ s8 iconScrollDirection; // Unnecessary duplicate of scrollDirection - /* 0c66 */ u8 iconScrollState; - /* 0c67 */ u8 iconScrollToBoxId; // Unused duplicate of scrollToBoxId - /* 0c68 */ struct WindowTemplate menuWindow; - /* 0c70 */ struct StorageMenu menuItems[7]; - /* 0ca8 */ u8 menuItemsCount; - /* 0ca9 */ u8 menuWidth; - /* 0caa */ u8 menuUnusedField; // Never read. - /* 0cac */ u16 menuWindowId; - /* 0cb0 */ struct Sprite *cursorSprite; - /* 0cb4 */ struct Sprite *cursorShadowSprite; - /* 0cb8 */ s32 cursorNewX; - /* 0cbc */ s32 cursorNewY; - /* 0cc0 */ u32 cursorSpeedX; - /* 0cc4 */ u32 cursorSpeedY; - /* 0cc8 */ s16 cursorTargetX; - /* 0cca */ s16 cursorTargetY; - /* 0ccc */ u16 cursorMoveSteps; - /* 0cce */ s8 cursorVerticalWrap; - /* 0ccf */ s8 cursorHorizontalWrap; - /* 0cd0 */ u8 newCursorArea; - /* 0cd1 */ u8 newCursorPosition; - /* 0cd2 */ u8 cursorPrevHorizPos; - /* 0cd3 */ u8 cursorFlipTimer; - /* 0cd4 */ u8 cursorPalNums[2]; - /* 0cd8 */ const u32 *displayMonPalette; - /* 0cdc */ u32 displayMonPersonality; - /* 0ce0 */ u16 displayMonSpecies; - /* 0ce2 */ u16 displayMonItemId; - /* 0ce4 */ u16 displayUnusedVar; - /* 0ce6 */ bool8 setMosaic; - /* 0ce7 */ u8 displayMonMarkings; - /* 0ce8 */ u8 displayMonLevel; - /* 0ce9 */ bool8 displayMonIsEgg; - /* 0cea */ u8 displayMonName[POKEMON_NAME_LENGTH + 1]; - /* 0cf5 */ u8 displayMonTexts[4][36]; - /* 0d88 */ bool8 (*monPlaceChangeFunc)(void); - /* 0d8c */ u8 monPlaceChangeState; - /* 0d8d */ u8 shiftBoxId; - /* 0d90 */ struct Sprite *markingComboSprite; - /* 0d94 */ struct Sprite *waveformSprites[2]; - /* 0d9c */ u16 *markingComboTilesPtr; - /* 0da0 */ struct MonMarkingsMenu markMenu; - /* 1e58 */ struct ChooseBoxMenu field_1E5C; - /* 20a0 */ struct Pokemon movingMon; - /* 2104 */ struct Pokemon field_2108; - /* 2168 */ u8 field_216C; - /* 2169 */ u8 field_216D; - /* 216c */ bool8 isSurfMon; - /* 216d */ bool8 isDiveMon; - /* 216a */ s8 field_216E; - /* 216b */ s8 field_216F; - /* 216e */ s8 field_2170; - /* 216f */ s8 field_2171; - /* 2170 */ u16 field_2172; - /* 2172 */ u16 field_2176[3]; - /* 2178 */ u8 field_2186; - /* 2179 */ u8 field_2187; - /* 217a */ u8 summaryScreenMode; - /* 217c */ union + struct Sprite *movingMonSprite; + struct Sprite *partySprites[PARTY_SIZE]; + struct Sprite *boxMonsSprites[IN_BOX_COUNT]; + struct Sprite **shiftMonSpritePtr; + struct Sprite **releaseMonSpritePtr; + u16 numIconsPerSpecies[MAX_MON_ICONS]; + u16 iconSpeciesList[MAX_MON_ICONS]; + u16 boxSpecies[IN_BOX_COUNT]; + u32 boxPersonalities[IN_BOX_COUNT]; + u8 incomingBoxId; + u8 shiftTimer; + u8 numPartySpritesToCompact; + u16 iconScrollDistance; + s16 iconScrollPos; + s16 iconScrollSpeed; + u16 iconScrollNumIncoming; + u8 iconScrollCurColumn; + s8 iconScrollDirection; // Unnecessary duplicate of scrollDirection + u8 iconScrollState; + u8 iconScrollToBoxId; // Unused duplicate of scrollToBoxId + struct WindowTemplate menuWindow; + struct StorageMenu menuItems[7]; + u8 menuItemsCount; + u8 menuWidth; + u8 menuUnusedField; // Never read. + u16 menuWindowId; + struct Sprite *cursorSprite; + struct Sprite *cursorShadowSprite; + s32 cursorNewX; + s32 cursorNewY; + u32 cursorSpeedX; + u32 cursorSpeedY; + s16 cursorTargetX; + s16 cursorTargetY; + u16 cursorMoveSteps; + s8 cursorVerticalWrap; + s8 cursorHorizontalWrap; + u8 newCursorArea; + u8 newCursorPosition; + u8 cursorPrevPartyPos; + u8 cursorFlipTimer; + u8 cursorPalNums[2]; + const u32 *displayMonPalette; + u32 displayMonPersonality; + u16 displayMonSpecies; + u16 displayMonItemId; + u16 displayUnusedVar; + bool8 setMosaic; + u8 displayMonMarkings; + u8 displayMonLevel; + bool8 displayMonIsEgg; + u8 displayMonNickname[POKEMON_NAME_LENGTH + 1]; + u8 displayMonTexts[4][36]; // nickname, species name, gender and level, item name + bool8 (*monPlaceChangeFunc)(void); + u8 monPlaceChangeState; + u8 shiftBoxId; + struct Sprite *markingComboSprite; + struct Sprite *waveformSprites[2]; + u16 *markingComboTilesPtr; + struct MonMarkingsMenu markMenu; + struct ChooseBoxMenu chooseBoxMenu; + struct Pokemon movingMon; + struct Pokemon tempMon; + s8 releaseMonStatus; + bool8 releaseMonStatusResolved; + bool8 isSurfMon; + bool8 isDiveMon; + s8 releaseCheckBoxId; + s8 releaseCheckBoxPos; + s8 releaseBoxId; + s8 releaseBoxPos; + u16 releaseCheckState; + u16 restrictedMoveList[3]; + u8 summaryLastIndex; + u8 summaryCursorPos; + u8 summaryScreenMode; + union { struct Pokemon *mon; struct BoxPokemon *box; - } field_218C; - /* 2180 */ u8 field_2190[40]; - /* 21a8 */ u8 field_21B8[40]; - /* 21d0 */ u8 field_21E0[POKEMON_NAME_LENGTH + 1]; - /* 21db */ u8 itemName[20]; - /* 21ef */ u8 inBoxMovingMode; - /* 21f0 */ u16 field_2200; - /* 21f4 */ struct PSS_ItemIconSprite itemIcons[MAX_ITEM_ICONS]; - /* 2224 */ u16 movingItemId; - /* 2226 */ u16 itemInfoWindowOffset; - /* 2228 */ struct PssQuestLogBuffer qlogBuffer; - /* 2230 */ u16 field_2238; - /* 2232 */ u16 field_223A; - /* 2234 */ u16 *field_223C; - /* 2238 */ struct Sprite *cursorMonSprite; - /* 223c */ u16 field_2244[0x40]; - /* 22bc */ u8 field_22C4[0x800]; - /* 2abc */ u8 field_2AC4[0x1800]; - /* 42bc */ u8 itemIconBuffer[0x800]; - /* 4abc */ u8 field_4AC4[0x1000]; - /* 5abc */ u8 field_5AC4[0x800]; -}; // size=62bc + } summaryMonPtr; + u8 actionText[40]; + u8 boxTitleText[40]; + u8 releaseMonName[POKEMON_NAME_LENGTH + 1]; + u8 itemName[20]; + u8 inBoxMovingMode; + u16 multiMoveWindowId; + struct PokeStorageItemIcon itemIcons[MAX_ITEM_ICONS]; + u16 movingItemId; + u16 itemInfoWindowOffset; + struct PokeStorageQuestLogData pokeStorageQuestLogData; + u16 unusedField2; + u16 displayMonPalOffset; + u16 *displayMonTilePtr; + struct Sprite *displayMonSprite; + u16 displayMonPalBuffer[0x20]; + u8 unusedBuffer1[0x40]; + u8 tileBuffer[0x800]; + u8 unusedBuffer2[0x1800]; + u8 itemIconBuffer[0x200]; + u8 unusedBuffer3[0x600]; + u8 wallpaperBgTilemapBuffer[0x1000]; + u8 menuTilemapBuffer[0x800]; +}; -extern struct PokemonStorageSystemData *gPSSData; +extern struct PokemonStorageSystemData *gStorage; -void Cb2_EnterPSS(u8 a0); +void EnterPokeStorage(u8 boxOption); u8 GetCurrentBoxOption(void); struct Sprite *CreateChooseBoxArrows(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority); void SetBoxWallpaper(u8 boxId, u8 wallpaperId); @@ -400,46 +453,46 @@ void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon * src); void CB2_ExitPokeStorage(void); void FreeBoxSelectionPopupSpriteGfx(void); -void sub_808C940(u8 curBox); -void sub_808C950(void); +void CreateChooseBoxMenuSprites(u8 curBox); +void DestroyChooseBoxMenuSprites(void); u8 HandleBoxChooseSelectionInput(void); -void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal); +void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *menu, u16 tileTag, u16 palTag, u8 subpriority, bool32 loadPal); void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value); u32 GetCurrentBoxMonData(u8 boxPosition, s32 request); u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst); -void sub_80922C0(void); -void sub_8092340(void); -bool8 sub_80924A8(void); -void sub_8092AE4(void); -void sub_8092B3C(u8 a0); -void sub_8092B50(void); -void sub_8092B5C(void); -u8 sub_8092B70(void); -void sub_8092F54(void); -void sub_8093174(void); -void sub_8093194(void); -bool8 sub_80931EC(void); -void sub_8093264(void); -void sub_8093630(void); -void sub_8093660(void); -void sub_80936B8(void); -void sub_80937B4(void); -void sub_8094D14(u8 a0); -u8 sub_8094D34(void); -void sub_8094D60(void); -void sub_8094D84(void); -bool8 sub_8094F90(void); -s16 sub_8094F94(void); -void sub_8095024(void); -bool8 sub_8095050(void); -void sub_80950A4(void); -void sub_80950BC(u8 a0); -bool8 sub_80950D0(void); +void InitCursor(void); +void InitCursorOnReopen(void); +bool8 UpdateCursorPos(void); +void SetCursorInParty(void); +void SetCursorBoxPosition(u8 cursorBoxPosition); +void ClearSavedCursorPos(void); +void SaveCursorPos(void); +u8 GetSavedCursorPos(void); +void DoTrySetDisplayMonData(void); +void ResetSelectionAfterDeposit(void); +void InitReleaseMon(void); +bool8 TryHideReleaseMon(void); +void TrySetCursorFistAnim(void); +void SaveMovingMon(void); +void LoadSavedMovingMon(void); +void InitSummaryScreenData(void); +void SetSelectionAfterSummaryScreen(void); +void StartCursorAnim(u8 animNum); +u8 GetMovingMonOriginalBoxId(void); +void TryHideItemAtCursor(void); +void TryShowItemAtCursor(void); +bool8 IsMenuLoading(void); +s16 HandleMenuInput(void); +void RemoveMenu(void); +bool8 MultiMove_Init(void); +void MultiMove_Free(void); +void MultiMove_SetFunction(u8 funcId); +bool8 MultiMove_RunFunction(void); void CreateItemIconSprites(void); -void sub_8096088(void); -void sub_80960C0(void); -bool8 sub_809610C(void); +void MoveItemFromCursorToBag(void); +void MoveHeldItemWithPartyMenu(void); +bool8 IsItemIconAnimActive(void); const u8 *GetMovingItemName(void); void InitItemInfoWindow(void); bool8 UpdateItemInfoWindowSlideIn(void); @@ -455,7 +508,7 @@ u8 GetBoxCursorPosition(void); u16 GetMovingItem(void); u8 HandleInput(void); void InitCanReleaseMonVars(void); -void InitMonPlaceChange(u8 a0); +void InitMonPlaceChange(u8 type); bool8 IsActiveItemMoving(void); bool8 IsCursorOnCloseBox(void); bool8 IsMonBeingMoved(void); @@ -474,47 +527,47 @@ void SetWallpaperForCurrentBox(u8 wallpaper); bool8 TryStorePartyMonInBox(u8 boxId); void InitMenu(void); void SetMenuText(u8 textId); -void sub_8095C84(u8 cursorArea, u8 cursorPos); -void sub_8095E2C(u16 itemId); +void TryLoadItemIconAtPos(u8 cursorArea, u8 cursorPos); +void InitItemIconInCursor(u16 itemId); u8 GetBoxWallpaper(u8 boxId); bool8 IsCursorOnBoxTitle(void); bool8 IsCursorInBox(void); -void sub_808FFAC(void); +void InitMonIconFields(void); struct Sprite *CreateMonIconSprite(u16 species, u32 pid, s16 x, s16 y, u8 priority, u8 subpriority); void CreatePartyMonsSprites(bool8 species); -void sub_80909F4(void); -bool8 sub_8090A60(void); -void sub_8090B98(s16 yDelta); +void CompactPartySprites(void); +u8 GetNumPartySpritesCompacting(void); +void MovePartySprites(s16 yDelta); void DestroyAllPartyMonIcons(void); -void sub_8091114(void); -bool8 sub_8091150(void); -void sub_80913DC(u8 box); -bool8 sub_809140C(void); +void DoReleaseMonComeBackAnim(void); +bool8 ResetReleaseMonSpritePtr(void); +void CreateInitBoxTask(u8 boxId); +bool8 IsInitBoxActive(void); void AnimateBoxScrollArrows(bool8 species); void CreateMovingMonIcon(void); -void sub_8090E08(u8 boxId, u8 cursorPos); -bool8 sub_8090E74(void); -void sub_8090CC0(u8 cursorArea, u8 cursorPos); -void sub_8090D58(u8 cursorArea, u8 cursorPos); +void SetShiftMonSpritePtr(u8 boxId, u8 position); +bool8 ShiftMons(void); +void SetMovingMonSprite(u8 cursorArea, u8 cursorPos); +void SetPlacedMonSprite(u8 cursorArea, u8 cursorPos); void DestroyPartyMonIcon(u8 partyId); void DestroyMovingMonIcon(void); s16 GetFirstFreeBoxSpot(u8 boxId); -void sub_80901EC(u8 boxPosition); -void sub_8090FC4(u8 mode, u8 position); -bool8 sub_8091084(void); -void sub_80910CC(void); +void CreateBoxMonIconAtPos(u8 boxPosition); +void DoReleaseMonAnim(u8 mode, u8 position); +bool8 TryHideReleaseMonSprite(void); +void DestroyReleaseMonIcon(void); u8 CountPartyMons(void); u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore); -s8 sub_8094E50(u8 a0); -bool8 sub_8095474(u8 action); -u8 sub_8095AA0(void); -bool8 sub_8095ABC(void); -void sub_8095D44(u8 cursorArea, u8 cursorPos); -void sub_8094CD4(u8 *arg0, u8 *arg1); -void sub_8094D40(void); -void sub_8092BAC(bool8 arg0); +s8 GetMenuItemTextId(u8 menuIndex); +bool8 MultiMove_TryMoveGroup(u8 dir); +u8 MultiMove_GetOriginPosition(void); +bool8 MultiMove_CanPlaceSelection(void); +void TryHideItemIconAtPos(u8 cursorArea, u8 cursorPos); +void GetCursorBoxColumnAndRow(u8 *column, u8 *row); +void SetCursorPriorityTo1(void); +void InitMultiMonPlaceChange(bool8 moveCursorUp); void DestroyBoxMonIconAtPosition(u8 boxPosition); void SetBoxMonIconObjMode(u8 cursorPos, u8 objMode); void SetPartyMonIconObjMode(u8 cursorPos, u8 objMode); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 80fa333f7..576bc8d4f 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -1258,7 +1258,7 @@ static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId) static void Task_ContextMenu_FromPokemonPC(u8 taskId) { - sResources->exitCallback = Cb2_ReturnToPSS; + sResources->exitCallback = CB2_ReturnToPokeStorage; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } diff --git a/src/box_party_pokemon_dropdown.c b/src/box_party_pokemon_dropdown.c index 09767f3d9..f4cf05bd8 100644 --- a/src/box_party_pokemon_dropdown.c +++ b/src/box_party_pokemon_dropdown.c @@ -3,210 +3,236 @@ #include "box_party_pokemon_dropdown.h" #include "malloc.h" -struct BPPD_MapRect +// Handles 3 particular tilemaps ("PKMN Data" text, party menu, close box +// button) used for Pokémon Storage System in a somewhat unusual way. +// For example, while the cursor is on the Close Box button it flashes between +// two states alternately. Both these states are their own part of the same +// tilemap that's always present. The utility shifts the tilemap up and down +// to show/hide the states, and limits the view with a rectangle that only +// reveals one at a time. + +struct TilemapUtil_RectData { + s16 x; + s16 y; + u16 width; + u16 height; s16 destX; s16 destY; +}; + +struct TilemapUtil +{ + struct TilemapUtil_RectData prev; // Only read in unused function + struct TilemapUtil_RectData cur; + const void *savedTilemap; // Only written in unused function + const void *tilemap; + u16 altWidth; // Never read + u16 altHeight; // Never read u16 width; u16 height; - s16 destX2; - s16 destY2; + u16 rowSize; // Never read + u8 tileSize; + u8 bg; + bool8 active; // Only read in unused function }; -struct BPPD_Struct -{ - struct BPPD_MapRect map1Rect; - struct BPPD_MapRect map2Rect; - const void *src1; - const void *src2; - u16 src1Height; - u16 src1Width; - u16 src2Width; - u16 src2Height; - u16 bytesPerRow; - u8 mapSize; - u8 bgId; - bool8 bgUpdateScheduled; -}; +static EWRAM_DATA struct TilemapUtil *sTilemapUtil = NULL; +static EWRAM_DATA u16 sNumTilemapUtilIds = 0; -static EWRAM_DATA struct BPPD_Struct * sBoxPartyPokemonDropdownPtr = NULL; -static EWRAM_DATA u16 sBoxPartyPokemonDropdownCount = 0; - -static void PushMap1(u8 idx); -static void PushMap2(u8 idx); +static void TilemapUtil_DrawPrev(u8 tilemapId); +static void TilemapUtil_Draw(u8 tilemapId); static const struct { - u16 height; u16 width; -} sBGdims[2][4] = { + u16 height; +} sTilemapDimensions[2][4] = { { - {0x0100, 0x0100}, - {0x0200, 0x0100}, - {0x0100, 0x0200}, - {0x0200, 0x0200} + { 256, 256}, + { 512, 256}, + { 256, 512}, + { 512, 512} }, { - {0x0080, 0x0080}, - {0x0100, 0x0100}, - {0x0200, 0x0200}, - {0x0400, 0x0400} + { 128, 128}, + { 256, 256}, + { 512, 512}, + {1024, 1024} } }; -void AllocBoxPartyPokemonDropdowns(u8 num) +void TilemapUtil_Init(u8 numTilemapIds) { u16 i; - sBoxPartyPokemonDropdownPtr = Alloc(num * sizeof(struct BPPD_Struct)); - sBoxPartyPokemonDropdownCount = sBoxPartyPokemonDropdownPtr == NULL ? 0 : num; - for (i = 0; i < sBoxPartyPokemonDropdownCount; i++) + sTilemapUtil = Alloc(numTilemapIds * sizeof(struct TilemapUtil)); + sNumTilemapUtilIds = sTilemapUtil == NULL ? 0 : numTilemapIds; + for (i = 0; i < sNumTilemapUtilIds; i++) { - sBoxPartyPokemonDropdownPtr[i].src1 = NULL; - sBoxPartyPokemonDropdownPtr[i].bgUpdateScheduled = FALSE; + sTilemapUtil[i].savedTilemap = NULL; + sTilemapUtil[i].active = FALSE; } } -void FreeBoxPartyPokemonDropdowns(void) +void TilemapUtil_Free(void) { - Free(sBoxPartyPokemonDropdownPtr); + Free(sTilemapUtil); } -void CopyAllBoxPartyPokemonDropdownsToVram(void) +// Unused +void TilemapUtil_UpdateAll(void) { int i; - for (i = 0; i < sBoxPartyPokemonDropdownCount; i++) + for (i = 0; i < sNumTilemapUtilIds; i++) { - if (sBoxPartyPokemonDropdownPtr[i].bgUpdateScheduled == TRUE) - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(i); + if (sTilemapUtil[i].active == TRUE) + TilemapUtil_Update(i); } } -void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void *src, u16 width, u16 height) +void TilemapUtil_SetTilemap(u8 tilemapId, u8 bg, const void *tilemap, u16 width, u16 height) { u16 screenSize; u16 bgType; - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - sBoxPartyPokemonDropdownPtr[idx].src1 = NULL; - sBoxPartyPokemonDropdownPtr[idx].src2 = src; - sBoxPartyPokemonDropdownPtr[idx].bgId = bgId; - sBoxPartyPokemonDropdownPtr[idx].src2Width = width; - sBoxPartyPokemonDropdownPtr[idx].src2Height = height; - screenSize = GetBgAttribute(bgId, BG_ATTR_SCREENSIZE); - bgType = GetBgAttribute(bgId, BG_ATTR_BGTYPE); - sBoxPartyPokemonDropdownPtr[idx].src1Height = sBGdims[bgType][screenSize].height; - sBoxPartyPokemonDropdownPtr[idx].src1Width = sBGdims[bgType][screenSize].width; + sTilemapUtil[tilemapId].savedTilemap = NULL; + sTilemapUtil[tilemapId].tilemap = tilemap; + sTilemapUtil[tilemapId].bg = bg; + sTilemapUtil[tilemapId].width = width; + sTilemapUtil[tilemapId].height = height; + + screenSize = GetBgAttribute(bg, BG_ATTR_SCREENSIZE); + bgType = GetBgAttribute(bg, BG_ATTR_BGTYPE); + sTilemapUtil[tilemapId].altWidth = sTilemapDimensions[bgType][screenSize].width; + sTilemapUtil[tilemapId].altHeight = sTilemapDimensions[bgType][screenSize].height; if (bgType != 0) - sBoxPartyPokemonDropdownPtr[idx].mapSize = 1; + sTilemapUtil[tilemapId].tileSize = 1; else - sBoxPartyPokemonDropdownPtr[idx].mapSize = 2; - sBoxPartyPokemonDropdownPtr[idx].bytesPerRow = width * sBoxPartyPokemonDropdownPtr[idx].mapSize; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.width = width; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.height = height; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX = 0; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY = 0; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 = 0; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 = 0; - sBoxPartyPokemonDropdownPtr[idx].map1Rect = sBoxPartyPokemonDropdownPtr[idx].map2Rect; - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].tileSize = 2; + sTilemapUtil[tilemapId].rowSize = width * sTilemapUtil[tilemapId].tileSize; + sTilemapUtil[tilemapId].cur.width = width; + sTilemapUtil[tilemapId].cur.height = height; + sTilemapUtil[tilemapId].cur.x = 0; + sTilemapUtil[tilemapId].cur.y = 0; + sTilemapUtil[tilemapId].cur.destX = 0; + sTilemapUtil[tilemapId].cur.destY = 0; + sTilemapUtil[tilemapId].prev = sTilemapUtil[tilemapId].cur; + sTilemapUtil[tilemapId].active = TRUE; } } -void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void *src) +// Unused +void TilemapUtil_SetSavedMap(u8 tilemapId, const void *tilemap) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - sBoxPartyPokemonDropdownPtr[idx].src1 = src; - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].savedTilemap = tilemap; + sTilemapUtil[tilemapId].active = TRUE; } } -void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y) +void TilemapUtil_SetPos(u8 tilemapId, u16 destX, u16 destY) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 = x; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 = y; - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].cur.destX = destX; + sTilemapUtil[tilemapId].cur.destY = destY; + sTilemapUtil[tilemapId].active = TRUE; } } -void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height) +void TilemapUtil_SetRect(u8 tilemapId, u16 x, u16 y, u16 width, u16 height) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX = x; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY = y; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.width = width; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.height = height; - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].cur.x = x; + sTilemapUtil[tilemapId].cur.y = y; + sTilemapUtil[tilemapId].cur.width = width; + sTilemapUtil[tilemapId].cur.height = height; + sTilemapUtil[tilemapId].active = TRUE; } } -void AdjustBoxPartyPokemonDropdownPos(u8 idx, u8 op, s8 param) +void TilemapUtil_Move(u8 tilemapId, u8 mode, s8 param) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - switch (op) + switch (mode) { - case BPPD_MOVE_INNER_LEFT: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.width -= param; + case 0: + sTilemapUtil[tilemapId].cur.destX += param; + sTilemapUtil[tilemapId].cur.width -= param; break; - case BPPD_MOVE_OUTER_LEFT: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX += param; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.width += param; + case 1: + sTilemapUtil[tilemapId].cur.x += param; + sTilemapUtil[tilemapId].cur.width += param; break; - case BPPD_MOVE_INNER_TOP: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.height -= param; + case 2: + sTilemapUtil[tilemapId].cur.destY += param; + sTilemapUtil[tilemapId].cur.height -= param; break; - case BPPD_MOVE_OUTER_TOP: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY -= param; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.height += param; + case 3: // this is the only mode ever used + sTilemapUtil[tilemapId].cur.y -= param; + sTilemapUtil[tilemapId].cur.height += param; break; - case BPPD_MOVE_INNER_X: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param; + case 4: + sTilemapUtil[tilemapId].cur.destX += param; break; - case BPPD_MOVE_INNER_Y: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param; + case 5: + sTilemapUtil[tilemapId].cur.destY += param; break; } - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].active = TRUE; } } -void CopyBoxPartyPokemonDropdownToBgTilemapBuffer(u8 idx) +void TilemapUtil_Update(u8 tilemapId) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - if (sBoxPartyPokemonDropdownPtr[idx].src1 != NULL) - PushMap1(idx); - PushMap2(idx); - sBoxPartyPokemonDropdownPtr[idx].map1Rect = sBoxPartyPokemonDropdownPtr[idx].map2Rect; + if (sTilemapUtil[tilemapId].savedTilemap != NULL) // Always false + TilemapUtil_DrawPrev(tilemapId); + TilemapUtil_Draw(tilemapId); + sTilemapUtil[tilemapId].prev = sTilemapUtil[tilemapId].cur; } } -static void PushMap1(u8 idx) +// Never called, see TilemapUtil_Update +static void TilemapUtil_DrawPrev(u8 tilemapId) { int i; - int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src1Height; - const void *addr = sBoxPartyPokemonDropdownPtr[idx].src1 + run * sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2 * sBoxPartyPokemonDropdownPtr[idx].mapSize; - for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map1Rect.height; i++) + int rowSize = sTilemapUtil[tilemapId].tileSize * sTilemapUtil[tilemapId].altWidth; + const void *tiles = sTilemapUtil[tilemapId].savedTilemap + + rowSize * sTilemapUtil[tilemapId].prev.destY + + sTilemapUtil[tilemapId].prev.destX * sTilemapUtil[tilemapId].tileSize; + for (i = 0; i < sTilemapUtil[tilemapId].prev.height; i++) { - CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map1Rect.width, 1); - addr += run; + CopyToBgTilemapBufferRect(sTilemapUtil[tilemapId].bg, + tiles, + sTilemapUtil[tilemapId].prev.destX, + sTilemapUtil[tilemapId].prev.destY + i, + sTilemapUtil[tilemapId].prev.width, + 1); + tiles += rowSize; } } -static void PushMap2(u8 idx) +static void TilemapUtil_Draw(u8 tilemapId) { int i; - int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src2Width; - const void *addr = sBoxPartyPokemonDropdownPtr[idx].src2 + run * sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX * sBoxPartyPokemonDropdownPtr[idx].mapSize; - for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map2Rect.height; i++) + int rowSize = sTilemapUtil[tilemapId].tileSize * sTilemapUtil[tilemapId].width; + const void *tiles = sTilemapUtil[tilemapId].tilemap + + rowSize * sTilemapUtil[tilemapId].cur.y + + sTilemapUtil[tilemapId].cur.x * sTilemapUtil[tilemapId].tileSize; + for (i = 0; i < sTilemapUtil[tilemapId].cur.height; i++) { - CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map2Rect.width, 1); - addr += run; + CopyToBgTilemapBufferRect(sTilemapUtil[tilemapId].bg, + tiles, + sTilemapUtil[tilemapId].cur.destX, + sTilemapUtil[tilemapId].cur.destY + i, + sTilemapUtil[tilemapId].cur.width, + 1); + tiles += rowSize; } } diff --git a/src/graphics.c b/src/graphics.c index cf3f6bd37..cf1935730 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1251,13 +1251,11 @@ const u32 gPokeSummary_StatusAilmentIconTiles[] = INCBIN_U32("graphics/interface const u16 gDexScreen_TopMenuIconPals_AtoZ[] = INCBIN_U16("graphics/pokedex/cat_icon_abc.gbapal"); const u32 gDexScreen_TopMenuIconTiles_AtoZ[] = INCBIN_U32("graphics/pokedex/cat_icon_abc.4bpp.lz"); -const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal"); -const u16 gUnknown_8E9C3F8[] = INCBIN_U16("graphics/interface/box_tiles_pal2.gbapal"); -const u16 gUnknown_8E9C418[] = INCBIN_U16("graphics/interface/box_tiles_pal3.gbapal"); -const u32 gPSSMenu_Gfx[] = INCBIN_U32("graphics/interface/box_tiles.4bpp.lz"); - -const u32 gUnknown_8E9CAEC[] = INCBIN_U32("graphics/unknown/unknown_E9CAEC.bin.lz"); - +const u16 gPokeStoragePartyMenu_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal"); +const u16 gPokeStorageInterface_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal2.gbapal"); +const u16 gPokeStorageInterface_NoDisplayMon_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal3.gbapal"); +const u32 gPokeStorageMenu_Gfx[] = INCBIN_U32("graphics/interface/box_tiles.4bpp.lz"); +const u32 gPokeStoragePartyMenu_Tilemap[] = INCBIN_U32("graphics/unknown/unknown_E9CAEC.bin.lz"); const u16 gMonMarkingsMenu_Pal[] = INCBIN_U16("graphics/misc/markings2.gbapal"); const u16 gMonMarkingsMenu_Gfx[] = INCBIN_U16("graphics/misc/markings2.4bpp"); diff --git a/src/item_menu.c b/src/item_menu.c index bf51d2f31..f04ac59d5 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1784,7 +1784,7 @@ static void GoToBerryPouch_PCBox(void) static void ReturnToBagMenuFromSubmenu_PCBox(void) { - GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_LAST, Cb2_ReturnToPSS); + GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_LAST, CB2_ReturnToPokeStorage); } static void Task_ItemContext_Sell(u8 taskId) diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index 1f9c7a4e5..421c74681 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -16,22 +16,20 @@ #include "constants/help_system.h" static EWRAM_DATA u8 sPreviousBoxOption = 0; -static EWRAM_DATA struct ChooseBoxMenu *sBoxSelectionPopupSpriteManager = NULL; +static EWRAM_DATA struct ChooseBoxMenu *sChooseBoxMenu = NULL; -static void PSS_CreatePCMenu(u8 whichMenu, s16 *windowIdPtr); +static void CreatePCMainMenu(u8 whichMenu, s16 *windowIdPtr); static void ChooseBoxMenu_CreateSprites(u8 curBox); -static void sub_808CBA4(void); -static void UpdateBoxNameAndCountSprite_WraparoundRight(void); -static void UpdateBoxNameAndCountSprite_WraparoundLeft(void); -static void PrintBoxNameAndCountToSprite(void); -static void PrintToSpriteWithTagUnk0240(const u8 *a0, u16 x, u16 y); -static void sub_808CD64(struct Sprite *sprite); +static void ChooseBoxMenu_DestroySprites(void); +static void ChooseBoxMenu_MoveRight(void); +static void ChooseBoxMenu_MoveLeft(void); +static void ChooseBoxMenu_PrintBoxNameAndCount(void); +static void ChooseBoxMenu_PrintTextToSprite(const u8 *a0, u16 x, u16 y); +static void SpriteCB_ChooseBoxArrow(struct Sprite *sprite); -// Forward declarations - -static const u16 sBoxSelectionPopupPalette[]; -static const u16 sBoxSelectionPopupCenterTiles[]; -static const u16 sBoxSelectionPopupSidesTiles[]; +static const u16 sChooseBoxMenu_Pal[]; +static const u8 sChooseBoxMenuCenter_Gfx[]; +static const u8 sChooseBoxMenuCorners_Gfx[]; struct { const u8 *text; @@ -44,7 +42,7 @@ struct { [OPTION_EXIT] = {gText_SeeYa, gText_SeeYaDescription} }; -void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer) +void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *unused, s32 bytesToBuffer) { s32 i, tileBytesToBuffer, remainingBytes; u16 windowId; @@ -90,7 +88,7 @@ void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero RemoveWindow(windowId); } -static void PrintStringToBufferCopyNow(const u8 *string, void *dst, u16 rise, u8 bgClr, u8 fgClr, u8 shClr, u8 *buffer) +static void PrintStringToBufferCopyNow(const u8 *string, void *dst, u16 offset, u8 bgColor, u8 fgColor, u8 shadowColor, u8 *unused) { u32 var; u8 windowId; @@ -102,15 +100,15 @@ static void PrintStringToBufferCopyNow(const u8 *string, void *dst, u16 rise, u8 winTemplate.height = 2; var = winTemplate.width * 32; windowId = AddWindow(&winTemplate); - FillWindowPixelBuffer(windowId, PIXEL_FILL(bgClr)); + FillWindowPixelBuffer(windowId, PIXEL_FILL(bgColor)); tileData1 = (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA); tileData2 = (winTemplate.width * 32) + tileData1; - txtColor[0] = bgClr; - txtColor[1] = fgClr; - txtColor[2] = shClr; + txtColor[0] = bgColor; + txtColor[1] = fgColor; + txtColor[2] = shadowColor; AddTextPrinterParameterized4(windowId, FONT_1, 0, 2, 0, 0, txtColor, -1, string); CpuCopy16(tileData1, dst, var); - CpuCopy16(tileData2, dst + rise, var); + CpuCopy16(tileData2, dst + offset, var); RemoveWindow(windowId); } @@ -147,10 +145,8 @@ u8 CountPartyNonEggMons(void) for (i = 0, count = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE - && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) - { + && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) count++; - } } return count; @@ -163,12 +159,10 @@ u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore) for (i = 0, count = 0; i < PARTY_SIZE; i++) { if (i != slotToIgnore - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE - && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) - && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) - { + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) + && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) count++; - } } return count; @@ -186,9 +180,7 @@ u8 CountPartyMons(void) for (i = 0, count = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE) - { count++; - } } return count; @@ -205,7 +197,8 @@ static u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n) return str; } -static void sub_808C25C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) +// Unused +static void UnusedWriteRectCpu(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) { u16 i; @@ -231,16 +224,6 @@ static void UnusedWriteRectDma(u16 *dest, u16 dest_left, u16 dest_top, u16 width Dma3FillLarge16_(0, dest, width); } - -//------------------------------------------------------------------------------ -// SECTION: Main menu -// -// The below functions generally handle the PC main menu where the main -// options can be selected (Withdraw, Deposit, etc.), as well as exiting -// Pokémon Storage back to this menu. -//------------------------------------------------------------------------------ - - enum { STATE_LOAD, STATE_FADE_IN, @@ -263,7 +246,7 @@ static void Task_PCMainMenu(u8 taskId) { case STATE_LOAD: SetHelpContext(HELPCONTEXT_BILLS_PC); - PSS_CreatePCMenu(task->tSelectedOption, &task->tWindowId); + CreatePCMainMenu(task->tSelectedOption, &task->tWindowId); LoadStdWindowFrameGfx(); DrawDialogueFrame(0, FALSE); FillWindowPixelBuffer(0, PIXEL_FILL(1)); @@ -274,9 +257,8 @@ static void Task_PCMainMenu(u8 taskId) break; case STATE_FADE_IN: if (IsWeatherNotFadingIn()) - { task->tState++; - } + break; case STATE_HANDLE_INPUT: task->tInput = Menu_ProcessInput(); @@ -305,14 +287,14 @@ static void Task_PCMainMenu(u8 taskId) DestroyTask(taskId); break; default: - if (task->tInput == 0 && CountPartyMons() == PARTY_SIZE) + if (task->tInput == OPTION_WITHDRAW && CountPartyMons() == PARTY_SIZE) { // Can't withdraw FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, FONT_2, gText_PartyFull, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); - task->tState = 3; + task->tState = STATE_ERROR_MSG; } - else if (task->tInput == 1 && CountPartyMons() == 1) + else if (task->tInput == OPTION_DEPOSIT && CountPartyMons() == 1) { // Can't deposit FillWindowPixelBuffer(0, PIXEL_FILL(1)); @@ -362,7 +344,7 @@ static void Task_PCMainMenu(u8 taskId) if (!gPaletteFade.active) { CleanupOverworldWindowsAndTilemaps(); - Cb2_EnterPSS(task->tInput); + EnterPokeStorage(task->tInput); DestroyTask(taskId); } break; @@ -372,7 +354,7 @@ static void Task_PCMainMenu(u8 taskId) void ShowPokemonStorageSystemPC(void) { u8 taskId = CreateTask(Task_PCMainMenu, 80); - gTasks[taskId].tState = 0; + gTasks[taskId].tState = STATE_LOAD; gTasks[taskId].tSelectedOption = 0; LockPlayerFieldControls(); } @@ -384,14 +366,14 @@ static void FieldTask_ReturnToPcMenu(void) SetVBlankCallback(NULL); taskId = CreateTask(Task_PCMainMenu, 80); - gTasks[taskId].tState = 0; + gTasks[taskId].tState = STATE_LOAD; gTasks[taskId].tSelectedOption = sPreviousBoxOption; Task_PCMainMenu(taskId); SetVBlankCallback(vblankCb); FadeInFromBlack(); } -static const struct WindowTemplate sUnknown_83CDA48 = { +static const struct WindowTemplate sWindowTemplate_MainMenu = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 1, @@ -401,14 +383,13 @@ static const struct WindowTemplate sUnknown_83CDA48 = { .baseBlock = 0x001 }; -static void PSS_CreatePCMenu(u8 whichMenu, s16 *windowIdPtr) +static void CreatePCMainMenu(u8 whichMenu, s16 *windowIdPtr) { - s16 windowId; - windowId = AddWindow(&sUnknown_83CDA48); + s16 windowId = AddWindow(&sWindowTemplate_MainMenu); DrawStdWindowFrame(windowId, FALSE); - PrintTextArray(windowId, FONT_2, GetMenuCursorDimensionByFont(FONT_2, 0), 2, 16, NELEMS(sMainMenuTexts), (void *)sMainMenuTexts); - Menu_InitCursor(windowId, FONT_2, 0, 2, 16, NELEMS(sMainMenuTexts), whichMenu); + PrintTextArray(windowId, FONT_2, GetMenuCursorDimensionByFont(FONT_2, 0), 2, 16, ARRAY_COUNT(sMainMenuTexts), (void *)sMainMenuTexts); + Menu_InitCursor(windowId, FONT_2, 0, 2, 16, ARRAY_COUNT(sMainMenuTexts), whichMenu); *windowIdPtr = windowId; } @@ -439,54 +420,44 @@ void ResetPokemonStorageSystem(void) SetBoxWallpaper(boxId, boxId % (MAX_DEFAULT_WALLPAPER + 1)); } - -//------------------------------------------------------------------------------ -// SECTION: Choose Box menu -// -// The below functions handle the popup menu that allows the player to cycle -// through the boxes and select one. Used when storing Pokémon in Deposit mode -// and for the Jump feature. -//------------------------------------------------------------------------------ - - -void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal) +void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *menu, u16 tileTag, u16 palTag, u8 subpriority, bool32 loadPal) { struct SpritePalette palette = { - sBoxSelectionPopupPalette, palTag + sChooseBoxMenu_Pal, palTag }; struct SpriteSheet sheets[] = { - {sBoxSelectionPopupCenterTiles, 0x800, tileTag}, - {sBoxSelectionPopupSidesTiles, 0x180, tileTag + 1}, + {sChooseBoxMenuCenter_Gfx, 0x800, tileTag}, + {sChooseBoxMenuCorners_Gfx, 0x180, tileTag + 1}, {} }; - if (loadPal) + if (loadPal) // Always false LoadSpritePalette(&palette); LoadSpriteSheets(sheets); - sBoxSelectionPopupSpriteManager = a0; - a0->tileTag = tileTag; - a0->paletteTag = palTag; - a0->subpriority = a3; - a0->loadedPalette = loadPal; + sChooseBoxMenu = menu; + menu->tileTag = tileTag; + menu->paletteTag = palTag; + menu->subpriority = subpriority; + menu->loadedPalette = loadPal; } void FreeBoxSelectionPopupSpriteGfx(void) { - if (sBoxSelectionPopupSpriteManager->loadedPalette) - FreeSpritePaletteByTag(sBoxSelectionPopupSpriteManager->paletteTag); - FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tileTag); - FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tileTag + 1); + if (sChooseBoxMenu->loadedPalette) + FreeSpritePaletteByTag(sChooseBoxMenu->paletteTag); + FreeSpriteTilesByTag(sChooseBoxMenu->tileTag); + FreeSpriteTilesByTag(sChooseBoxMenu->tileTag + 1); } -void sub_808C940(u8 curBox) +void CreateChooseBoxMenuSprites(u8 curBox) { ChooseBoxMenu_CreateSprites(curBox); } -void sub_808C950(void) +void DestroyChooseBoxMenuSprites(void) { - sub_808CBA4(); + ChooseBoxMenu_DestroySprites(); } u8 HandleBoxChooseSelectionInput(void) @@ -494,60 +465,61 @@ u8 HandleBoxChooseSelectionInput(void) if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - return 201; + return BOXID_CANCELED; } if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - return sBoxSelectionPopupSpriteManager->curBox; + return sChooseBoxMenu->curBox; } if (JOY_NEW(DPAD_LEFT)) { PlaySE(SE_SELECT); - UpdateBoxNameAndCountSprite_WraparoundLeft(); + ChooseBoxMenu_MoveLeft(); } else if (JOY_NEW(DPAD_RIGHT)) { PlaySE(SE_SELECT); - UpdateBoxNameAndCountSprite_WraparoundRight(); + ChooseBoxMenu_MoveRight(); } - return 200; + return BOXID_NONE_CHOSEN; } -static const union AnimCmd gUnknown_83CDA50[] = { +static const union AnimCmd sAnim_ChooseBoxMenu_TopLeft[] = { ANIMCMD_FRAME( 0, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CDA58[] = { +static const union AnimCmd sAnim_ChooseBoxMenu_BottomLeft[] = { ANIMCMD_FRAME( 4, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CDA60[] = { +static const union AnimCmd sAnim_ChooseBoxMenu_TopRight[] = { ANIMCMD_FRAME( 6, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CDA68[] = { +static const union AnimCmd sAnim_ChooseBoxMenu_BottomRight[] = { ANIMCMD_FRAME(10, 5), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_83CDA70[] = { - gUnknown_83CDA50, - gUnknown_83CDA58, - gUnknown_83CDA60, - gUnknown_83CDA68 +static const union AnimCmd *const sAnims_ChooseBoxMenu[] = { + sAnim_ChooseBoxMenu_TopLeft, + sAnim_ChooseBoxMenu_BottomLeft, + sAnim_ChooseBoxMenu_TopRight, + sAnim_ChooseBoxMenu_BottomRight, }; -static const union AffineAnimCmd gUnknown_83CDA80[] = { +static const union AffineAnimCmd sAffineAnim_ChooseBoxMenu[] = { AFFINEANIMCMD_FRAME(224, 224, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const gUnknown_83CDA90[] = { - gUnknown_83CDA80 +// Unused +static const union AffineAnimCmd *const sAffineAnims_ChooseBoxMenu[] = { + sAffineAnim_ChooseBoxMenu }; static void ChooseBoxMenu_CreateSprites(u8 curBox) @@ -562,112 +534,112 @@ static void ChooseBoxMenu_CreateSprites(u8 curBox) 0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; { - const u8 gUnknown_83CDA94[] = _("/30"); + const u8 sText_OutOf30[] = _("/30"); - sBoxSelectionPopupSpriteManager->curBox = curBox; - template.tileTag = sBoxSelectionPopupSpriteManager->tileTag; - template.paletteTag = sBoxSelectionPopupSpriteManager->paletteTag; + sChooseBoxMenu->curBox = curBox; + template.tileTag = sChooseBoxMenu->tileTag; + template.paletteTag = sChooseBoxMenu->paletteTag; spriteId = CreateSprite(&template, 160, 96, 0); - sBoxSelectionPopupSpriteManager->menuSprite = gSprites + spriteId; + sChooseBoxMenu->menuSprite = gSprites + spriteId; - // Manual subsprites oamData.shape = SPRITE_SHAPE(8x32); oamData.size = SPRITE_SIZE(8x32); - template.tileTag = sBoxSelectionPopupSpriteManager->tileTag + 1; - template.anims = gUnknown_83CDA70; - for (i = 0; i < 4; i++) + template.tileTag = sChooseBoxMenu->tileTag + 1; + template.anims = sAnims_ChooseBoxMenu; + for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->menuCornerSprites); i++) { - u16 r5; - spriteId = CreateSprite(&template, 124, 80, sBoxSelectionPopupSpriteManager->subpriority); - sBoxSelectionPopupSpriteManager->menuSideSprites[i] = gSprites + spriteId; - r5 = 0; + // corner sprites are created in order of top left, bottom left, top right, bottom right + u16 animNum; + spriteId = CreateSprite(&template, 124, 80, sChooseBoxMenu->subpriority); // place at top left + sChooseBoxMenu->menuCornerSprites[i] = &gSprites[spriteId]; + animNum = 0; if (i & 2) { - sBoxSelectionPopupSpriteManager->menuSideSprites[i]->x = 196; - r5 = 2; + sChooseBoxMenu->menuCornerSprites[i]->x = 196; // move to bottom + animNum = 2; } if (i & 1) { - sBoxSelectionPopupSpriteManager->menuSideSprites[i]->y = 112; - sBoxSelectionPopupSpriteManager->menuSideSprites[i]->oam.size = SPRITE_SIZE(8x16); - r5++; + sChooseBoxMenu->menuCornerSprites[i]->y = 112; // move to right + sChooseBoxMenu->menuCornerSprites[i]->oam.size = SPRITE_SIZE(8x16); + animNum++; } - StartSpriteAnim(sBoxSelectionPopupSpriteManager->menuSideSprites[i], r5); + StartSpriteAnim(sChooseBoxMenu->menuCornerSprites[i], animNum); } - for (i = 0; i < 2; i++) + for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->arrowSprites); i++) { - sBoxSelectionPopupSpriteManager->arrowSprites[i] = CreateChooseBoxArrows(72 * i + 0x7c, 0x58, i, 0, sBoxSelectionPopupSpriteManager->subpriority); - if (sBoxSelectionPopupSpriteManager->arrowSprites[i]) + sChooseBoxMenu->arrowSprites[i] = CreateChooseBoxArrows(72 * i + 124, 88, i, 0, sChooseBoxMenu->subpriority); + if (sChooseBoxMenu->arrowSprites[i]) { - sBoxSelectionPopupSpriteManager->arrowSprites[i]->data[0] = (i == 0 ? -1 : 1); - sBoxSelectionPopupSpriteManager->arrowSprites[i]->callback = sub_808CD64; + sChooseBoxMenu->arrowSprites[i]->data[0] = (i == 0 ? -1 : 1); + sChooseBoxMenu->arrowSprites[i]->callback = SpriteCB_ChooseBoxArrow; } } - PrintBoxNameAndCountToSprite(); - PrintToSpriteWithTagUnk0240(gUnknown_83CDA94, 5, 3); + ChooseBoxMenu_PrintBoxNameAndCount(); + ChooseBoxMenu_PrintTextToSprite(sText_OutOf30, 5, 3); } } -static void sub_808CBA4(void) +static void ChooseBoxMenu_DestroySprites(void) { u16 i; - if (sBoxSelectionPopupSpriteManager->menuSprite) + if (sChooseBoxMenu->menuSprite) { - DestroySprite(sBoxSelectionPopupSpriteManager->menuSprite); - sBoxSelectionPopupSpriteManager->menuSprite = NULL; + DestroySprite(sChooseBoxMenu->menuSprite); + sChooseBoxMenu->menuSprite = NULL; } - for (i = 0; i < 4; i++) + for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->menuCornerSprites); i++) { - if (sBoxSelectionPopupSpriteManager->menuSideSprites[i]) + if (sChooseBoxMenu->menuCornerSprites[i]) { - DestroySprite(sBoxSelectionPopupSpriteManager->menuSideSprites[i]); - sBoxSelectionPopupSpriteManager->menuSideSprites[i] = NULL; + DestroySprite(sChooseBoxMenu->menuCornerSprites[i]); + sChooseBoxMenu->menuCornerSprites[i] = NULL; } } - for (i = 0; i < 2; i++) + for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->arrowSprites); i++) { - if (sBoxSelectionPopupSpriteManager->arrowSprites[i]) - DestroySprite(sBoxSelectionPopupSpriteManager->arrowSprites[i]); + if (sChooseBoxMenu->arrowSprites[i]) + DestroySprite(sChooseBoxMenu->arrowSprites[i]); } } -static void UpdateBoxNameAndCountSprite_WraparoundRight(void) +static void ChooseBoxMenu_MoveRight(void) { - if (++sBoxSelectionPopupSpriteManager->curBox >= TOTAL_BOXES_COUNT) - sBoxSelectionPopupSpriteManager->curBox = 0; - PrintBoxNameAndCountToSprite(); + if (++sChooseBoxMenu->curBox >= TOTAL_BOXES_COUNT) + sChooseBoxMenu->curBox = 0; + ChooseBoxMenu_PrintBoxNameAndCount(); } -static void UpdateBoxNameAndCountSprite_WraparoundLeft(void) +static void ChooseBoxMenu_MoveLeft(void) { - sBoxSelectionPopupSpriteManager->curBox = (sBoxSelectionPopupSpriteManager->curBox == 0 ? TOTAL_BOXES_COUNT - 1 : sBoxSelectionPopupSpriteManager->curBox - 1); - PrintBoxNameAndCountToSprite(); + sChooseBoxMenu->curBox = (sChooseBoxMenu->curBox == 0 ? TOTAL_BOXES_COUNT - 1 : sChooseBoxMenu->curBox - 1); + ChooseBoxMenu_PrintBoxNameAndCount(); } -static void PrintBoxNameAndCountToSprite(void) +static void ChooseBoxMenu_PrintBoxNameAndCount(void) { - u8 nPokemonInBox = CountMonsInBox(sBoxSelectionPopupSpriteManager->curBox); - u8 *boxName = StringCopy(sBoxSelectionPopupSpriteManager->strbuf, GetBoxNamePtr(sBoxSelectionPopupSpriteManager->curBox)); + u8 numMonInBox = CountMonsInBox(sChooseBoxMenu->curBox); + u8 *boxName = StringCopy(sChooseBoxMenu->strbuf, GetBoxNamePtr(sChooseBoxMenu->curBox)); - while (boxName < sBoxSelectionPopupSpriteManager->strbuf + BOX_NAME_LENGTH) + while (boxName < sChooseBoxMenu->strbuf + BOX_NAME_LENGTH) *boxName++ = CHAR_SPACE; *boxName = EOS; - PrintToSpriteWithTagUnk0240(sBoxSelectionPopupSpriteManager->strbuf, 0, 1); + ChooseBoxMenu_PrintTextToSprite(sChooseBoxMenu->strbuf, 0, 1); - ConvertIntToDecimalStringN(sBoxSelectionPopupSpriteManager->strbuf, nPokemonInBox, STR_CONV_MODE_RIGHT_ALIGN, 2); + ConvertIntToDecimalStringN(sChooseBoxMenu->strbuf, numMonInBox, STR_CONV_MODE_RIGHT_ALIGN, 2); - PrintToSpriteWithTagUnk0240(sBoxSelectionPopupSpriteManager->strbuf, 3, 3); + ChooseBoxMenu_PrintTextToSprite(sChooseBoxMenu->strbuf, 3, 3); } -static void PrintToSpriteWithTagUnk0240(const u8 *str, u16 x, u16 y) +static void ChooseBoxMenu_PrintTextToSprite(const u8 *str, u16 x, u16 y) { - u16 tileStart = GetSpriteTileStartByTag(sBoxSelectionPopupSpriteManager->tileTag); - PrintStringToBufferCopyNow(str, (void *)(OBJ_VRAM0 + tileStart * 32 + 256 * y + 32 * x), 0x100, TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5, sBoxSelectionPopupSpriteManager->buffer); + void *dst = (void *)(OBJ_VRAM0 + GetSpriteTileStartByTag(sChooseBoxMenu->tileTag) * 32 + 256 * y + 32 * x); + PrintStringToBufferCopyNow(str, dst, 0x100, TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5, sChooseBoxMenu->buffer); } -static void sub_808CD64(struct Sprite *sprite) +static void SpriteCB_ChooseBoxArrow(struct Sprite *sprite) { if (++sprite->data[1] > 3) { @@ -681,8 +653,8 @@ static void sub_808CD64(struct Sprite *sprite) } } -// Forward-declared rodata +// Unused, since LoadChooseBoxMenuGfx is always called with `loadPal` as false +static const u16 sChooseBoxMenu_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CDA98.gbapal"); -static const u16 sBoxSelectionPopupPalette[] = INCBIN_U16("graphics/interface/pss_unk_83CDA98.gbapal"); -static const u16 sBoxSelectionPopupCenterTiles[] = INCBIN_U16("graphics/interface/pss_unk_83CDAB8.4bpp"); -static const u16 sBoxSelectionPopupSidesTiles[] = INCBIN_U16("graphics/interface/pss_unk_83CE2B8.4bpp"); +static const u8 sChooseBoxMenuCenter_Gfx[] = INCBIN_U8("graphics/interface/pss_unk_83CDAB8.4bpp"); +static const u8 sChooseBoxMenuCorners_Gfx[] = INCBIN_U8("graphics/interface/pss_unk_83CE2B8.4bpp"); diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c index 46212d06c..4e41447e0 100644 --- a/src/pokemon_storage_system_3.c +++ b/src/pokemon_storage_system_3.c @@ -26,124 +26,192 @@ #include "constants/help_system.h" #include "constants/songs.h" -EWRAM_DATA struct PokemonStorageSystemData *gPSSData = NULL; +EWRAM_DATA struct PokemonStorageSystemData *gStorage = NULL; static EWRAM_DATA bool8 sInPartyMenu = 0; static EWRAM_DATA u8 sCurrentBoxOption = 0; -static EWRAM_DATA u8 gUnknown_20397B6 = 0; +static EWRAM_DATA u8 sDepositBoxId = 0; static EWRAM_DATA u8 sWhichToReshow = 0; static EWRAM_DATA u8 sLastUsedBox = 0; -static EWRAM_DATA u16 gUnknown_20397BA = ITEM_NONE; +static EWRAM_DATA u16 sMovingItemId = ITEM_NONE; -static void Cb_InitPSS(u8 taskId); -static void Cb_ShowPSS(u8 taskId); -static void Cb_ReshowPSS(u8 taskId); -static void Cb_MainPSS(u8 taskId); -static void Cb_ShowPartyPokemon(u8 taskId); -static void Cb_HidePartyPokemon(u8 taskId); -static void Cb_OnSelectedMon(u8 taskId); -static void Cb_MoveMon(u8 taskId); -static void Cb_PlaceMon(u8 taskId); -static void Cb_ShiftMon(u8 taskId); -static void Cb_WithdrawMon(u8 taskId); -static void Cb_DepositMenu(u8 taskId); -static void Cb_ReleaseMon(u8 taskId); -static void Cb_ShowMarkMenu(u8 taskId); -static void Cb_TakeItemForMoving(u8 taskId); -static void Cb_GiveMovingItemToMon(u8 taskId); -static void Cb_ItemToBag(u8 taskId); -static void Cb_SwitchSelectedItem(u8 taskId); -static void Cb_ShowItemInfo(u8 taskId); -static void Cb_HandleMovingMonFromParty(u8 taskId); -static void Cb_PrintCantStoreMail(u8 taskId); -static void Cb_HandleBoxOptions(u8 taskId); -static void Cb_HandleWallpapers(u8 taskId); -static void Cb_JumpBox(u8 taskId); -static void Cb_NameBox(u8 taskId); -static void Cb_ShowMonSummary(u8 taskId); -static void Cb_GiveItemFromBag(u8 taskId); -static void Cb_OnCloseBoxPressed(u8 taskId); -static void Cb_OnBPressed(u8 taskId); -static void Cb_ChangeScreen(u8 taskId); +static void Task_InitPokeStorage(u8 taskId); +static void Task_ShowPokeStorage(u8 taskId); +static void Task_ReshowPokeStorage(u8 taskId); +static void Task_PokeStorageMain(u8 taskId); +static void Task_ShowPartyPokemon(u8 taskId); +static void Task_HidePartyPokemon(u8 taskId); +static void Task_OnSelectedMon(u8 taskId); +static void Task_MoveMon(u8 taskId); +static void Task_PlaceMon(u8 taskId); +static void Task_ShiftMon(u8 taskId); +static void Task_WithdrawMon(u8 taskId); +static void Task_DepositMenu(u8 taskId); +static void Task_ReleaseMon(u8 taskId); +static void Task_ShowMarkMenu(u8 taskId); +static void Task_TakeItemForMoving(u8 taskId); +static void Task_GiveMovingItemToMon(u8 taskId); +static void Task_ItemToBag(u8 taskId); +static void Task_SwitchSelectedItem(u8 taskId); +static void Task_ShowItemInfo(u8 taskId); +static void Task_HandleMovingMonFromParty(u8 taskId); +static void Task_PrintCantStoreMail(u8 taskId); +static void Task_HandleBoxOptions(u8 taskId); +static void Task_HandleWallpapers(u8 taskId); +static void Task_JumpBox(u8 taskId); +static void Task_NameBox(u8 taskId); +static void Task_ShowMonSummary(u8 taskId); +static void Task_GiveItemFromBag(u8 taskId); +static void Task_OnCloseBoxPressed(u8 taskId); +static void Task_OnBPressed(u8 taskId); +static void Task_ChangeScreen(u8 taskId); static void GiveChosenBagItem(void); -static void FreePSSData(void); +static void FreePokeStorageData(void); static void SetScrollingBackground(void); static void ScrollBackground(void); -static void LoadPSSMenuGfx(void); -static bool8 InitPSSWindows(void); -static void LoadWaveformSpritePalette(void); -static void sub_808F078(void); -static void PSS_CreateMonMarkingSprite(void); +static void LoadPokeStorageMenuGfx(void); +static bool8 InitPokeStorageWindows(void); +static void LoadsMiscSpritePalette(void); +static void InitPalettesAndSprites(void); +static void CreateMarkingComboSprite(void); static void CreateWaveformSprites(void); -static void RefreshCursorMonData(void); -static void BoxSetMosaic(void); -static void SpriteCB_CursorMon_Mosaic(struct Sprite *sprite); -static bool8 BoxGetMosaic(void); -static void LoadCursorMonSprite(void); -static void LoadCursorMonGfx(u16 species, u32 pid); -static void PrintCursorMonInfo(void); -static void sub_808F5E8(void); -static void sub_808F68C(void); +static void RefreshDisplayMonData(void); +static void StartDisplayMonMosaic(void); +static void SpriteCB_DisplayMonMosaic(struct Sprite *sprite); +static bool8 IsDisplayMonMosaicActive(void); +static void CreateDisplayMonSprite(void); +static void LoadDisplayMonGfx(u16 species, u32 personality); +static void PrintDisplayMonInfo(void); +static void UpdateWaveformAnimation(void); +static void InitSupplementalTilemaps(void); static void SetUpHidePartyMenu(void); static bool8 HidePartyMenu(void); -static void sub_808F90C(bool8 species); -static void sub_808F948(void); -static void sub_808F974(void); -static void sub_808F99C(void); -static void sub_808F9FC(void); -static void sub_808FA30(u8 pos, bool8 isPartyMon); -static void sub_808FAA8(void); +static void UpdateCloseBoxButtonTilemap(bool8 normal); +static void StartFlashingCloseBoxButton(void); +static void StopFlashingCloseBoxButton(void); +static void UpdateCloseBoxButtonFlash(void); +static void SetPartySlotTilemaps(void); +static void SetPartySlotTilemap(u8 pos, bool8 isPartyMon); +static void UpdatePartySlotColors(void); static void SetUpDoShowPartyMenu(void); static bool8 DoShowPartyMenu(void); -static void sub_808FB68(void); -static void PrintStorageActionText(u8 textId); -static void ShowYesNoWindow(s8 species); +static void InitPokeStorageBg0(void); +static void PrintStorageMessage(u8 textId); +static void ShowYesNoWindow(s8 cursorPos); static void ClearBottomWindow(void); static void AddWallpaperSetsMenu(void); static void AddWallpapersMenu(u8 wallpaperSet); -static void sub_808FDFC(void); -static void sub_808FE54(u8 species); -static void sub_808FF70(void); +static void InitCursorItemIcon(void); +static void SetPokeStorageQuestLogEvent(u8 species); +static void UpdateBoxToSendMons(void); + +enum { + TILEMAP_PKMN_DATA, // The "Pkmn Data" text at the top of the display + TILEMAP_PARTY_MENU, + TILEMAP_CLOSE_BUTTON, + TILEMAP_COUNT +}; + +enum +{ + SCREEN_CHANGE_EXIT_BOX, + SCREEN_CHANGE_SUMMARY_SCREEN, + SCREEN_CHANGE_NAME_BOX, + SCREEN_CHANGE_ITEM_FROM_BAG, +}; + +enum +{ + MSG_EXIT_BOX, + MSG_WHAT_YOU_DO, + MSG_PICK_A_THEME, + MSG_PICK_A_WALLPAPER, + MSG_IS_SELECTED, + MSG_JUMP_TO_WHICH_BOX, + MSG_DEPOSIT_IN_WHICH_BOX, + MSG_WAS_DEPOSITED, + MSG_BOX_IS_FULL, + MSG_RELEASE_POKE, + MSG_WAS_RELEASED, + MSG_BYE_BYE, + MSG_MARK_POKE, + MSG_LAST_POKE, + MSG_PARTY_FULL, + MSG_HOLDING_POKE, + MSG_WHICH_ONE_WILL_TAKE, + MSG_CANT_RELEASE_EGG, + MSG_CONTINUE_BOX, + MSG_CAME_BACK, + MSG_WORRIED, + MSG_SURPRISE, + MSG_PLEASE_REMOVE_MAIL, + MSG_IS_SELECTED2, + MSG_GIVE_TO_MON, + MSG_PLACED_IN_BAG, + MSG_BAG_FULL, + MSG_PUT_IN_BAG, + MSG_ITEM_IS_HELD, + MSG_CHANGED_TO_ITEM, + MSG_CANT_STORE_MAIL, +}; + +enum +{ + MSG_FMT_NONE, + MSG_FMT_MON_NAME_1, + MSG_FMT_MON_NAME_2, + MSG_FMT_MON_NAME_3, + MSG_FMT_RELEASE_MON_1, + MSG_FMT_RELEASE_MON_2, + MSG_FMT_RELEASE_MON_3, + MSG_FMT_ITEM_NAME, +}; static const u32 sPokemonStorageScrollingBGTileset[] = INCBIN_U32("graphics/interface/pss_unk_83CE438.4bpp.lz"); static const u32 sPokemonStorageScrollingBGTilemap[] = INCBIN_U32("graphics/interface/pss_unk_83CE4D0.bin.lz"); -static const u16 sPokemonStorageScrollingBGPalette[] = INCBIN_U16("graphics/interface/pss_unk_83CE5DC.gbapal"); -static const u32 gUnknown_83CE5FC[] = INCBIN_U32("graphics/interface/pss_unk_83CE5FC.bin.lz"); -static const u16 gUnknown_83CE6F8[] = { +// Unused +static const u16 sMenu_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE5DC.gbapal"); + +static const u32 sMenu_Tilemap[] = INCBIN_U32("graphics/interface/pss_unk_83CE5FC.bin.lz"); + +static const u16 sPkmnData_Tilemap[] = { 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, 0x2108, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, 0x2118, }; -static const u16 gUnknown_83CE738[] = INCBIN_U16("graphics/interface/pss_unk_83CE738.gbapal"); -static const u16 gUnknown_83CE758[] = INCBIN_U16("graphics/interface/pss_unk_83CE758.gbapal"); +static const u16 sScrollingBg_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE738.gbapal"); +static const u16 sScrollingBgMoveItems_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE758.gbapal"); -static const u16 gUnknown_83CE778[] = { +static const u16 sCloseBoxButton_Tilemap[] = { 0x014c, 0x014d, 0x014e, 0x014f, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, 0x015c, 0x015d, 0x015e, 0x015f, 0x0180, 0x0181, 0x0182, 0x0183, 0x0184, 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017a, 0x017b, 0x017c, 0x017d, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x018d, }; -static const u16 gUnknown_83CE7C0[] = { +static const u16 sPartySlotFilled_Tilemap[] = { 0x1140, 0x1141, 0x1141, 0x1142, 0x1150, 0x1151, 0x1151, 0x1152, 0x1160, 0x1161, 0x1161, 0x1162, }; -static const u16 gUnknown_83CE7D8[] = { +static const u16 sPartySlotEmpty_Tilemap[] = { 0x1143, 0x1144, 0x1144, 0x1145, 0x1153, 0x1154, 0x1154, 0x1155, 0x1163, 0x1164, 0x1164, 0x1165, }; -static const u16 gUnknown_83CE7F0[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.gbapal"); -static const u16 gUnknown_83CE810[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.4bpp"); -static const u16 gUnknown_83CE9D0[] = INCBIN_U16("graphics/interface/pss_unk_83CE9D0.gbapal"); -static const u16 gUnknown_83CEA10[] = INCBIN_U16("graphics/interface/pss_unk_83CEA10.gbapal"); +static const u16 sPokeStorageMisc2Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.gbapal"); +static const u16 sWaveform_Gfx[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.4bpp"); -static const struct WindowTemplate gUnknown_83CEA30[] = { +// Unused +static const u16 sUnused_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE9D0.gbapal"); + +static const u16 sTextWindows_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CEA10.gbapal"); + +static const struct WindowTemplate sWindowTemplates[] = { { .bg = 1, .tilemapLeft = 0, @@ -168,10 +236,11 @@ static const struct WindowTemplate gUnknown_83CEA30[] = { .height = 8, .paletteNum = 15, .baseBlock = 0x014 - }, DUMMY_WIN_TEMPLATE + }, + DUMMY_WIN_TEMPLATE }; -static const struct BgTemplate gUnknown_83CEA50[] = { +static const struct BgTemplate sBgTemplates[] = { { .bg = 0, .charBaseIndex = 0, @@ -207,61 +276,60 @@ static const struct BgTemplate gUnknown_83CEA50[] = { } }; -static const struct SpritePalette sWaveformSpritePalette = { - gUnknown_83CE7F0, TAG_PAL_WAVEFORM +static const struct SpritePalette sMiscSpritePalette = { + sPokeStorageMisc2Pal, PALTAG_MISC_2 }; static const struct SpriteSheet sWaveformSpriteSheet = { - gUnknown_83CE810, 0x01c0, TAG_TILE_WAVEFORM + sWaveform_Gfx, 0x01C0, GFXTAG_WAVEFORM }; -static const struct OamData gUnknown_83CEB88; +static const struct OamData sOamData_DisplayMon; -static const struct SpriteTemplate sSpriteTemplate_CursorMon = { - .tileTag = TAG_TILE_2, - .paletteTag = TAG_PAL_DAC6, - .oam = &gUnknown_83CEB88, +static const struct SpriteTemplate sSpriteTemplate_DisplayMon = { + .tileTag = GFXTAG_DISPLAY_MON, + .paletteTag = PALTAG_DISPLAY_MON, + .oam = &sOamData_DisplayMon, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct StorageAction sPCStorageActionTexts[] = { - [PC_TEXT_EXIT_BOX] = {gText_ExitFromBox, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PICK_A_THEME] = {gText_PleasePickATheme, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_IS_SELECTED] = {gText_PkmnIsSelected, PC_TEXT_FMT_MON_NAME_1}, - [PC_TEXT_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_WAS_DEPOSITED] = {gText_PkmnWasDeposited, PC_TEXT_FMT_MON_NAME_1}, - [PC_TEXT_BOX_IS_FULL] = {gText_BoxIsFull2, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_RELEASE_POKE] = {gText_ReleaseThisPokemon, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_WAS_RELEASED] = {gText_PkmnWasReleased, PC_TEXT_FMT_MON_NAME_4}, - [PC_TEXT_BYE_BYE] = {gText_ByeByePkmn, PC_TEXT_FMT_MON_NAME_6}, - [PC_TEXT_MARK_POKE] = {gText_MarkYourPkmn, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_LAST_POKE] = {gText_ThatsYourLastPkmn, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PARTY_FULL] = {gText_YourPartysFull, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_HOLDING_POKE] = {gText_YoureHoldingAPkmn, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_CONTINUE_BOX] = {gText_ContinueBoxOperations, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_CAME_BACK] = {gText_PkmnCameBack, PC_TEXT_FMT_MON_NAME_1}, - [PC_TEXT_WORRIED] = {gText_WasItWorriedAboutYou, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_SURPRISE] = {gText_FourEllipsesExclamation, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_IS_SELECTED2] = {gText_PkmnIsSelected, PC_TEXT_FMT_ITEM_NAME}, - [PC_TEXT_GIVE_TO_MON] = {gText_GiveToAPkmn, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PLACED_IN_BAG] = {gText_PlacedItemInBag, PC_TEXT_FMT_ITEM_NAME}, - [PC_TEXT_BAG_FULL] = {gText_BagIsFull2, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PUT_IN_BAG] = {gText_PutItemInBag, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_ITEM_IS_HELD] = {gText_ItemIsNowHeld, PC_TEXT_FMT_ITEM_NAME}, - [PC_TEXT_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, PC_TEXT_FMT_ITEM_NAME}, - [PC_TEXT_CANT_STORE_MAIL] = {gText_MailCantBeStored, PC_TEXT_FMT_NORMAL}, +static const struct StorageMessage sMessages[] = { + [MSG_EXIT_BOX] = {gText_ExitFromBox, MSG_FMT_NONE}, + [MSG_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, MSG_FMT_NONE}, + [MSG_PICK_A_THEME] = {gText_PleasePickATheme, MSG_FMT_NONE}, + [MSG_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, MSG_FMT_NONE}, + [MSG_IS_SELECTED] = {gText_PkmnIsSelected, MSG_FMT_MON_NAME_1}, + [MSG_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, MSG_FMT_NONE}, + [MSG_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, MSG_FMT_NONE}, + [MSG_WAS_DEPOSITED] = {gText_PkmnWasDeposited, MSG_FMT_MON_NAME_1}, + [MSG_BOX_IS_FULL] = {gText_BoxIsFull2, MSG_FMT_NONE}, + [MSG_RELEASE_POKE] = {gText_ReleaseThisPokemon, MSG_FMT_NONE}, + [MSG_WAS_RELEASED] = {gText_PkmnWasReleased, MSG_FMT_RELEASE_MON_1}, + [MSG_BYE_BYE] = {gText_ByeByePkmn, MSG_FMT_RELEASE_MON_3}, + [MSG_MARK_POKE] = {gText_MarkYourPkmn, MSG_FMT_NONE}, + [MSG_LAST_POKE] = {gText_ThatsYourLastPkmn, MSG_FMT_NONE}, + [MSG_PARTY_FULL] = {gText_YourPartysFull, MSG_FMT_NONE}, + [MSG_HOLDING_POKE] = {gText_YoureHoldingAPkmn, MSG_FMT_NONE}, + [MSG_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, MSG_FMT_NONE}, + [MSG_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, MSG_FMT_NONE}, + [MSG_CONTINUE_BOX] = {gText_ContinueBoxOperations, MSG_FMT_NONE}, + [MSG_CAME_BACK] = {gText_PkmnCameBack, MSG_FMT_MON_NAME_1}, + [MSG_WORRIED] = {gText_WasItWorriedAboutYou, MSG_FMT_NONE}, + [MSG_SURPRISE] = {gText_FourEllipsesExclamation, MSG_FMT_NONE}, + [MSG_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, MSG_FMT_NONE}, + [MSG_IS_SELECTED2] = {gText_PkmnIsSelected, MSG_FMT_ITEM_NAME}, + [MSG_GIVE_TO_MON] = {gText_GiveToAPkmn, MSG_FMT_NONE}, + [MSG_PLACED_IN_BAG] = {gText_PlacedItemInBag, MSG_FMT_ITEM_NAME}, + [MSG_BAG_FULL] = {gText_BagIsFull2, MSG_FMT_NONE}, + [MSG_PUT_IN_BAG] = {gText_PutItemInBag, MSG_FMT_NONE}, + [MSG_ITEM_IS_HELD] = {gText_ItemIsNowHeld, MSG_FMT_ITEM_NAME}, + [MSG_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, MSG_FMT_ITEM_NAME}, + [MSG_CANT_STORE_MAIL] = {gText_MailCantBeStored, MSG_FMT_NONE}, }; -// Yes/No menu static const struct WindowTemplate sYesNoWindowTemplate = { .bg = 0, .tilemapLeft = 24, @@ -272,7 +340,7 @@ static const struct WindowTemplate sYesNoWindowTemplate = { .baseBlock = 0x05c }; -static const struct OamData gUnknown_83CEB88 = { +static const struct OamData sOamData_DisplayMon = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -289,7 +357,7 @@ static const struct OamData gUnknown_83CEB88 = { // Waveform -static const struct OamData gUnknown_83CEB90 = { +static const struct OamData sOamData_Waveform = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -304,100 +372,100 @@ static const struct OamData gUnknown_83CEB90 = { .paletteNum = 0 }; -static const union AnimCmd gUnknown_83CEB98[] = { +static const union AnimCmd sAnim_Waveform_LeftOff[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CEBA0[] = { +static const union AnimCmd sAnim_Waveform_LeftOn[] = { ANIMCMD_FRAME(2, 8), ANIMCMD_FRAME(4, 8), ANIMCMD_FRAME(6, 8), ANIMCMD_JUMP(0) }; -static const union AnimCmd gUnknown_83CEBB0[] = { +static const union AnimCmd sAnim_Waveform_RightOff[] = { ANIMCMD_FRAME(8, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CEBB8[] = { +static const union AnimCmd sAnim_Waveform_RightOn[] = { ANIMCMD_FRAME(10, 8), ANIMCMD_FRAME(4, 8), ANIMCMD_FRAME(12, 8), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const gUnknown_83CEBC8[] = { - gUnknown_83CEB98, - gUnknown_83CEBA0, - gUnknown_83CEBB0, - gUnknown_83CEBB8 +static const union AnimCmd *const sAnims_Waveform[] = { + sAnim_Waveform_LeftOff, + sAnim_Waveform_LeftOn, + sAnim_Waveform_RightOff, + sAnim_Waveform_RightOn }; static const struct SpriteTemplate sSpriteTemplate_Waveform = { - .tileTag = TAG_TILE_WAVEFORM, - .paletteTag = TAG_PAL_WAVEFORM, - .oam = &gUnknown_83CEB90, - .anims = gUnknown_83CEBC8, + .tileTag = GFXTAG_WAVEFORM, + .paletteTag = PALTAG_MISC_2, + .oam = &sOamData_Waveform, + .anims = sAnims_Waveform, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }; -static void VblankCb_PSS(void) +static void VBlankCB_PokeStorage(void) { LoadOam(); ProcessSpriteCopyRequests(); UnkUtil_Run(); TransferPlttBuffer(); - SetGpuReg(REG_OFFSET_BG2HOFS, gPSSData->bg2_X); + SetGpuReg(REG_OFFSET_BG2HOFS, gStorage->bg2_X); } -static void Cb2_PSS(void) +static void CB2_PokeStorage(void) { RunTasks(); DoScheduledBgTilemapCopiesToVram(); ScrollBackground(); - sub_808F99C(); + UpdateCloseBoxButtonFlash(); AnimateSprites(); BuildOamBuffer(); } -void Cb2_EnterPSS(u8 boxOption) +void EnterPokeStorage(u8 boxOption) { ResetTasks(); sCurrentBoxOption = boxOption; - gPSSData = Alloc(sizeof(struct PokemonStorageSystemData)); - if (gPSSData == NULL) + gStorage = Alloc(sizeof(struct PokemonStorageSystemData)); + if (gStorage == NULL) SetMainCallback2(CB2_ExitPokeStorage); else { - gPSSData->boxOption = boxOption; - gPSSData->isReshowingPSS = FALSE; - gUnknown_20397BA = 0; - gPSSData->state = 0; - gPSSData->taskId = CreateTask(Cb_InitPSS, 3); + gStorage->boxOption = boxOption; + gStorage->isReopening = FALSE; + sMovingItemId = 0; + gStorage->state = 0; + gStorage->taskId = CreateTask(Task_InitPokeStorage, 3); SetHelpContext(HELPCONTEXT_BILLS_PC); sLastUsedBox = StorageGetCurrentBox(); - SetMainCallback2(Cb2_PSS); + SetMainCallback2(CB2_PokeStorage); } } -void Cb2_ReturnToPSS(void) +void CB2_ReturnToPokeStorage(void) { ResetTasks(); - gPSSData = Alloc(sizeof(struct PokemonStorageSystemData)); - if (gPSSData == NULL) + gStorage = Alloc(sizeof(struct PokemonStorageSystemData)); + if (gStorage == NULL) SetMainCallback2(CB2_ExitPokeStorage); else { - gPSSData->boxOption = sCurrentBoxOption; - gPSSData->isReshowingPSS = TRUE; - gPSSData->state = 0; - gPSSData->taskId = CreateTask(Cb_InitPSS, 3); + gStorage->boxOption = sCurrentBoxOption; + gStorage->isReopening = TRUE; + gStorage->state = 0; + gStorage->taskId = CreateTask(Task_InitPokeStorage, 3); SetHelpContext(HELPCONTEXT_BILLS_PC); - SetMainCallback2(Cb2_PSS); + SetMainCallback2(CB2_PokeStorage); } } @@ -413,7 +481,7 @@ static void ResetAllBgCoords(void) SetGpuReg(REG_OFFSET_BG3VOFS, 0); } -static void sub_808CF10(void) +static void ResetForPokeStorage(void) { ResetPaletteFade(); ResetSpriteData(); @@ -421,25 +489,25 @@ static void sub_808CF10(void) FreeAllSpritePalettes(); ClearDma3Requests(); gReservedSpriteTileCount = 0x280; - UnkUtil_Init(&gPSSData->unkUtil, gPSSData->unkUtilData, 8); + UnkUtil_Init(&gStorage->unkUtil, gStorage->unkUtilData, ARRAY_COUNT(gStorage->unkUtilData)); gKeyRepeatStartDelay = 20; ClearScheduledBgCopiesToVram(); - AllocBoxPartyPokemonDropdowns(3); - SetBoxPartyPokemonDropdownMap2(0, 1, gUnknown_83CE6F8, 8, 4); - SetBoxPartyPokemonDropdownMap2Pos(0, 1, 0); - gPSSData->closeBoxFlashing = FALSE; + TilemapUtil_Init(TILEMAP_COUNT); + TilemapUtil_SetTilemap(TILEMAP_PKMN_DATA, 1, sPkmnData_Tilemap, 8, 4); + TilemapUtil_SetPos(TILEMAP_PKMN_DATA, 1, 0); + gStorage->closeBoxFlashing = FALSE; } -static void sub_808CF94(void) +static void InitStartingPosData(void) { - sub_8092B50(); - sInPartyMenu = gPSSData->boxOption == OPTION_DEPOSIT; - gUnknown_20397B6 = 0; + ClearSavedCursorPos(); + sInPartyMenu = gStorage->boxOption == OPTION_DEPOSIT; + sDepositBoxId = 0; } -static void sub_808CFC4(void) +static void SetMonIconTransparency(void) { - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(7, 11)); @@ -447,42 +515,42 @@ static void sub_808CFC4(void) SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); } -static void SetPSSCallback(TaskFunc newFunc) +static void SetPokeStorageTask(TaskFunc newFunc) { - gTasks[gPSSData->taskId].func = newFunc; - gPSSData->state = 0; + gTasks[gStorage->taskId].func = newFunc; + gStorage->state = 0; } -static void Cb_InitPSS(u8 taskId) +static void Task_InitPokeStorage(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: SetVBlankCallback(NULL); SetGpuReg(REG_OFFSET_DISPCNT, 0); - sub_808CF10(); - if (gPSSData->isReshowingPSS) + ResetForPokeStorage(); + if (gStorage->isReopening) { switch (sWhichToReshow) { - case 1: - sub_8093660(); + case SCREEN_CHANGE_NAME_BOX - 1: + LoadSavedMovingMon(); break; - case 0: - sub_80937B4(); + case SCREEN_CHANGE_SUMMARY_SCREEN - 1: + SetSelectionAfterSummaryScreen(); break; - case 2: + case SCREEN_CHANGE_ITEM_FROM_BAG - 1: GiveChosenBagItem(); break; } } - LoadPSSMenuGfx(); - LoadWaveformSpritePalette(); + LoadPokeStorageMenuGfx(); + LoadsMiscSpritePalette(); break; case 1: - if (!InitPSSWindows()) + if (!InitPokeStorageWindows()) { - SetPSSCallback(Cb_ChangeScreen); + SetPokeStorageTask(Task_ChangeScreen); return; } break; @@ -494,650 +562,623 @@ static void Cb_InitPSS(u8 taskId) break; case 3: ResetAllBgCoords(); - if (!gPSSData->isReshowingPSS) - sub_808CF94(); + if (!gStorage->isReopening) + InitStartingPosData(); break; case 4: - sub_808FFAC(); - if (!gPSSData->isReshowingPSS) - sub_80922C0(); + InitMonIconFields(); + if (!gStorage->isReopening) + InitCursor(); else - sub_8092340(); + InitCursorOnReopen(); break; case 5: - if (!sub_8095050()) + if (!MultiMove_Init()) { - SetPSSCallback(Cb_ChangeScreen); + SetPokeStorageTask(Task_ChangeScreen); return; } else { SetScrollingBackground(); - sub_808FB68(); + InitPokeStorageBg0(); } break; case 6: - sub_808F078(); + InitPalettesAndSprites(); break; case 7: - sub_808F68C(); + InitSupplementalTilemaps(); break; case 8: - sub_80913DC(StorageGetCurrentBox()); + CreateInitBoxTask(StorageGetCurrentBox()); break; case 9: - if (sub_809140C()) + if (IsInitBoxActive()) return; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - gPSSData->markMenu.baseTileTag = TAG_TILE_D; - gPSSData->markMenu.basePaletteTag = TAG_PAL_DACE; - InitMonMarkingsMenu(&gPSSData->markMenu); + gStorage->markMenu.baseTileTag = GFXTAG_MARKING_MENU; + gStorage->markMenu.basePaletteTag = PALTAG_MARKING_MENU; + InitMonMarkingsMenu(&gStorage->markMenu); BufferMonMarkingsMenuTiles(); } else { CreateItemIconSprites(); - sub_808FDFC(); + InitCursorItemIcon(); } break; case 10: - sub_808CFC4(); - if (!gPSSData->isReshowingPSS) + SetMonIconTransparency(); + if (!gStorage->isReopening) { - BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); - SetPSSCallback(Cb_ShowPSS); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); + SetPokeStorageTask(Task_ShowPokeStorage); } else { - BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); - SetPSSCallback(Cb_ReshowPSS); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); + SetPokeStorageTask(Task_ReshowPokeStorage); } - SetVBlankCallback(VblankCb_PSS); + SetVBlankCallback(VBlankCB_PokeStorage); return; default: return; } - gPSSData->state++; + gStorage->state++; } -static void Cb_ShowPSS(u8 taskId) +static void Task_ShowPokeStorage(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: PlaySE(SE_PC_LOGIN); BeginPCScreenEffect_TurnOn(20, 0, 1); - gPSSData->state++; + gStorage->state++; break; case 1: if (!IsPCScreenEffectRunning_TurnOn()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_ReshowPSS(u8 taskId) +static void Task_ReshowPokeStorage(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: BeginNormalPaletteFade(PALETTES_ALL, -1, 0x10, 0, RGB_BLACK); - gPSSData->state++; + gStorage->state++; break; case 1: if (!UpdatePaletteFade()) - { - SetPSSCallback(Cb_MainPSS); - } + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_MainPSS(u8 taskId) +static void Task_PokeStorageMain(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: switch (HandleInput()) { - case 1: + case INPUT_MOVE_CURSOR: PlaySE(SE_SELECT); - gPSSData->state = 1; + gStorage->state = 1; break; - case 5: - if (gPSSData->boxOption != OPTION_MOVE_MONS && gPSSData->boxOption != OPTION_MOVE_ITEMS) + case INPUT_SHOW_PARTY: + if (gStorage->boxOption != OPTION_MOVE_MONS && gStorage->boxOption != OPTION_MOVE_ITEMS) { - PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE); - gPSSData->state = 3; + PrintStorageMessage(MSG_WHICH_ONE_WILL_TAKE); + gStorage->state = 3; } else { - sub_8092B50(); - SetPSSCallback(Cb_ShowPartyPokemon); + ClearSavedCursorPos(); + SetPokeStorageTask(Task_ShowPartyPokemon); } break; - case 6: - if (gPSSData->boxOption == OPTION_MOVE_MONS) + case INPUT_HIDE_PARTY: + if (gStorage->boxOption == OPTION_MOVE_MONS) { - if (IsMonBeingMoved() && ItemIsMail(gPSSData->displayMonItemId)) - gPSSData->state = 5; + if (IsMonBeingMoved() && ItemIsMail(gStorage->displayMonItemId)) + gStorage->state = 5; else - SetPSSCallback(Cb_HidePartyPokemon); - } - else if (gPSSData->boxOption == OPTION_MOVE_ITEMS) - { - SetPSSCallback(Cb_HidePartyPokemon); + SetPokeStorageTask(Task_HidePartyPokemon); } + else if (gStorage->boxOption == OPTION_MOVE_ITEMS) + SetPokeStorageTask(Task_HidePartyPokemon); break; - case 4: - SetPSSCallback(Cb_OnCloseBoxPressed); + case INPUT_CLOSE_BOX: + SetPokeStorageTask(Task_OnCloseBoxPressed); break; - case 19: - SetPSSCallback(Cb_OnBPressed); + case INPUT_PRESSED_B: + SetPokeStorageTask(Task_OnBPressed); break; - case 7: + case INPUT_BOX_OPTIONS: PlaySE(SE_SELECT); - SetPSSCallback(Cb_HandleBoxOptions); + SetPokeStorageTask(Task_HandleBoxOptions); break; - case 8: - SetPSSCallback(Cb_OnSelectedMon); + case INPUT_IN_MENU: + SetPokeStorageTask(Task_OnSelectedMon); break; - case 9: + case INPUT_SCROLL_RIGHT: PlaySE(SE_SELECT); - gPSSData->newCurrBoxId = StorageGetCurrentBox() + 1; - if (gPSSData->newCurrBoxId >= TOTAL_BOXES_COUNT) - gPSSData->newCurrBoxId = 0; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + gStorage->newCurrBoxId = StorageGetCurrentBox() + 1; + if (gStorage->newCurrBoxId >= TOTAL_BOXES_COUNT) + gStorage->newCurrBoxId = 0; + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - SetUpScrollToBox(gPSSData->newCurrBoxId); - gPSSData->state = 2; + SetUpScrollToBox(gStorage->newCurrBoxId); + gStorage->state = 2; } else { - sub_8094D60(); - gPSSData->state = 10; + TryHideItemAtCursor(); + gStorage->state = 10; } break; - case 10: + case INPUT_SCROLL_LEFT: PlaySE(SE_SELECT); - gPSSData->newCurrBoxId = StorageGetCurrentBox() - 1; - if (gPSSData->newCurrBoxId < 0) - gPSSData->newCurrBoxId = TOTAL_BOXES_COUNT - 1; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + gStorage->newCurrBoxId = StorageGetCurrentBox() - 1; + if (gStorage->newCurrBoxId < 0) + gStorage->newCurrBoxId = TOTAL_BOXES_COUNT - 1; + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - SetUpScrollToBox(gPSSData->newCurrBoxId); - gPSSData->state = 2; + SetUpScrollToBox(gStorage->newCurrBoxId); + gStorage->state = 2; } else { - sub_8094D60(); - gPSSData->state = 10; + TryHideItemAtCursor(); + gStorage->state = 10; } break; - case 11: + case INPUT_DEPOSIT: if (!CanMovePartyMon()) { - if (ItemIsMail(gPSSData->displayMonItemId)) - { - gPSSData->state = 5; - } + if (ItemIsMail(gStorage->displayMonItemId)) + gStorage->state = 5; else { PlaySE(SE_SELECT); - SetPSSCallback(Cb_DepositMenu); + SetPokeStorageTask(Task_DepositMenu); } } else - { - gPSSData->state = 4; - } + gStorage->state = 4; break; - case 13: + case INPUT_MOVE_MON: if (CanMovePartyMon()) - { - gPSSData->state = 4; - } + gStorage->state = 4; + else { PlaySE(SE_SELECT); - SetPSSCallback(Cb_MoveMon); + SetPokeStorageTask(Task_MoveMon); } break; - case 14: + case INPUT_SHIFT_MON: if (!CanShiftMon()) - { - gPSSData->state = 4; - } + gStorage->state = 4; else { PlaySE(SE_SELECT); - SetPSSCallback(Cb_ShiftMon); + SetPokeStorageTask(Task_ShiftMon); } break; - case 12: + case INPUT_WITHDRAW: PlaySE(SE_SELECT); - SetPSSCallback(Cb_WithdrawMon); + SetPokeStorageTask(Task_WithdrawMon); break; - case 15: + case INPUT_PLACE_MON: PlaySE(SE_SELECT); - SetPSSCallback(Cb_PlaceMon); + SetPokeStorageTask(Task_PlaceMon); break; - case 16: + case INPUT_TAKE_ITEM: PlaySE(SE_SELECT); - SetPSSCallback(Cb_TakeItemForMoving); + SetPokeStorageTask(Task_TakeItemForMoving); break; - case 17: + case INPUT_GIVE_ITEM: PlaySE(SE_SELECT); - SetPSSCallback(Cb_GiveMovingItemToMon); + SetPokeStorageTask(Task_GiveMovingItemToMon); break; - case 18: + case INPUT_SWITCH_ITEMS: PlaySE(SE_SELECT); - SetPSSCallback(Cb_SwitchSelectedItem); + SetPokeStorageTask(Task_SwitchSelectedItem); break; - case 20: + case INPUT_MULTIMOVE_START: PlaySE(SE_SELECT); - sub_80950BC(0); - gPSSData->state = 7; + MultiMove_SetFunction(MULTIMOVE_START); + gStorage->state = 7; break; - case 22: - sub_80950BC(1); - gPSSData->state = 8; + case INPUT_MULTIMOVE_SINGLE: + MultiMove_SetFunction(MULTIMOVE_SINGLE); + gStorage->state = 8; break; - case 21: + case INPUT_MULTIMOVE_CHANGE_SELECTION: PlaySE(SE_SELECT); - sub_80950BC(2); - gPSSData->state = 9; + MultiMove_SetFunction(MULTIMOVE_CHANGE_SELECTION); + gStorage->state = 9; break; - case 23: - sub_80950BC(3); - gPSSData->state = 7; + case INPUT_MULTIMOVE_GRAB_SELECTION: + MultiMove_SetFunction(MULTIMOVE_GRAB_SELECTION); + gStorage->state = 7; break; - case 25: + case INPUT_MULTIMOVE_MOVE_MONS: PlaySE(SE_SELECT); - sub_80950BC(4); - gPSSData->state = 9; + MultiMove_SetFunction(MULTIMOVE_MOVE_MONS); + gStorage->state = 9; break; - case 26: + case INPUT_MULTIMOVE_PLACE_MONS: PlaySE(SE_SELECT); - sub_808FE54(3); - sub_80950BC(5); - gPSSData->state = 7; + SetPokeStorageQuestLogEvent(3); + MultiMove_SetFunction(MULTIMOVE_PLACE_MONS); + gStorage->state = 7; break; - case 24: + case INPUT_MULTIMOVE_UNABLE: PlaySE(SE_FAILURE); break; } break; case 1: - if (!sub_80924A8()) + if (!UpdateCursorPos()) { if (IsCursorOnCloseBox()) - sub_808F948(); + StartFlashingCloseBoxButton(); else - sub_808F974(); + StopFlashingCloseBoxButton(); - if (gPSSData->setMosaic) - BoxSetMosaic(); - gPSSData->state = 0; + if (gStorage->setMosaic) + StartDisplayMonMosaic(); + gStorage->state = 0; } break; case 2: if (!ScrollToBox()) { - SetCurrentBox(gPSSData->newCurrBoxId); + SetCurrentBox(gStorage->newCurrBoxId); if (!sInPartyMenu && !IsMonBeingMoved()) { - sub_8092F54(); - BoxSetMosaic(); + DoTrySetDisplayMonData(); + StartDisplayMonMosaic(); } - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { - sub_8094D84(); - gPSSData->state = 11; + TryShowItemAtCursor(); + gStorage->state = 11; } else - { - gPSSData->state = 0; - } + gStorage->state = 0; } break; case 3: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state = 0; + gStorage->state = 0; } break; case 4: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_LAST_POKE); - gPSSData->state = 6; + PrintStorageMessage(MSG_LAST_POKE); + gStorage->state = 6; break; case 5: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); - gPSSData->state = 6; + PrintStorageMessage(MSG_PLEASE_REMOVE_MAIL); + gStorage->state = 6; break; case 6: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 7: - if (!sub_80950D0()) - gPSSData->state = 0; + if (!MultiMove_RunFunction()) + gStorage->state = 0; break; case 8: - if (!sub_80950D0()) - SetPSSCallback(Cb_MoveMon); + if (!MultiMove_RunFunction()) + SetPokeStorageTask(Task_MoveMon); break; case 9: - if (!sub_80950D0()) + if (!MultiMove_RunFunction()) { - if (gPSSData->setMosaic) - BoxSetMosaic(); - gPSSData->state = 0; + if (gStorage->setMosaic) + StartDisplayMonMosaic(); + gStorage->state = 0; } break; case 10: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - SetUpScrollToBox(gPSSData->newCurrBoxId); - gPSSData->state = 2; + SetUpScrollToBox(gStorage->newCurrBoxId); + gStorage->state = 2; } break; case 11: - if (!sub_809610C()) - gPSSData->state = 0; + if (!IsItemIconAnimActive()) + gStorage->state = 0; break; } } -static void Cb_ShowPartyPokemon(u8 taskId) +static void Task_ShowPartyPokemon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: SetUpDoShowPartyMenu(); - gPSSData->state++; + gStorage->state++; break; case 1: if (!DoShowPartyMenu()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_HidePartyPokemon(u8 taskId) +static void Task_HidePartyPokemon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: PlaySE(SE_SELECT); SetUpHidePartyMenu(); - gPSSData->state++; + gStorage->state++; break; case 1: if (!HidePartyMenu()) { - sub_8092B3C(sub_8092B70()); - gPSSData->state++; + SetCursorBoxPosition(GetSavedCursorPos()); + gStorage->state++; } break; case 2: - if (!sub_80924A8()) + if (!UpdateCursorPos()) { - if (gPSSData->setMosaic) - BoxSetMosaic(); - SetPSSCallback(Cb_MainPSS); + if (gStorage->setMosaic) + StartDisplayMonMosaic(); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_OnSelectedMon(u8 taskId) +static void Task_OnSelectedMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - if (!BoxGetMosaic()) + if (!IsDisplayMonMosaicActive()) { PlaySE(SE_SELECT); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) - PrintStorageActionText(PC_TEXT_IS_SELECTED); - else if (IsActiveItemMoving() || gPSSData->displayMonItemId != 0) - PrintStorageActionText(PC_TEXT_IS_SELECTED2); + if (gStorage->boxOption != OPTION_MOVE_ITEMS) + PrintStorageMessage(MSG_IS_SELECTED); + else if (IsActiveItemMoving() || gStorage->displayMonItemId != 0) + PrintStorageMessage(MSG_IS_SELECTED2); else - PrintStorageActionText(PC_TEXT_GIVE_TO_MON); + PrintStorageMessage(MSG_GIVE_TO_MON); AddMenu(); - gPSSData->state = 1; + gStorage->state = 1; } break; - case 1: // debug? - if (!sub_8094F90()) - gPSSData->state = 2; + case 1: + if (!IsMenuLoading()) + gStorage->state = 2; break; case 2: - switch (sub_8094F94()) + switch (HandleMenuInput()) { - case -1: - case 0: + case MENU_B_PRESSED: + case MENU_TEXT_CANCEL: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; - case 3: + case MENU_TEXT_MOVE: if (CanMovePartyMon()) - { - gPSSData->state = 3; - } + gStorage->state = 3; else { PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_MoveMon); + SetPokeStorageTask(Task_MoveMon); } break; - case 5: + case MENU_TEXT_PLACE: PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_PlaceMon); + SetPokeStorageTask(Task_PlaceMon); break; - case 4: + case MENU_TEXT_SHIFT: if (!CanShiftMon()) - { - gPSSData->state = 3; - } + gStorage->state = 3; else { PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_ShiftMon); + SetPokeStorageTask(Task_ShiftMon); } break; - case 2: + case MENU_TEXT_WITHDRAW: PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_WithdrawMon); + SetPokeStorageTask(Task_WithdrawMon); break; - case 1: + case MENU_TEXT_STORE: if (CanMovePartyMon()) - { - gPSSData->state = 3; - } - else if (ItemIsMail(gPSSData->displayMonItemId)) - { - gPSSData->state = 4; - } + gStorage->state = 3; + else if (ItemIsMail(gStorage->displayMonItemId)) + gStorage->state = 4; else { PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_DepositMenu); + SetPokeStorageTask(Task_DepositMenu); } break; - case 7: + case MENU_TEXT_RELEASE: if (CanMovePartyMon()) - { - gPSSData->state = 3; - } - else if (gPSSData->displayMonIsEgg) - { - gPSSData->state = 5; // Cannot release an Egg. - } - else if (ItemIsMail(gPSSData->displayMonItemId)) - { - gPSSData->state = 4; - } + gStorage->state = 3; + else if (gStorage->displayMonIsEgg) + gStorage->state = 5; + else if (ItemIsMail(gStorage->displayMonItemId)) + gStorage->state = 4; else { PlaySE(SE_SELECT); - SetPSSCallback(Cb_ReleaseMon); + SetPokeStorageTask(Task_ReleaseMon); } break; - case 6: + case MENU_TEXT_SUMMARY: PlaySE(SE_SELECT); - SetPSSCallback(Cb_ShowMonSummary); + SetPokeStorageTask(Task_ShowMonSummary); break; - case 8: + case MENU_TEXT_MARK: PlaySE(SE_SELECT); - SetPSSCallback(Cb_ShowMarkMenu); + SetPokeStorageTask(Task_ShowMarkMenu); break; - case 12: + case MENU_TEXT_TAKE: PlaySE(SE_SELECT); - SetPSSCallback(Cb_TakeItemForMoving); + SetPokeStorageTask(Task_TakeItemForMoving); break; - case 13: + case MENU_TEXT_GIVE: PlaySE(SE_SELECT); - SetPSSCallback(Cb_GiveMovingItemToMon); + SetPokeStorageTask(Task_GiveMovingItemToMon); break; - case 16: - SetPSSCallback(Cb_ItemToBag); + case MENU_TEXT_BAG: + SetPokeStorageTask(Task_ItemToBag); break; - case 15: - SetPSSCallback(Cb_SwitchSelectedItem); + case MENU_TEXT_SWITCH: + SetPokeStorageTask(Task_SwitchSelectedItem); break; - case 14: - SetPSSCallback(Cb_GiveItemFromBag); + case MENU_TEXT_GIVE2: + SetPokeStorageTask(Task_GiveItemFromBag); break; - case 17: - SetPSSCallback(Cb_ShowItemInfo); + case MENU_TEXT_INFO: + SetPokeStorageTask(Task_ShowItemInfo); break; } break; case 3: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_LAST_POKE); - gPSSData->state = 6; + PrintStorageMessage(MSG_LAST_POKE); + gStorage->state = 6; break; case 5: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); - gPSSData->state = 6; + PrintStorageMessage(MSG_CANT_RELEASE_EGG); + gStorage->state = 6; break; case 4: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); - gPSSData->state = 6; + PrintStorageMessage(MSG_PLEASE_REMOVE_MAIL); + gStorage->state = 6; break; case 6: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_MoveMon(u8 taskId) +static void Task_MoveMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - InitMonPlaceChange(0); - gPSSData->state++; + InitMonPlaceChange(CHANGE_GRAB); + gStorage->state++; break; case 1: if (!DoMonPlaceChange()) { if (sInPartyMenu) - SetPSSCallback(Cb_HandleMovingMonFromParty); + SetPokeStorageTask(Task_HandleMovingMonFromParty); else - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_PlaceMon(u8 taskId) +static void Task_PlaceMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - sub_808FE54(1); - InitMonPlaceChange(1); - gPSSData->state++; + SetPokeStorageQuestLogEvent(1); + InitMonPlaceChange(CHANGE_PLACE); + gStorage->state++; break; case 1: if (!DoMonPlaceChange()) { if (sInPartyMenu) - SetPSSCallback(Cb_HandleMovingMonFromParty); + SetPokeStorageTask(Task_HandleMovingMonFromParty); else - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_ShiftMon(u8 taskId) +static void Task_ShiftMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - sub_808FE54(0); - InitMonPlaceChange(2); - gPSSData->state++; + SetPokeStorageQuestLogEvent(0); + InitMonPlaceChange(CHANGE_SHIFT); + gStorage->state++; break; case 1: if (!DoMonPlaceChange()) { - BoxSetMosaic(); - SetPSSCallback(Cb_MainPSS); + StartDisplayMonMosaic(); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_WithdrawMon(u8 taskId) +static void Task_WithdrawMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: if (CalculatePlayerPartyCount() == PARTY_SIZE) { - PrintStorageActionText(PC_TEXT_PARTY_FULL); - gPSSData->state = 1; + PrintStorageMessage(MSG_PARTY_FULL); + gStorage->state = 1; } else { - sub_8092B5C(); - InitMonPlaceChange(0); - gPSSData->state = 2; + SaveCursorPos(); + InitMonPlaceChange(CHANGE_GRAB); + gStorage->state = 2; } break; case 1: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 2: @@ -1145,137 +1186,137 @@ static void Cb_WithdrawMon(u8 taskId) { SetMovingMonPriority(1); SetUpDoShowPartyMenu(); - gPSSData->state++; + gStorage->state++; } break; case 3: if (!DoShowPartyMenu()) { - sub_808FE54(1); - InitMonPlaceChange(1); - gPSSData->state++; + SetPokeStorageQuestLogEvent(1); + InitMonPlaceChange(CHANGE_PLACE); + gStorage->state++; } break; case 4: if (!DoMonPlaceChange()) { - sub_808FAA8(); - gPSSData->state++; + UpdatePartySlotColors(); + gStorage->state++; } break; case 5: - SetPSSCallback(Cb_HidePartyPokemon); + SetPokeStorageTask(Task_HidePartyPokemon); break; } } -static void Cb_DepositMenu(u8 taskId) +static void Task_DepositMenu(u8 taskId) { u8 boxId; - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); - LoadChooseBoxMenuGfx(&gPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE); - sub_808C940(gUnknown_20397B6); - gPSSData->state++; + PrintStorageMessage(MSG_DEPOSIT_IN_WHICH_BOX); + LoadChooseBoxMenuGfx(&gStorage->chooseBoxMenu, GFXTAG_CHOOSE_BOX_MENU_CENTER, PALTAG_MISC_1, 3, FALSE); + CreateChooseBoxMenuSprites(sDepositBoxId); + gStorage->state++; break; case 1: boxId = HandleBoxChooseSelectionInput(); - if (boxId == 200) - { - // no box chosen yet - } - else if (boxId == 201) + switch (boxId) { + case BOXID_NONE_CHOSEN: + break; + case BOXID_CANCELED: ClearBottomWindow(); - sub_808C950(); + DestroyChooseBoxMenuSprites(); FreeBoxSelectionPopupSpriteGfx(); - SetPSSCallback(Cb_MainPSS); - } - else - { + SetPokeStorageTask(Task_PokeStorageMain); + break; + default: if (TryStorePartyMonInBox(boxId)) { - gUnknown_20397B6 = boxId; - sub_808FE54(2); + sDepositBoxId = boxId; + SetPokeStorageQuestLogEvent(2); ClearBottomWindow(); - sub_808C950(); + DestroyChooseBoxMenuSprites(); FreeBoxSelectionPopupSpriteGfx(); - gPSSData->state = 2; + gStorage->state = 2; } else { - PrintStorageActionText(PC_TEXT_BOX_IS_FULL); - gPSSData->state = 4; + PrintStorageMessage(MSG_BOX_IS_FULL); + gStorage->state = 4; } + break; } break; case 2: CompactPartySlots(); - sub_80909F4(); - gPSSData->state++; + CompactPartySprites(); + gStorage->state++; break; case 3: - if (!sub_8090A60()) + if (GetNumPartySpritesCompacting() == 0) { - sub_8093174(); - BoxSetMosaic(); - sub_808FAA8(); - SetPSSCallback(Cb_MainPSS); + ResetSelectionAfterDeposit(); + StartDisplayMonMosaic(); + UpdatePartySlotColors(); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 4: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { - PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); - gPSSData->state = 1; + PrintStorageMessage(MSG_DEPOSIT_IN_WHICH_BOX); + gStorage->state = 1; } break; } } -static void Cb_ReleaseMon(u8 taskId) +static void Task_ReleaseMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_RELEASE_POKE); + PrintStorageMessage(MSG_RELEASE_POKE); ShowYesNoWindow(1); - gPSSData->state++; + gStorage->state++; // fallthrough case 1: switch (Menu_ProcessInputNoWrapClearOnChoose()) { case MENU_B_PRESSED: - case 1: + case 1: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; - case 0: + case 0: ClearBottomWindow(); InitCanReleaseMonVars(); - sub_8093194(); - gPSSData->state++; + InitReleaseMon(); + gStorage->state++; break; } break; case 2: RunCanReleaseMon(); - if (!sub_80931EC()) + if (!TryHideReleaseMon()) { - while (1) + while (TRUE) { - s8 r0 = RunCanReleaseMon(); - if (r0 == 1) + // keep checking until status is no longer RELEASE_MON_UNDETERMINED + s8 canReleaseStatus = RunCanReleaseMon(); + if (canReleaseStatus == RELEASE_MON_ALLOWED) { - gPSSData->state++; + gStorage->state++; break; } - else if (r0 == 0) + else if (canReleaseStatus == RELEASE_MON_NOT_ALLOWED) { - gPSSData->state = 8; // Can't release the mon. + gStorage->state = 8; // Can't release the mon. break; } } @@ -1283,15 +1324,15 @@ static void Cb_ReleaseMon(u8 taskId) break; case 3: ReleaseMon(); - RefreshCursorMonData(); - PrintStorageActionText(PC_TEXT_WAS_RELEASED); - gPSSData->state++; + RefreshDisplayMonData(); + PrintStorageMessage(MSG_WAS_RELEASED); + gStorage->state++; break; case 4: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { - PrintStorageActionText(PC_TEXT_BYE_BYE); - gPSSData->state++; + PrintStorageMessage(MSG_BYE_BYE); + gStorage->state++; } break; case 5: @@ -1301,267 +1342,262 @@ static void Cb_ReleaseMon(u8 taskId) if (sInPartyMenu) { CompactPartySlots(); - sub_80909F4(); - gPSSData->state++; + CompactPartySprites(); + gStorage->state++; } else - { - gPSSData->state = 7; - } + gStorage->state = 7; } break; case 6: - if (!sub_8090A60()) + if (GetNumPartySpritesCompacting() == 0) { - sub_8092F54(); - BoxSetMosaic(); - sub_808FAA8(); - gPSSData->state++; + DoTrySetDisplayMonData(); + StartDisplayMonMosaic(); + UpdatePartySlotColors(); + gStorage->state++; } break; case 7: - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 8: - PrintStorageActionText(PC_TEXT_WAS_RELEASED); - gPSSData->state++; + // Start "can't release" sequence + PrintStorageMessage(MSG_WAS_RELEASED); + gStorage->state++; break; case 9: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { - PrintStorageActionText(PC_TEXT_SURPRISE); - gPSSData->state++; + PrintStorageMessage(MSG_SURPRISE); + gStorage->state++; } break; case 10: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - sub_8091114(); - gPSSData->state++; + DoReleaseMonComeBackAnim(); + gStorage->state++; } break; case 11: - if (!sub_8091150()) + if (!ResetReleaseMonSpritePtr()) { - sub_8093264(); - PrintStorageActionText(PC_TEXT_CAME_BACK); - gPSSData->state++; + TrySetCursorFistAnim(); + PrintStorageMessage(MSG_CAME_BACK); + gStorage->state++; } break; case 12: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { - PrintStorageActionText(PC_TEXT_WORRIED); - gPSSData->state++; + PrintStorageMessage(MSG_WORRIED); + gStorage->state++; } break; case 13: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_ShowMarkMenu(u8 taskId) +static void Task_ShowMarkMenu(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_MARK_POKE); - gPSSData->markMenu.markings = gPSSData->displayMonMarkings; - OpenMonMarkingsMenu(gPSSData->displayMonMarkings, 0xb0, 0x10); - gPSSData->state++; + PrintStorageMessage(MSG_MARK_POKE); + gStorage->markMenu.markings = gStorage->displayMonMarkings; + OpenMonMarkingsMenu(gStorage->displayMonMarkings, 176, 16); + gStorage->state++; break; case 1: if (!HandleMonMarkingsMenuInput()) { FreeMonMarkingsMenu(); ClearBottomWindow(); - SetMonMarkings(gPSSData->markMenu.markings); - RefreshCursorMonData(); - SetPSSCallback(Cb_MainPSS); + SetMonMarkings(gStorage->markMenu.markings); + RefreshDisplayMonData(); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_TakeItemForMoving(u8 taskId) +static void Task_TakeItemForMoving(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - if (!ItemIsMail(gPSSData->displayMonItemId)) + if (!ItemIsMail(gStorage->displayMonItemId)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } else - { - SetPSSCallback(Cb_PrintCantStoreMail); - } + SetPokeStorageTask(Task_PrintCantStoreMail); break; case 1: - sub_8094D14(2); + StartCursorAnim(CURSOR_ANIM_OPEN); Item_FromMonToMoving(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); - gPSSData->state++; + gStorage->state++; break; case 2: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - sub_8094D14(3); + StartCursorAnim(CURSOR_ANIM_FIST); ClearBottomWindow(); - sub_8092F54(); - PrintCursorMonInfo(); - gPSSData->state++; + DoTrySetDisplayMonData(); + PrintDisplayMonInfo(); + gStorage->state++; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_GiveMovingItemToMon(u8 taskId) +static void Task_GiveMovingItemToMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; break; case 1: - sub_8094D14(2); + StartCursorAnim(CURSOR_ANIM_OPEN); Item_GiveMovingToMon(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); - gPSSData->state++; + gStorage->state++; break; case 2: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - sub_8094D14(0); - sub_8092F54(); - PrintCursorMonInfo(); - PrintStorageActionText(PC_TEXT_ITEM_IS_HELD); - gPSSData->state++; + StartCursorAnim(CURSOR_ANIM_BOUNCE); + DoTrySetDisplayMonData(); + PrintDisplayMonInfo(); + PrintStorageMessage(MSG_ITEM_IS_HELD); + gStorage->state++; } break; case 3: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } break; case 4: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_ItemToBag(u8 taskId) +static void Task_ItemToBag(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - if (!AddBagItem(gPSSData->displayMonItemId, 1)) + if (!AddBagItem(gStorage->displayMonItemId, 1)) { PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_BAG_FULL); - gPSSData->state = 3; + PrintStorageMessage(MSG_BAG_FULL); + gStorage->state = 3; } else { PlaySE(SE_SELECT); Item_TakeMons(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); - gPSSData->state = 1; + gStorage->state = 1; } break; case 1: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - PrintStorageActionText(PC_TEXT_PLACED_IN_BAG); - gPSSData->state = 2; + PrintStorageMessage(MSG_PLACED_IN_BAG); + gStorage->state = 2; } break; case 2: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - sub_8092F54(); - PrintCursorMonInfo(); - gPSSData->state = 4; + DoTrySetDisplayMonData(); + PrintDisplayMonInfo(); + gStorage->state = 4; } break; case 4: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 3: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_SwitchSelectedItem(u8 taskId) +static void Task_SwitchSelectedItem(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - if (!ItemIsMail(gPSSData->displayMonItemId)) + if (!ItemIsMail(gStorage->displayMonItemId)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } else - { - SetPSSCallback(Cb_PrintCantStoreMail); - } + SetPokeStorageTask(Task_PrintCantStoreMail); break; case 1: - sub_8094D14(2); + StartCursorAnim(CURSOR_ANIM_OPEN); Item_SwitchMonsWithMoving(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); - gPSSData->state++; + gStorage->state++; break; case 2: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - sub_8094D14(3); - sub_8092F54(); - PrintCursorMonInfo(); - PrintStorageActionText(PC_TEXT_CHANGED_TO_ITEM); - gPSSData->state++; + StartCursorAnim(CURSOR_ANIM_FIST); + DoTrySetDisplayMonData(); + PrintDisplayMonInfo(); + PrintStorageMessage(MSG_CHANGED_TO_ITEM); + gStorage->state++; } break; case 3: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } break; case 4: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_ShowItemInfo(u8 taskId) +static void Task_ShowItemInfo(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) @@ -1569,44 +1605,44 @@ static void Cb_ShowItemInfo(u8 taskId) PlaySE(SE_WIN_OPEN); PrintItemDescription(); InitItemInfoWindow(); - gPSSData->state++; + gStorage->state++; } break; case 2: if (!UpdateItemInfoWindowSlideIn()) - gPSSData->state++; + gStorage->state++; break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) - gPSSData->state++; + gStorage->state++; break; case 4: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { PlaySE(SE_WIN_OPEN); - gPSSData->state++; + gStorage->state++; } break; case 5: if (!UpdateItemInfoWindowSlideOut()) - gPSSData->state++; + gStorage->state++; break; case 6: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_CloseBoxWhileHoldingItem(u8 taskId) +static void Task_CloseBoxWhileHoldingItem(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_PUT_IN_BAG); + PrintStorageMessage(MSG_PUT_IN_BAG); ShowYesNoWindow(0); - gPSSData->state = 1; + gStorage->state = 1; break; case 1: switch (Menu_ProcessInputNoWrapClearOnChoose()) @@ -1614,18 +1650,18 @@ static void Cb_CloseBoxWhileHoldingItem(u8 taskId) case MENU_B_PRESSED: case 1: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 0: - if (AddBagItem(gPSSData->movingItemId, 1) == TRUE) + if (AddBagItem(gStorage->movingItemId, 1) == TRUE) { ClearBottomWindow(); - gPSSData->state = 3; + gStorage->state = 3; } else { - PrintStorageActionText(PC_TEXT_BAG_FULL); - gPSSData->state = 2; + PrintStorageMessage(MSG_BAG_FULL); + gStorage->state = 2; } break; } @@ -1634,167 +1670,170 @@ static void Cb_CloseBoxWhileHoldingItem(u8 taskId) if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state = 5; + gStorage->state = 5; } break; case 3: - sub_8096088(); - gPSSData->state = 4; + MoveItemFromCursorToBag(); + gStorage->state = 4; break; case 4: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - sub_8094D14(0); - SetPSSCallback(Cb_MainPSS); + StartCursorAnim(CURSOR_ANIM_BOUNCE); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 5: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_HandleMovingMonFromParty(u8 taskId) +static void Task_HandleMovingMonFromParty(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: CompactPartySlots(); - sub_80909F4(); - gPSSData->state++; + CompactPartySprites(); + gStorage->state++; break; case 1: - if (!sub_8090A60()) + if (GetNumPartySpritesCompacting() == 0) { - sub_808FAA8(); - SetPSSCallback(Cb_MainPSS); + UpdatePartySlotColors(); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_PrintCantStoreMail(u8 taskId) +static void Task_PrintCantStoreMail(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_CANT_STORE_MAIL); - gPSSData->state++; + PrintStorageMessage(MSG_CANT_STORE_MAIL); + gStorage->state++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) - gPSSData->state++; + gStorage->state++; break; case 2: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_HandleBoxOptions(u8 taskId) +static void Task_HandleBoxOptions(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_WHAT_YOU_DO); + PrintStorageMessage(MSG_WHAT_YOU_DO); AddMenu(); - gPSSData->state++; + gStorage->state++; break; case 1: - if (sub_8094F90()) + if (IsMenuLoading()) return; - gPSSData->state++; + gStorage->state++; case 2: - switch (sub_8094F94()) + switch (HandleMenuInput()) { - case -1: - case 0: + case MENU_B_PRESSED: + case MENU_TEXT_CANCEL: AnimateBoxScrollArrows(TRUE); ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; - case 11: + case MENU_TEXT_NAME: PlaySE(SE_SELECT); - SetPSSCallback(Cb_NameBox); + SetPokeStorageTask(Task_NameBox); break; - case 10: + case MENU_TEXT_WALLPAPER: PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_HandleWallpapers); + SetPokeStorageTask(Task_HandleWallpapers); break; - case 9: + case MENU_TEXT_JUMP: PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_JumpBox); + SetPokeStorageTask(Task_JumpBox); break; } break; } } -static void Cb_HandleWallpapers(u8 taskId) +static void Task_HandleWallpapers(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: AddWallpaperSetsMenu(); - PrintStorageActionText(PC_TEXT_PICK_A_THEME); - gPSSData->state++; + PrintStorageMessage(MSG_PICK_A_THEME); + gStorage->state++; break; case 1: - if (!sub_8094F90()) - gPSSData->state++; + if (!IsMenuLoading()) + gStorage->state++; break; case 2: - gPSSData->wallpaperSetId = sub_8094F94(); - switch (gPSSData->wallpaperSetId) + gStorage->wallpaperSetId = HandleMenuInput(); + switch (gStorage->wallpaperSetId) { - case -1: + case MENU_B_PRESSED: AnimateBoxScrollArrows(TRUE); ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; - case 18 ... 21: + case MENU_TEXT_SCENERY_1: + case MENU_TEXT_SCENERY_2: + case MENU_TEXT_SCENERY_3: + case MENU_TEXT_ETCETERA: PlaySE(SE_SELECT); - sub_8095024(); - gPSSData->wallpaperSetId -= 18; - gPSSData->state++; + RemoveMenu(); + gStorage->wallpaperSetId -= MENU_TEXT_SCENERY_1; + gStorage->state++; break; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) { - AddWallpapersMenu(gPSSData->wallpaperSetId); - PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER); - gPSSData->state++; + AddWallpapersMenu(gStorage->wallpaperSetId); + PrintStorageMessage(MSG_PICK_A_WALLPAPER); + gStorage->state++; } break; case 4: - gPSSData->wallpaperId = sub_8094F94(); - switch (gPSSData->wallpaperId) + gStorage->wallpaperId = HandleMenuInput(); + switch (gStorage->wallpaperId) { case MENU_NOTHING_CHOSEN: break; case MENU_B_PRESSED: ClearBottomWindow(); - gPSSData->state = 0; + gStorage->state = 0; break; default: PlaySE(SE_SELECT); ClearBottomWindow(); - gPSSData->wallpaperId -= 22; - SetWallpaperForCurrentBox(gPSSData->wallpaperId); - gPSSData->state++; + gStorage->wallpaperId -= MENU_TEXT_FOREST; + SetWallpaperForCurrentBox(gStorage->wallpaperId); + gStorage->state++; break; } break; @@ -1802,145 +1841,141 @@ static void Cb_HandleWallpapers(u8 taskId) if (!DoWallpaperGfxChange()) { AnimateBoxScrollArrows(TRUE); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_JumpBox(u8 taskId) +static void Task_JumpBox(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX); - LoadChooseBoxMenuGfx(&gPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE); - sub_808C940(StorageGetCurrentBox()); - gPSSData->state++; + PrintStorageMessage(MSG_JUMP_TO_WHICH_BOX); + LoadChooseBoxMenuGfx(&gStorage->chooseBoxMenu, GFXTAG_CHOOSE_BOX_MENU_CENTER, PALTAG_MISC_1, 3, FALSE); + CreateChooseBoxMenuSprites(StorageGetCurrentBox()); + gStorage->state++; break; case 1: - gPSSData->newCurrBoxId = HandleBoxChooseSelectionInput(); - switch (gPSSData->newCurrBoxId) + gStorage->newCurrBoxId = HandleBoxChooseSelectionInput(); + switch (gStorage->newCurrBoxId) { - case 200: + case BOXID_NONE_CHOSEN: break; default: ClearBottomWindow(); - sub_808C950(); + DestroyChooseBoxMenuSprites(); FreeBoxSelectionPopupSpriteGfx(); - if (gPSSData->newCurrBoxId == 201 || gPSSData->newCurrBoxId == StorageGetCurrentBox()) + if (gStorage->newCurrBoxId == BOXID_CANCELED || gStorage->newCurrBoxId == StorageGetCurrentBox()) { AnimateBoxScrollArrows(TRUE); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } else - { - gPSSData->state++; - } + gStorage->state++; break; } break; case 2: - SetUpScrollToBox(gPSSData->newCurrBoxId); - gPSSData->state++; + SetUpScrollToBox(gStorage->newCurrBoxId); + gStorage->state++; break; case 3: if (!ScrollToBox()) { - SetCurrentBox(gPSSData->newCurrBoxId); - SetPSSCallback(Cb_MainPSS); + SetCurrentBox(gStorage->newCurrBoxId); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_NameBox(u8 taskId) +static void Task_NameBox(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - sub_8093630(); + SaveMovingMon(); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); - gPSSData->state++; + gStorage->state++; break; case 1: if (!UpdatePaletteFade()) { - sWhichToReshow = 1; - gPSSData->screenChangeType = SCREEN_CHANGE_NAME_BOX; - SetPSSCallback(Cb_ChangeScreen); + sWhichToReshow = SCREEN_CHANGE_NAME_BOX - 1; + gStorage->screenChangeType = SCREEN_CHANGE_NAME_BOX; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_ShowMonSummary(u8 taskId) +static void Task_ShowMonSummary(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - sub_80936B8(); + InitSummaryScreenData(); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); - gPSSData->state++; + gStorage->state++; break; case 1: if (!UpdatePaletteFade()) { - sWhichToReshow = 0; - gPSSData->screenChangeType = SCREEN_CHANGE_SUMMARY_SCREEN; - SetPSSCallback(Cb_ChangeScreen); + sWhichToReshow = SCREEN_CHANGE_SUMMARY_SCREEN - 1; + gStorage->screenChangeType = SCREEN_CHANGE_SUMMARY_SCREEN; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_GiveItemFromBag(u8 taskId) +static void Task_GiveItemFromBag(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); - gPSSData->state++; + gStorage->state++; break; case 1: if (!UpdatePaletteFade()) { - sWhichToReshow = 2; - gPSSData->screenChangeType = SCREEN_CHANGE_ITEM_FROM_BAG; - SetPSSCallback(Cb_ChangeScreen); + sWhichToReshow = SCREEN_CHANGE_ITEM_FROM_BAG - 1; + gStorage->screenChangeType = SCREEN_CHANGE_ITEM_FROM_BAG; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_OnCloseBoxPressed(u8 taskId) +static void Task_OnCloseBoxPressed(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: if (IsMonBeingMoved()) { PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_HOLDING_POKE); - gPSSData->state = 1; + PrintStorageMessage(MSG_HOLDING_POKE); + gStorage->state = 1; } else if (IsActiveItemMoving()) - { - SetPSSCallback(Cb_CloseBoxWhileHoldingItem); - } + SetPokeStorageTask(Task_CloseBoxWhileHoldingItem); else { PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_EXIT_BOX); + PrintStorageMessage(MSG_EXIT_BOX); ShowYesNoWindow(0); - gPSSData->state = 2; + gStorage->state = 2; } break; case 1: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 2: @@ -1949,59 +1984,57 @@ static void Cb_OnCloseBoxPressed(u8 taskId) case MENU_B_PRESSED: case 1: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 0: PlaySE(SE_PC_OFF); ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; break; } break; case 3: BeginPCScreenEffect_TurnOff(20, 0, 1); - gPSSData->state++; + gStorage->state++; break; case 4: if (!IsPCScreenEffectRunning_TurnOff()) { - sub_808FF70(); + UpdateBoxToSendMons(); gPlayerPartyCount = CalculatePlayerPartyCount(); - gPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX; - SetPSSCallback(Cb_ChangeScreen); + gStorage->screenChangeType = SCREEN_CHANGE_EXIT_BOX; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_OnBPressed(u8 taskId) +static void Task_OnBPressed(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: if (IsMonBeingMoved()) { PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_HOLDING_POKE); - gPSSData->state = 1; + PrintStorageMessage(MSG_HOLDING_POKE); + gStorage->state = 1; } else if (IsActiveItemMoving()) - { - SetPSSCallback(Cb_CloseBoxWhileHoldingItem); - } + SetPokeStorageTask(Task_CloseBoxWhileHoldingItem); else { PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_CONTINUE_BOX); + PrintStorageMessage(MSG_CONTINUE_BOX); ShowYesNoWindow(0); - gPSSData->state = 2; + gStorage->state = 2; } break; case 1: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 2: @@ -2009,65 +2042,65 @@ static void Cb_OnBPressed(u8 taskId) { case 0: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 1: case MENU_B_PRESSED: PlaySE(SE_PC_OFF); ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; break; } break; case 3: BeginPCScreenEffect_TurnOff(20, 0, 0); - gPSSData->state++; + gStorage->state++; break; case 4: if (!IsPCScreenEffectRunning_TurnOff()) { - sub_808FF70(); + UpdateBoxToSendMons(); gPlayerPartyCount = CalculatePlayerPartyCount(); - gPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX; - SetPSSCallback(Cb_ChangeScreen); + gStorage->screenChangeType = SCREEN_CHANGE_EXIT_BOX; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_ChangeScreen(u8 taskId) +static void Task_ChangeScreen(u8 taskId) { - struct Pokemon * partyMon; - u8 mode, monIndex, maxMonIndex; - u8 screenChangeType = gPSSData->screenChangeType; + struct Pokemon *party; + u8 mode, cursorPos, lastIndex; + u8 screenChangeType = gStorage->screenChangeType; - if (gPSSData->boxOption == OPTION_MOVE_ITEMS && IsActiveItemMoving() == TRUE) - gUnknown_20397BA = GetMovingItem(); + if (gStorage->boxOption == OPTION_MOVE_ITEMS && IsActiveItemMoving() == TRUE) + sMovingItemId = GetMovingItem(); else - gUnknown_20397BA = ITEM_NONE; + sMovingItemId = ITEM_NONE; switch (screenChangeType) { case SCREEN_CHANGE_EXIT_BOX: default: - FreePSSData(); + FreePokeStorageData(); SetMainCallback2(CB2_ExitPokeStorage); break; case SCREEN_CHANGE_SUMMARY_SCREEN: - partyMon = gPSSData->field_218C.mon; - monIndex = gPSSData->field_2187; - maxMonIndex = gPSSData->field_2186; - mode = gPSSData->summaryScreenMode; - FreePSSData(); - ShowPokemonSummaryScreen(partyMon, monIndex, maxMonIndex, Cb2_ReturnToPSS, mode); + party = gStorage->summaryMonPtr.mon; + cursorPos = gStorage->summaryCursorPos; + lastIndex = gStorage->summaryLastIndex; + mode = gStorage->summaryScreenMode; + FreePokeStorageData(); + ShowPokemonSummaryScreen(party, cursorPos, lastIndex, CB2_ReturnToPokeStorage, mode); break; case SCREEN_CHANGE_NAME_BOX: - FreePSSData(); - DoNamingScreen(NAMING_SCREEN_BOX, GetBoxNamePtr(StorageGetCurrentBox()), 0, 0, 0, Cb2_ReturnToPSS); + FreePokeStorageData(); + DoNamingScreen(NAMING_SCREEN_BOX, GetBoxNamePtr(StorageGetCurrentBox()), 0, 0, 0, CB2_ReturnToPokeStorage); break; case SCREEN_CHANGE_ITEM_FROM_BAG: - FreePSSData(); - GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_ITEMS, Cb2_ReturnToPSS); + FreePokeStorageData(); + GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_ITEMS, CB2_ReturnToPokeStorage); break; } @@ -2091,18 +2124,14 @@ static void GiveChosenBagItem(void) } } -static void FreePSSData(void) +static void FreePokeStorageData(void) { - FreeBoxPartyPokemonDropdowns(); - sub_80950A4(); - FREE_AND_SET_NULL(gPSSData); + TilemapUtil_Free(); + MultiMove_Free(); + FREE_AND_SET_NULL(gStorage); FreeAllWindowBuffers(); } -// ****************************************************************** -// Graphics util -// ****************************************************************** - static void SetScrollingBackground(void) { SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31)); @@ -2116,59 +2145,55 @@ static void ScrollBackground(void) ChangeBgY(3, 128, 2); } -static void LoadPSSMenuGfx(void) +static void LoadPokeStorageMenuGfx(void) { - InitBgsFromTemplates(0, gUnknown_83CEA50, NELEMS(gUnknown_83CEA50)); - DecompressAndLoadBgGfxUsingHeap(1, gPSSMenu_Gfx, 0, 0, 0); - LZ77UnCompWram(gUnknown_83CE5FC, gPSSData->field_5AC4); - SetBgTilemapBuffer(1, gPSSData->field_5AC4); + InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates)); + DecompressAndLoadBgGfxUsingHeap(1, gPokeStorageMenu_Gfx, 0, 0, 0); + LZ77UnCompWram(sMenu_Tilemap, gStorage->menuTilemapBuffer); + SetBgTilemapBuffer(1, gStorage->menuTilemapBuffer); ShowBg(1); ScheduleBgCopyTilemapToVram(1); } -static bool8 InitPSSWindows(void) +static bool8 InitPokeStorageWindows(void) { - if (!InitWindows(gUnknown_83CEA30)) - { + if (!InitWindows(sWindowTemplates)) return FALSE; - } - else - { - DeactivateAllTextPrinters(); - return TRUE; - } + + DeactivateAllTextPrinters(); + return TRUE; } -static void LoadWaveformSpritePalette(void) +static void LoadsMiscSpritePalette(void) { - LoadSpritePalette(&sWaveformSpritePalette); + LoadSpritePalette(&sMiscSpritePalette); } -static void sub_808F078(void) +static void InitPalettesAndSprites(void) { - LoadPalette(gUnknown_8E9C3F8, 0, 0x20); - LoadPalette(gUnknown_8E9C418, 0x20, 0x20); - LoadPalette(gUnknown_83CEA10, 0xF0, 0x20); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) - LoadPalette(gUnknown_83CE738, 0x30, 0x20); + LoadPalette(gPokeStorageInterface_Pal, 0, 0x20); + LoadPalette(gPokeStorageInterface_NoDisplayMon_Pal, 0x20, 0x20); + LoadPalette(sTextWindows_Pal, 0xF0, 0x20); + if (gStorage->boxOption != OPTION_MOVE_ITEMS) + LoadPalette(sScrollingBg_Pal, 0x30, sizeof(sScrollingBg_Pal)); else - LoadPalette(gUnknown_83CE758, 0x30, 0x20); + LoadPalette(sScrollingBgMoveItems_Pal, 0x30, sizeof(sScrollingBgMoveItems_Pal)); SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(30)); - LoadCursorMonSprite(); - PSS_CreateMonMarkingSprite(); + CreateDisplayMonSprite(); + CreateMarkingComboSprite(); CreateWaveformSprites(); - RefreshCursorMonData(); + RefreshDisplayMonData(); } -static void PSS_CreateMonMarkingSprite(void) +static void CreateMarkingComboSprite(void) { - gPSSData->markingComboSprite = CreateMonMarkingComboSprite(TAG_TILE_10, TAG_PAL_DAC8, NULL); - gPSSData->markingComboSprite->oam.priority = 1; - gPSSData->markingComboSprite->subpriority = 1; - gPSSData->markingComboSprite->x = 40; - gPSSData->markingComboSprite->y = 150; - gPSSData->markingComboTilesPtr = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(TAG_TILE_10); + gStorage->markingComboSprite = CreateMonMarkingComboSprite(GFXTAG_MARKING_COMBO, PALTAG_MARKING_COMBO, NULL); + gStorage->markingComboSprite->oam.priority = 1; + gStorage->markingComboSprite->subpriority = 1; + gStorage->markingComboSprite->x = 40; + gStorage->markingComboSprite->y = 150; + gStorage->markingComboTilesPtr = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(GFXTAG_MARKING_COMBO); } static void CreateWaveformSprites(void) @@ -2180,37 +2205,37 @@ static void CreateWaveformSprites(void) for (i = 0; i < 2; i++) { u8 spriteId = CreateSprite(&sSpriteTemplate_Waveform, i * 63 + 8, 9, 2); - gPSSData->waveformSprites[i] = &gSprites[spriteId]; + gStorage->waveformSprites[i] = &gSprites[spriteId]; } } -static void RefreshCursorMonData(void) +static void RefreshDisplayMonData(void) { - LoadCursorMonGfx(gPSSData->displayMonSpecies, gPSSData->displayMonPersonality); - PrintCursorMonInfo(); - sub_808F5E8(); + LoadDisplayMonGfx(gStorage->displayMonSpecies, gStorage->displayMonPersonality); + PrintDisplayMonInfo(); + UpdateWaveformAnimation(); ScheduleBgCopyTilemapToVram(0); } -static void BoxSetMosaic(void) +static void StartDisplayMonMosaic(void) { - RefreshCursorMonData(); - if (gPSSData->cursorMonSprite) + RefreshDisplayMonData(); + if (gStorage->displayMonSprite) { - gPSSData->cursorMonSprite->oam.mosaic = TRUE; - gPSSData->cursorMonSprite->data[0] = 10; - gPSSData->cursorMonSprite->data[1] = 1; - gPSSData->cursorMonSprite->callback = SpriteCB_CursorMon_Mosaic; - SetGpuReg(REG_OFFSET_MOSAIC, (gPSSData->cursorMonSprite->data[0] << 12) | (gPSSData->cursorMonSprite->data[0] << 8)); + gStorage->displayMonSprite->oam.mosaic = TRUE; + gStorage->displayMonSprite->data[0] = 10; + gStorage->displayMonSprite->data[1] = 1; + gStorage->displayMonSprite->callback = SpriteCB_DisplayMonMosaic; + SetGpuReg(REG_OFFSET_MOSAIC, (gStorage->displayMonSprite->data[0] << 12) | (gStorage->displayMonSprite->data[0] << 8)); } } -static u8 BoxGetMosaic(void) +static u8 IsDisplayMonMosaicActive(void) { - return gPSSData->cursorMonSprite->oam.mosaic; + return gStorage->displayMonSprite->oam.mosaic; } -static void SpriteCB_CursorMon_Mosaic(struct Sprite *sprite) +static void SpriteCB_DisplayMonMosaic(struct Sprite *sprite) { sprite->data[0] -= sprite->data[1]; if (sprite->data[0] < 0) @@ -2223,22 +2248,22 @@ static void SpriteCB_CursorMon_Mosaic(struct Sprite *sprite) } } -static void LoadCursorMonSprite(void) +static void CreateDisplayMonSprite(void) { u16 i; u16 tileStart; u8 palSlot; u8 spriteId; - struct SpriteSheet sheet = {gPSSData->field_22C4, 0x800, TAG_TILE_2}; - struct SpritePalette palette = {gPSSData->field_2244, TAG_PAL_DAC6}; - struct SpriteTemplate template = sSpriteTemplate_CursorMon; + struct SpriteSheet sheet = {gStorage->tileBuffer, MON_PIC_SIZE, GFXTAG_DISPLAY_MON}; + struct SpritePalette palette = {gStorage->displayMonPalBuffer, PALTAG_DISPLAY_MON}; + struct SpriteTemplate template = sSpriteTemplate_DisplayMon; - for (i = 0; i < 0x800; i++) - gPSSData->field_22C4[i] = 0; + for (i = 0; i < MON_PIC_SIZE; i++) + gStorage->tileBuffer[i] = 0; for (i = 0; i < 0x10; i++) - gPSSData->field_2244[i] = 0; + gStorage->displayMonPalBuffer[i] = 0; - gPSSData->cursorMonSprite = NULL; + gStorage->displayMonSprite = NULL; do { @@ -2254,170 +2279,161 @@ static void LoadCursorMonSprite(void) if (spriteId == MAX_SPRITES) break; - gPSSData->cursorMonSprite = &gSprites[spriteId]; - gPSSData->field_223A = palSlot * 16 + 0x100; - gPSSData->field_223C = (void *)OBJ_VRAM0 + tileStart * 32; - } while (0); + gStorage->displayMonSprite = &gSprites[spriteId]; + gStorage->displayMonPalOffset = palSlot * 16 + 0x100; + gStorage->displayMonTilePtr = (void *)OBJ_VRAM0 + tileStart * 32; + } while (FALSE); - if (gPSSData->cursorMonSprite == NULL) + if (gStorage->displayMonSprite == NULL) { - FreeSpriteTilesByTag(TAG_TILE_2); - FreeSpritePaletteByTag(TAG_PAL_DAC6); + FreeSpriteTilesByTag(GFXTAG_DISPLAY_MON); + FreeSpritePaletteByTag(PALTAG_DISPLAY_MON); } } -static void LoadCursorMonGfx(u16 species, u32 pid) +static void LoadDisplayMonGfx(u16 species, u32 personality) { - if (gPSSData->cursorMonSprite == NULL) + if (gStorage->displayMonSprite == NULL) return; if (species != SPECIES_NONE) { - HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gPSSData->field_22C4, species, pid); - LZ77UnCompWram(gPSSData->displayMonPalette, gPSSData->field_2244); - CpuCopy32(gPSSData->field_22C4, gPSSData->field_223C, 0x800); - LoadPalette(gPSSData->field_2244, gPSSData->field_223A, 0x20); - gPSSData->cursorMonSprite->invisible = FALSE; + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gStorage->tileBuffer, species, personality); + LZ77UnCompWram(gStorage->displayMonPalette, gStorage->displayMonPalBuffer); + CpuCopy32(gStorage->tileBuffer, gStorage->displayMonTilePtr, 0x800); + LoadPalette(gStorage->displayMonPalBuffer, gStorage->displayMonPalOffset, 0x20); + gStorage->displayMonSprite->invisible = FALSE; } else - { - gPSSData->cursorMonSprite->invisible = TRUE; - } + gStorage->displayMonSprite->invisible = TRUE; } -static void PrintCursorMonInfo(void) +static void PrintDisplayMonInfo(void) { u16 i; u16 y; FillWindowPixelBuffer(0, PIXEL_FILL(1)); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { for (i = 0, y = 0; i < 3; i++, y += 14) - { - AddTextPrinterParameterized(0, FONT_2, gPSSData->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL); - } - AddTextPrinterParameterized(0, FONT_0, gPSSData->displayMonTexts[3], 6, y + 2, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(0, FONT_2, gStorage->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL); + + AddTextPrinterParameterized(0, FONT_0, gStorage->displayMonTexts[3], 6, y + 2, TEXT_SKIP_DRAW, NULL); } else { - AddTextPrinterParameterized(0, FONT_0, gPSSData->displayMonTexts[3], 6, 0, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(0, FONT_0, gStorage->displayMonTexts[3], 6, 0, TEXT_SKIP_DRAW, NULL); for (i = 0, y = 15; i < 3; i++, y += 14) - { - AddTextPrinterParameterized(0, FONT_2, gPSSData->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL); - } + AddTextPrinterParameterized(0, FONT_2, gStorage->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL); } CopyWindowToVram(0, COPYWIN_GFX); - if (gPSSData->displayMonSpecies != SPECIES_NONE) + if (gStorage->displayMonSpecies != SPECIES_NONE) { - UpdateMonMarkingTiles(gPSSData->displayMonMarkings, gPSSData->markingComboTilesPtr); - gPSSData->markingComboSprite->invisible = FALSE; + UpdateMonMarkingTiles(gStorage->displayMonMarkings, gStorage->markingComboTilesPtr); + gStorage->markingComboSprite->invisible = FALSE; } else - { - gPSSData->markingComboSprite->invisible = TRUE; - } + gStorage->markingComboSprite->invisible = TRUE; } -static void sub_808F5E8(void) +static void UpdateWaveformAnimation(void) { u16 i; - if (gPSSData->displayMonSpecies != SPECIES_NONE) + if (gStorage->displayMonSpecies != SPECIES_NONE) { - SetBoxPartyPokemonDropdownMap2Rect(0, 0, 0, 8, 2); + TilemapUtil_SetRect(TILEMAP_PKMN_DATA, 0, 0, 8, 2); for (i = 0; i < 2; i++) - StartSpriteAnimIfDifferent(gPSSData->waveformSprites[i], i * 2 + 1); + StartSpriteAnimIfDifferent(gStorage->waveformSprites[i], i * 2 + 1); } else { - SetBoxPartyPokemonDropdownMap2Rect(0, 0, 2, 8, 2); + TilemapUtil_SetRect(TILEMAP_PKMN_DATA, 0, 2, 8, 2); for (i = 0; i < 2; i++) - StartSpriteAnim(gPSSData->waveformSprites[i], i * 2); + StartSpriteAnim(gStorage->waveformSprites[i], i * 2); } - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(0); + TilemapUtil_Update(TILEMAP_PKMN_DATA); ScheduleBgCopyTilemapToVram(1); } -static void sub_808F68C(void) +static void InitSupplementalTilemaps(void) { - LZ77UnCompWram(gUnknown_8E9CAEC, gPSSData->partyMenuTilemapBuffer); - LoadPalette(gPSSMenu_Pal, 0x10, 0x20); - SetBoxPartyPokemonDropdownMap2(1, 1, gPSSData->partyMenuTilemapBuffer, 12, 22); - SetBoxPartyPokemonDropdownMap2(2, 1, gUnknown_83CE778, 9, 4); - SetBoxPartyPokemonDropdownMap2Pos(1, 10, 0); - SetBoxPartyPokemonDropdownMap2Pos(2, 21, 0); - sub_808F9FC(); + LZ77UnCompWram(gPokeStoragePartyMenu_Tilemap, gStorage->partyMenuTilemapBuffer); + LoadPalette(gPokeStoragePartyMenu_Pal, 0x10, 0x20); + TilemapUtil_SetTilemap(TILEMAP_PARTY_MENU, 1, gStorage->partyMenuTilemapBuffer, 12, 22); + TilemapUtil_SetTilemap(TILEMAP_CLOSE_BUTTON, 1, sCloseBoxButton_Tilemap, 9, 4); + TilemapUtil_SetPos(TILEMAP_PARTY_MENU, 10, 0); + TilemapUtil_SetPos(TILEMAP_CLOSE_BUTTON, 21, 0); + SetPartySlotTilemaps(); if (sInPartyMenu) { - sub_808F90C(TRUE); + UpdateCloseBoxButtonTilemap(TRUE); CreatePartyMonsSprites(TRUE); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + TilemapUtil_Update(TILEMAP_CLOSE_BUTTON); + TilemapUtil_Update(TILEMAP_PARTY_MENU); } else { - SetBoxPartyPokemonDropdownMap2Rect(1, 0, 20, 12, 2); - sub_808F90C(TRUE); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + TilemapUtil_SetRect(TILEMAP_PARTY_MENU, 0, 20, 12, 2); + UpdateCloseBoxButtonTilemap(TRUE); + TilemapUtil_Update(TILEMAP_PARTY_MENU); + TilemapUtil_Update(TILEMAP_CLOSE_BUTTON); } ScheduleBgCopyTilemapToVram(1); - gPSSData->closeBoxFlashing = FALSE; + gStorage->closeBoxFlashing = FALSE; } static void SetUpShowPartyMenu(void) { - gPSSData->partyMenuUnused1 = 20; - gPSSData->partyMenuY = 2; - gPSSData->partyMenuMoveTimer = 0; + gStorage->partyMenuUnused1 = 20; + gStorage->partyMenuY = 2; + gStorage->partyMenuMoveTimer = 0; CreatePartyMonsSprites(FALSE); } static bool8 ShowPartyMenu(void) { - if (gPSSData->partyMenuMoveTimer == 20) + if (gStorage->partyMenuMoveTimer == 20) return FALSE; - gPSSData->partyMenuUnused1--; - gPSSData->partyMenuY++; - AdjustBoxPartyPokemonDropdownPos(1, 3, 1); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + gStorage->partyMenuUnused1--; + gStorage->partyMenuY++; + TilemapUtil_Move(TILEMAP_PARTY_MENU, 3, 1); + TilemapUtil_Update(TILEMAP_PARTY_MENU); ScheduleBgCopyTilemapToVram(1); - sub_8090B98(8); - if (++gPSSData->partyMenuMoveTimer == 20) + MovePartySprites(8); + if (++gStorage->partyMenuMoveTimer == 20) { sInPartyMenu = TRUE; return FALSE; } else - { return TRUE; - } } static void SetUpHidePartyMenu(void) { - gPSSData->partyMenuUnused1 = 0; - gPSSData->partyMenuY = 22; - gPSSData->partyMenuMoveTimer = 0; - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) - sub_80960C0(); + gStorage->partyMenuUnused1 = 0; + gStorage->partyMenuY = 22; + gStorage->partyMenuMoveTimer = 0; + if (gStorage->boxOption == OPTION_MOVE_ITEMS) + MoveHeldItemWithPartyMenu(); } static bool8 HidePartyMenu(void) { - if (gPSSData->partyMenuMoveTimer != 20) + if (gStorage->partyMenuMoveTimer != 20) { - gPSSData->partyMenuUnused1++; - gPSSData->partyMenuY--; - AdjustBoxPartyPokemonDropdownPos(1, 3, -1); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); - FillBgTilemapBufferRect_Palette0(1, 0x100, 10, gPSSData->partyMenuY, 12, 1); - sub_8090B98(-8); - if (++gPSSData->partyMenuMoveTimer != 20) + gStorage->partyMenuUnused1++; + gStorage->partyMenuY--; + TilemapUtil_Move(TILEMAP_PARTY_MENU, 3, -1); + TilemapUtil_Update(TILEMAP_PARTY_MENU); + FillBgTilemapBufferRect_Palette0(1, 0x100, 10, gStorage->partyMenuY, 12, 1); + MovePartySprites(-8); + if (++gStorage->partyMenuMoveTimer != 20) { ScheduleBgCopyTilemapToVram(1); return TRUE; @@ -2427,8 +2443,8 @@ static bool8 HidePartyMenu(void) sInPartyMenu = FALSE; DestroyAllPartyMonIcons(); CompactPartySlots(); - SetBoxPartyPokemonDropdownMap2Rect(2, 0, 0, 9, 2); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + TilemapUtil_SetRect(TILEMAP_CLOSE_BUTTON, 0, 0, 9, 2); + TilemapUtil_Update(TILEMAP_CLOSE_BUTTON); ScheduleBgCopyTilemapToVram(1); return FALSE; } @@ -2437,63 +2453,65 @@ static bool8 HidePartyMenu(void) return FALSE; } -static void sub_808F90C(bool8 arg0) +static void UpdateCloseBoxButtonTilemap(bool8 normal) { - if (arg0) - SetBoxPartyPokemonDropdownMap2Rect(2, 0, 0, 9, 2); + if (normal) + TilemapUtil_SetRect(TILEMAP_CLOSE_BUTTON, 0, 0, 9, 2); else - SetBoxPartyPokemonDropdownMap2Rect(2, 0, 2, 9, 2); + TilemapUtil_SetRect(TILEMAP_CLOSE_BUTTON, 0, 2, 9, 2); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + TilemapUtil_Update(TILEMAP_CLOSE_BUTTON); ScheduleBgCopyTilemapToVram(1); } -static void sub_808F948(void) +static void StartFlashingCloseBoxButton(void) { - gPSSData->closeBoxFlashing = TRUE; - gPSSData->closeBoxFlashTimer = 30; - gPSSData->closeBoxFlashState = TRUE; + gStorage->closeBoxFlashing = TRUE; + gStorage->closeBoxFlashTimer = 30; + gStorage->closeBoxFlashState = TRUE; } -static void sub_808F974(void) +static void StopFlashingCloseBoxButton(void) { - if (gPSSData->closeBoxFlashing) + if (gStorage->closeBoxFlashing) { - gPSSData->closeBoxFlashing = FALSE; - sub_808F90C(TRUE); + gStorage->closeBoxFlashing = FALSE; + UpdateCloseBoxButtonTilemap(TRUE); } } -static void sub_808F99C(void) +static void UpdateCloseBoxButtonFlash(void) { - if (gPSSData->closeBoxFlashing && ++gPSSData->closeBoxFlashTimer > 30) + if (gStorage->closeBoxFlashing && ++gStorage->closeBoxFlashTimer > 30) { - gPSSData->closeBoxFlashTimer = 0; - gPSSData->closeBoxFlashState = (gPSSData->closeBoxFlashState == FALSE); - sub_808F90C(gPSSData->closeBoxFlashState); + gStorage->closeBoxFlashTimer = 0; + gStorage->closeBoxFlashState = (gStorage->closeBoxFlashState == FALSE); + UpdateCloseBoxButtonTilemap(gStorage->closeBoxFlashState); } } -static void sub_808F9FC(void) +static void SetPartySlotTilemaps(void) { u8 i; + // Skips first party slot, it should always be drawn + // as if it has a Pokémon in it for (i = 1; i < PARTY_SIZE; i++) { s32 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); - sub_808FA30(i, (species != SPECIES_NONE)); + SetPartySlotTilemap(i, (species != SPECIES_NONE)); } } -static void sub_808FA30(u8 pos, bool8 isPartyMon) +static void SetPartySlotTilemap(u8 pos, bool8 isFilled) { u16 i, j, index; - const u16 *data; + const u16 *tilemap; - if (isPartyMon) - data = gUnknown_83CE7C0; + if (isFilled) + tilemap = sPartySlotFilled_Tilemap; else - data = gUnknown_83CE7D8; + tilemap = sPartySlotEmpty_Tilemap; index = 3 * (3 * (pos - 1) + 1); index *= 4; @@ -2501,46 +2519,45 @@ static void sub_808FA30(u8 pos, bool8 isPartyMon) for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) - { - gPSSData->partyMenuTilemapBuffer[index + j] = data[j]; - } - data += 4; + gStorage->partyMenuTilemapBuffer[index + j] = tilemap[j]; + + tilemap += 4; index += 12; } } -static void sub_808FAA8(void) +static void UpdatePartySlotColors(void) { - sub_808F9FC(); - SetBoxPartyPokemonDropdownMap2Rect(1, 0, 0, 12, 22); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + SetPartySlotTilemaps(); + TilemapUtil_SetRect(TILEMAP_PARTY_MENU, 0, 0, 12, 22); + TilemapUtil_Update(TILEMAP_PARTY_MENU); ScheduleBgCopyTilemapToVram(1); } static void SetUpDoShowPartyMenu(void) { - gPSSData->showPartyMenuState = 0; + gStorage->showPartyMenuState = 0; PlaySE(SE_WIN_OPEN); SetUpShowPartyMenu(); } static bool8 DoShowPartyMenu(void) { - switch (gPSSData->showPartyMenuState) + switch (gStorage->showPartyMenuState) { case 0: if (!ShowPartyMenu()) { - sub_8092AE4(); - gPSSData->showPartyMenuState++; + SetCursorInParty(); + gStorage->showPartyMenuState++; } break; case 1: - if (!sub_80924A8()) + if (!UpdateCursorPos()) { - if (gPSSData->setMosaic) - BoxSetMosaic(); - gPSSData->showPartyMenuState++; + if (gStorage->setMosaic) + StartDisplayMonMosaic(); + gStorage->showPartyMenuState++; } break; case 2: @@ -2549,50 +2566,50 @@ static bool8 DoShowPartyMenu(void) return TRUE; } -static void sub_808FB68(void) +static void InitPokeStorageBg0(void) { SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(29)); - TextWindow_SetStdFrame0_WithPal(1, 2, 208); + TextWindow_SetStdFrame0_WithPal(1, 2, 0xD0); FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17); CopyBgTilemapBufferToVram(0); } -static void PrintStorageActionText(u8 id) +static void PrintStorageMessage(u8 id) { u8 *txtPtr; DynamicPlaceholderTextUtil_Reset(); - switch (sPCStorageActionTexts[id].format) + switch (sMessages[id].format) { - case PC_TEXT_FMT_NORMAL: + case MSG_FMT_NONE: break; - case PC_TEXT_FMT_MON_NAME_1: - case PC_TEXT_FMT_MON_NAME_2: - case PC_TEXT_FMT_MON_NAME_3: - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gPSSData->displayMonName); + case MSG_FMT_MON_NAME_1: + case MSG_FMT_MON_NAME_2: + case MSG_FMT_MON_NAME_3: + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStorage->displayMonNickname); break; - case PC_TEXT_FMT_MON_NAME_4: - case PC_TEXT_FMT_MON_NAME_5: - case PC_TEXT_FMT_MON_NAME_6: - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gPSSData->field_21E0); + case MSG_FMT_RELEASE_MON_1: + case MSG_FMT_RELEASE_MON_2: + case MSG_FMT_RELEASE_MON_3: + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStorage->releaseMonName); break; - case PC_TEXT_FMT_ITEM_NAME: + case MSG_FMT_ITEM_NAME: if (IsActiveItemMoving()) - txtPtr = StringCopy(gPSSData->itemName, GetMovingItemName()); + txtPtr = StringCopy(gStorage->itemName, GetMovingItemName()); else - txtPtr = StringCopy(gPSSData->itemName, gPSSData->displayMonTexts[3]); + txtPtr = StringCopy(gStorage->itemName, gStorage->displayMonTexts[3]); while (*(txtPtr - 1) == CHAR_SPACE) txtPtr--; *txtPtr = EOS; - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gPSSData->itemName); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStorage->itemName); break; } - DynamicPlaceholderTextUtil_ExpandPlaceholders(gPSSData->field_2190, sPCStorageActionTexts[id].text); + DynamicPlaceholderTextUtil_ExpandPlaceholders(gStorage->actionText, sMessages[id].text); FillWindowPixelBuffer(1, PIXEL_FILL(1)); - AddTextPrinterParameterized(1, FONT_1, gPSSData->field_2190, 0, 2, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(1, FONT_1, gStorage->actionText, 0, 2, TEXT_SKIP_DRAW, NULL); DrawTextBorderOuter(1, 2, 13); PutWindowTilemap(1); CopyWindowToVram(1, COPYWIN_GFX); @@ -2601,7 +2618,7 @@ static void PrintStorageActionText(u8 id) static void ShowYesNoWindow(s8 cursorPos) { - CreateYesNoMenu(&sYesNoWindowTemplate, FONT_1, 0, 2, 0x00b, 14, 1); + CreateYesNoMenu(&sYesNoWindowTemplate, FONT_1, 0, 2, 11, 14, 1); Menu_MoveCursorNoWrapAround(cursorPos); } @@ -2614,10 +2631,10 @@ static void ClearBottomWindow(void) static void AddWallpaperSetsMenu(void) { InitMenu(); - SetMenuText(PC_TEXT_SCENERY1); - SetMenuText(PC_TEXT_SCENERY2); - SetMenuText(PC_TEXT_SCENERY3); - SetMenuText(PC_TEXT_ETCETERA); + SetMenuText(MENU_TEXT_SCENERY_1); + SetMenuText(MENU_TEXT_SCENERY_2); + SetMenuText(MENU_TEXT_SCENERY_3); + SetMenuText(MENU_TEXT_ETCETERA); AddMenu(); } @@ -2626,29 +2643,29 @@ static void AddWallpapersMenu(u8 wallpaperSet) InitMenu(); switch (wallpaperSet) { - case 0: - SetMenuText(PC_TEXT_FOREST); - SetMenuText(PC_TEXT_CITY); - SetMenuText(PC_TEXT_DESERT); - SetMenuText(PC_TEXT_SAVANNA); + case 0: // SCENERY_1 + SetMenuText(MENU_TEXT_FOREST); + SetMenuText(MENU_TEXT_CITY); + SetMenuText(MENU_TEXT_DESERT); + SetMenuText(MENU_TEXT_SAVANNA); break; - case 1: - SetMenuText(PC_TEXT_CRAG); - SetMenuText(PC_TEXT_VOLCANO); - SetMenuText(PC_TEXT_SNOW); - SetMenuText(PC_TEXT_CAVE); + case 1: // SCENERY_2 + SetMenuText(MENU_TEXT_CRAG); + SetMenuText(MENU_TEXT_VOLCANO); + SetMenuText(MENU_TEXT_SNOW); + SetMenuText(MENU_TEXT_CAVE); break; - case 2: - SetMenuText(PC_TEXT_BEACH); - SetMenuText(PC_TEXT_SEAFLOOR); - SetMenuText(PC_TEXT_RIVER); - SetMenuText(PC_TEXT_SKY); + case 2: // SCENERY_3 + SetMenuText(MENU_TEXT_BEACH); + SetMenuText(MENU_TEXT_SEAFLOOR); + SetMenuText(MENU_TEXT_RIVER); + SetMenuText(MENU_TEXT_SKY); break; - case 3: - SetMenuText(PC_TEXT_POLKADOT); - SetMenuText(PC_TEXT_POKECENTER); - SetMenuText(PC_TEXT_MACHINE); - SetMenuText(PC_TEXT_SIMPLE); + case 3: // ETCETERA + SetMenuText(MENU_TEXT_POLKADOT); + SetMenuText(MENU_TEXT_POKECENTER); + SetMenuText(MENU_TEXT_MACHINE); + SetMenuText(MENU_TEXT_SIMPLE); break; } AddMenu(); @@ -2659,42 +2676,42 @@ u8 GetCurrentBoxOption(void) return sCurrentBoxOption; } -static void sub_808FDFC(void) +static void InitCursorItemIcon(void) { if (!IsCursorOnBoxTitle()) { if (sInPartyMenu) - sub_8095C84(CURSOR_AREA_IN_PARTY, GetBoxCursorPosition()); + TryLoadItemIconAtPos(CURSOR_AREA_IN_PARTY, GetBoxCursorPosition()); else - sub_8095C84(CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); + TryLoadItemIconAtPos(CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); } - if (gUnknown_20397BA != ITEM_NONE) + if (sMovingItemId != ITEM_NONE) { - sub_8095E2C(gUnknown_20397BA); - sub_8094D14(3); + InitItemIconInCursor(sMovingItemId); + StartCursorAnim(CURSOR_ANIM_FIST); } } -static void sub_808FE54(u8 action) +static void SetPokeStorageQuestLogEvent(u8 action) { u16 event; - u8 fromBox = sub_8094D34(); - u16 species = gPSSData->displayMonSpecies; + struct PokeStorageQuestLogData *questLogData; + u8 box1 = GetMovingMonOriginalBoxId(); + u16 species1 = gStorage->displayMonSpecies; u16 species2; - u8 toBox; - struct PssQuestLogBuffer * qlogBuffer; + u8 box2; if (sInPartyMenu) { - toBox = TOTAL_BOXES_COUNT; + box2 = TOTAL_BOXES_COUNT; species2 = GetMonData(&gPlayerParty[GetBoxCursorPosition()], MON_DATA_SPECIES2); } else { - toBox = StorageGetCurrentBox(); + box2 = StorageGetCurrentBox(); species2 = GetCurrentBoxMonData(GetBoxCursorPosition(), MON_DATA_SPECIES2); } - qlogBuffer = &gPSSData->qlogBuffer; + questLogData = &gStorage->pokeStorageQuestLogData; switch (action) { @@ -2703,47 +2720,47 @@ static void sub_808FE54(u8 action) case 0: if (sInPartyMenu) { - if (fromBox == TOTAL_BOXES_COUNT) + if (box1 == TOTAL_BOXES_COUNT) return; else event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON; } else { - if (fromBox == TOTAL_BOXES_COUNT) + if (box1 == TOTAL_BOXES_COUNT) // Should upmerge but doesn't event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON; else - event = fromBox != toBox ? QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES : QL_EVENT_SWITCHED_MONS_WITHIN_BOX; + event = box1 != box2 ? QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES : QL_EVENT_SWITCHED_MONS_WITHIN_BOX; } - qlogBuffer->species = species; - qlogBuffer->species2 = species2; - qlogBuffer->fromBox = fromBox; - qlogBuffer->toBox = toBox; + questLogData->species1 = species1; + questLogData->species2 = species2; + questLogData->box1 = box1; + questLogData->box2 = box2; break; case 1: - qlogBuffer->species = species; - qlogBuffer->species2 = SPECIES_NONE; - qlogBuffer->fromBox = fromBox; - qlogBuffer->toBox = 0xFF; + questLogData->species1 = species1; + questLogData->species2 = SPECIES_NONE; + questLogData->box1 = box1; + questLogData->box2 = 0xFF; if (sInPartyMenu) { - if (fromBox == TOTAL_BOXES_COUNT) + if (box1 == TOTAL_BOXES_COUNT) return; else event = QL_EVENT_WITHDREW_MON_PC; } else { - if (fromBox == TOTAL_BOXES_COUNT) + if (box1 == TOTAL_BOXES_COUNT) { event = QL_EVENT_DEPOSITED_MON_PC; - qlogBuffer->fromBox = toBox; + questLogData->box1 = box2; } - else if (fromBox != toBox) + else if (box1 != box2) { event = QL_EVENT_MOVED_MON_BETWEEN_BOXES; - qlogBuffer->toBox = toBox; + questLogData->box2 = box2; } else event = QL_EVENT_MOVED_MON_WITHIN_BOX; @@ -2751,23 +2768,23 @@ static void sub_808FE54(u8 action) break; case 2: event = QL_EVENT_DEPOSITED_MON_PC; - qlogBuffer->species = species; - qlogBuffer->species2 = SPECIES_NONE; - qlogBuffer->fromBox = gUnknown_20397B6; - qlogBuffer->toBox = 0xFF; + questLogData->species1 = species1; + questLogData->species2 = SPECIES_NONE; + questLogData->box1 = sDepositBoxId; + questLogData->box2 = 0xFF; break; case 3: event = QL_EVENT_SWITCHED_MULTIPLE_MONS; - qlogBuffer->species = SPECIES_NONE; - qlogBuffer->species2 = SPECIES_NONE; - qlogBuffer->fromBox = fromBox; - qlogBuffer->toBox = toBox; + questLogData->species1 = SPECIES_NONE; + questLogData->species2 = SPECIES_NONE; + questLogData->box1 = box1; + questLogData->box2 = box2; break; } - SetQuestLogEvent(event, (const void *)qlogBuffer); + SetQuestLogEvent(event, (const u16 *)questLogData); } -static void sub_808FF70(void) +static void UpdateBoxToSendMons(void) { if (sLastUsedBox != StorageGetCurrentBox()) { diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index cbd2f1b9c..11eccef85 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -9,43 +9,43 @@ #include "task.h" #include "trig.h" -static void sub_8090324(struct Sprite *sprite); +static void SpriteCB_BoxMonIconScrollOut(struct Sprite *sprite); static void SetBoxSpeciesAndPersonalities(u8 boxId); -static void sub_8090A74(struct Sprite *sprite, u16 idx); -static void sub_8090AE0(struct Sprite *sprite); +static void MovePartySpriteToNextSlot(struct Sprite *sprite, u16 idx); +static void SpriteCB_MovePartySpriteToNextSlot(struct Sprite *sprite); static void DestroyBoxMonIcon(struct Sprite *sprite); -static void sub_80911B0(struct Sprite *sprite); -static void sub_8091420(u8 taskId); -static s8 sub_80916F4(u8 boxId); +static void SpriteCB_HeldMon(struct Sprite *sprite); +static void Task_InitBox(u8 taskId); +static s8 DetermineBoxScrollDirection(u8 boxId); static void LoadWallpaperGfx(u8 wallpaperId, s8 direction); static bool32 WaitForWallpaperGfxLoad(void); -static void sub_8091984(void *buffer, const void *buffer2, s8 direction, u8 baseBlock); -static void sub_8091A24(void *buffer); -static void sub_8091A94(u8 wallpaperId); -static void sub_8091C48(u8 wallpaperId, s8 direction); -static void sub_8091E84(struct Sprite *sprite); -static void sub_8091EB8(struct Sprite *sprite); +static void DrawWallpaper(void *unused, const void *tilemap, s8 direction, u8 offset); +static void TrimOldWallpaper(void *buffer); +static void InitBoxTitle(u8 wallpaperId); +static void CreateIncomingBoxTitle(u8 wallpaperId, s8 direction); +static void SpriteCB_IncomingBoxTitle(struct Sprite *sprite); +static void SpriteCB_OutgoingBoxTitle(struct Sprite *sprite); static s16 GetBoxTitleBaseX(const u8 *boxName); -static void sub_8091E34(void); +static void CycleBoxTitleSprites(void); static void CycleBoxTitleColor(void); static void CreateBoxScrollArrows(void); static void StartBoxScrollArrowsSlide(s8 direction); static void StopBoxScrollArrowsSlide(void); -static void SpriteCB_Arrow(struct Sprite *sprite); +static void SpriteCB_BoxScrollArrow(struct Sprite *sprite); -static const struct OamData gUnknown_83CEC08; +static const struct OamData sOamData_MonIcon; -static const struct SpriteTemplate gUnknown_83CEBF0 = { - .tileTag = TAG_TILE_12, - .paletteTag = TAG_PAL_DAC0, - .oam = &gUnknown_83CEC08, +static const struct SpriteTemplate sSpriteTemplate_MonIcon = { + .tileTag = GFXTAG_MON_ICON, + .paletteTag = PALTAG_MON_ICON_0, + .oam = &sOamData_MonIcon, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct OamData gUnknown_83CEC08 = { +static const struct OamData sOamData_MonIcon = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -60,120 +60,139 @@ static const struct OamData gUnknown_83CEC08 = { .paletteNum = 0 }; -static const union AffineAnimCmd gUnknown_83CEC10[] = { +static const union AffineAnimCmd sAffineAnim_ReleaseMon_Release[] = { AFFINEANIMCMD_FRAME(-2, -2, 0, 120), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83CEC20[] = { +static const union AffineAnimCmd sAffineAnim_ReleaseMon_ComeBack[] = { AFFINEANIMCMD_FRAME(16, 16, 0, 0), AFFINEANIMCMD_FRAME(16, 16, 0, 15), AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const gUnknown_83CEC38[] = { - gUnknown_83CEC10, - gUnknown_83CEC20 +static const union AffineAnimCmd *const sAffineAnims_ReleaseMon[] = { + [RELEASE_ANIM_RELEASE] = sAffineAnim_ReleaseMon_Release, + [RELEASE_ANIM_COME_BACK] = sAffineAnim_ReleaseMon_ComeBack, }; -static const u16 gUnknown_83CEC40[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal"); -static const u32 gUnknown_83CEC80[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz"); -static const u32 gUnknown_83CF050[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz"); -static const u16 gUnknown_83CF12C[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal"); -static const u32 gUnknown_83CF16C[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz"); -static const u32 gUnknown_83CF374[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz"); -static const u16 gUnknown_83CF424[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal"); -static const u32 gUnknown_83CF464[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz"); -static const u32 gUnknown_83CF750[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz"); -static const u16 gUnknown_83CF834[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal"); -static const u32 gUnknown_83CF874[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz"); -static const u32 gUnknown_83CFA94[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz"); -static const u16 gUnknown_83CFB60[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal"); -static const u32 gUnknown_83CFBA0[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz"); -static const u32 gUnknown_83CFEF0[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz"); -static const u16 gUnknown_83CFFC8[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal"); -static const u32 gUnknown_83D0008[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz"); -static const u8 sSpace_83D0338[4] = {}; -static const u32 gUnknown_83D033C[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz"); -static const u16 gUnknown_83D0414[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal"); -static const u32 gUnknown_83D0454[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz"); -static const u32 gUnknown_83D070C[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz"); -static const u16 gUnknown_83D07D8[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal"); -static const u32 gUnknown_83D0818[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz"); -static const u32 gUnknown_83D0B5C[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz"); -static const u16 gUnknown_83D0C38[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal"); -static const u32 gUnknown_83D0C78[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz"); -static const u32 gUnknown_83D0FFC[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz"); -static const u16 gUnknown_83D10E4[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal"); -static const u32 gUnknown_83D1124[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz"); -static const u32 gUnknown_83D13D8[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz"); -static const u16 gUnknown_83D14B4[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal"); -static const u32 gUnknown_83D14F4[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz"); -static const u32 gUnknown_83D1788[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz"); -static const u16 gUnknown_83D1874[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal"); -static const u32 gUnknown_83D18B4[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz"); -static const u32 gUnknown_83D1B4C[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz"); -static const u16 gUnknown_83D1C2C[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal"); -static const u8 sSpace_83D1C6C[32] = {}; -static const u32 gUnknown_83D1C8C[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz"); -static const u32 gUnknown_83D1EC4[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz"); -static const u16 gUnknown_83D1F94[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal"); -static const u32 gUnknown_83D1FD4[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz"); -static const u32 gUnknown_83D22B8[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz"); -static const u16 gUnknown_83D239C[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal"); -static const u32 gUnknown_83D23DC[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz"); -static const u32 gUnknown_83D256C[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz"); -static const u16 gUnknown_83D2614[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal"); -static const u32 gUnknown_83D2654[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz"); -static const u32 gUnknown_83D277C[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz"); -static const u16 gUnknown_83D2820[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin"); +static const u16 sWallpaperPalettes_Forest[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal"); +static const u32 sWallpaperTiles_Forest[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz"); +static const u32 sWallpaperTilemap_Forest[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz"); +static const u16 sWallpaperPalettes_City[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal"); +static const u32 sWallpaperTiles_City[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz"); +static const u32 sWallpaperTilemap_City[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz"); + +static const u16 sWallpaperPalettes_Desert[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal"); +static const u32 sWallpaperTiles_Desert[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz"); +static const u32 sWallpaperTilemap_Desert[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz"); + +static const u16 sWallpaperPalettes_Savanna[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal"); +static const u32 sWallpaperTiles_Savanna[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz"); +static const u32 sWallpaperTilemap_Savanna[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz"); + +static const u16 sWallpaperPalettes_Crag[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal"); +static const u32 sWallpaperTiles_Crag[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz"); +static const u32 sWallpaperTilemap_Crag[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz"); + +static const u16 sWallpaperPalettes_Volcano[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal"); +static const u32 sWallpaperTiles_Volcano[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz"); +static const u8 sUnusedSpace1[4] = {}; +static const u32 sWallpaperTilemap_Volcano[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz"); + +static const u16 sWallpaperPalettes_Snow[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal"); +static const u32 sWallpaperTiles_Snow[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz"); +static const u32 sWallpaperTilemap_Snow[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz"); + +static const u16 sWallpaperPalettes_Cave[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal"); +static const u32 sWallpaperTiles_Cave[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz"); +static const u32 sWallpaperTilemap_Cave[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz"); + +static const u16 sWallpaperPalettes_Beach[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal"); +static const u32 sWallpaperTiles_Beach[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz"); +static const u32 sWallpaperTilemap_Beach[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz"); + +static const u16 sWallpaperPalettes_Seafloor[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal"); +static const u32 sWallpaperTiles_Seafloor[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz"); +static const u32 sWallpaperTilemap_Seafloor[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz"); + +static const u16 sWallpaperPalettes_River[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal"); +static const u32 sWallpaperTiles_River[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz"); +static const u32 sWallpaperTilemap_River[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz"); + +static const u16 sWallpaperPalettes_Sky[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal"); +static const u32 sWallpaperTiles_Sky[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz"); +static const u32 sWallpaperTilemap_Sky[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz"); + +static const u16 sWallpaperPalettes_Stars[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal"); +static const u8 sUnusedSpace2[32] = {}; +static const u32 sWallpaperTiles_Stars[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz"); +static const u32 sWallpaperTilemap_Stars[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz"); + +static const u16 sWallpaperPalettes_Pokecenter[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal"); +static const u32 sWallpaperTiles_Pokecenter[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz"); +static const u32 sWallpaperTilemap_Pokecenter[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz"); + +static const u16 sWallpaperPalettes_Tiles[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal"); +static const u32 sWallpaperTiles_Tiles[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz"); +static const u32 sWallpaperTilemap_Tiles[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz"); + +static const u16 sWallpaperPalettes_Simple[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal"); +static const u32 sWallpaperTiles_Simple[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz"); +static const u32 sWallpaperTilemap_Simple[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz"); + +// Unused +static const u16 sWallpaperTilemap_Unused[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin"); + +// Shadow color, text color static const u16 sBoxTitleColors[][2] = { - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)} + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE} }; -static const struct WallpaperTable sWallpaperTable[] = { - {gUnknown_83CEC80, gUnknown_83CF050, gUnknown_83CEC40}, - {gUnknown_83CF16C, gUnknown_83CF374, gUnknown_83CF12C}, - {gUnknown_83CF464, gUnknown_83CF750, gUnknown_83CF424}, - {gUnknown_83CF874, gUnknown_83CFA94, gUnknown_83CF834}, - {gUnknown_83CFBA0, gUnknown_83CFEF0, gUnknown_83CFB60}, - {gUnknown_83D0008, gUnknown_83D033C, gUnknown_83CFFC8}, - {gUnknown_83D0454, gUnknown_83D070C, gUnknown_83D0414}, - {gUnknown_83D0818, gUnknown_83D0B5C, gUnknown_83D07D8}, - {gUnknown_83D0C78, gUnknown_83D0FFC, gUnknown_83D0C38}, - {gUnknown_83D1124, gUnknown_83D13D8, gUnknown_83D10E4}, - {gUnknown_83D14F4, gUnknown_83D1788, gUnknown_83D14B4}, - {gUnknown_83D18B4, gUnknown_83D1B4C, gUnknown_83D1874}, - {gUnknown_83D1C8C, gUnknown_83D1EC4, gUnknown_83D1C2C}, - {gUnknown_83D1FD4, gUnknown_83D22B8, gUnknown_83D1F94}, - {gUnknown_83D23DC, gUnknown_83D256C, gUnknown_83D239C}, - {gUnknown_83D2654, gUnknown_83D277C, gUnknown_83D2614}, +static const struct Wallpaper sWallpapers[] = { + {sWallpaperTiles_Forest, sWallpaperTilemap_Forest, sWallpaperPalettes_Forest }, + {sWallpaperTiles_City, sWallpaperTilemap_City, sWallpaperPalettes_City }, + {sWallpaperTiles_Desert, sWallpaperTilemap_Desert, sWallpaperPalettes_Desert }, + {sWallpaperTiles_Savanna, sWallpaperTilemap_Savanna, sWallpaperPalettes_Savanna }, + {sWallpaperTiles_Crag, sWallpaperTilemap_Crag, sWallpaperPalettes_Crag }, + {sWallpaperTiles_Volcano, sWallpaperTilemap_Volcano, sWallpaperPalettes_Volcano }, + {sWallpaperTiles_Snow, sWallpaperTilemap_Snow, sWallpaperPalettes_Snow }, + {sWallpaperTiles_Cave, sWallpaperTilemap_Cave, sWallpaperPalettes_Cave }, + {sWallpaperTiles_Beach, sWallpaperTilemap_Beach, sWallpaperPalettes_Beach }, + {sWallpaperTiles_Seafloor, sWallpaperTilemap_Seafloor, sWallpaperPalettes_Seafloor }, + {sWallpaperTiles_River, sWallpaperTilemap_River, sWallpaperPalettes_River }, + {sWallpaperTiles_Sky, sWallpaperTilemap_Sky, sWallpaperPalettes_Sky }, + {sWallpaperTiles_Stars, sWallpaperTilemap_Stars, sWallpaperPalettes_Stars }, + {sWallpaperTiles_Pokecenter, sWallpaperTilemap_Pokecenter, sWallpaperPalettes_Pokecenter}, + {sWallpaperTiles_Tiles, sWallpaperTilemap_Tiles, sWallpaperPalettes_Tiles }, + {sWallpaperTiles_Simple, sWallpaperTilemap_Simple, sWallpaperPalettes_Simple }, }; -static const u16 gUnknown_83D2AD0[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp"); -static const u8 sUnref_83D2B50[] = {0xba, 0x23}; +static const u16 sBoxScrollArrow_Gfx[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp"); -static const struct SpriteSheet sSpriteSheet_Arrow = { - gUnknown_83D2AD0, 0x0080, TAG_TILE_6 +static const u16 sUnusedColor = RGB(26, 29, 8); + +static const struct SpriteSheet sSpriteSheet_BoxScrollArrow = { + sBoxScrollArrow_Gfx, 0x0080, GFXTAG_BOX_SCROLL_ARROW }; -static const struct OamData gUnknown_83D2B5C = { +static const struct OamData sOamData_BoxTitle = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -188,32 +207,32 @@ static const struct OamData gUnknown_83D2B5C = { .paletteNum = 0 }; -static const union AnimCmd gUnknown_83D2B64[] = { +static const union AnimCmd sAnim_BoxTitle_Left[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83D2B6C[] = { +static const union AnimCmd sAnim_BoxTitle_Right[] = { ANIMCMD_FRAME(8, 5), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_83D2B74[] = { - gUnknown_83D2B64, - gUnknown_83D2B6C +static const union AnimCmd *const sAnims_BoxTitle[] = { + sAnim_BoxTitle_Left, + sAnim_BoxTitle_Right, }; -static const struct SpriteTemplate gUnknown_83D2B7C = { - .tileTag = TAG_TILE_3, - .paletteTag = TAG_PAL_DAC9, - .oam = &gUnknown_83D2B5C, - .anims = gUnknown_83D2B74, +static const struct SpriteTemplate sSpriteTemplate_BoxTitle = { + .tileTag = GFXTAG_BOX_TITLE, + .paletteTag = PALTAG_BOX_TITLE, + .oam = &sOamData_BoxTitle, + .anims = sAnims_BoxTitle, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct OamData gUnknown_83D2B94 = { +static const struct OamData sOamData_BoxScrollArrow = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -228,65 +247,65 @@ static const struct OamData gUnknown_83D2B94 = { .paletteNum = 0 }; -static const union AnimCmd gUnknown_83D2B9C[] = { +static const union AnimCmd sAnim_BoxScrollArrow_Left[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83D2BA4[] = { +static const union AnimCmd sAnim_BoxScrollArrow_Right[] = { ANIMCMD_FRAME(2, 5), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_83D2BAC[] = { - gUnknown_83D2B9C, - gUnknown_83D2BA4 +static const union AnimCmd *const sAnims_BoxScrollArrow[] = { + sAnim_BoxScrollArrow_Left, + sAnim_BoxScrollArrow_Right, }; -static const struct SpriteTemplate sSpriteTemplate_Arrow = { - .tileTag = TAG_TILE_6, - .paletteTag = TAG_PAL_WAVEFORM, - .oam = &gUnknown_83D2B94, - .anims = gUnknown_83D2BAC, +static const struct SpriteTemplate sSpriteTemplate_BoxScrollArrow = { + .tileTag = GFXTAG_BOX_SCROLL_ARROW, + .paletteTag = PALTAG_MISC_2, + .oam = &sOamData_BoxScrollArrow, + .anims = sAnims_BoxScrollArrow, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_Arrow + .callback = SpriteCB_BoxScrollArrow, }; -void sub_808FFAC(void) +void InitMonIconFields(void) { u16 i; LoadMonIconPalettes(); for (i = 0; i < MAX_MON_ICONS; i++) - gPSSData->numIconsPerSpecies[i] = 0; + gStorage->numIconsPerSpecies[i] = 0; for (i = 0; i < MAX_MON_ICONS; i++) - gPSSData->iconSpeciesList[i] = 0; + gStorage->iconSpeciesList[i] = SPECIES_NONE; for (i = 0; i < PARTY_SIZE; i++) - gPSSData->partySprites[i] = NULL; + gStorage->partySprites[i] = NULL; for (i = 0; i < IN_BOX_COUNT; i++) - gPSSData->boxMonsSprites[i] = NULL; + gStorage->boxMonsSprites[i] = NULL; - gPSSData->movingMonSprite = NULL; - gPSSData->unkUnused1 = 0; + gStorage->movingMonSprite = NULL; + gStorage->unusedField1 = 0; } -static u8 sub_8090058(void) +static u8 GetMonIconPriorityByCursorArea(void) { return (IsCursorInBox() ? 2 : 1); } void CreateMovingMonIcon(void) { - u32 personality = GetMonData(&gPSSData->movingMon, MON_DATA_PERSONALITY); - u16 species = GetMonData(&gPSSData->movingMon, MON_DATA_SPECIES2); - u8 priority = sub_8090058(); + u32 personality = GetMonData(&gStorage->movingMon, MON_DATA_PERSONALITY); + u16 species = GetMonData(&gStorage->movingMon, MON_DATA_SPECIES2); + u8 priority = GetMonIconPriorityByCursorArea(); - gPSSData->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7); - gPSSData->movingMonSprite->callback = sub_80911B0; + gStorage->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7); + gStorage->movingMonSprite->callback = SpriteCB_HeldMon; } -static void sub_80900D4(u8 boxId) +static void InitBoxMonSprites(u8 boxId) { u8 boxPosition; u16 i, j, count; @@ -295,165 +314,170 @@ static void sub_80900D4(u8 boxId) count = 0; boxPosition = 0; - for (i = 0; i < IN_BOX_COLUMNS; i++) + for (i = 0; i < IN_BOX_ROWS; i++) { - for (j = 0; j < IN_BOX_ROWS; j++) + for (j = 0; j < IN_BOX_COLUMNS; j++) { species = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); if (species != SPECIES_NONE) { personality = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); - gPSSData->boxMonsSprites[count] = CreateMonIconSprite(species, personality, 8 * (3 * j) + 100, 8 * (3 * i) + 44, 2, 19 - j); + gStorage->boxMonsSprites[count] = CreateMonIconSprite(species, personality, 8 * (3 * j) + 100, 8 * (3 * i) + 44, 2, 19 - j); } else - { - gPSSData->boxMonsSprites[count] = NULL; - } + gStorage->boxMonsSprites[count] = NULL; + boxPosition++; count++; } } - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { for (boxPosition = 0; boxPosition < IN_BOX_COUNT; boxPosition++) { if (GetBoxMonDataAt(boxId, boxPosition, MON_DATA_HELD_ITEM) == 0) - gPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; + gStorage->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; } } } -void sub_80901EC(u8 boxPosition) +void CreateBoxMonIconAtPos(u8 boxPosition) { u16 species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES2); if (species != SPECIES_NONE) { - s16 x = 8 * (3 * (boxPosition % IN_BOX_ROWS)) + 100; - s16 y = 8 * (3 * (boxPosition / IN_BOX_ROWS)) + 44; + s16 x = 8 * (3 * (boxPosition % IN_BOX_COLUMNS)) + 100; + s16 y = 8 * (3 * (boxPosition / IN_BOX_COLUMNS)) + 44; u32 personality = GetCurrentBoxMonData(boxPosition, MON_DATA_PERSONALITY); - gPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(species, personality, x, y, 2, 19 - (boxPosition % IN_BOX_ROWS)); - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) - gPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; + gStorage->boxMonsSprites[boxPosition] = CreateMonIconSprite(species, personality, x, y, 2, 19 - (boxPosition % IN_BOX_COLUMNS)); + if (gStorage->boxOption == OPTION_MOVE_ITEMS) + gStorage->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; } } -static void sub_809029C(s16 arg0) +#define sDistance data[1] +#define sSpeed data[2] +#define sDestX data[3] +#define sDelay data[4] +#define sPosX data[5] + +static void StartBoxMonIconsScrollOut(s16 speed) { u16 i; for (i = 0; i < IN_BOX_COUNT; i++) { - if (gPSSData->boxMonsSprites[i] != NULL) + if (gStorage->boxMonsSprites[i] != NULL) { - gPSSData->boxMonsSprites[i]->data[2] = arg0; - gPSSData->boxMonsSprites[i]->data[4] = 1; - gPSSData->boxMonsSprites[i]->callback = sub_8090324; + gStorage->boxMonsSprites[i]->sSpeed = speed; + gStorage->boxMonsSprites[i]->sDelay = 1; + gStorage->boxMonsSprites[i]->callback = SpriteCB_BoxMonIconScrollOut; } } } -static void sub_80902E0(struct Sprite *sprite) +static void SpriteCB_BoxMonIconScrollIn(struct Sprite *sprite) { - if (sprite->data[1] != 0) + if (sprite->sDistance != 0) { - sprite->data[1]--; - sprite->x += sprite->data[2]; + sprite->sDistance--; + sprite->x += sprite->sSpeed; } else { - gPSSData->iconScrollNumIncoming--; - sprite->x = sprite->data[3]; + gStorage->iconScrollNumIncoming--; + sprite->x = sprite->sDestX; sprite->callback = SpriteCallbackDummy; } } -static void sub_8090324(struct Sprite *sprite) +static void SpriteCB_BoxMonIconScrollOut(struct Sprite *sprite) { - if (sprite->data[4] != 0) - { - sprite->data[4]--; - } + if (sprite->sDelay != 0) + sprite->sDelay--; else { - sprite->x += sprite->data[2]; - sprite->data[5] = sprite->x + sprite->x2; - if (sprite->data[5] <= 68 || sprite->data[5] >= 252) + sprite->x += sprite->sSpeed; + sprite->sPosX = sprite->x + sprite->x2; + + // Check if mon icon has scrolled out of view of the box area + if (sprite->sPosX <= 68 || sprite->sPosX >= 252) sprite->callback = SpriteCallbackDummy; } } -static void DestroyAllIconsInRow(u8 row) +static void DestroyAllIconsInColumn(u8 column) { - u16 column; - u8 boxPosition = row; + u16 row; + u8 boxPosition = column; - for (column = 0; column < IN_BOX_COLUMNS; column++) + for (row = 0; row < IN_BOX_ROWS; row++) { - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - DestroyBoxMonIcon(gPSSData->boxMonsSprites[boxPosition]); - gPSSData->boxMonsSprites[boxPosition] = NULL; + DestroyBoxMonIcon(gStorage->boxMonsSprites[boxPosition]); + gStorage->boxMonsSprites[boxPosition] = NULL; } - boxPosition += IN_BOX_ROWS; + boxPosition += IN_BOX_COLUMNS; } } -static u8 sub_80903A4(u8 row, u16 times, s16 xDelta) +static u8 CreateBoxMonIconsInColumn(u8 column, u16 distance, s16 speed) { s32 i; u16 y = 44; - s16 xDest = 8 * (3 * row) + 100; - u16 x = xDest - ((times + 1) * xDelta); - u8 subpriority = 19 - row; + s16 xDest = 8 * (3 * column) + 100; + u16 x = xDest - ((distance + 1) * speed); + u8 subpriority = 19 - column; u8 count = 0; - u8 boxPosition = row; + u8 boxPosition = column; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - for (i = 0; i < IN_BOX_COLUMNS; i++) + for (i = 0; i < IN_BOX_ROWS; i++) { - if (gPSSData->boxSpecies[boxPosition] != SPECIES_NONE) + if (gStorage->boxSpecies[boxPosition] != SPECIES_NONE) { - gPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(gPSSData->boxSpecies[boxPosition], - gPSSData->boxPersonalities[boxPosition], + gStorage->boxMonsSprites[boxPosition] = CreateMonIconSprite(gStorage->boxSpecies[boxPosition], + gStorage->boxPersonalities[boxPosition], x, y, 2, subpriority); - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - gPSSData->boxMonsSprites[boxPosition]->data[1] = times; - gPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta; - gPSSData->boxMonsSprites[boxPosition]->data[3] = xDest; - gPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0; + gStorage->boxMonsSprites[boxPosition]->sDistance = distance; + gStorage->boxMonsSprites[boxPosition]->sSpeed = speed; + gStorage->boxMonsSprites[boxPosition]->sDestX = xDest; + gStorage->boxMonsSprites[boxPosition]->callback = SpriteCB_BoxMonIconScrollIn; count++; } } - boxPosition += IN_BOX_ROWS; + boxPosition += IN_BOX_COLUMNS; y += 24; } } else { - for (i = 0; i < IN_BOX_COLUMNS; i++) + for (i = 0; i < IN_BOX_ROWS; i++) { - if (gPSSData->boxSpecies[boxPosition] != SPECIES_NONE) + if (gStorage->boxSpecies[boxPosition] != SPECIES_NONE) { - gPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(gPSSData->boxSpecies[boxPosition], - gPSSData->boxPersonalities[boxPosition], + gStorage->boxMonsSprites[boxPosition] = CreateMonIconSprite(gStorage->boxSpecies[boxPosition], + gStorage->boxPersonalities[boxPosition], x, y, 2, subpriority); - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - gPSSData->boxMonsSprites[boxPosition]->data[1] = times; - gPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta; - gPSSData->boxMonsSprites[boxPosition]->data[3] = xDest; - gPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0; - if (GetBoxMonDataAt(gPSSData->incomingBoxId, boxPosition, MON_DATA_HELD_ITEM) == 0) - gPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; + gStorage->boxMonsSprites[boxPosition]->sDistance = distance; + gStorage->boxMonsSprites[boxPosition]->sSpeed = speed; + gStorage->boxMonsSprites[boxPosition]->sDestX = xDest; + gStorage->boxMonsSprites[boxPosition]->callback = SpriteCB_BoxMonIconScrollIn; + if (GetBoxMonDataAt(gStorage->incomingBoxId, boxPosition, MON_DATA_HELD_ITEM) == 0) + gStorage->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; count++; } } - boxPosition += IN_BOX_ROWS; + boxPosition += IN_BOX_COLUMNS; y += 24; } } @@ -461,58 +485,69 @@ static u8 sub_80903A4(u8 row, u16 times, s16 xDelta) return count; } -static void sub_8090574(u8 boxId, s8 direction) +#undef sDistance +#undef sSpeed +#undef sDestX +#undef sDelay +#undef sPosX + +static void InitBoxMonIconScroll(u8 boxId, s8 direction) { - gPSSData->iconScrollState = 0; - gPSSData->iconScrollToBoxId = boxId; - gPSSData->iconScrollDirection = direction; - gPSSData->iconScrollDistance = 32; - gPSSData->iconScrollSpeed = -(6 * direction); - gPSSData->iconScrollNumIncoming = 0; + gStorage->iconScrollState = 0; + gStorage->iconScrollToBoxId = boxId; + gStorage->iconScrollDirection = direction; + gStorage->iconScrollDistance = 32; + gStorage->iconScrollSpeed = -(6 * direction); + gStorage->iconScrollNumIncoming = 0; SetBoxSpeciesAndPersonalities(boxId); if (direction > 0) - gPSSData->iconScrollCurColumn = 0; + gStorage->iconScrollCurColumn = 0; else - gPSSData->iconScrollCurColumn = IN_BOX_ROWS - 1; + gStorage->iconScrollCurColumn = IN_BOX_COLUMNS - 1; - gPSSData->iconScrollPos = (24 * gPSSData->iconScrollCurColumn) + 100; - sub_809029C(gPSSData->iconScrollSpeed); + gStorage->iconScrollPos = (24 * gStorage->iconScrollCurColumn) + 100; + StartBoxMonIconsScrollOut(gStorage->iconScrollSpeed); } -static bool8 sub_809062C(void) +static bool8 UpdateBoxMonIconScroll(void) { - if (gPSSData->iconScrollDistance != 0) - gPSSData->iconScrollDistance--; + if (gStorage->iconScrollDistance != 0) + gStorage->iconScrollDistance--; - switch (gPSSData->iconScrollState) + switch (gStorage->iconScrollState) { case 0: - gPSSData->iconScrollPos += gPSSData->iconScrollSpeed; - if (gPSSData->iconScrollPos <= 64 || gPSSData->iconScrollPos >= 252) + gStorage->iconScrollPos += gStorage->iconScrollSpeed; + if (gStorage->iconScrollPos <= 64 || gStorage->iconScrollPos >= 252) { - DestroyAllIconsInRow(gPSSData->iconScrollCurColumn); - gPSSData->iconScrollPos += gPSSData->iconScrollDirection * 24; - gPSSData->iconScrollState++; + // A column of icons has gone offscreen, destroy them + DestroyAllIconsInColumn(gStorage->iconScrollCurColumn); + gStorage->iconScrollPos += gStorage->iconScrollDirection * 24; + gStorage->iconScrollState++; } break; case 1: - gPSSData->iconScrollPos += gPSSData->iconScrollSpeed; - gPSSData->iconScrollNumIncoming += sub_80903A4(gPSSData->iconScrollCurColumn, gPSSData->iconScrollDistance, gPSSData->iconScrollSpeed); - if ((gPSSData->iconScrollDirection > 0 && gPSSData->iconScrollCurColumn == IN_BOX_ROWS - 1) - || (gPSSData->iconScrollDirection < 0 && gPSSData->iconScrollCurColumn == 0)) + // Create the new incoming column of icons + gStorage->iconScrollPos += gStorage->iconScrollSpeed; + gStorage->iconScrollNumIncoming += CreateBoxMonIconsInColumn(gStorage->iconScrollCurColumn, gStorage->iconScrollDistance, gStorage->iconScrollSpeed); + if ((gStorage->iconScrollDirection > 0 && gStorage->iconScrollCurColumn == IN_BOX_COLUMNS - 1) + || (gStorage->iconScrollDirection < 0 && gStorage->iconScrollCurColumn == 0)) { - gPSSData->iconScrollState++; + // Scroll has reached final column + gStorage->iconScrollState++; } else { - gPSSData->iconScrollCurColumn += gPSSData->iconScrollDirection; - gPSSData->iconScrollState = 0; + // Continue scrolling + gStorage->iconScrollCurColumn += gStorage->iconScrollDirection; + gStorage->iconScrollState = 0; } break; case 2: - if (gPSSData->iconScrollNumIncoming == 0) + // Wait to make sure all icons have arrived + if (gStorage->iconScrollNumIncoming == 0) { - gPSSData->iconScrollDistance++; + gStorage->iconScrollDistance++; return FALSE; } break; @@ -528,44 +563,44 @@ static void SetBoxSpeciesAndPersonalities(u8 boxId) s32 i, j, boxPosition; boxPosition = 0; - for (i = 0; i < IN_BOX_COLUMNS; i++) + for (i = 0; i < IN_BOX_ROWS; i++) { - for (j = 0; j < IN_BOX_ROWS; j++) + for (j = 0; j < IN_BOX_COLUMNS; j++) { - gPSSData->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); - if (gPSSData->boxSpecies[boxPosition] != SPECIES_NONE) - gPSSData->boxPersonalities[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); + gStorage->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); + if (gStorage->boxSpecies[boxPosition] != SPECIES_NONE) + gStorage->boxPersonalities[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); boxPosition++; } } - gPSSData->incomingBoxId = boxId; + gStorage->incomingBoxId = boxId; } void DestroyBoxMonIconAtPosition(u8 boxPosition) { - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - DestroyBoxMonIcon(gPSSData->boxMonsSprites[boxPosition]); - gPSSData->boxMonsSprites[boxPosition] = NULL; + DestroyBoxMonIcon(gStorage->boxMonsSprites[boxPosition]); + gStorage->boxMonsSprites[boxPosition] = NULL; } } void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode) { - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - gPSSData->boxMonsSprites[boxPosition]->oam.objMode = objMode; + gStorage->boxMonsSprites[boxPosition]->oam.objMode = objMode; } } -void CreatePartyMonsSprites(bool8 arg0) +void CreatePartyMonsSprites(bool8 visible) { u16 i, count; u16 species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2); u32 personality = GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY); - gPSSData->partySprites[0] = CreateMonIconSprite(species, personality, 104, 64, 1, 12); + gStorage->partySprites[0] = CreateMonIconSprite(species, personality, 104, 64, 1, 12); count = 1; for (i = 1; i < PARTY_SIZE; i++) { @@ -573,90 +608,95 @@ void CreatePartyMonsSprites(bool8 arg0) if (species != SPECIES_NONE) { personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); - gPSSData->partySprites[i] = CreateMonIconSprite(species, personality, 152, 8 * (3 * (i - 1)) + 16, 1, 12); + gStorage->partySprites[i] = CreateMonIconSprite(species, personality, 152, 8 * (3 * (i - 1)) + 16, 1, 12); count++; } else - { - gPSSData->partySprites[i] = NULL; - } + gStorage->partySprites[i] = NULL; } - if (!arg0) + if (!visible) { for (i = 0; i < count; i++) { - gPSSData->partySprites[i]->y -= 160; - gPSSData->partySprites[i]->invisible = TRUE; + gStorage->partySprites[i]->y -= 160; + gStorage->partySprites[i]->invisible = TRUE; } } - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { for (i = 0; i < PARTY_SIZE; i++) { - if (gPSSData->partySprites[i] != NULL && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == 0) - gPSSData->partySprites[i]->oam.objMode = ST_OAM_OBJ_BLEND; + if (gStorage->partySprites[i] != NULL && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == 0) + gStorage->partySprites[i]->oam.objMode = ST_OAM_OBJ_BLEND; } } } -void sub_80909F4(void) +void CompactPartySprites(void) { - u16 i, count; + u16 i, targetPartyId; - gPSSData->numPartyToCompact = 0; - for (i = 0, count = 0; i < PARTY_SIZE; i++) + gStorage->numPartySpritesToCompact = 0; + for (i = 0, targetPartyId = 0; i < PARTY_SIZE; i++) { - if (gPSSData->partySprites[i] != NULL) + if (gStorage->partySprites[i] != NULL) { - if (i != count) + if (i != targetPartyId) { - sub_8090A74(gPSSData->partySprites[i], count); - gPSSData->partySprites[i] = NULL; - gPSSData->numPartyToCompact++; + MovePartySpriteToNextSlot(gStorage->partySprites[i], targetPartyId); + gStorage->partySprites[i] = NULL; + gStorage->numPartySpritesToCompact++; } - count++; + targetPartyId++; } } } -u8 sub_8090A60(void) +u8 GetNumPartySpritesCompacting(void) { - return gPSSData->numPartyToCompact; + return gStorage->numPartySpritesToCompact; } -static void sub_8090A74(struct Sprite *sprite, u16 partyId) +#define sPartyId data[1] +#define sMonX data[2] +#define sMonY data[3] +#define sSpeedX data[4] +#define sSpeedY data[5] +#define sMoveSteps data[6] + +static void MovePartySpriteToNextSlot(struct Sprite *sprite, u16 partyId) { s16 x, y; - sprite->data[1] = partyId; + sprite->sPartyId = partyId; if (partyId == 0) x = 104, y = 64; else x = 152, y = 8 * (3 * (partyId - 1)) + 16; - sprite->data[2] = (u16)(sprite->x) * 8; - sprite->data[3] = (u16)(sprite->y) * 8; - sprite->data[4] = ((x * 8) - sprite->data[2]) / 8; - sprite->data[5] = ((y * 8) - sprite->data[3]) / 8; - sprite->data[6] = 8; - sprite->callback = sub_8090AE0; + sprite->sMonX = (u16)(sprite->x) * 8; + sprite->sMonY = (u16)(sprite->y) * 8; + sprite->sSpeedX = ((x * 8) - sprite->sMonX) / 8; + sprite->sSpeedY = ((y * 8) - sprite->sMonY) / 8; + sprite->sMoveSteps = 8; + sprite->callback = SpriteCB_MovePartySpriteToNextSlot; } -static void sub_8090AE0(struct Sprite *sprite) +static void SpriteCB_MovePartySpriteToNextSlot(struct Sprite *sprite) { - if (sprite->data[6] != 0) + if (sprite->sMoveSteps != 0) { - s16 x = sprite->data[2] += sprite->data[4]; - s16 y = sprite->data[3] += sprite->data[5]; + s16 x = sprite->sMonX += sprite->sSpeedX; + s16 y = sprite->sMonY += sprite->sSpeedY; sprite->x = x / 8u; sprite->y = y / 8u; - sprite->data[6]--; + sprite->sMoveSteps--; } else { - if (sprite->data[1] == 0) + if (sprite->sPartyId == 0) { sprite->x = 104; sprite->y = 64; @@ -664,48 +704,55 @@ static void sub_8090AE0(struct Sprite *sprite) else { sprite->x = 152; - sprite->y = 8 * (3 * (sprite->data[1] - 1)) + 16; + sprite->y = 8 * (3 * (sprite->sPartyId - 1)) + 16; } sprite->callback = SpriteCallbackDummy; - gPSSData->partySprites[sprite->data[1]] = sprite; - gPSSData->numPartyToCompact--; + gStorage->partySprites[sprite->sPartyId] = sprite; + gStorage->numPartySpritesToCompact--; } } +#undef sPartyId +#undef sMonX +#undef sMonY +#undef sSpeedX +#undef sSpeedY +#undef sMoveSteps + void DestroyMovingMonIcon(void) { - if (gPSSData->movingMonSprite != NULL) + if (gStorage->movingMonSprite != NULL) { - DestroyBoxMonIcon(gPSSData->movingMonSprite); - gPSSData->movingMonSprite = NULL; + DestroyBoxMonIcon(gStorage->movingMonSprite); + gStorage->movingMonSprite = NULL; } } -void sub_8090B98(s16 yDelta) +void MovePartySprites(s16 yDelta) { u16 i, posY; for (i = 0; i < PARTY_SIZE; i++) { - if (gPSSData->partySprites[i] != NULL) + if (gStorage->partySprites[i] != NULL) { - gPSSData->partySprites[i]->y += yDelta; - posY = gPSSData->partySprites[i]->y + gPSSData->partySprites[i]->y2 + gPSSData->partySprites[i]->centerToCornerVecY; + gStorage->partySprites[i]->y += yDelta; + posY = gStorage->partySprites[i]->y + gStorage->partySprites[i]->y2 + gStorage->partySprites[i]->centerToCornerVecY; posY += 16; if (posY > 192) - gPSSData->partySprites[i]->invisible = TRUE; + gStorage->partySprites[i]->invisible = TRUE; else - gPSSData->partySprites[i]->invisible = FALSE; + gStorage->partySprites[i]->invisible = FALSE; } } } void DestroyPartyMonIcon(u8 partyId) { - if (gPSSData->partySprites[partyId] != NULL) + if (gStorage->partySprites[partyId] != NULL) { - DestroyBoxMonIcon(gPSSData->partySprites[partyId]); - gPSSData->partySprites[partyId] = NULL; + DestroyBoxMonIcon(gStorage->partySprites[partyId]); + gStorage->partySprites[partyId] = NULL; } } @@ -715,194 +762,190 @@ void DestroyAllPartyMonIcons(void) for (i = 0; i < PARTY_SIZE; i++) { - if (gPSSData->partySprites[i] != NULL) + if (gStorage->partySprites[i] != NULL) { - DestroyBoxMonIcon(gPSSData->partySprites[i]); - gPSSData->partySprites[i] = NULL; + DestroyBoxMonIcon(gStorage->partySprites[i]); + gStorage->partySprites[i] = NULL; } } } void SetPartyMonIconObjMode(u8 partyId, u8 objMode) { - if (gPSSData->partySprites[partyId] != NULL) - { - gPSSData->partySprites[partyId]->oam.objMode = objMode; - } + if (gStorage->partySprites[partyId] != NULL) + gStorage->partySprites[partyId]->oam.objMode = objMode; } -void sub_8090CC0(u8 mode, u8 id) +void SetMovingMonSprite(u8 mode, u8 id) { if (mode == MODE_PARTY) { - gPSSData->movingMonSprite = gPSSData->partySprites[id]; - gPSSData->partySprites[id] = NULL; + gStorage->movingMonSprite = gStorage->partySprites[id]; + gStorage->partySprites[id] = NULL; } else if (mode == MODE_BOX) { - gPSSData->movingMonSprite = gPSSData->boxMonsSprites[id]; - gPSSData->boxMonsSprites[id] = NULL; + gStorage->movingMonSprite = gStorage->boxMonsSprites[id]; + gStorage->boxMonsSprites[id] = NULL; } else - { return; - } - gPSSData->movingMonSprite->callback = sub_80911B0; - gPSSData->movingMonSprite->oam.priority = sub_8090058(); - gPSSData->movingMonSprite->subpriority = 7; + gStorage->movingMonSprite->callback = SpriteCB_HeldMon; + gStorage->movingMonSprite->oam.priority = GetMonIconPriorityByCursorArea(); + gStorage->movingMonSprite->subpriority = 7; } -void sub_8090D58(u8 boxId, u8 position) +void SetPlacedMonSprite(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) // party mon { - gPSSData->partySprites[position] = gPSSData->movingMonSprite; - gPSSData->partySprites[position]->oam.priority = 1; - gPSSData->partySprites[position]->subpriority = 12; + gStorage->partySprites[position] = gStorage->movingMonSprite; + gStorage->partySprites[position]->oam.priority = 1; + gStorage->partySprites[position]->subpriority = 12; } else { - gPSSData->boxMonsSprites[position] = gPSSData->movingMonSprite; - gPSSData->boxMonsSprites[position]->oam.priority = 2; - gPSSData->boxMonsSprites[position]->subpriority = 19 - (position % IN_BOX_ROWS); + gStorage->boxMonsSprites[position] = gStorage->movingMonSprite; + gStorage->boxMonsSprites[position]->oam.priority = 2; + gStorage->boxMonsSprites[position]->subpriority = 19 - (position % IN_BOX_COLUMNS); } - gPSSData->movingMonSprite->callback = SpriteCallbackDummy; - gPSSData->movingMonSprite = NULL; + gStorage->movingMonSprite->callback = SpriteCallbackDummy; + gStorage->movingMonSprite = NULL; } -void sub_8090E08(u8 boxId, u8 position) +void SetShiftMonSpritePtr(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) // party mon - gPSSData->shiftMonSpritePtr = &gPSSData->partySprites[position]; + gStorage->shiftMonSpritePtr = &gStorage->partySprites[position]; else - gPSSData->shiftMonSpritePtr = &gPSSData->boxMonsSprites[position]; + gStorage->shiftMonSpritePtr = &gStorage->boxMonsSprites[position]; - gPSSData->movingMonSprite->callback = SpriteCallbackDummy; - gPSSData->shiftTimer = 0; + gStorage->movingMonSprite->callback = SpriteCallbackDummy; + gStorage->shiftTimer = 0; } -bool8 sub_8090E74(void) +bool8 ShiftMons(void) { - if (gPSSData->shiftTimer == 16) + if (gStorage->shiftTimer == 16) return FALSE; - gPSSData->shiftTimer++; - if (gPSSData->shiftTimer & 1) + gStorage->shiftTimer++; + if (gStorage->shiftTimer & 1) { - (*gPSSData->shiftMonSpritePtr)->y--; - gPSSData->movingMonSprite->y++; + (*gStorage->shiftMonSpritePtr)->y--; + gStorage->movingMonSprite->y++; } - (*gPSSData->shiftMonSpritePtr)->x2 = gSineTable[gPSSData->shiftTimer * 8] / 16; - gPSSData->movingMonSprite->x2 = -(gSineTable[gPSSData->shiftTimer * 8] / 16); - if (gPSSData->shiftTimer == 8) + (*gStorage->shiftMonSpritePtr)->x2 = gSineTable[gStorage->shiftTimer * 8] / 16; + gStorage->movingMonSprite->x2 = -(gSineTable[gStorage->shiftTimer * 8] / 16); + if (gStorage->shiftTimer == 8) { - gPSSData->movingMonSprite->oam.priority = (*gPSSData->shiftMonSpritePtr)->oam.priority; - gPSSData->movingMonSprite->subpriority = (*gPSSData->shiftMonSpritePtr)->subpriority; - (*gPSSData->shiftMonSpritePtr)->oam.priority = sub_8090058(); - (*gPSSData->shiftMonSpritePtr)->subpriority = 7; + gStorage->movingMonSprite->oam.priority = (*gStorage->shiftMonSpritePtr)->oam.priority; + gStorage->movingMonSprite->subpriority = (*gStorage->shiftMonSpritePtr)->subpriority; + (*gStorage->shiftMonSpritePtr)->oam.priority = GetMonIconPriorityByCursorArea(); + (*gStorage->shiftMonSpritePtr)->subpriority = 7; } - if (gPSSData->shiftTimer == 16) + if (gStorage->shiftTimer == 16) { - struct Sprite *sprite = gPSSData->movingMonSprite; - gPSSData->movingMonSprite = (*gPSSData->shiftMonSpritePtr); - *gPSSData->shiftMonSpritePtr = sprite; + struct Sprite *sprite = gStorage->movingMonSprite; + gStorage->movingMonSprite = (*gStorage->shiftMonSpritePtr); + *gStorage->shiftMonSpritePtr = sprite; - gPSSData->movingMonSprite->callback = sub_80911B0; - (*gPSSData->shiftMonSpritePtr)->callback = SpriteCallbackDummy; + gStorage->movingMonSprite->callback = SpriteCB_HeldMon; + (*gStorage->shiftMonSpritePtr)->callback = SpriteCallbackDummy; } return TRUE; } -void sub_8090FC4(u8 mode, u8 position) +void DoReleaseMonAnim(u8 mode, u8 position) { switch (mode) { case MODE_PARTY: - gPSSData->releaseMonSpritePtr = &gPSSData->partySprites[position]; + gStorage->releaseMonSpritePtr = &gStorage->partySprites[position]; break; case MODE_BOX: - gPSSData->releaseMonSpritePtr = &gPSSData->boxMonsSprites[position]; + gStorage->releaseMonSpritePtr = &gStorage->boxMonsSprites[position]; break; - case MODE_2: - gPSSData->releaseMonSpritePtr = &gPSSData->movingMonSprite; + case MODE_MOVE: + gStorage->releaseMonSpritePtr = &gStorage->movingMonSprite; break; default: return; } - if (*gPSSData->releaseMonSpritePtr != NULL) + if (*gStorage->releaseMonSpritePtr != NULL) { - InitSpriteAffineAnim(*gPSSData->releaseMonSpritePtr); - (*gPSSData->releaseMonSpritePtr)->oam.affineMode = ST_OAM_AFFINE_NORMAL; - (*gPSSData->releaseMonSpritePtr)->affineAnims = gUnknown_83CEC38; - StartSpriteAffineAnim(*gPSSData->releaseMonSpritePtr, 0); + InitSpriteAffineAnim(*gStorage->releaseMonSpritePtr); + (*gStorage->releaseMonSpritePtr)->oam.affineMode = ST_OAM_AFFINE_NORMAL; + (*gStorage->releaseMonSpritePtr)->affineAnims = sAffineAnims_ReleaseMon; + StartSpriteAffineAnim(*gStorage->releaseMonSpritePtr, RELEASE_ANIM_RELEASE); } } -bool8 sub_8091084(void) +bool8 TryHideReleaseMonSprite(void) { - if (*gPSSData->releaseMonSpritePtr == NULL || (*gPSSData->releaseMonSpritePtr)->invisible) + if (*gStorage->releaseMonSpritePtr == NULL || (*gStorage->releaseMonSpritePtr)->invisible) return FALSE; - if ((*gPSSData->releaseMonSpritePtr)->affineAnimEnded) - (*gPSSData->releaseMonSpritePtr)->invisible = TRUE; + if ((*gStorage->releaseMonSpritePtr)->affineAnimEnded) + (*gStorage->releaseMonSpritePtr)->invisible = TRUE; return TRUE; } -void sub_80910CC(void) +void DestroyReleaseMonIcon(void) { - if (*gPSSData->releaseMonSpritePtr != NULL) + if (*gStorage->releaseMonSpritePtr != NULL) { - FreeOamMatrix((*gPSSData->releaseMonSpritePtr)->oam.matrixNum); - DestroyBoxMonIcon(*gPSSData->releaseMonSpritePtr); - *gPSSData->releaseMonSpritePtr = NULL; + FreeOamMatrix((*gStorage->releaseMonSpritePtr)->oam.matrixNum); + DestroyBoxMonIcon(*gStorage->releaseMonSpritePtr); + *gStorage->releaseMonSpritePtr = NULL; } } -void sub_8091114(void) +void DoReleaseMonComeBackAnim(void) { - if (*gPSSData->releaseMonSpritePtr != NULL) + if (*gStorage->releaseMonSpritePtr != NULL) { - (*gPSSData->releaseMonSpritePtr)->invisible = FALSE; - StartSpriteAffineAnim(*gPSSData->releaseMonSpritePtr, 1); + (*gStorage->releaseMonSpritePtr)->invisible = FALSE; + StartSpriteAffineAnim(*gStorage->releaseMonSpritePtr, RELEASE_ANIM_COME_BACK); } } -bool8 sub_8091150(void) +bool8 ResetReleaseMonSpritePtr(void) { - if (gPSSData->releaseMonSpritePtr == NULL) + if (gStorage->releaseMonSpritePtr == NULL) return FALSE; - if ((*gPSSData->releaseMonSpritePtr)->affineAnimEnded) - gPSSData->releaseMonSpritePtr = NULL; + if ((*gStorage->releaseMonSpritePtr)->affineAnimEnded) + gStorage->releaseMonSpritePtr = NULL; return TRUE; } void SetMovingMonPriority(u8 priority) { - gPSSData->movingMonSprite->oam.priority = priority; + gStorage->movingMonSprite->oam.priority = priority; } -static void sub_80911B0(struct Sprite *sprite) +static void SpriteCB_HeldMon(struct Sprite *sprite) { - sprite->x = gPSSData->cursorSprite->x; - sprite->y = gPSSData->cursorSprite->y + gPSSData->cursorSprite->y2 + 4; + sprite->x = gStorage->cursorSprite->x; + sprite->y = gStorage->cursorSprite->y + gStorage->cursorSprite->y2 + 4; } -static u16 sub_80911D4(u16 species) +static u16 TryLoadMonIconTiles(u16 species) { - u16 i, var; + u16 i, offset; // Find the currently-allocated slot for (i = 0; i < MAX_MON_ICONS; i++) { - if (gPSSData->iconSpeciesList[i] == species) + if (gStorage->iconSpeciesList[i] == species) break; } @@ -911,31 +954,31 @@ static u16 sub_80911D4(u16 species) // Find the first empty slot for (i = 0; i < MAX_MON_ICONS; i++) { - if (gPSSData->iconSpeciesList[i] == SPECIES_NONE) + if (gStorage->iconSpeciesList[i] == SPECIES_NONE) break; } if (i == MAX_MON_ICONS) return 0xFFFF; } - gPSSData->iconSpeciesList[i] = species; - gPSSData->numIconsPerSpecies[i]++; - var = 16 * i; - CpuCopy32(GetMonIconTiles(species, TRUE), (void *)(OBJ_VRAM0) + var * 32, 0x200); + gStorage->iconSpeciesList[i] = species; + gStorage->numIconsPerSpecies[i]++; + offset = 16 * i; + CpuCopy32(GetMonIconTiles(species, TRUE), (void *)(OBJ_VRAM0) + offset * 32, 0x200); - return var; + return offset; } -static void sub_8091290(u16 species) +static void RemoveSpeciesFromIconList(u16 species) { u16 i; for (i = 0; i < MAX_MON_ICONS; i++) { - if (gPSSData->iconSpeciesList[i] == species) + if (gStorage->iconSpeciesList[i] == species) { - if (--gPSSData->numIconsPerSpecies[i] == 0) - gPSSData->iconSpeciesList[i] = 0; + if (--gStorage->numIconsPerSpecies[i] == 0) + gStorage->iconSpeciesList[i] = SPECIES_NONE; break; } } @@ -945,18 +988,18 @@ struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u { u16 tileNum; u8 spriteId; - struct SpriteTemplate template = gUnknown_83CEBF0; + struct SpriteTemplate template = sSpriteTemplate_MonIcon; species = GetIconSpecies(species, personality); - template.paletteTag = 0xDAC0 + gMonIconPaletteIndices[species]; - tileNum = sub_80911D4(species); + template.paletteTag = PALTAG_MON_ICON_0 + gMonIconPaletteIndices[species]; + tileNum = TryLoadMonIconTiles(species); if (tileNum == 0xFFFF) return NULL; spriteId = CreateSprite(&template, x, y, subpriority); if (spriteId == MAX_SPRITES) { - sub_8091290(species); + RemoveSpeciesFromIconList(species); return NULL; } @@ -968,117 +1011,125 @@ struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u static void DestroyBoxMonIcon(struct Sprite *sprite) { - sub_8091290(sprite->data[0]); + RemoveSpeciesFromIconList(sprite->data[0]); DestroySprite(sprite); } -void sub_80913DC(u8 boxId) -{ - u8 taskId = CreateTask(sub_8091420, 2); +#define tState data[0] +#define tDmaIdx data[1] +#define tBoxId data[2] - gTasks[taskId].data[2] = boxId; +void CreateInitBoxTask(u8 boxId) +{ + u8 taskId = CreateTask(Task_InitBox, 2); + + gTasks[taskId].tBoxId = boxId; } -bool8 sub_809140C(void) +bool8 IsInitBoxActive(void) { - return FuncIsActiveTask(sub_8091420); + return FuncIsActiveTask(Task_InitBox); } -static void sub_8091420(u8 taskId) +static void Task_InitBox(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - gPSSData->wallpaperOffset = 0; - gPSSData->bg2_X = 0; - task->data[1] = RequestDma3Fill(0, gPSSData->field_4AC4, 0x1000, DMA3_32BIT); + gStorage->wallpaperOffset = 0; + gStorage->bg2_X = 0; + task->tDmaIdx = RequestDma3Fill(0, gStorage->wallpaperBgTilemapBuffer, sizeof(gStorage->wallpaperBgTilemapBuffer), DMA3_32BIT); break; case 1: - if (WaitDma3Request(task->data[1]) == -1) + if (WaitDma3Request(task->tDmaIdx) == -1) return; - SetBgTilemapBuffer(2, gPSSData->field_4AC4); + SetBgTilemapBuffer(2, gStorage->wallpaperBgTilemapBuffer); ShowBg(2); break; case 2: - LoadWallpaperGfx(task->data[2], 0); + LoadWallpaperGfx(task->tBoxId, 0); break; case 3: if (!WaitForWallpaperGfxLoad()) return; - sub_8091A94(task->data[2]); + InitBoxTitle(task->tBoxId); CreateBoxScrollArrows(); - sub_80900D4(task->data[2]); + InitBoxMonSprites(task->tBoxId); SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(27) | BGCNT_TXT512x256); break; case 4: DestroyTask(taskId); break; default: - task->data[0] = 0; + task->tState = 0; return; } - task->data[0]++; + task->tState++; } +#undef tState +#undef tDmaIdx +#undef tBoxId + void SetUpScrollToBox(u8 boxId) { - s8 direction = sub_80916F4(boxId); + s8 direction = DetermineBoxScrollDirection(boxId); - gPSSData->scrollSpeed = (direction > 0) ? 6 : -6; - gPSSData->scrollUnused1 = (direction > 0) ? 1 : 2; - gPSSData->scrollTimer = 32; - gPSSData->scrollToBoxIdUnused = boxId; - gPSSData->scrollUnused2 = (direction <= 0) ? 5 : 0; - gPSSData->scrollDirectionUnused = direction; - gPSSData->scrollUnused3 = (direction > 0) ? 264 : 56; - gPSSData->scrollUnused4 = (direction <= 0) ? 5 : 0; - gPSSData->scrollUnused5 = 0; - gPSSData->scrollUnused6 = 2; - gPSSData->scrollToBoxId = boxId; - gPSSData->scrollDirection = direction; - gPSSData->scrollState = 0; + gStorage->scrollSpeed = (direction > 0) ? 6 : -6; + gStorage->scrollUnused1 = (direction > 0) ? 1 : 2; + gStorage->scrollTimer = 32; + gStorage->scrollToBoxIdUnused = boxId; + gStorage->scrollUnused2 = (direction <= 0) ? 5 : 0; + gStorage->scrollDirectionUnused = direction; + gStorage->scrollUnused3 = (direction > 0) ? 264 : 56; + gStorage->scrollUnused4 = (direction <= 0) ? 5 : 0; + gStorage->scrollUnused5 = 0; + gStorage->scrollUnused6 = 2; + gStorage->scrollToBoxId = boxId; + gStorage->scrollDirection = direction; + gStorage->scrollState = 0; } bool8 ScrollToBox(void) { - bool8 var; + bool8 isStillScrolling; - switch (gPSSData->scrollState) + switch (gStorage->scrollState) { case 0: - LoadWallpaperGfx(gPSSData->scrollToBoxId, gPSSData->scrollDirection); - gPSSData->scrollState++; + LoadWallpaperGfx(gStorage->scrollToBoxId, gStorage->scrollDirection); + gStorage->scrollState++; case 1: if (!WaitForWallpaperGfxLoad()) return TRUE; - sub_8090574(gPSSData->scrollToBoxId, gPSSData->scrollDirection); - sub_8091C48(gPSSData->scrollToBoxId, gPSSData->scrollDirection); - StartBoxScrollArrowsSlide(gPSSData->scrollDirection); + InitBoxMonIconScroll(gStorage->scrollToBoxId, gStorage->scrollDirection); + CreateIncomingBoxTitle(gStorage->scrollToBoxId, gStorage->scrollDirection); + StartBoxScrollArrowsSlide(gStorage->scrollDirection); break; case 2: - var = sub_809062C(); - if (gPSSData->scrollTimer != 0) + isStillScrolling = UpdateBoxMonIconScroll(); + if (gStorage->scrollTimer != 0) { - gPSSData->bg2_X += gPSSData->scrollSpeed; - if (--gPSSData->scrollTimer != 0) + gStorage->bg2_X += gStorage->scrollSpeed; + if (--gStorage->scrollTimer != 0) return TRUE; - sub_8091E34(); + CycleBoxTitleSprites(); StopBoxScrollArrowsSlide(); } - return var; + return isStillScrolling; } - gPSSData->scrollState++; + gStorage->scrollState++; return TRUE; } -static s8 sub_80916F4(u8 boxId) +static s8 DetermineBoxScrollDirection(u8 boxId) { u8 i; u8 currentBox = StorageGetCurrentBox(); @@ -1095,38 +1146,37 @@ static s8 sub_80916F4(u8 boxId) void SetWallpaperForCurrentBox(u8 wallpaperId) { - u8 boxId = StorageGetCurrentBox(); - SetBoxWallpaper(boxId, wallpaperId); - gPSSData->wallpaperChangeState = 0; + SetBoxWallpaper(StorageGetCurrentBox(), wallpaperId); + gStorage->wallpaperChangeState = 0; } bool8 DoWallpaperGfxChange(void) { - switch (gPSSData->wallpaperChangeState) + switch (gStorage->wallpaperChangeState) { case 0: - BeginNormalPaletteFade(gPSSData->wallpaperPalBits, 1, 0, 16, RGB_WHITEALPHA); - gPSSData->wallpaperChangeState++; + BeginNormalPaletteFade(gStorage->wallpaperPalBits, 1, 0, 16, RGB_WHITEALPHA); + gStorage->wallpaperChangeState++; break; case 1: if (!UpdatePaletteFade()) { u8 curBox = StorageGetCurrentBox(); LoadWallpaperGfx(curBox, 0); - gPSSData->wallpaperChangeState++; + gStorage->wallpaperChangeState++; } break; case 2: if (WaitForWallpaperGfxLoad() == TRUE) { CycleBoxTitleColor(); - BeginNormalPaletteFade(gPSSData->wallpaperPalBits, 1, 16, 0, RGB_WHITEALPHA); - gPSSData->wallpaperChangeState++; + BeginNormalPaletteFade(gStorage->wallpaperPalBits, 1, 16, 0, RGB_WHITEALPHA); + gStorage->wallpaperChangeState++; } break; case 3: if (!UpdatePaletteFade()) - gPSSData->wallpaperChangeState++; + gStorage->wallpaperChangeState++; break; case 4: return FALSE; @@ -1138,30 +1188,28 @@ bool8 DoWallpaperGfxChange(void) static void LoadWallpaperGfx(u8 boxId, s8 direction) { u8 wallpaperId; - const struct WallpaperTable *wallpaperGfx; - void *iconGfx; - u32 size1, size2; + const struct Wallpaper *wallpaper; - gPSSData->wallpaperLoadState = 0; - gPSSData->wallpaperLoadBoxId = boxId; - gPSSData->wallpaperLoadDir = direction; - if (gPSSData->wallpaperLoadDir != 0) + gStorage->wallpaperLoadState = 0; + gStorage->wallpaperLoadBoxId = boxId; + gStorage->wallpaperLoadDir = direction; + if (gStorage->wallpaperLoadDir != 0) { - gPSSData->wallpaperOffset = (gPSSData->wallpaperOffset == 0); - sub_8091A24(gPSSData->field_4AC4); + gStorage->wallpaperOffset = !gStorage->wallpaperOffset; + TrimOldWallpaper(gStorage->wallpaperBgTilemapBuffer); } - wallpaperId = GetBoxWallpaper(gPSSData->wallpaperLoadBoxId); - wallpaperGfx = &sWallpaperTable[wallpaperId]; - LZ77UnCompWram(wallpaperGfx->tileMap, gPSSData->wallpaperTilemap); - sub_8091984(gPSSData->field_4AC4, gPSSData->wallpaperTilemap, gPSSData->wallpaperLoadDir, gPSSData->wallpaperOffset); + wallpaperId = GetBoxWallpaper(gStorage->wallpaperLoadBoxId); + wallpaper = &sWallpapers[wallpaperId]; + LZ77UnCompWram(wallpaper->tileMap, gStorage->wallpaperTilemap); + DrawWallpaper(gStorage->wallpaperBgTilemapBuffer, gStorage->wallpaperTilemap, gStorage->wallpaperLoadDir, gStorage->wallpaperOffset); - if (gPSSData->wallpaperLoadDir != 0) - LoadPalette(wallpaperGfx->palettes, (gPSSData->wallpaperOffset * 32) + 0x40, 0x40); + if (gStorage->wallpaperLoadDir != 0) + LoadPalette(wallpaper->palettes, (gStorage->wallpaperOffset * 32) + 0x40, 0x40); else - CpuCopy16(wallpaperGfx->palettes, &gPlttBufferUnfaded[(gPSSData->wallpaperOffset * 32) + 0x40], 0x40); + CpuCopy16(wallpaper->palettes, &gPlttBufferUnfaded[(gStorage->wallpaperOffset * 32) + 0x40], 0x40); - DecompressAndLoadBgGfxUsingHeap(2, wallpaperGfx->tiles, 0, 256 * gPSSData->wallpaperOffset, 0); + DecompressAndLoadBgGfxUsingHeap(2, wallpaper->tiles, 0, 256 * gStorage->wallpaperOffset, 0); CopyBgTilemapBufferToVram(2); } @@ -1174,145 +1222,146 @@ static bool32 WaitForWallpaperGfxLoad(void) return TRUE; } -static void sub_8091984(void *buffer, const void *tilemap, s8 direction, u8 arg2) +static void DrawWallpaper(void *unused, const void *tilemap, s8 direction, u8 offset) { - s16 var = (arg2 * 2) + 3; - s16 x = ((gPSSData->bg2_X / 8 + 10) + (direction * 24)) & 0x3F; + s16 paletteNum = (offset * 2) + 3; + s16 x = ((gStorage->bg2_X / 8 + 10) + (direction * 24)) & 0x3F; - CopyRectToBgTilemapBufferRect(2, tilemap, 0, 0, 0x14, 0x12, x, 2, 0x14, 0x12, 0x11, arg2 << 8, var); + CopyRectToBgTilemapBufferRect(2, tilemap, 0, 0, 20, 18, x, 2, 20, 18, 17, offset << 8, paletteNum); if (direction == 0) return; else if (direction > 0) - x *= 1, x += 0x14; // x * 1 is needed to match, but can be safely removed as it makes no functional difference + x *= 1, x += 20; // x * 1 is needed to match else x -= 4; - FillBgTilemapBufferRect(2, 0, x, 2, 4, 0x12, 0x11); + FillBgTilemapBufferRect(2, 0, x, 2, 4, 18, 17); } -static void sub_8091A24(void *arg0) +static void TrimOldWallpaper(void *tilemapBuffer) { u16 i; - u16 *dest = arg0; - s16 r3 = ((gPSSData->bg2_X / 8) + 30) & 0x3F; + u16 *dest = tilemapBuffer; + s16 right = ((gStorage->bg2_X / 8 + 10) + 20) & 0x3F; - if (r3 <= 31) - dest += r3 + 0x260; + if (right < 32) + dest += right + 0x260; else - dest += r3 + 0x640; + dest += right + 0x640; - for (i = 0; i < 0x2C; i++) + for (i = 0; i < 44; i++) { *dest++ = 0; - r3 = (r3 + 1) & 0x3F; - if (r3 == 0) + right = (right + 1) & 0x3F; + if (right == 0) dest -= 0x420; - if (r3 == 0x20) + if (right == 32) dest += 0x3e0; } } -static void sub_8091A94(u8 boxId) +static void InitBoxTitle(u8 boxId) { u8 tagIndex; - s16 r6; + s16 x; u16 i; - struct SpriteSheet spriteSheet = {gPSSData->field_2F8, 0x200, TAG_TILE_3}; + struct SpriteSheet spriteSheet = {gStorage->boxTitleTiles, 0x200, GFXTAG_BOX_TITLE}; struct SpritePalette palettes[] = { - {gPSSData->boxTitlePal, TAG_PAL_DAC9}, + {gStorage->boxTitlePal, PALTAG_BOX_TITLE}, {} }; u16 wallpaperId = GetBoxWallpaper(boxId); - gPSSData->boxTitlePal[14] = sBoxTitleColors[wallpaperId][0]; - gPSSData->boxTitlePal[15] = sBoxTitleColors[wallpaperId][1]; + gStorage->boxTitlePal[14] = sBoxTitleColors[wallpaperId][0]; + gStorage->boxTitlePal[15] = sBoxTitleColors[wallpaperId][1]; LoadSpritePalettes(palettes); - gPSSData->wallpaperPalBits = 0x3f0; + gStorage->wallpaperPalBits = 0x3F0; - tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9); - gPSSData->boxTitlePalOffset = 0x10e + 16 * tagIndex; - gPSSData->wallpaperPalBits |= 0x10000 << tagIndex; + tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE); + gStorage->boxTitlePalOffset = 0x10e + 16 * tagIndex; + gStorage->wallpaperPalBits |= 0x10000 << tagIndex; - tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9); - gPSSData->boxTitleAltPalOffset = 0x10e + 16 * tagIndex; - gPSSData->wallpaperPalBits |= 0x10000 << tagIndex; + tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE); + gStorage->boxTitleAltPalOffset = 0x10e + 16 * tagIndex; + gStorage->wallpaperPalBits |= 0x10000 << tagIndex; - StringCopyPadded(gPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8); - DrawTextWindowAndBufferTiles(gPSSData->field_21B8, gPSSData->field_2F8, 0, 0, gPSSData->field_4F8, 2); + StringCopyPadded(gStorage->boxTitleText, GetBoxNamePtr(boxId), 0, 8); + DrawTextWindowAndBufferTiles(gStorage->boxTitleText, gStorage->boxTitleTiles, 0, 0, gStorage->boxTitleUnused, 2); LoadSpriteSheet(&spriteSheet); - r6 = GetBoxTitleBaseX(GetBoxNamePtr(boxId)); - - for (i = 0; i < 2; i++) - { - u8 spriteId = CreateSprite(&gUnknown_83D2B7C, r6 + i * 32, 28, 24); - gPSSData->curBoxTitleSprites[i] = &gSprites[spriteId]; - StartSpriteAnim(gPSSData->curBoxTitleSprites[i], i); - } - gPSSData->boxTitleCycleId = 0; -} - -static void sub_8091C48(u8 boxId, s8 direction) -{ - u16 r8; - s16 x, x2; - u16 i; - struct SpriteSheet spriteSheet = {gPSSData->field_2F8, 0x200, TAG_TILE_3}; - struct SpriteTemplate template = gUnknown_83D2B7C; - - gPSSData->boxTitleCycleId = (gPSSData->boxTitleCycleId == 0); - if (gPSSData->boxTitleCycleId == 0) - { - spriteSheet.tag = TAG_TILE_3; - r8 = gPSSData->boxTitlePalOffset; - } - else - { - spriteSheet.tag = TAG_TILE_4; - r8 = gPSSData->boxTitlePalOffset; - template.tileTag = TAG_TILE_4; - template.paletteTag = TAG_PAL_DAC9; - } - - StringCopyPadded(gPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8); - DrawTextWindowAndBufferTiles(gPSSData->field_21B8, gPSSData->field_2F8, 0, 0, gPSSData->field_4F8, 2); - LoadSpriteSheet(&spriteSheet); - LoadPalette(sBoxTitleColors[GetBoxWallpaper(boxId)], r8, 4); x = GetBoxTitleBaseX(GetBoxNamePtr(boxId)); - x2 = x; - x2 += direction * 192; for (i = 0; i < 2; i++) { - u8 spriteId = CreateSprite(&template, i * 32 + x2, 28, 24); + u8 spriteId = CreateSprite(&sSpriteTemplate_BoxTitle, x + i * 32, 28, 24); + gStorage->curBoxTitleSprites[i] = &gSprites[spriteId]; + StartSpriteAnim(gStorage->curBoxTitleSprites[i], i); + } + gStorage->boxTitleCycleId = 0; +} - gPSSData->nextBoxTitleSprites[i] = &gSprites[spriteId]; - gPSSData->nextBoxTitleSprites[i]->data[0] = (-direction) * 6; - gPSSData->nextBoxTitleSprites[i]->data[1] = i * 32 + x; - gPSSData->nextBoxTitleSprites[i]->data[2] = 0; - gPSSData->nextBoxTitleSprites[i]->callback = sub_8091E84; - StartSpriteAnim(gPSSData->nextBoxTitleSprites[i], i); +static void CreateIncomingBoxTitle(u8 boxId, s8 direction) +{ + u16 palOffset; + s16 x, adjustedX; + u16 i; + struct SpriteSheet spriteSheet = {gStorage->boxTitleTiles, 0x200, GFXTAG_BOX_TITLE}; + struct SpriteTemplate template = sSpriteTemplate_BoxTitle; - gPSSData->curBoxTitleSprites[i]->data[0] = (-direction) * 6; - gPSSData->curBoxTitleSprites[i]->data[1] = 1; - gPSSData->curBoxTitleSprites[i]->callback = sub_8091EB8; + gStorage->boxTitleCycleId = !gStorage->boxTitleCycleId; + if (gStorage->boxTitleCycleId == 0) + { + spriteSheet.tag = GFXTAG_BOX_TITLE; + palOffset = gStorage->boxTitlePalOffset; + } + else + { + spriteSheet.tag = GFXTAG_BOX_TITLE_ALT; + palOffset = gStorage->boxTitlePalOffset; + template.tileTag = GFXTAG_BOX_TITLE_ALT; + template.paletteTag = PALTAG_BOX_TITLE; + } + + StringCopyPadded(gStorage->boxTitleText, GetBoxNamePtr(boxId), 0, BOX_NAME_LENGTH); + DrawTextWindowAndBufferTiles(gStorage->boxTitleText, gStorage->boxTitleTiles, 0, 0, gStorage->boxTitleUnused, 2); + LoadSpriteSheet(&spriteSheet); + LoadPalette(sBoxTitleColors[GetBoxWallpaper(boxId)], palOffset, sizeof(sBoxTitleColors[0])); + x = GetBoxTitleBaseX(GetBoxNamePtr(boxId)); + adjustedX = x; + adjustedX += direction * 192; + + // Title is split across two sprites + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&template, i * 32 + adjustedX, 28, 24); + + gStorage->nextBoxTitleSprites[i] = &gSprites[spriteId]; + gStorage->nextBoxTitleSprites[i]->data[0] = (-direction) * 6; + gStorage->nextBoxTitleSprites[i]->data[1] = i * 32 + x; + gStorage->nextBoxTitleSprites[i]->data[2] = 0; + gStorage->nextBoxTitleSprites[i]->callback = SpriteCB_IncomingBoxTitle; + StartSpriteAnim(gStorage->nextBoxTitleSprites[i], i); + + gStorage->curBoxTitleSprites[i]->data[0] = (-direction) * 6; + gStorage->curBoxTitleSprites[i]->data[1] = 1; + gStorage->curBoxTitleSprites[i]->callback = SpriteCB_OutgoingBoxTitle; } } -static void sub_8091E34(void) +static void CycleBoxTitleSprites(void) { - if (gPSSData->boxTitleCycleId == 0) - FreeSpriteTilesByTag(TAG_TILE_4); + if (gStorage->boxTitleCycleId == 0) + FreeSpriteTilesByTag(GFXTAG_BOX_TITLE_ALT); else - FreeSpriteTilesByTag(TAG_TILE_3); + FreeSpriteTilesByTag(GFXTAG_BOX_TITLE); - gPSSData->curBoxTitleSprites[0] = gPSSData->nextBoxTitleSprites[0]; - gPSSData->curBoxTitleSprites[1] = gPSSData->nextBoxTitleSprites[1]; + gStorage->curBoxTitleSprites[0] = gStorage->nextBoxTitleSprites[0]; + gStorage->curBoxTitleSprites[1] = gStorage->nextBoxTitleSprites[1]; } -static void sub_8091E84(struct Sprite *sprite) +static void SpriteCB_IncomingBoxTitle(struct Sprite *sprite) { if (sprite->data[2] != 0) sprite->data[2]--; @@ -1320,12 +1369,10 @@ static void sub_8091E84(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy; } -static void sub_8091EB8(struct Sprite *sprite) +static void SpriteCB_OutgoingBoxTitle(struct Sprite *sprite) { if (sprite->data[1] != 0) - { sprite->data[1]--; - } else { sprite->x += sprite->data[0]; @@ -1339,10 +1386,10 @@ static void CycleBoxTitleColor(void) { u8 boxId = StorageGetCurrentBox(); u8 wallpaperId = GetBoxWallpaper(boxId); - if (gPSSData->boxTitleCycleId == 0) - CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitlePalOffset, 4); + if (gStorage->boxTitleCycleId == 0) + CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gStorage->boxTitlePalOffset, 4); else - CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitleAltPalOffset, 4); + CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gStorage->boxTitleAltPalOffset, 4); } static s16 GetBoxTitleBaseX(const u8 *string) @@ -1350,12 +1397,6 @@ static s16 GetBoxTitleBaseX(const u8 *string) return DISPLAY_WIDTH - 64 - GetStringWidth(FONT_1, string, 0) / 2; } - -//------------------------------------------------------------------------------ -// SECTION: Scroll arrows -//------------------------------------------------------------------------------ - - // Sprite data for box scroll arrows #define sState data[0] #define sTimer data[1] @@ -1365,16 +1406,16 @@ static void CreateBoxScrollArrows(void) { u16 i; - LoadSpriteSheet(&sSpriteSheet_Arrow); + LoadSpriteSheet(&sSpriteSheet_BoxScrollArrow); for (i = 0; i < 2; i++) { - u8 spriteId = CreateSprite(&sSpriteTemplate_Arrow, 92 + i * 136, 28, 22); + u8 spriteId = CreateSprite(&sSpriteTemplate_BoxScrollArrow, 92 + i * 136, 28, 22); if (spriteId != MAX_SPRITES) { struct Sprite *sprite = &gSprites[spriteId]; StartSpriteAnim(sprite, i); - sprite->data[3] = (i == 0) ? -1 : 1; - gPSSData->arrowSprites[i] = sprite; + sprite->sSpeed = (i == 0) ? -1 : 1; + gStorage->arrowSprites[i] = sprite; } } if (IsCursorOnBoxTitle()) @@ -1388,25 +1429,25 @@ static void StartBoxScrollArrowsSlide(s8 direction) for (i = 0; i < 2; i++) { - gPSSData->arrowSprites[i]->x2 = 0; - gPSSData->arrowSprites[i]->sState = 2; + gStorage->arrowSprites[i]->x2 = 0; + gStorage->arrowSprites[i]->sState = 2; } if (direction < 0) { - gPSSData->arrowSprites[0]->sTimer = 29; - gPSSData->arrowSprites[1]->sTimer = 5; - gPSSData->arrowSprites[0]->data[2] = 72; - gPSSData->arrowSprites[1]->data[2] = 72; + gStorage->arrowSprites[0]->sTimer = 29; + gStorage->arrowSprites[1]->sTimer = 5; + gStorage->arrowSprites[0]->data[2] = 72; + gStorage->arrowSprites[1]->data[2] = 72; } else { - gPSSData->arrowSprites[0]->sTimer = 5; - gPSSData->arrowSprites[1]->sTimer = 29; - gPSSData->arrowSprites[0]->data[2] = DISPLAY_WIDTH + 8; - gPSSData->arrowSprites[1]->data[2] = DISPLAY_WIDTH + 8; + gStorage->arrowSprites[0]->sTimer = 5; + gStorage->arrowSprites[1]->sTimer = 29; + gStorage->arrowSprites[0]->data[2] = DISPLAY_WIDTH + 8; + gStorage->arrowSprites[1]->data[2] = DISPLAY_WIDTH + 8; } - gPSSData->arrowSprites[0]->data[7] = 0; - gPSSData->arrowSprites[1]->data[7] = 1; + gStorage->arrowSprites[0]->data[7] = 0; + gStorage->arrowSprites[1]->data[7] = 1; } // New box's scroll arrows have entered, stop sliding and set their position @@ -1416,9 +1457,9 @@ static void StopBoxScrollArrowsSlide(void) for (i = 0; i < 2; i++) { - gPSSData->arrowSprites[i]->x = 136 * i + 92; - gPSSData->arrowSprites[i]->x2 = 0; - gPSSData->arrowSprites[i]->invisible = FALSE; + gStorage->arrowSprites[i]->x = 136 * i + 92; + gStorage->arrowSprites[i]->x2 = 0; + gStorage->arrowSprites[i]->invisible = FALSE; } AnimateBoxScrollArrows(TRUE); } @@ -1433,21 +1474,21 @@ void AnimateBoxScrollArrows(bool8 animate) // Start arrows moving for (i = 0; i < 2; i++) { - gPSSData->arrowSprites[i]->sState = 1; - gPSSData->arrowSprites[i]->sTimer = 0; - gPSSData->arrowSprites[i]->data[2] = 0; - gPSSData->arrowSprites[i]->data[4] = 0; + gStorage->arrowSprites[i]->sState = 1; + gStorage->arrowSprites[i]->sTimer = 0; + gStorage->arrowSprites[i]->data[2] = 0; + gStorage->arrowSprites[i]->data[4] = 0; } } else { // Stop arrows moving for (i = 0; i < 2; i++) - gPSSData->arrowSprites[i]->sState = 0; + gStorage->arrowSprites[i]->sState = 0; } } -static void SpriteCB_Arrow(struct Sprite *sprite) +static void SpriteCB_BoxScrollArrow(struct Sprite *sprite) { switch (sprite->sState) { @@ -1470,7 +1511,7 @@ static void SpriteCB_Arrow(struct Sprite *sprite) sprite->sState = 3; break; case 3: - sprite->x -= gPSSData->scrollSpeed; + sprite->x -= gStorage->scrollSpeed; if (sprite->x <= 72 || sprite->x >= DISPLAY_WIDTH + 8) sprite->invisible = TRUE; if (--sprite->sTimer == 0) @@ -1481,18 +1522,19 @@ static void SpriteCB_Arrow(struct Sprite *sprite) } break; case 4: - sprite->x -= gPSSData->scrollSpeed; + sprite->x -= gStorage->scrollSpeed; break; } } #undef sState +#undef sTimer #undef sSpeed // Arrows for Deposit/Jump Box selection struct Sprite *CreateChooseBoxArrows(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority) { - u8 spriteId = CreateSprite(&sSpriteTemplate_Arrow, x, y, subpriority); + u8 spriteId = CreateSprite(&sSpriteTemplate_BoxScrollArrow, x, y, subpriority); if (spriteId == MAX_SPRITES) return NULL; diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c index 8074b57c4..4eecee08b 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_5.c @@ -10,424 +10,444 @@ #include "constants/moves.h" static EWRAM_DATA struct Pokemon sMonBeingCarried = {}; -static EWRAM_DATA s8 sBoxCursorArea = 0; -static EWRAM_DATA s8 sBoxCursorPosition = 0; +static EWRAM_DATA s8 sCursorArea = 0; +static EWRAM_DATA s8 sCursorPosition = 0; static EWRAM_DATA bool8 sIsMonBeingMoved = FALSE; static EWRAM_DATA u8 sMovingMonOrigBoxId = 0; static EWRAM_DATA u8 sMovingMonOrigBoxPos = 0; -static EWRAM_DATA bool8 sCanOnlyMove = FALSE; -static EWRAM_DATA u8 gUnknown_2039826 = 0; +static EWRAM_DATA bool8 sInMultiMoveMode = FALSE; +static EWRAM_DATA u8 sSavedCursorPosition = 0; -static void sub_80929B0(void); -static bool8 MonPlaceChange_Move(void); +static void DoCursorNewPosUpdate(void); +static bool8 MonPlaceChange_Grab(void); static bool8 MonPlaceChange_Place(void); static bool8 MonPlaceChange_Shift(void); -static bool8 sub_8092E00(void); -static bool8 sub_8092E10(void); -static bool8 sub_8092E20(void); -static bool8 sub_8092E54(void); +static bool8 MonPlaceChange_DoMoveCursorDown(void); +static bool8 MonPlaceChange_DoMoveCursorUp(void); +static bool8 MonPlaceChange_MoveCursorDown(void); +static bool8 MonPlaceChange_MoveCursorUp(void); static void MoveMon(void); static void PlaceMon(void); static void SetMovedMonData(u8 boxId, u8 cursorPos); static void SetPlacedMonData(u8 boxId, u8 cursorPos); static void PurgeMonOrBoxMon(u8 boxId, u8 cursorPos); static void SetShiftedMonData(u8 boxId, u8 cursorPos); -static void sub_8093A10(void); -static void SetCursorMonData(void *cursorMon, u8 mode); -static void sub_8093AAC(void); -static u8 InBoxInput_Normal(void); -static u8 InBoxInput_GrabbingMultiple(void); -static u8 InBoxInput_MovingMultiple(void); +static void TrySetDisplayMonData(void); +static void SetDisplayMonData(void *pokemon, u8 mode); +static void ReshowDisplayMon(void); +static u8 HandleInput_InBox_Normal(void); +static u8 HandleInput_InBox_GrabbingMultiple(void); +static u8 HandleInput_InBox_MovingMultiple(void); static void AddBoxMenu(void); -static bool8 sub_8094924(void); -static bool8 sub_809494C(void); -static bool8 sub_8094A0C(void); -static void sub_8094AD8(void); -static void sub_8094C84(void); +static bool8 SetSelectionMenuTexts(void); +static bool8 SetMenuTextsForMon(void); +static bool8 SetMenuTextsForItem(void); +static void CreateCursorSprites(void); +static void ToggleCursorMultiMoveMode(void); -static const u16 sHandCursorPalette[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal"); +static const u16 sPokeStorageMisc1Pal[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal"); static const u16 sHandCursorTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D2BEC.4bpp"); static const u16 sHandCursorShadowTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D33EC.4bpp"); -void sub_80922C0(void) +// Modes for selecting and moving Pokémon in the box. Multiple Pokémon can be +// selected by pressing the Select button to change the cursor, then holding +// down the A button while moving the cursor around. This is +// MOVE_MODE_MULTIPLE_SELECTING. After releasing the A button, those Pokémon +// will be picked up and can be moved around as a single unit. This is +// MOVE_MODE_MULTIPLE_MOVING. +enum { - if (gPSSData->boxOption != OPTION_DEPOSIT) - sBoxCursorArea = CURSOR_AREA_IN_BOX; - else - sBoxCursorArea = CURSOR_AREA_IN_PARTY; + MOVE_MODE_NORMAL, + MOVE_MODE_MULTIPLE_SELECTING, + MOVE_MODE_MULTIPLE_MOVING, +}; - sBoxCursorPosition = 0; +void InitCursor(void) +{ + if (gStorage->boxOption != OPTION_DEPOSIT) + sCursorArea = CURSOR_AREA_IN_BOX; + else + sCursorArea = CURSOR_AREA_IN_PARTY; + + sCursorPosition = 0; sIsMonBeingMoved = FALSE; sMovingMonOrigBoxId = 0; sMovingMonOrigBoxPos = 0; - sCanOnlyMove = FALSE; - sub_8092B50(); - sub_8094AD8(); - gPSSData->cursorPrevHorizPos = 1; - gPSSData->inBoxMovingMode = 0; - sub_8093A10(); + sInMultiMoveMode = FALSE; + ClearSavedCursorPos(); + CreateCursorSprites(); + gStorage->cursorPrevPartyPos = 1; + gStorage->inBoxMovingMode = MOVE_MODE_NORMAL; + TrySetDisplayMonData(); } -void sub_8092340(void) +void InitCursorOnReopen(void) { - sub_8094AD8(); - sub_8093AAC(); - gPSSData->cursorPrevHorizPos = 1; - gPSSData->inBoxMovingMode = 0; + CreateCursorSprites(); + ReshowDisplayMon(); + gStorage->cursorPrevPartyPos = 1; + gStorage->inBoxMovingMode = MOVE_MODE_NORMAL; if (sIsMonBeingMoved) { - gPSSData->movingMon = sMonBeingCarried; + gStorage->movingMon = sMonBeingCarried; CreateMovingMonIcon(); } } -static void sub_8092398(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y) +static void GetCursorCoordsByPos(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y) { switch (cursorArea) { case CURSOR_AREA_IN_BOX: - *x = (cursorPosition % IN_BOX_ROWS) * 24 + 100; - *y = (cursorPosition / IN_BOX_ROWS) * 24 + 32; + *x = (cursorPosition % IN_BOX_COLUMNS) * 24 + 100; + *y = (cursorPosition / IN_BOX_COLUMNS) * 24 + 32; break; case CURSOR_AREA_IN_PARTY: if (cursorPosition == 0) { - *x = 0x68; - *y = 0x34; + *x = 104; + *y = 52; } else if (cursorPosition == PARTY_SIZE) { - *x = 0x98; - *y = 0x84; + *x = 152; + *y = 132; } else { - *x = 0x98; + *x = 152; *y = (cursorPosition - 1) * 24 + 4; } break; - case CURSOR_AREA_BOX: - *x = 0xa2; - *y = 0x0c; + case CURSOR_AREA_BOX_TITLE: + *x = 162; + *y = 12; break; case CURSOR_AREA_BUTTONS: *y = sIsMonBeingMoved ? 8 : 14; - *x = cursorPosition * 0x58 + 0x78; + *x = cursorPosition * 88 + 120; break; case 4: - *x = 0xa0; - *y = 0x60; + *x = 160; + *y = 96; break; } } -static u16 sub_8092458(void) +static u16 GetSpeciesAtCursorPosition(void) { - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - return GetMonData(&gPlayerParty[sBoxCursorPosition], MON_DATA_SPECIES); + return GetMonData(&gPlayerParty[sCursorPosition], MON_DATA_SPECIES); case CURSOR_AREA_IN_BOX: - return GetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_SPECIES); + return GetCurrentBoxMonData(sCursorPosition, MON_DATA_SPECIES); default: return SPECIES_NONE; } } -bool8 sub_80924A8(void) +bool8 UpdateCursorPos(void) { s16 tmp; - if (gPSSData->cursorMoveSteps == 0) + if (gStorage->cursorMoveSteps == 0) { - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return FALSE; else - return sub_809610C(); + return IsItemIconAnimActive(); } - else if (--gPSSData->cursorMoveSteps != 0) + else if (--gStorage->cursorMoveSteps != 0) { - gPSSData->cursorNewX += gPSSData->cursorSpeedX; - gPSSData->cursorNewY += gPSSData->cursorSpeedY; - gPSSData->cursorSprite->x = gPSSData->cursorNewX >> 8; - gPSSData->cursorSprite->y = gPSSData->cursorNewY >> 8; - if (gPSSData->cursorSprite->x > 0x100) + // Update position toward target + gStorage->cursorNewX += gStorage->cursorSpeedX; + gStorage->cursorNewY += gStorage->cursorSpeedY; + gStorage->cursorSprite->x = gStorage->cursorNewX >> 8; + gStorage->cursorSprite->y = gStorage->cursorNewY >> 8; + + // Limit cursor on right + if (gStorage->cursorSprite->x > DISPLAY_WIDTH + 16) { - tmp = gPSSData->cursorSprite->x - 0x100; - gPSSData->cursorSprite->x = tmp + 0x40; + tmp = gStorage->cursorSprite->x - (DISPLAY_WIDTH + 16); + gStorage->cursorSprite->x = tmp + 64; } - if (gPSSData->cursorSprite->x < 0x40) + + // Limit cursor on left + if (gStorage->cursorSprite->x < 64) { - tmp = 0x40 - gPSSData->cursorSprite->x; - gPSSData->cursorSprite->x = 0x100 - tmp; + tmp = 64 - gStorage->cursorSprite->x; + gStorage->cursorSprite->x = DISPLAY_WIDTH + 16 - tmp; } - if (gPSSData->cursorSprite->y > 0xb0) + + // Limit cursor on bottom + if (gStorage->cursorSprite->y > DISPLAY_HEIGHT + 16) { - tmp = gPSSData->cursorSprite->y - 0xb0; - gPSSData->cursorSprite->y = tmp - 0x10; + tmp = gStorage->cursorSprite->y - (DISPLAY_HEIGHT + 16); + gStorage->cursorSprite->y = tmp - 16; } - if (gPSSData->cursorSprite->y < -0x10) + + // Limit cursor on top + if (gStorage->cursorSprite->y < -16) { - tmp = -0x10 - gPSSData->cursorSprite->y; - gPSSData->cursorSprite->y = 0xb0 - tmp; + tmp = -16 - gStorage->cursorSprite->y; + gStorage->cursorSprite->y = DISPLAY_HEIGHT + 16 - tmp; } - if (gPSSData->cursorFlipTimer && --gPSSData->cursorFlipTimer == 0) - gPSSData->cursorSprite->vFlip = (gPSSData->cursorSprite->vFlip == FALSE); + + // Cursor flips vertically when moving on/off the top buttons + if (gStorage->cursorFlipTimer && --gStorage->cursorFlipTimer == 0) + gStorage->cursorSprite->vFlip = (gStorage->cursorSprite->vFlip == FALSE); } else { - gPSSData->cursorSprite->x = gPSSData->cursorTargetX; - gPSSData->cursorSprite->y = gPSSData->cursorTargetY; - sub_80929B0(); + // Time is up for cursor movement, make sure it's exactly at target + gStorage->cursorSprite->x = gStorage->cursorTargetX; + gStorage->cursorSprite->y = gStorage->cursorTargetY; + DoCursorNewPosUpdate(); } return TRUE; } -static void sub_8092604(u8 newCurosrArea, u8 newCursorPosition) +static void InitNewCursorPos(u8 newCursorArea, u8 newCursorPosition) { u16 x, y; - sub_8092398(newCurosrArea, newCursorPosition, &x, &y); - gPSSData->newCursorArea = newCurosrArea; - gPSSData->newCursorPosition = newCursorPosition; - gPSSData->cursorTargetX = x; - gPSSData->cursorTargetY = y; + GetCursorCoordsByPos(newCursorArea, newCursorPosition, &x, &y); + gStorage->newCursorArea = newCursorArea; + gStorage->newCursorPosition = newCursorPosition; + gStorage->cursorTargetX = x; + gStorage->cursorTargetY = y; } -static void sub_8092660(void) +static void InitCursorMove(void) { - int r7, r0; + int yDistance, xDistance; - if (gPSSData->cursorVerticalWrap != 0 || gPSSData->cursorHorizontalWrap != 0) - gPSSData->cursorMoveSteps = 12; + if (gStorage->cursorVerticalWrap != 0 || gStorage->cursorHorizontalWrap != 0) + gStorage->cursorMoveSteps = 12; else - gPSSData->cursorMoveSteps = 6; + gStorage->cursorMoveSteps = 6; - if (gPSSData->cursorFlipTimer) - gPSSData->cursorFlipTimer = gPSSData->cursorMoveSteps >> 1; + if (gStorage->cursorFlipTimer) + gStorage->cursorFlipTimer = gStorage->cursorMoveSteps / 2; - switch (gPSSData->cursorVerticalWrap) + switch (gStorage->cursorVerticalWrap) { default: - r7 = gPSSData->cursorTargetY - gPSSData->cursorSprite->y; + yDistance = gStorage->cursorTargetY - gStorage->cursorSprite->y; break; case -1: - r7 = gPSSData->cursorTargetY - 0xc0 - gPSSData->cursorSprite->y; + yDistance = gStorage->cursorTargetY - 192 - gStorage->cursorSprite->y; break; case 1: - r7 = gPSSData->cursorTargetY + 0xc0 - gPSSData->cursorSprite->y; + yDistance = gStorage->cursorTargetY + 192 - gStorage->cursorSprite->y; break; } - switch (gPSSData->cursorHorizontalWrap) + switch (gStorage->cursorHorizontalWrap) { default: - r0 = gPSSData->cursorTargetX - gPSSData->cursorSprite->x; + xDistance = gStorage->cursorTargetX - gStorage->cursorSprite->x; break; case -1: - r0 = gPSSData->cursorTargetX - 0xc0 - gPSSData->cursorSprite->x; + xDistance = gStorage->cursorTargetX - 192 - gStorage->cursorSprite->x; break; case 1: - r0 = gPSSData->cursorTargetX + 0xc0 - gPSSData->cursorSprite->x; + xDistance = gStorage->cursorTargetX + 192 - gStorage->cursorSprite->x; break; } - r7 <<= 8; - r0 <<= 8; - gPSSData->cursorSpeedX = r0 / gPSSData->cursorMoveSteps; - gPSSData->cursorSpeedY = r7 / gPSSData->cursorMoveSteps; - gPSSData->cursorNewX = gPSSData->cursorSprite->x << 8; - gPSSData->cursorNewY = gPSSData->cursorSprite->y << 8; + yDistance <<= 8; + xDistance <<= 8; + gStorage->cursorSpeedX = xDistance / gStorage->cursorMoveSteps; + gStorage->cursorSpeedY = yDistance / gStorage->cursorMoveSteps; + gStorage->cursorNewX = gStorage->cursorSprite->x << 8; + gStorage->cursorNewY = gStorage->cursorSprite->y << 8; } -static void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition) +static void SetCursorPosition(u8 newCursorArea, u8 newCursorPosition) { - sub_8092604(newCurosrArea, newCursorPosition); - sub_8092660(); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + InitNewCursorPos(newCursorArea, newCursorPosition); + InitCursorMove(); + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - if (gPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved) - StartSpriteAnim(gPSSData->cursorSprite, 1); + if (gStorage->inBoxMovingMode == MOVE_MODE_NORMAL && !sIsMonBeingMoved) + StartSpriteAnim(gStorage->cursorSprite, 1); } else { if (!IsActiveItemMoving()) - StartSpriteAnim(gPSSData->cursorSprite, 1); + StartSpriteAnim(gStorage->cursorSprite, 1); } - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) - sub_8095D44(CURSOR_AREA_IN_BOX, sBoxCursorPosition); - else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) - sub_8095D44(CURSOR_AREA_IN_PARTY, sBoxCursorPosition); + if (sCursorArea == CURSOR_AREA_IN_BOX) + TryHideItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition); + else if (sCursorArea == CURSOR_AREA_IN_PARTY) + TryHideItemIconAtPos(CURSOR_AREA_IN_PARTY, sCursorPosition); - if (newCurosrArea == CURSOR_AREA_IN_BOX) - sub_8095C84(newCurosrArea, newCursorPosition); - else if (newCurosrArea == CURSOR_AREA_IN_PARTY) - sub_8095C84(newCurosrArea, newCursorPosition); + if (newCursorArea == CURSOR_AREA_IN_BOX) + TryLoadItemIconAtPos(newCursorArea, newCursorPosition); + else if (newCursorArea == CURSOR_AREA_IN_PARTY) + TryLoadItemIconAtPos(newCursorArea, newCursorPosition); } - if (newCurosrArea == CURSOR_AREA_IN_PARTY && sBoxCursorArea != CURSOR_AREA_IN_PARTY) + if (newCursorArea == CURSOR_AREA_IN_PARTY && sCursorArea != CURSOR_AREA_IN_PARTY) { - gPSSData->cursorPrevHorizPos = newCurosrArea; - gPSSData->cursorShadowSprite->invisible = TRUE; + gStorage->cursorPrevPartyPos = 1; + gStorage->cursorShadowSprite->invisible = TRUE; } - switch (newCurosrArea) + switch (newCursorArea) { case CURSOR_AREA_IN_PARTY: - case CURSOR_AREA_BOX: + case CURSOR_AREA_BOX_TITLE: case CURSOR_AREA_BUTTONS: - gPSSData->cursorSprite->oam.priority = 1; - gPSSData->cursorShadowSprite->invisible = TRUE; - gPSSData->cursorShadowSprite->oam.priority = 1; + gStorage->cursorSprite->oam.priority = 1; + gStorage->cursorShadowSprite->invisible = TRUE; + gStorage->cursorShadowSprite->oam.priority = 1; break; case CURSOR_AREA_IN_BOX: - if (gPSSData->inBoxMovingMode != 0) + if (gStorage->inBoxMovingMode != MOVE_MODE_NORMAL) { - gPSSData->cursorSprite->oam.priority = 0; - gPSSData->cursorShadowSprite->invisible = TRUE; + gStorage->cursorSprite->oam.priority = 0; + gStorage->cursorShadowSprite->invisible = TRUE; } else { - gPSSData->cursorSprite->oam.priority = 2; - if (sBoxCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved) + gStorage->cursorSprite->oam.priority = 2; + if (sCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved) SetMovingMonPriority(2); } break; } } -static void sub_80929B0(void) +static void DoCursorNewPosUpdate(void) { - sBoxCursorArea = gPSSData->newCursorArea; - sBoxCursorPosition = gPSSData->newCursorPosition; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + sCursorArea = gStorage->newCursorArea; + sCursorPosition = gStorage->newCursorPosition; + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - if (gPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved) - StartSpriteAnim(gPSSData->cursorSprite, 1); - } - else - { - if (!IsActiveItemMoving()) - StartSpriteAnim(gPSSData->cursorSprite, 1); + if (gStorage->inBoxMovingMode == MOVE_MODE_NORMAL && !sIsMonBeingMoved) + StartSpriteAnim(gStorage->cursorSprite, 1); } + else if (!IsActiveItemMoving()) + StartSpriteAnim(gStorage->cursorSprite, 1); - sub_8093A10(); - switch (sBoxCursorArea) + TrySetDisplayMonData(); + switch (sCursorArea) { case CURSOR_AREA_BUTTONS: SetMovingMonPriority(1); break; - case CURSOR_AREA_BOX: + case CURSOR_AREA_BOX_TITLE: AnimateBoxScrollArrows(TRUE); break; case CURSOR_AREA_IN_PARTY: - gPSSData->cursorShadowSprite->subpriority = 13; + gStorage->cursorShadowSprite->subpriority = 13; SetMovingMonPriority(1); break; case CURSOR_AREA_IN_BOX: - if (gPSSData->inBoxMovingMode == 0) + if (gStorage->inBoxMovingMode == MOVE_MODE_NORMAL) { - gPSSData->cursorSprite->oam.priority = 1; - gPSSData->cursorShadowSprite->oam.priority = 2; - gPSSData->cursorShadowSprite->subpriority = 21; - gPSSData->cursorShadowSprite->invisible = FALSE; + gStorage->cursorSprite->oam.priority = 1; + gStorage->cursorShadowSprite->oam.priority = 2; + gStorage->cursorShadowSprite->subpriority = 21; + gStorage->cursorShadowSprite->invisible = FALSE; SetMovingMonPriority(2); } break; } } -void sub_8092AE4(void) +void SetCursorInParty(void) { u8 partyCount; if (!sIsMonBeingMoved) - { partyCount = 0; - } else { partyCount = CalculatePlayerPartyCount(); if (partyCount >= PARTY_SIZE) partyCount = PARTY_SIZE - 1; } - if (gPSSData->cursorSprite->vFlip) - gPSSData->cursorFlipTimer = 1; - sub_80927E8(CURSOR_AREA_IN_PARTY, partyCount); + if (gStorage->cursorSprite->vFlip) + gStorage->cursorFlipTimer = 1; + SetCursorPosition(CURSOR_AREA_IN_PARTY, partyCount); } -void sub_8092B3C(u8 cursorBoxPosition) +void SetCursorBoxPosition(u8 cursorBoxPosition) { - sub_80927E8(CURSOR_AREA_IN_BOX, cursorBoxPosition); + SetCursorPosition(CURSOR_AREA_IN_BOX, cursorBoxPosition); } -void sub_8092B50(void) +void ClearSavedCursorPos(void) { - gUnknown_2039826 = 0; + sSavedCursorPosition = 0; } -void sub_8092B5C(void) +void SaveCursorPos(void) { - gUnknown_2039826 = sBoxCursorPosition; + sSavedCursorPosition = sCursorPosition; } -u8 sub_8092B70(void) +u8 GetSavedCursorPos(void) { - return gUnknown_2039826; + return sSavedCursorPosition; } -void InitMonPlaceChange(u8 a0) +void InitMonPlaceChange(u8 type) { static bool8 (*const placeChangeFuncs[])(void) = { - MonPlaceChange_Move, - MonPlaceChange_Place, - MonPlaceChange_Shift, + [CHANGE_GRAB] = MonPlaceChange_Grab, + [CHANGE_PLACE] = MonPlaceChange_Place, + [CHANGE_SHIFT] = MonPlaceChange_Shift, }; - gPSSData->monPlaceChangeFunc = placeChangeFuncs[a0]; - gPSSData->monPlaceChangeState = 0; + gStorage->monPlaceChangeFunc = placeChangeFuncs[type]; + gStorage->monPlaceChangeState = 0; } -void sub_8092BAC(bool8 arg0) +void InitMultiMonPlaceChange(bool8 moveCursorUp) { - if (!arg0) - gPSSData->monPlaceChangeFunc = sub_8092E00; + if (!moveCursorUp) + gStorage->monPlaceChangeFunc = MonPlaceChange_DoMoveCursorDown; else - gPSSData->monPlaceChangeFunc = sub_8092E10; + gStorage->monPlaceChangeFunc = MonPlaceChange_DoMoveCursorUp; - gPSSData->monPlaceChangeState = 0; + gStorage->monPlaceChangeState = 0; } bool8 DoMonPlaceChange(void) { - return gPSSData->monPlaceChangeFunc(); + return gStorage->monPlaceChangeFunc(); } -static bool8 MonPlaceChange_Move(void) +static bool8 MonPlaceChange_Grab(void) { - switch (gPSSData->monPlaceChangeState) + switch (gStorage->monPlaceChangeState) { case 0: if (sIsMonBeingMoved) return FALSE; - StartSpriteAnim(gPSSData->cursorSprite, 2); - gPSSData->monPlaceChangeState++; + StartSpriteAnim(gStorage->cursorSprite, 2); + gStorage->monPlaceChangeState++; break; case 1: - if (!sub_8092E20()) + if (!MonPlaceChange_MoveCursorDown()) { - StartSpriteAnim(gPSSData->cursorSprite, 3); + StartSpriteAnim(gStorage->cursorSprite, 3); MoveMon(); - gPSSData->monPlaceChangeState++; + gStorage->monPlaceChangeState++; } break; case 2: - if (!sub_8092E54()) - gPSSData->monPlaceChangeState++; + if (!MonPlaceChange_MoveCursorUp()) + gStorage->monPlaceChangeState++; break; case 3: return FALSE; @@ -438,21 +458,21 @@ static bool8 MonPlaceChange_Move(void) static bool8 MonPlaceChange_Place(void) { - switch (gPSSData->monPlaceChangeState) + switch (gStorage->monPlaceChangeState) { case 0: - if (!sub_8092E20()) + if (!MonPlaceChange_MoveCursorDown()) { - StartSpriteAnim(gPSSData->cursorSprite, 2); + StartSpriteAnim(gStorage->cursorSprite, 2); PlaceMon(); - gPSSData->monPlaceChangeState++; + gStorage->monPlaceChangeState++; } break; case 1: - if (!sub_8092E54()) + if (!MonPlaceChange_MoveCursorUp()) { - StartSpriteAnim(gPSSData->cursorSprite, 0); - gPSSData->monPlaceChangeState++; + StartSpriteAnim(gStorage->cursorSprite, 0); + gStorage->monPlaceChangeState++; } break; case 2: @@ -464,30 +484,30 @@ static bool8 MonPlaceChange_Place(void) static bool8 MonPlaceChange_Shift(void) { - switch (gPSSData->monPlaceChangeState) + switch (gStorage->monPlaceChangeState) { case 0: - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - gPSSData->shiftBoxId = TOTAL_BOXES_COUNT; + gStorage->shiftBoxId = TOTAL_BOXES_COUNT; break; case CURSOR_AREA_IN_BOX: - gPSSData->shiftBoxId = StorageGetCurrentBox(); + gStorage->shiftBoxId = StorageGetCurrentBox(); break; default: return FALSE; } - StartSpriteAnim(gPSSData->cursorSprite, 2); - sub_8090E08(gPSSData->shiftBoxId, sBoxCursorPosition); - gPSSData->monPlaceChangeState++; + StartSpriteAnim(gStorage->cursorSprite, 2); + SetShiftMonSpritePtr(gStorage->shiftBoxId, sCursorPosition); + gStorage->monPlaceChangeState++; break; case 1: - if (!sub_8090E74()) + if (!ShiftMons()) { - StartSpriteAnim(gPSSData->cursorSprite, 3); - SetShiftedMonData(gPSSData->shiftBoxId, sBoxCursorPosition); - gPSSData->monPlaceChangeState++; + StartSpriteAnim(gStorage->cursorSprite, 3); + SetShiftedMonData(gStorage->shiftBoxId, sCursorPosition); + gStorage->monPlaceChangeState++; } break; case 2: @@ -497,41 +517,41 @@ static bool8 MonPlaceChange_Shift(void) return TRUE; } -static bool8 sub_8092E00(void) +static bool8 MonPlaceChange_DoMoveCursorDown(void) { - return sub_8092E20(); + return MonPlaceChange_MoveCursorDown(); } -static bool8 sub_8092E10(void) +static bool8 MonPlaceChange_DoMoveCursorUp(void) { - return sub_8092E54(); + return MonPlaceChange_MoveCursorUp(); } -static bool8 sub_8092E20(void) +static bool8 MonPlaceChange_MoveCursorDown(void) { - switch (gPSSData->cursorSprite->y2) + switch (gStorage->cursorSprite->y2) { default: - gPSSData->cursorSprite->y2++; + gStorage->cursorSprite->y2++; break; case 0: - gPSSData->cursorSprite->y2++; + gStorage->cursorSprite->y2++; break; - case 8: + case 8: // Cursor has reached bottom return FALSE; } return TRUE; } -static bool8 sub_8092E54(void) +static bool8 MonPlaceChange_MoveCursorUp(void) { - switch (gPSSData->cursorSprite->y2) + switch (gStorage->cursorSprite->y2) { - case 0: + case 0: // Cursor has reached top return FALSE; default: - gPSSData->cursorSprite->y2--; + gStorage->cursorSprite->y2--; break; } @@ -540,17 +560,17 @@ static bool8 sub_8092E54(void) static void MoveMon(void) { - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); - sub_8090CC0(MODE_PARTY, sBoxCursorPosition); + SetMovedMonData(TOTAL_BOXES_COUNT, sCursorPosition); + SetMovingMonSprite(MODE_PARTY, sCursorPosition); break; case CURSOR_AREA_IN_BOX: - if (gPSSData->inBoxMovingMode == 0) + if (gStorage->inBoxMovingMode == MOVE_MODE_NORMAL) { - SetMovedMonData(StorageGetCurrentBox(), sBoxCursorPosition); - sub_8090CC0(MODE_BOX, sBoxCursorPosition); + SetMovedMonData(StorageGetCurrentBox(), sCursorPosition); + SetMovingMonSprite(MODE_BOX, sCursorPosition); } break; default: @@ -564,16 +584,16 @@ static void PlaceMon(void) { u8 boxId; - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - SetPlacedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); - sub_8090D58(TOTAL_BOXES_COUNT, sBoxCursorPosition); + SetPlacedMonData(TOTAL_BOXES_COUNT, sCursorPosition); + SetPlacedMonSprite(TOTAL_BOXES_COUNT, sCursorPosition); break; case CURSOR_AREA_IN_BOX: boxId = StorageGetCurrentBox(); - SetPlacedMonData(boxId, sBoxCursorPosition); - sub_8090D58(boxId, sBoxCursorPosition); + SetPlacedMonData(boxId, sCursorPosition); + SetPlacedMonSprite(boxId, sCursorPosition); break; default: return; @@ -582,17 +602,17 @@ static void PlaceMon(void) sIsMonBeingMoved = FALSE; } -void sub_8092F54(void) +void DoTrySetDisplayMonData(void) { - sub_8093A10(); + TrySetDisplayMonData(); } static void SetMovedMonData(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) - gPSSData->movingMon = gPlayerParty[sBoxCursorPosition]; + gStorage->movingMon = gPlayerParty[sCursorPosition]; else - BoxMonAtToMon(boxId, position, &gPSSData->movingMon); + BoxMonAtToMon(boxId, position, &gStorage->movingMon); PurgeMonOrBoxMon(boxId, position); sMovingMonOrigBoxId = boxId; @@ -602,13 +622,11 @@ static void SetMovedMonData(u8 boxId, u8 position) static void SetPlacedMonData(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) - { - gPlayerParty[position] = gPSSData->movingMon; - } + gPlayerParty[position] = gStorage->movingMon; else { - BoxMonRestorePP(&gPSSData->movingMon.box); - SetBoxMonAt(boxId, position, &gPSSData->movingMon.box); + BoxMonRestorePP(&gStorage->movingMon.box); + SetBoxMonAt(boxId, position, &gStorage->movingMon.box); } } @@ -623,13 +641,13 @@ static void PurgeMonOrBoxMon(u8 boxId, u8 position) static void SetShiftedMonData(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) - gPSSData->field_2108 = gPlayerParty[position]; + gStorage->tempMon = gPlayerParty[position]; else - BoxMonAtToMon(boxId, position, &gPSSData->field_2108); + BoxMonAtToMon(boxId, position, &gStorage->tempMon); SetPlacedMonData(boxId, position); - gPSSData->movingMon = gPSSData->field_2108; - SetCursorMonData(&gPSSData->movingMon, MODE_PARTY); + gStorage->movingMon = gStorage->tempMon; + SetDisplayMonData(&gStorage->movingMon, MODE_PARTY); sMovingMonOrigBoxId = boxId; sMovingMonOrigBoxPos = position; } @@ -648,245 +666,238 @@ bool8 TryStorePartyMonInBox(u8 boxId) } else { - SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); + SetMovedMonData(TOTAL_BOXES_COUNT, sCursorPosition); SetPlacedMonData(boxId, boxPosition); - DestroyPartyMonIcon(sBoxCursorPosition); + DestroyPartyMonIcon(sCursorPosition); } if (boxId == StorageGetCurrentBox()) - sub_80901EC(boxPosition); + CreateBoxMonIconAtPos(boxPosition); - StartSpriteAnim(gPSSData->cursorSprite, 1); + StartSpriteAnim(gStorage->cursorSprite, 1); return TRUE; } -void sub_8093174(void) +void ResetSelectionAfterDeposit(void) { - StartSpriteAnim(gPSSData->cursorSprite, 0); - sub_8093A10(); + StartSpriteAnim(gStorage->cursorSprite, 0); + TrySetDisplayMonData(); } -void sub_8093194(void) +void InitReleaseMon(void) { u8 mode; if (sIsMonBeingMoved) - mode = MODE_2; - else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + mode = MODE_MOVE; + else if (sCursorArea == CURSOR_AREA_IN_PARTY) mode = MODE_PARTY; else mode = MODE_BOX; - sub_8090FC4(mode, sBoxCursorPosition); - StringCopy(gPSSData->field_21E0, gPSSData->displayMonName); + DoReleaseMonAnim(mode, sCursorPosition); + StringCopy(gStorage->releaseMonName, gStorage->displayMonNickname); } -bool8 sub_80931EC(void) +bool8 TryHideReleaseMon(void) { - if (!sub_8091084()) + if (!TryHideReleaseMonSprite()) { - StartSpriteAnim(gPSSData->cursorSprite, 0); + StartSpriteAnim(gStorage->cursorSprite, 0); return FALSE; } else - { return TRUE; - } } void ReleaseMon(void) { u8 boxId; - sub_80910CC(); + DestroyReleaseMonIcon(); if (sIsMonBeingMoved) - { sIsMonBeingMoved = FALSE; - } else { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + if (sCursorArea == CURSOR_AREA_IN_PARTY) boxId = TOTAL_BOXES_COUNT; else boxId = StorageGetCurrentBox(); - PurgeMonOrBoxMon(boxId, sBoxCursorPosition); + PurgeMonOrBoxMon(boxId, sCursorPosition); } - sub_8093A10(); + TrySetDisplayMonData(); } -void sub_8093264(void) +void TrySetCursorFistAnim(void) { if (sIsMonBeingMoved) - StartSpriteAnim(gPSSData->cursorSprite, 3); + StartSpriteAnim(gStorage->cursorSprite, 3); } void InitCanReleaseMonVars(void) { - u16 knownIdx; + u16 knownMoveFlags; if (sIsMonBeingMoved) { - gPSSData->field_2108 = gPSSData->movingMon; - gPSSData->field_2170 = -1; - gPSSData->field_2171 = -1; + gStorage->tempMon = gStorage->movingMon; + gStorage->releaseBoxId = -1; + gStorage->releaseBoxPos = -1; } else { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + if (sCursorArea == CURSOR_AREA_IN_PARTY) { - gPSSData->field_2108 = gPlayerParty[sBoxCursorPosition]; - gPSSData->field_2170 = TOTAL_BOXES_COUNT; + gStorage->tempMon = gPlayerParty[sCursorPosition]; + gStorage->releaseBoxId = TOTAL_BOXES_COUNT; } else { - BoxMonAtToMon(StorageGetCurrentBox(), sBoxCursorPosition, &gPSSData->field_2108); - gPSSData->field_2170 = StorageGetCurrentBox(); + BoxMonAtToMon(StorageGetCurrentBox(), sCursorPosition, &gStorage->tempMon); + gStorage->releaseBoxId = StorageGetCurrentBox(); } - gPSSData->field_2171 = sBoxCursorPosition; + gStorage->releaseBoxPos = sCursorPosition; } - gPSSData->isSurfMon = FALSE; - gPSSData->isDiveMon = FALSE; - gPSSData->field_2176[0] = MOVE_SURF; - gPSSData->field_2176[1] = MOVE_DIVE; - gPSSData->field_2176[2] = MOVES_COUNT; - knownIdx = GetMonData(&gPSSData->field_2108, MON_DATA_KNOWN_MOVES, (u8 *)gPSSData->field_2176); - gPSSData->isSurfMon = knownIdx & 1; - gPSSData->isDiveMon = (knownIdx >> 1) & 1; - if (gPSSData->isSurfMon || gPSSData->isDiveMon) - { - gPSSData->field_216D = 0; - } + gStorage->isSurfMon = FALSE; + gStorage->isDiveMon = FALSE; + gStorage->restrictedMoveList[0] = MOVE_SURF; + gStorage->restrictedMoveList[1] = MOVE_DIVE; + gStorage->restrictedMoveList[2] = MOVES_COUNT; + knownMoveFlags = GetMonData(&gStorage->tempMon, MON_DATA_KNOWN_MOVES, (u8 *)gStorage->restrictedMoveList); + gStorage->isSurfMon = knownMoveFlags & 1; + gStorage->isDiveMon = (knownMoveFlags >> 1) & 1; + if (gStorage->isSurfMon || gStorage->isDiveMon) + gStorage->releaseMonStatusResolved = FALSE; else { - gPSSData->field_216D = 1; - gPSSData->field_216C = 1; + gStorage->releaseMonStatusResolved = TRUE; + gStorage->releaseMonStatus = RELEASE_MON_ALLOWED; } - gPSSData->field_2172 = 0; + gStorage->releaseCheckState = 0; } s8 RunCanReleaseMon(void) { u16 i; - u16 knownMoves; + u16 knownMoveFlags; - if (gPSSData->field_216D) - return gPSSData->field_216C; + if (gStorage->releaseMonStatusResolved) + return gStorage->releaseMonStatus; - switch (gPSSData->field_2172) + switch (gStorage->releaseCheckState) { case 0: for (i = 0; i < PARTY_SIZE; i++) { - if (gPSSData->field_2170 != TOTAL_BOXES_COUNT || gPSSData->field_2171 != i) + if (gStorage->releaseBoxId != TOTAL_BOXES_COUNT || gStorage->releaseBoxPos != i) { - knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, (u8 *)gPSSData->field_2176); - if (knownMoves & 1) - gPSSData->isSurfMon = FALSE; - if (knownMoves & 2) - gPSSData->isDiveMon = FALSE; + knownMoveFlags = GetMonData(&gPlayerParty[i], MON_DATA_KNOWN_MOVES, (u8 *)gStorage->restrictedMoveList); + if (knownMoveFlags & 1) + gStorage->isSurfMon = FALSE; + if (knownMoveFlags & 2) + gStorage->isDiveMon = FALSE; } } - if (!(gPSSData->isSurfMon || gPSSData->isDiveMon)) + if (!(gStorage->isSurfMon || gStorage->isDiveMon)) { - gPSSData->field_216D = 1; - gPSSData->field_216C = 1; + gStorage->releaseMonStatusResolved = TRUE; + gStorage->releaseMonStatus = RELEASE_MON_ALLOWED; } else { - gPSSData->field_216E = 0; - gPSSData->field_216F = 0; - gPSSData->field_2172++; + gStorage->releaseCheckBoxId = 0; + gStorage->releaseCheckBoxPos = 0; + gStorage->releaseCheckState++; } break; case 1: + // for some reason, check only 5 mons in box each time this function is called for (i = 0; i < 5; i++) { - knownMoves = GetAndCopyBoxMonDataAt(gPSSData->field_216E, gPSSData->field_216F, MON_DATA_KNOWN_MOVES, (u8 *)gPSSData->field_2176); - if (knownMoves != 0 - && !(gPSSData->field_2170 == gPSSData->field_216E && gPSSData->field_2171 == gPSSData->field_216F)) + knownMoveFlags = GetAndCopyBoxMonDataAt(gStorage->releaseCheckBoxId, gStorage->releaseCheckBoxPos, MON_DATA_KNOWN_MOVES, (u8 *)gStorage->restrictedMoveList); + if (knownMoveFlags != 0 + && !(gStorage->releaseBoxId == gStorage->releaseCheckBoxId && gStorage->releaseBoxPos == gStorage->releaseCheckBoxPos)) { - if (knownMoves & 1) - gPSSData->isSurfMon = FALSE; - if (knownMoves & 2) - gPSSData->isDiveMon = FALSE; + if (knownMoveFlags & 1) + gStorage->isSurfMon = FALSE; + if (knownMoveFlags & 2) + gStorage->isDiveMon = FALSE; } - if (++gPSSData->field_216F >= IN_BOX_COUNT) + if (++gStorage->releaseCheckBoxPos >= IN_BOX_COUNT) { - gPSSData->field_216F = 0; - if (++gPSSData->field_216E >= TOTAL_BOXES_COUNT) + gStorage->releaseCheckBoxPos = 0; + if (++gStorage->releaseCheckBoxId >= TOTAL_BOXES_COUNT) { - gPSSData->field_216D = 1; - gPSSData->field_216C = 0; + gStorage->releaseMonStatusResolved = TRUE; + gStorage->releaseMonStatus = RELEASE_MON_NOT_ALLOWED; break; } } } - if (!(gPSSData->isSurfMon || gPSSData->isDiveMon)) + if (!(gStorage->isSurfMon || gStorage->isDiveMon)) { - gPSSData->field_216D = 1; - gPSSData->field_216C = 1; + gStorage->releaseMonStatusResolved = TRUE; + gStorage->releaseMonStatus = RELEASE_MON_ALLOWED; } break; } - return -1; + return RELEASE_MON_UNDETERMINED; } -void sub_8093630(void) +void SaveMovingMon(void) { if (sIsMonBeingMoved) - sMonBeingCarried = gPSSData->movingMon; + sMonBeingCarried = gStorage->movingMon; } -void sub_8093660(void) +void LoadSavedMovingMon(void) { if (sIsMonBeingMoved) { if (sMovingMonOrigBoxId == TOTAL_BOXES_COUNT) - gPSSData->movingMon = sMonBeingCarried; + gStorage->movingMon = sMonBeingCarried; else - gPSSData->movingMon.box = sMonBeingCarried.box; + gStorage->movingMon.box = sMonBeingCarried.box; } } -void sub_80936B8(void) +void InitSummaryScreenData(void) { if (sIsMonBeingMoved) { - sub_8093630(); - gPSSData->field_218C.mon = &sMonBeingCarried; - gPSSData->field_2187 = 0; - gPSSData->field_2186 = 0; - gPSSData->summaryScreenMode = PSS_MODE_NORMAL; + SaveMovingMon(); + gStorage->summaryMonPtr.mon = &sMonBeingCarried; + gStorage->summaryCursorPos = 0; + gStorage->summaryLastIndex = 0; + gStorage->summaryScreenMode = PSS_MODE_NORMAL; } - else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + else if (sCursorArea == CURSOR_AREA_IN_PARTY) { - gPSSData->field_218C.mon = gPlayerParty; - gPSSData->field_2187 = sBoxCursorPosition; - gPSSData->field_2186 = CountPartyMons() - 1; - gPSSData->summaryScreenMode = PSS_MODE_NORMAL; + gStorage->summaryMonPtr.mon = gPlayerParty; + gStorage->summaryCursorPos = sCursorPosition; + gStorage->summaryLastIndex = CountPartyMons() - 1; + gStorage->summaryScreenMode = PSS_MODE_NORMAL; } else { - gPSSData->field_218C.box = GetBoxedMonPtr(StorageGetCurrentBox(), 0); - gPSSData->field_2187 = sBoxCursorPosition; - gPSSData->field_2186 = IN_BOX_COUNT - 1; - gPSSData->summaryScreenMode = PSS_MODE_BOX; + gStorage->summaryMonPtr.box = GetBoxedMonPtr(StorageGetCurrentBox(), 0); + gStorage->summaryCursorPos = sCursorPosition; + gStorage->summaryLastIndex = IN_BOX_COUNT - 1; + gStorage->summaryScreenMode = PSS_MODE_BOX; } } -void sub_80937B4(void) +void SetSelectionAfterSummaryScreen(void) { if (sIsMonBeingMoved) - sub_8093660(); + LoadSavedMovingMon(); else - sBoxCursorPosition = GetLastViewedMonIndex(); + sCursorPosition = GetLastViewedMonIndex(); } -// file boundary maybe? - s16 CompactPartySlots(void) { s16 retVal = -1; @@ -902,9 +913,7 @@ s16 CompactPartySlots(void) last++; } else if (retVal == -1) - { retVal = i; - } } for (; last < PARTY_SIZE; last++) ZeroMonData(gPlayerParty + last); @@ -914,23 +923,21 @@ s16 CompactPartySlots(void) void SetMonMarkings(u8 markings) { - gPSSData->displayMonMarkings = markings; + gStorage->displayMonMarkings = markings; if (sIsMonBeingMoved) - { - SetMonData(&gPSSData->movingMon, MON_DATA_MARKINGS, &markings); - } + SetMonData(&gStorage->movingMon, MON_DATA_MARKINGS, &markings); else { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) - SetMonData(gPlayerParty + sBoxCursorPosition, MON_DATA_MARKINGS, &markings); - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) - SetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_MARKINGS, &markings); + if (sCursorArea == CURSOR_AREA_IN_PARTY) + SetMonData(gPlayerParty + sCursorPosition, MON_DATA_MARKINGS, &markings); + if (sCursorArea == CURSOR_AREA_IN_BOX) + SetCurrentBoxMonData(sCursorPosition, MON_DATA_MARKINGS, &markings); } } bool8 CanMovePartyMon(void) { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && !sIsMonBeingMoved && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0) + if (sCursorArea == CURSOR_AREA_IN_PARTY && !sIsMonBeingMoved && CountPartyAliveNonEggMonsExcept(sCursorPosition) == 0) return TRUE; else return FALSE; @@ -940,9 +947,9 @@ bool8 CanShiftMon(void) { if (sIsMonBeingMoved) { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0) + if (sCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sCursorPosition) == 0) { - if (gPSSData->displayMonIsEgg || GetMonData(&gPSSData->movingMon, MON_DATA_HP) == 0) + if (gStorage->displayMonIsEgg || GetMonData(&gStorage->movingMon, MON_DATA_HP) == 0) return FALSE; } return TRUE; @@ -957,146 +964,153 @@ bool8 IsMonBeingMoved(void) bool8 IsCursorOnBoxTitle(void) { - return (sBoxCursorArea == CURSOR_AREA_BOX); + return (sCursorArea == CURSOR_AREA_BOX_TITLE); } bool8 IsCursorOnCloseBox(void) { - return (sBoxCursorArea == CURSOR_AREA_BUTTONS && sBoxCursorPosition == 1); + return (sCursorArea == CURSOR_AREA_BUTTONS && sCursorPosition == 1); } bool8 IsCursorInBox(void) { - return (sBoxCursorArea == CURSOR_AREA_IN_BOX); + return (sCursorArea == CURSOR_AREA_IN_BOX); } -static void sub_8093A10(void) +static void TrySetDisplayMonData(void) { - gPSSData->setMosaic = (sIsMonBeingMoved == FALSE); + gStorage->setMosaic = (sIsMonBeingMoved == FALSE); if (!sIsMonBeingMoved) { - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - if (sBoxCursorPosition < PARTY_SIZE) + if (sCursorPosition < PARTY_SIZE) { - SetCursorMonData(&gPlayerParty[sBoxCursorPosition], MODE_PARTY); + SetDisplayMonData(&gPlayerParty[sCursorPosition], MODE_PARTY); break; } // fallthrough case CURSOR_AREA_BUTTONS: - case CURSOR_AREA_BOX: - SetCursorMonData(NULL, MODE_2); + case CURSOR_AREA_BOX_TITLE: + SetDisplayMonData(NULL, MODE_MOVE); break; case CURSOR_AREA_IN_BOX: - SetCursorMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sBoxCursorPosition), MODE_BOX); + SetDisplayMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sCursorPosition), MODE_BOX); break; } } } -static void sub_8093AAC(void) +static void ReshowDisplayMon(void) { if (sIsMonBeingMoved) - SetCursorMonData(&sMonBeingCarried, MODE_PARTY); + SetDisplayMonData(&sMonBeingCarried, MODE_PARTY); else - sub_8093A10(); + TrySetDisplayMonData(); } -static void SetCursorMonData(void *pokemon, u8 mode) +#define displayMonNicknameText displayMonTexts[0] +#define displayMonSpeciesNameText displayMonTexts[1] +#define displayMonGenderAndLevelText displayMonTexts[2] +#define displayMonItemNameText displayMonTexts[3] + +static void SetDisplayMonData(void *pokemon, u8 mode) { u8 *txtPtr; u16 gender; bool8 sanityIsBagEgg; - gPSSData->displayMonItemId = 0; + gStorage->displayMonItemId = ITEM_NONE; gender = MON_MALE; sanityIsBagEgg = FALSE; if (mode == MODE_PARTY) { struct Pokemon *mon = (struct Pokemon *)pokemon; - gPSSData->displayMonSpecies = GetMonData(mon, MON_DATA_SPECIES2); - if (gPSSData->displayMonSpecies != SPECIES_NONE) + gStorage->displayMonSpecies = GetMonData(mon, MON_DATA_SPECIES2); + if (gStorage->displayMonSpecies != SPECIES_NONE) { sanityIsBagEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG); if (sanityIsBagEgg) - gPSSData->displayMonIsEgg = TRUE; + gStorage->displayMonIsEgg = TRUE; else - gPSSData->displayMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG); + gStorage->displayMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG); - GetMonData(mon, MON_DATA_NICKNAME, gPSSData->displayMonName); - StringGet_Nickname(gPSSData->displayMonName); - gPSSData->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL); - gPSSData->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS); - gPSSData->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY); - gPSSData->displayMonPalette = GetMonFrontSpritePal(mon); + GetMonData(mon, MON_DATA_NICKNAME, gStorage->displayMonNickname); + StringGet_Nickname(gStorage->displayMonNickname); + gStorage->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL); + gStorage->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS); + gStorage->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY); + gStorage->displayMonPalette = GetMonFrontSpritePal(mon); gender = GetMonGender(mon); - gPSSData->displayMonItemId = GetMonData(mon, MON_DATA_HELD_ITEM); + gStorage->displayMonItemId = GetMonData(mon, MON_DATA_HELD_ITEM); } } else if (mode == MODE_BOX) { struct BoxPokemon *boxMon = (struct BoxPokemon *)pokemon; - gPSSData->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2); - if (gPSSData->displayMonSpecies != SPECIES_NONE) + gStorage->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2); + if (gStorage->displayMonSpecies != SPECIES_NONE) { u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID); sanityIsBagEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG); if (sanityIsBagEgg) - gPSSData->displayMonIsEgg = TRUE; + gStorage->displayMonIsEgg = TRUE; else - gPSSData->displayMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG); + gStorage->displayMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG); - - GetBoxMonData(boxMon, MON_DATA_NICKNAME, gPSSData->displayMonName); - StringGet_Nickname(gPSSData->displayMonName); - gPSSData->displayMonLevel = GetLevelFromBoxMonExp(boxMon); - gPSSData->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS); - gPSSData->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); - gPSSData->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(gPSSData->displayMonSpecies, otId, gPSSData->displayMonPersonality); - gender = GetGenderFromSpeciesAndPersonality(gPSSData->displayMonSpecies, gPSSData->displayMonPersonality); - gPSSData->displayMonItemId = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM); + GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStorage->displayMonNickname); + StringGet_Nickname(gStorage->displayMonNickname); + gStorage->displayMonLevel = GetLevelFromBoxMonExp(boxMon); + gStorage->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS); + gStorage->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); + gStorage->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(gStorage->displayMonSpecies, otId, gStorage->displayMonPersonality); + gender = GetGenderFromSpeciesAndPersonality(gStorage->displayMonSpecies, gStorage->displayMonPersonality); + gStorage->displayMonItemId = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM); } } else { - gPSSData->displayMonSpecies = SPECIES_NONE; - gPSSData->displayMonItemId = 0; + gStorage->displayMonSpecies = SPECIES_NONE; + gStorage->displayMonItemId = ITEM_NONE; } - if (gPSSData->displayMonSpecies == SPECIES_NONE) + if (gStorage->displayMonSpecies == SPECIES_NONE) { - StringFill(gPSSData->displayMonName, CHAR_SPACE, 5); - StringFill(gPSSData->displayMonTexts[0], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[1], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[2], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[3], CHAR_SPACE, 8); + StringFill(gStorage->displayMonNickname, CHAR_SPACE, 5); + StringFill(gStorage->displayMonNicknameText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonSpeciesNameText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonGenderAndLevelText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonItemNameText, CHAR_SPACE, 8); } - else if (gPSSData->displayMonIsEgg) + else if (gStorage->displayMonIsEgg) { if (sanityIsBagEgg) - StringCopyPadded(gPSSData->displayMonTexts[0], gPSSData->displayMonName, CHAR_SPACE, 5); + StringCopyPadded(gStorage->displayMonNicknameText, gStorage->displayMonNickname, CHAR_SPACE, 5); else - StringCopyPadded(gPSSData->displayMonTexts[0], gText_EggNickname, CHAR_SPACE, 8); + StringCopyPadded(gStorage->displayMonNicknameText, gText_EggNickname, CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[1], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[2], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[3], CHAR_SPACE, 8); + StringFill(gStorage->displayMonSpeciesNameText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonGenderAndLevelText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonItemNameText, CHAR_SPACE, 8); } else { - if (gPSSData->displayMonSpecies == SPECIES_NIDORAN_F || gPSSData->displayMonSpecies == SPECIES_NIDORAN_M) + if (gStorage->displayMonSpecies == SPECIES_NIDORAN_F || gStorage->displayMonSpecies == SPECIES_NIDORAN_M) gender = MON_GENDERLESS; - StringCopyPadded(gPSSData->displayMonTexts[0], gPSSData->displayMonName, CHAR_SPACE, 5); + // Buffer nickname + StringCopyPadded(gStorage->displayMonNicknameText, gStorage->displayMonNickname, CHAR_SPACE, 5); - txtPtr = gPSSData->displayMonTexts[1]; + // Buffer species name + txtPtr = gStorage->displayMonSpeciesNameText; *(txtPtr)++ = CHAR_SLASH; - StringCopyPadded(txtPtr, gSpeciesNames[gPSSData->displayMonSpecies], CHAR_SPACE, 5); + StringCopyPadded(txtPtr, gSpeciesNames[gStorage->displayMonSpecies], CHAR_SPACE, 5); - txtPtr = gPSSData->displayMonTexts[2]; + // Buffer gender and level + txtPtr = gStorage->displayMonGenderAndLevelText; *(txtPtr)++ = EXT_CTRL_CODE_BEGIN; *(txtPtr)++ = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; switch (gender) @@ -1128,377 +1142,356 @@ static void SetCursorMonData(void *pokemon, u8 mode) *(txtPtr++) = TEXT_COLOR_LIGHT_GRAY; *(txtPtr++) = CHAR_SPACE; *(txtPtr++) = CHAR_EXTRA_SYMBOL; - *(txtPtr++) = 5; // LV_2 + *(txtPtr++) = CHAR_LV_2; - txtPtr = ConvertIntToDecimalStringN(txtPtr, gPSSData->displayMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3); + txtPtr = ConvertIntToDecimalStringN(txtPtr, gStorage->displayMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3); txtPtr[0] = CHAR_SPACE; txtPtr[1] = EOS; - if (gPSSData->displayMonItemId != 0) - StringCopyPadded(gPSSData->displayMonTexts[3], ItemId_GetName(gPSSData->displayMonItemId), CHAR_SPACE, 8); + // Buffer item name + if (gStorage->displayMonItemId != ITEM_NONE) + StringCopyPadded(gStorage->displayMonItemNameText, ItemId_GetName(gStorage->displayMonItemId), CHAR_SPACE, 8); else - StringFill(gPSSData->displayMonTexts[3], CHAR_SPACE, 8); + StringFill(gStorage->displayMonItemNameText, CHAR_SPACE, 8); } } +#undef displayMonNicknameText +#undef displayMonSpeciesNameText +#undef displayMonGenderAndLevelText +#undef displayMonItemNameText + static u8 HandleInput_InBox(void) { - switch (gPSSData->inBoxMovingMode) + switch (gStorage->inBoxMovingMode) { - case 0: + case MOVE_MODE_NORMAL: default: - return InBoxInput_Normal(); - case 1: - return InBoxInput_GrabbingMultiple(); - case 2: - return InBoxInput_MovingMultiple(); + return HandleInput_InBox_Normal(); + case MOVE_MODE_MULTIPLE_SELECTING: + return HandleInput_InBox_GrabbingMultiple(); + case MOVE_MODE_MULTIPLE_MOVING: + return HandleInput_InBox_MovingMultiple(); } } -static u8 InBoxInput_Normal(void) +static u8 HandleInput_InBox_Normal(void) { - u8 retVal; + u8 input; s8 cursorArea; s8 cursorPosition; do { - cursorArea = sBoxCursorArea; - cursorPosition = sBoxCursorPosition; - gPSSData->cursorVerticalWrap = 0; - gPSSData->cursorHorizontalWrap = 0; - gPSSData->cursorFlipTimer = 0; + cursorArea = sCursorArea; + cursorPosition = sCursorPosition; + gStorage->cursorVerticalWrap = 0; + gStorage->cursorHorizontalWrap = 0; + gStorage->cursorFlipTimer = 0; if (JOY_REPT(DPAD_UP)) { - retVal = TRUE; - if (sBoxCursorPosition >= IN_BOX_ROWS) - { - cursorPosition -= IN_BOX_ROWS; - } + input = INPUT_MOVE_CURSOR; + if (sCursorPosition >= IN_BOX_COLUMNS) + cursorPosition -= IN_BOX_COLUMNS; else { - cursorArea = CURSOR_AREA_BOX; + cursorArea = CURSOR_AREA_BOX_TITLE; cursorPosition = 0; } break; } else if (JOY_REPT(DPAD_DOWN)) { - retVal = TRUE; - cursorPosition += IN_BOX_ROWS; + input = INPUT_MOVE_CURSOR; + cursorPosition += IN_BOX_COLUMNS; if (cursorPosition >= IN_BOX_COUNT) { cursorArea = CURSOR_AREA_BUTTONS; cursorPosition -= IN_BOX_COUNT; cursorPosition /= 3; - gPSSData->cursorVerticalWrap = 1; - gPSSData->cursorFlipTimer = 1; + gStorage->cursorVerticalWrap = 1; + gStorage->cursorFlipTimer = 1; } break; } else if (JOY_REPT(DPAD_LEFT)) { - retVal = TRUE; - if (sBoxCursorPosition % IN_BOX_ROWS != 0) - { + input = INPUT_MOVE_CURSOR; + if (sCursorPosition % IN_BOX_COLUMNS != 0) cursorPosition--; - } else { - gPSSData->cursorHorizontalWrap = -1; - cursorPosition += (IN_BOX_ROWS - 1); + gStorage->cursorHorizontalWrap = -1; + cursorPosition += (IN_BOX_COLUMNS - 1); } break; } else if (JOY_REPT(DPAD_RIGHT)) { - retVal = TRUE; - if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0) - { + input = INPUT_MOVE_CURSOR; + if ((sCursorPosition + 1) % IN_BOX_COLUMNS != 0) cursorPosition++; - } else { - gPSSData->cursorHorizontalWrap = 1; - cursorPosition -= (IN_BOX_ROWS - 1); + gStorage->cursorHorizontalWrap = 1; + cursorPosition -= (IN_BOX_COLUMNS - 1); } break; } else if (JOY_NEW(START_BUTTON)) { - retVal = TRUE; - cursorArea = CURSOR_AREA_BOX; + input = INPUT_MOVE_CURSOR; + cursorArea = CURSOR_AREA_BOX_TITLE; cursorPosition = 0; break; } - if ((JOY_NEW(A_BUTTON)) && sub_8094924()) + if ((JOY_NEW(A_BUTTON)) && SetSelectionMenuTexts()) { - if (!sCanOnlyMove) - return 8; + if (!sInMultiMoveMode) + return INPUT_IN_MENU; - if (gPSSData->boxOption != OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE) + if (gStorage->boxOption != OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE) { - switch (sub_8094E50(0)) + switch (GetMenuItemTextId(0)) { - case PC_TEXT_STORE: - return 11; - case PC_TEXT_WITHDRAW: - return 12; - case PC_TEXT_MOVE: - return 13; - case PC_TEXT_SHIFT: - return 14; - case PC_TEXT_PLACE: - return 15; - case PC_TEXT_TAKE: - return 16; - case PC_TEXT_GIVE: - return 17; - case PC_TEXT_SWITCH: - return 18; + case MENU_TEXT_STORE: + return INPUT_DEPOSIT; + case MENU_TEXT_WITHDRAW: + return INPUT_WITHDRAW; + case MENU_TEXT_MOVE: + return INPUT_MOVE_MON; + case MENU_TEXT_SHIFT: + return INPUT_SHIFT_MON; + case MENU_TEXT_PLACE: + return INPUT_PLACE_MON; + case MENU_TEXT_TAKE: + return INPUT_TAKE_ITEM; + case MENU_TEXT_GIVE: + return INPUT_GIVE_ITEM; + case MENU_TEXT_SWITCH: + return INPUT_SWITCH_ITEMS; } } else { - gPSSData->inBoxMovingMode = 1; - return 20; + gStorage->inBoxMovingMode = MOVE_MODE_MULTIPLE_SELECTING; + return INPUT_MULTIMOVE_START; } } if (JOY_NEW(B_BUTTON)) - return 19; + return INPUT_PRESSED_B; if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) { if (JOY_HELD(L_BUTTON)) - return 10; + return INPUT_SCROLL_LEFT; if (JOY_HELD(R_BUTTON)) - return 9; + return INPUT_SCROLL_RIGHT; } if (JOY_NEW(SELECT_BUTTON)) { - sub_8094C84(); - return 0; + ToggleCursorMultiMoveMode(); + return INPUT_NONE; } - retVal = 0; + input = INPUT_NONE; - } while (0); + } while (FALSE); - if (retVal) - sub_80927E8(cursorArea, cursorPosition); + if (input != INPUT_NONE) + SetCursorPosition(cursorArea, cursorPosition); - return retVal; + return input; } -static u8 InBoxInput_GrabbingMultiple(void) +static u8 HandleInput_InBox_GrabbingMultiple(void) { if (JOY_HELD(A_BUTTON)) { if (JOY_REPT(DPAD_UP)) { - if (sBoxCursorPosition / IN_BOX_ROWS != 0) + if (sCursorPosition / IN_BOX_COLUMNS != 0) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS); - return 21; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - IN_BOX_COLUMNS); + return INPUT_MULTIMOVE_CHANGE_SELECTION; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_DOWN)) { - if (sBoxCursorPosition + IN_BOX_ROWS < IN_BOX_COUNT) + if (sCursorPosition + IN_BOX_COLUMNS < IN_BOX_COUNT) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS); - return 21; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + IN_BOX_COLUMNS); + return INPUT_MULTIMOVE_CHANGE_SELECTION; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_LEFT)) { - if (sBoxCursorPosition % IN_BOX_ROWS != 0) + if (sCursorPosition % IN_BOX_COLUMNS != 0) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1); - return 21; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - 1); + return INPUT_MULTIMOVE_CHANGE_SELECTION; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_RIGHT)) { - if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0) + if ((sCursorPosition + 1) % IN_BOX_COLUMNS != 0) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1); - return 21; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + 1); + return INPUT_MULTIMOVE_CHANGE_SELECTION; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else - { - return 0; - } + return INPUT_NONE; } else { - if (sub_8095AA0() == sBoxCursorPosition) + if (MultiMove_GetOriginPosition() == sCursorPosition) { - gPSSData->inBoxMovingMode = 0; - gPSSData->cursorShadowSprite->invisible = FALSE; - return 22; + gStorage->inBoxMovingMode = MOVE_MODE_NORMAL; + gStorage->cursorShadowSprite->invisible = FALSE; + return INPUT_MULTIMOVE_SINGLE; } else { - sIsMonBeingMoved = (gPSSData->displayMonSpecies != SPECIES_NONE); - gPSSData->inBoxMovingMode = 2; + sIsMonBeingMoved = (gStorage->displayMonSpecies != SPECIES_NONE); + gStorage->inBoxMovingMode = MOVE_MODE_MULTIPLE_MOVING; sMovingMonOrigBoxId = StorageGetCurrentBox(); - return 23; + return INPUT_MULTIMOVE_GRAB_SELECTION; } } } -static u8 InBoxInput_MovingMultiple(void) +static u8 HandleInput_InBox_MovingMultiple(void) { if (JOY_REPT(DPAD_UP)) { - if (sub_8095474(0)) + if (MultiMove_TryMoveGroup(0)) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS); - return 25; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - IN_BOX_COLUMNS); + return INPUT_MULTIMOVE_MOVE_MONS; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_DOWN)) { - if (sub_8095474(1)) + if (MultiMove_TryMoveGroup(1)) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS); - return 25; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + IN_BOX_COLUMNS); + return INPUT_MULTIMOVE_MOVE_MONS; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_LEFT)) { - if (sub_8095474(2)) + if (MultiMove_TryMoveGroup(2)) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1); - return 25; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - 1); + return INPUT_MULTIMOVE_MOVE_MONS; } else - { - return 10; - } + return INPUT_SCROLL_LEFT; } else if (JOY_REPT(DPAD_RIGHT)) { - if (sub_8095474(3)) + if (MultiMove_TryMoveGroup(3)) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1); - return 25; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + 1); + return INPUT_MULTIMOVE_MOVE_MONS; } else - { - return 9; - } + return INPUT_SCROLL_RIGHT; } else if (JOY_NEW(A_BUTTON)) { - if (sub_8095ABC()) + if (MultiMove_CanPlaceSelection()) { sIsMonBeingMoved = FALSE; - gPSSData->inBoxMovingMode = 0; - return 26; + gStorage->inBoxMovingMode = MOVE_MODE_NORMAL; + return INPUT_MULTIMOVE_PLACE_MONS; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_NEW(B_BUTTON)) - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; + else { if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) { if (JOY_HELD(L_BUTTON)) - return 10; + return INPUT_SCROLL_LEFT; if (JOY_HELD(R_BUTTON)) - return 9; + return INPUT_SCROLL_RIGHT; } - return 0; + return INPUT_NONE; } } static u8 HandleInput_InParty(void) { - u8 retVal; + u8 input; bool8 gotoBox; s8 cursorArea; s8 cursorPosition; do { - cursorArea = sBoxCursorArea; - cursorPosition = sBoxCursorPosition; - gPSSData->cursorHorizontalWrap = 0; - gPSSData->cursorVerticalWrap = 0; - gPSSData->cursorFlipTimer = 0; + cursorArea = sCursorArea; + cursorPosition = sCursorPosition; + gStorage->cursorHorizontalWrap = 0; + gStorage->cursorVerticalWrap = 0; + gStorage->cursorFlipTimer = 0; gotoBox = FALSE; - retVal = 0; + input = INPUT_NONE; if (JOY_REPT(DPAD_UP)) { if (--cursorPosition < 0) cursorPosition = PARTY_SIZE; - if (cursorPosition != sBoxCursorPosition) - retVal = 1; + if (cursorPosition != sCursorPosition) + input = INPUT_MOVE_CURSOR; break; } else if (JOY_REPT(DPAD_DOWN)) { if (++cursorPosition > PARTY_SIZE) cursorPosition = 0; - if (cursorPosition != sBoxCursorPosition) - retVal = 1; + if (cursorPosition != sCursorPosition) + input = INPUT_MOVE_CURSOR; break; } - else if (JOY_REPT(DPAD_LEFT) && sBoxCursorPosition != 0) + else if (JOY_REPT(DPAD_LEFT) && sCursorPosition != 0) { - retVal = 1; - gPSSData->cursorPrevHorizPos = sBoxCursorPosition; + input = INPUT_MOVE_CURSOR; + gStorage->cursorPrevPartyPos = sCursorPosition; cursorPosition = 0; break; } else if (JOY_REPT(DPAD_RIGHT)) { - if (sBoxCursorPosition == 0) + if (sCursorPosition == 0) { - retVal = 1; - cursorPosition = gPSSData->cursorPrevHorizPos; + input = INPUT_MOVE_CURSOR; + cursorPosition = gStorage->cursorPrevPartyPos; } else { - retVal = 6; + input = INPUT_HIDE_PARTY; cursorArea = CURSOR_AREA_IN_BOX; cursorPosition = 0; } @@ -1507,213 +1500,209 @@ static u8 HandleInput_InParty(void) if (JOY_NEW(A_BUTTON)) { - if (sBoxCursorPosition == PARTY_SIZE) + if (sCursorPosition == PARTY_SIZE) { - if (gPSSData->boxOption == OPTION_DEPOSIT) - return 4; + if (gStorage->boxOption == OPTION_DEPOSIT) + return INPUT_CLOSE_BOX; gotoBox = TRUE; } - else if (sub_8094924()) + else if (SetSelectionMenuTexts()) { - if (!sCanOnlyMove) - return 8; + if (!sInMultiMoveMode) + return INPUT_IN_MENU; - switch (sub_8094E50(0)) + switch (GetMenuItemTextId(0)) { - case PC_TEXT_STORE: - return 11; - case PC_TEXT_WITHDRAW: - return 12; - case PC_TEXT_MOVE: - return 13; - case PC_TEXT_SHIFT: - return 14; - case PC_TEXT_PLACE: - return 15; - case PC_TEXT_TAKE: - return 16; - case PC_TEXT_GIVE: - return 17; - case PC_TEXT_SWITCH: - return 18; + case MENU_TEXT_STORE: + return INPUT_DEPOSIT; + case MENU_TEXT_WITHDRAW: + return INPUT_WITHDRAW; + case MENU_TEXT_MOVE: + return INPUT_MOVE_MON; + case MENU_TEXT_SHIFT: + return INPUT_SHIFT_MON; + case MENU_TEXT_PLACE: + return INPUT_PLACE_MON; + case MENU_TEXT_TAKE: + return INPUT_TAKE_ITEM; + case MENU_TEXT_GIVE: + return INPUT_GIVE_ITEM; + case MENU_TEXT_SWITCH: + return INPUT_SWITCH_ITEMS; } } } if (JOY_NEW(B_BUTTON)) { - if (gPSSData->boxOption == OPTION_DEPOSIT) - return 19; + if (gStorage->boxOption == OPTION_DEPOSIT) + return INPUT_PRESSED_B; gotoBox = TRUE; } if (gotoBox) { - retVal = 6; + input = INPUT_HIDE_PARTY; cursorArea = CURSOR_AREA_IN_BOX; cursorPosition = 0; } else if (JOY_NEW(SELECT_BUTTON)) { - sub_8094C84(); - return 0; + ToggleCursorMultiMoveMode(); + return INPUT_NONE; } - } while (0); + } while (FALSE); - if (retVal != 0) - { - if (retVal != 6) - sub_80927E8(cursorArea, cursorPosition); - } + if (input != INPUT_NONE && input != INPUT_HIDE_PARTY) + SetCursorPosition(cursorArea, cursorPosition); - return retVal; + return input; } -static u8 HandleInput_OnBox(void) +static u8 HandleInput_BoxTitle(void) { - u8 retVal; + u8 input; s8 cursorArea; s8 cursorPosition; do { - gPSSData->cursorHorizontalWrap = 0; - gPSSData->cursorVerticalWrap = 0; - gPSSData->cursorFlipTimer = 0; + gStorage->cursorHorizontalWrap = 0; + gStorage->cursorVerticalWrap = 0; + gStorage->cursorFlipTimer = 0; if (JOY_REPT(DPAD_UP)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; cursorArea = CURSOR_AREA_BUTTONS; cursorPosition = 0; - gPSSData->cursorFlipTimer = 1; + gStorage->cursorFlipTimer = 1; break; } else if (JOY_REPT(DPAD_DOWN)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; cursorArea = CURSOR_AREA_IN_BOX; cursorPosition = 2; break; } if (JOY_HELD(DPAD_LEFT)) - return 10; + return INPUT_SCROLL_LEFT; if (JOY_HELD(DPAD_RIGHT)) - return 9; + return INPUT_SCROLL_RIGHT; if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) { if (JOY_HELD(L_BUTTON)) - return 10; + return INPUT_SCROLL_LEFT; if (JOY_HELD(R_BUTTON)) - return 9; + return INPUT_SCROLL_RIGHT; } if (JOY_NEW(A_BUTTON)) { AnimateBoxScrollArrows(FALSE); AddBoxMenu(); - return 7; + return INPUT_BOX_OPTIONS; } if (JOY_NEW(B_BUTTON)) - return 19; + return INPUT_PRESSED_B; if (JOY_NEW(SELECT_BUTTON)) { - sub_8094C84(); - return 0; + ToggleCursorMultiMoveMode(); + return INPUT_NONE; } - retVal = 0; + input = INPUT_NONE; - } while (0); + } while (FALSE); - if (retVal) + if (input != INPUT_NONE) { - if (cursorArea != CURSOR_AREA_BOX) + if (cursorArea != CURSOR_AREA_BOX_TITLE) AnimateBoxScrollArrows(FALSE); - sub_80927E8(cursorArea, cursorPosition); + SetCursorPosition(cursorArea, cursorPosition); } - return retVal; + return input; } static u8 HandleInput_OnButtons(void) { - u8 retVal; + u8 input; s8 cursorArea; s8 cursorPosition; s8 prevPos; do { - cursorArea = sBoxCursorArea; - cursorPosition = sBoxCursorPosition; - gPSSData->cursorHorizontalWrap = 0; - gPSSData->cursorVerticalWrap = 0; - gPSSData->cursorFlipTimer = 0; + cursorArea = sCursorArea; + cursorPosition = sCursorPosition; + gStorage->cursorHorizontalWrap = 0; + gStorage->cursorVerticalWrap = 0; + gStorage->cursorFlipTimer = 0; if (JOY_REPT(DPAD_UP)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; cursorArea = CURSOR_AREA_IN_BOX; - gPSSData->cursorVerticalWrap = -1; - if (sBoxCursorPosition == 0) + gStorage->cursorVerticalWrap = -1; + if (sCursorPosition == 0) cursorPosition = IN_BOX_COUNT - 1 - 5; else cursorPosition = IN_BOX_COUNT - 1; - gPSSData->cursorFlipTimer = 1; + gStorage->cursorFlipTimer = 1; break; } else if (JOY_REPT(DPAD_DOWN | START_BUTTON)) { - retVal = 1; - cursorArea = CURSOR_AREA_BOX; + input = INPUT_MOVE_CURSOR; + cursorArea = CURSOR_AREA_BOX_TITLE; cursorPosition = 0; - gPSSData->cursorFlipTimer = 1; + gStorage->cursorFlipTimer = 1; break; } if (JOY_REPT(DPAD_LEFT)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; if (--cursorPosition < 0) cursorPosition = 1; break; } else if (JOY_REPT(DPAD_RIGHT)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; if (++cursorPosition > 1) cursorPosition = 0; break; } if (JOY_NEW(A_BUTTON)) - { - return cursorPosition == 0 ? 5 : 4; - } + return cursorPosition == 0 ? INPUT_SHOW_PARTY : INPUT_CLOSE_BOX; + if (JOY_NEW(B_BUTTON)) - return 19; + return INPUT_PRESSED_B; if (JOY_NEW(SELECT_BUTTON)) { - sub_8094C84(); - return 0; + ToggleCursorMultiMoveMode(); + return INPUT_NONE; } - retVal = 0; - } while (0); + input = INPUT_NONE; + } while (FALSE); - if (retVal != 0) - sub_80927E8(cursorArea, cursorPosition); + if (input != INPUT_NONE) + SetCursorPosition(cursorArea, cursorPosition); - return retVal; + return input; } u8 HandleInput(void) @@ -1724,9 +1713,9 @@ u8 HandleInput(void) s8 area; } static const inputFuncs[] = { - {HandleInput_InBox, CURSOR_AREA_IN_BOX}, - {HandleInput_InParty, CURSOR_AREA_IN_PARTY}, - {HandleInput_OnBox, CURSOR_AREA_BOX}, + {HandleInput_InBox, CURSOR_AREA_IN_BOX}, + {HandleInput_InParty, CURSOR_AREA_IN_PARTY}, + {HandleInput_BoxTitle, CURSOR_AREA_BOX_TITLE}, {HandleInput_OnButtons, CURSOR_AREA_BUTTONS}, {NULL, 0}, }; @@ -1734,62 +1723,62 @@ u8 HandleInput(void) u16 i = 0; while (inputFuncs[i].func != NULL) { - if (inputFuncs[i].area == sBoxCursorArea) + if (inputFuncs[i].area == sCursorArea) return inputFuncs[i].func(); i++; } - return 0; + return INPUT_NONE; } static void AddBoxMenu(void) { InitMenu(); - SetMenuText(PC_TEXT_JUMP); - SetMenuText(PC_TEXT_WALLPAPER); - SetMenuText(PC_TEXT_NAME); - SetMenuText(PC_TEXT_CANCEL); + SetMenuText(MENU_TEXT_JUMP); + SetMenuText(MENU_TEXT_WALLPAPER); + SetMenuText(MENU_TEXT_NAME); + SetMenuText(MENU_TEXT_CANCEL); } -static bool8 sub_8094924(void) +static bool8 SetSelectionMenuTexts(void) { InitMenu(); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) - return sub_809494C(); + if (gStorage->boxOption != OPTION_MOVE_ITEMS) + return SetMenuTextsForMon(); else - return sub_8094A0C(); + return SetMenuTextsForItem(); } -static bool8 sub_809494C(void) +static bool8 SetMenuTextsForMon(void) { - u16 var0 = sub_8092458(); + u16 species = GetSpeciesAtCursorPosition(); - switch (gPSSData->boxOption) + switch (gStorage->boxOption) { case OPTION_DEPOSIT: - if (var0) - SetMenuText(PC_TEXT_STORE); + if (species != SPECIES_NONE) + SetMenuText(MENU_TEXT_STORE); else return FALSE; break; case OPTION_WITHDRAW: - if (var0) - SetMenuText(PC_TEXT_WITHDRAW); + if (species != SPECIES_NONE) + SetMenuText(MENU_TEXT_WITHDRAW); else return FALSE; break; case OPTION_MOVE_MONS: if (sIsMonBeingMoved) { - if (var0) - SetMenuText(PC_TEXT_SHIFT); + if (species != SPECIES_NONE) + SetMenuText(MENU_TEXT_SHIFT); else - SetMenuText(PC_TEXT_PLACE); + SetMenuText(MENU_TEXT_PLACE); } else { - if (var0) - SetMenuText(PC_TEXT_MOVE); + if (species != SPECIES_NONE) + SetMenuText(MENU_TEXT_MOVE); else return FALSE; } @@ -1799,166 +1788,165 @@ static bool8 sub_809494C(void) return FALSE; } - SetMenuText(PC_TEXT_SUMMARY); - if (gPSSData->boxOption == OPTION_MOVE_MONS) + SetMenuText(MENU_TEXT_SUMMARY); + if (gStorage->boxOption == OPTION_MOVE_MONS) { - if (!sBoxCursorArea) - SetMenuText(PC_TEXT_WITHDRAW); + if (!sCursorArea) + SetMenuText(MENU_TEXT_WITHDRAW); else - SetMenuText(PC_TEXT_STORE); + SetMenuText(MENU_TEXT_STORE); } - SetMenuText(PC_TEXT_MARK); - SetMenuText(PC_TEXT_RELEASE); - SetMenuText(PC_TEXT_CANCEL); + SetMenuText(MENU_TEXT_MARK); + SetMenuText(MENU_TEXT_RELEASE); + SetMenuText(MENU_TEXT_CANCEL); return TRUE; } -static bool8 sub_8094A0C(void) +static bool8 SetMenuTextsForItem(void) { - if (gPSSData->displayMonSpecies == SPECIES_EGG) + if (gStorage->displayMonSpecies == SPECIES_EGG) return FALSE; if (!IsActiveItemMoving()) { - if (gPSSData->displayMonItemId == ITEM_NONE) + if (gStorage->displayMonItemId == ITEM_NONE) { - if (gPSSData->displayMonSpecies == SPECIES_NONE) + if (gStorage->displayMonSpecies == SPECIES_NONE) return FALSE; - SetMenuText(PC_TEXT_GIVE2); + SetMenuText(MENU_TEXT_GIVE2); } else { - if (!ItemIsMail(gPSSData->displayMonItemId)) + if (!ItemIsMail(gStorage->displayMonItemId)) { - SetMenuText(PC_TEXT_TAKE); - SetMenuText(PC_TEXT_BAG); + SetMenuText(MENU_TEXT_TAKE); + SetMenuText(MENU_TEXT_BAG); } - SetMenuText(PC_TEXT_INFO); + SetMenuText(MENU_TEXT_INFO); } } else { - if (gPSSData->displayMonItemId == ITEM_NONE) + if (gStorage->displayMonItemId == ITEM_NONE) { - if (gPSSData->displayMonSpecies == SPECIES_NONE) + if (gStorage->displayMonSpecies == SPECIES_NONE) return FALSE; - SetMenuText(PC_TEXT_GIVE); + SetMenuText(MENU_TEXT_GIVE); } else { - if (ItemIsMail(gPSSData->displayMonItemId) == TRUE) + if (ItemIsMail(gStorage->displayMonItemId) == TRUE) return FALSE; - SetMenuText(PC_TEXT_SWITCH); + SetMenuText(MENU_TEXT_SWITCH); } } - SetMenuText(PC_TEXT_CANCEL); + SetMenuText(MENU_TEXT_CANCEL); return TRUE; } -static void sub_8094AB8(struct Sprite *sprite) +static void SpriteCB_CursorShadow(struct Sprite *sprite) { - sprite->x = gPSSData->cursorSprite->x; - sprite->y = gPSSData->cursorSprite->y + 20; + sprite->x = gStorage->cursorSprite->x; + sprite->y = gStorage->cursorSprite->y + 20; } -static void sub_8094AD8(void) +static void CreateCursorSprites(void) { u16 x, y; u8 spriteId; u8 priority, subpriority; struct SpriteSheet spriteSheets[] = { - {sHandCursorTiles, 0x800, TAG_TILE_0}, - {sHandCursorShadowTiles, 0x80, TAG_TILE_1}, + {sHandCursorTiles, 0x800, GFXTAG_CURSOR}, + {sHandCursorShadowTiles, 0x80, GFXTAG_CURSOR_SHADOW}, {} }; struct SpritePalette spritePalettes[] = { - {sHandCursorPalette, TAG_PAL_DAC7}, + {sPokeStorageMisc1Pal, PALTAG_MISC_1}, {} }; - static const struct OamData sOamData_857BA0C = { + static const struct OamData sOamData_Cursor = { .shape = SPRITE_SHAPE(32x32), .size = SPRITE_SIZE(32x32), .priority = 1, }; - static const struct OamData sOamData_857BA14 = { + static const struct OamData sOamData_CursorShadow = { .shape = SPRITE_SHAPE(16x16), .size = SPRITE_SIZE(16x16), .priority = 1, }; - static const union AnimCmd sSpriteAnim_857BA1C[] = { + static const union AnimCmd sAnim_Cursor_Bouncing[] = { ANIMCMD_FRAME(0, 30), ANIMCMD_FRAME(16, 30), ANIMCMD_JUMP(0) }; - static const union AnimCmd sSpriteAnim_857BA28[] = { + static const union AnimCmd sAnim_Cursor_Still[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; - static const union AnimCmd sSpriteAnim_857BA30[] = { + static const union AnimCmd sAnim_Cursor_Open[] = { ANIMCMD_FRAME(32, 5), ANIMCMD_END }; - static const union AnimCmd sSpriteAnim_857BA38[] = { + static const union AnimCmd sAnim_Cursor_Fist[] = { ANIMCMD_FRAME(48, 5), ANIMCMD_END }; - static const union AnimCmd *const sSpriteAnimTable_857BA40[] = { - sSpriteAnim_857BA1C, - sSpriteAnim_857BA28, - sSpriteAnim_857BA30, - sSpriteAnim_857BA38 + static const union AnimCmd *const sAnims_Cursor[] = { + [CURSOR_ANIM_BOUNCE] = sAnim_Cursor_Bouncing, + [CURSOR_ANIM_STILL] = sAnim_Cursor_Still, + [CURSOR_ANIM_OPEN] = sAnim_Cursor_Open, + [CURSOR_ANIM_FIST] = sAnim_Cursor_Fist, }; - static const struct SpriteTemplate gSpriteTemplate_857BA50 = { - .tileTag = TAG_TILE_0, - .paletteTag = TAG_PAL_WAVEFORM, - .oam = &sOamData_857BA0C, - .anims = sSpriteAnimTable_857BA40, + static const struct SpriteTemplate sSpriteTemplate_Cursor = { + .tileTag = GFXTAG_CURSOR, + .paletteTag = PALTAG_MISC_2, + .oam = &sOamData_Cursor, + .anims = sAnims_Cursor, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }; - static const struct SpriteTemplate gSpriteTemplate_857BA68 = { - .tileTag = TAG_TILE_1, - .paletteTag = TAG_PAL_WAVEFORM, - .oam = &sOamData_857BA14, + static const struct SpriteTemplate sSpriteTemplate_CursorShadow = { + .tileTag = GFXTAG_CURSOR_SHADOW, + .paletteTag = PALTAG_MISC_2, + .oam = &sOamData_CursorShadow, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8094AB8, + .callback = SpriteCB_CursorShadow, }; LoadSpriteSheets(spriteSheets); LoadSpritePalettes(spritePalettes); - gPSSData->cursorPalNums[0] = IndexOfSpritePaletteTag(TAG_PAL_WAVEFORM); - gPSSData->cursorPalNums[1] = IndexOfSpritePaletteTag(TAG_PAL_DAC7); + gStorage->cursorPalNums[0] = IndexOfSpritePaletteTag(PALTAG_MISC_2); + gStorage->cursorPalNums[1] = IndexOfSpritePaletteTag(PALTAG_MISC_1); - sub_8092398(sBoxCursorArea, sBoxCursorPosition, &x, &y); - spriteId = CreateSprite(&gSpriteTemplate_857BA50, x, y, 6); + GetCursorCoordsByPos(sCursorArea, sCursorPosition, &x, &y); + spriteId = CreateSprite(&sSpriteTemplate_Cursor, x, y, 6); if (spriteId != MAX_SPRITES) { - gPSSData->cursorSprite = &gSprites[spriteId]; - gPSSData->cursorSprite->oam.paletteNum = gPSSData->cursorPalNums[sCanOnlyMove]; - gPSSData->cursorSprite->oam.priority = 1; + gStorage->cursorSprite = &gSprites[spriteId]; + gStorage->cursorSprite->oam.paletteNum = gStorage->cursorPalNums[sInMultiMoveMode]; + gStorage->cursorSprite->oam.priority = 1; if (sIsMonBeingMoved) - StartSpriteAnim(gPSSData->cursorSprite, 3); + StartSpriteAnim(gStorage->cursorSprite, 3); } else - { - gPSSData->cursorSprite = NULL; - } + gStorage->cursorSprite = NULL; - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + + if (sCursorArea == CURSOR_AREA_IN_PARTY) { subpriority = 13; priority = 1; @@ -1969,68 +1957,66 @@ static void sub_8094AD8(void) priority = 2; } - spriteId = CreateSprite(&gSpriteTemplate_857BA68, 0, 0, subpriority); + spriteId = CreateSprite(&sSpriteTemplate_CursorShadow, 0, 0, subpriority); if (spriteId != MAX_SPRITES) { - gPSSData->cursorShadowSprite = &gSprites[spriteId]; - gPSSData->cursorShadowSprite->oam.priority = priority; - if (sBoxCursorArea) - gPSSData->cursorShadowSprite->invisible = 1; + gStorage->cursorShadowSprite = &gSprites[spriteId]; + gStorage->cursorShadowSprite->oam.priority = priority; + if (sCursorArea) + gStorage->cursorShadowSprite->invisible = 1; } else - { - gPSSData->cursorShadowSprite = NULL; - } + gStorage->cursorShadowSprite = NULL; } -static void sub_8094C84(void) +static void ToggleCursorMultiMoveMode(void) { - sCanOnlyMove = !sCanOnlyMove; - gPSSData->cursorSprite->oam.paletteNum = gPSSData->cursorPalNums[sCanOnlyMove]; + sInMultiMoveMode = !sInMultiMoveMode; + gStorage->cursorSprite->oam.paletteNum = gStorage->cursorPalNums[sInMultiMoveMode]; } u8 GetBoxCursorPosition(void) { - return sBoxCursorPosition; + return sCursorPosition; } -void sub_8094CD4(u8 *arg0, u8 *arg1) +void GetCursorBoxColumnAndRow(u8 *column, u8 *row) { - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) + if (sCursorArea == CURSOR_AREA_IN_BOX) { - *arg0 = sBoxCursorPosition % IN_BOX_ROWS; - *arg1 = sBoxCursorPosition / IN_BOX_ROWS; + *column = sCursorPosition % IN_BOX_COLUMNS; + *row = sCursorPosition / IN_BOX_COLUMNS; } else { - *arg0 = 0; - *arg1 = 0; + *column = 0; + *row = 0; } } -void sub_8094D14(u8 animNum) +void StartCursorAnim(u8 animNum) { - StartSpriteAnim(gPSSData->cursorSprite, animNum); + StartSpriteAnim(gStorage->cursorSprite, animNum); } -u8 sub_8094D34(void) +u8 GetMovingMonOriginalBoxId(void) { return sMovingMonOrigBoxId; } -void sub_8094D40(void) +void SetCursorPriorityTo1(void) { - gPSSData->cursorSprite->oam.priority = 1; + gStorage->cursorSprite->oam.priority = 1; } -void sub_8094D60(void) +void TryHideItemAtCursor(void) { - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) - sub_8095D44(CURSOR_AREA_IN_BOX, sBoxCursorPosition); + if (sCursorArea == CURSOR_AREA_IN_BOX) + TryHideItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition); } -void sub_8094D84(void) +void TryShowItemAtCursor(void) { - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) - sub_8095C84(CURSOR_AREA_IN_BOX, sBoxCursorPosition); + if (sCursorArea == CURSOR_AREA_IN_BOX) + TryLoadItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition); } diff --git a/src/pokemon_storage_system_6.c b/src/pokemon_storage_system_6.c index 6b8b4f67d..b8fcc3e8b 100644 --- a/src/pokemon_storage_system_6.c +++ b/src/pokemon_storage_system_6.c @@ -8,115 +8,115 @@ void InitMenu(void) { - gPSSData->menuItemsCount = 0; - gPSSData->menuWidth = 0; - gPSSData->menuWindow.bg = 0; - gPSSData->menuWindow.paletteNum = 15; - gPSSData->menuWindow.baseBlock = 92; + gStorage->menuItemsCount = 0; + gStorage->menuWidth = 0; + gStorage->menuWindow.bg = 0; + gStorage->menuWindow.paletteNum = 15; + gStorage->menuWindow.baseBlock = 92; } static const u8 *const sMenuTexts[] = { - [PC_TEXT_CANCEL] = gPCText_Cancel, - [PC_TEXT_STORE] = gPCText_Store, - [PC_TEXT_WITHDRAW] = gPCText_Withdraw, - [PC_TEXT_MOVE] = gPCText_Move, - [PC_TEXT_SHIFT] = gPCText_Shift, - [PC_TEXT_PLACE] = gPCText_Place, - [PC_TEXT_SUMMARY] = gPCText_Summary, - [PC_TEXT_RELEASE] = gPCText_Release, - [PC_TEXT_MARK] = gPCText_Mark, - [PC_TEXT_JUMP] = gPCText_Jump, - [PC_TEXT_WALLPAPER] = gPCText_Wallpaper, - [PC_TEXT_NAME] = gPCText_Name, - [PC_TEXT_TAKE] = gPCText_Take, - [PC_TEXT_GIVE] = gPCText_Give, - [PC_TEXT_GIVE2] = gPCText_Give, - [PC_TEXT_SWITCH] = gPCText_Switch, - [PC_TEXT_BAG] = gPCText_Bag, - [PC_TEXT_INFO] = gPCText_Info, - [PC_TEXT_SCENERY1] = gPCText_Scenery1, - [PC_TEXT_SCENERY2] = gPCText_Scenery2, - [PC_TEXT_SCENERY3] = gPCText_Scenery3, - [PC_TEXT_ETCETERA] = gPCText_Etcetera, - [PC_TEXT_FOREST] = gPCText_Forest, - [PC_TEXT_CITY] = gPCText_City, - [PC_TEXT_DESERT] = gPCText_Desert, - [PC_TEXT_SAVANNA] = gPCText_Savanna, - [PC_TEXT_CRAG] = gPCText_Crag, - [PC_TEXT_VOLCANO] = gPCText_Volcano, - [PC_TEXT_SNOW] = gPCText_Snow, - [PC_TEXT_CAVE] = gPCText_Cave, - [PC_TEXT_BEACH] = gPCText_Beach, - [PC_TEXT_SEAFLOOR] = gPCText_Seafloor, - [PC_TEXT_RIVER] = gPCText_River, - [PC_TEXT_SKY] = gPCText_Sky, - [PC_TEXT_POLKADOT] = gPCText_PolkaDot, - [PC_TEXT_POKECENTER] = gPCText_Pokecenter, - [PC_TEXT_MACHINE] = gPCText_Machine, - [PC_TEXT_SIMPLE] = gPCText_Simple, + [MENU_TEXT_CANCEL] = gPCText_Cancel, + [MENU_TEXT_STORE] = gPCText_Store, + [MENU_TEXT_WITHDRAW] = gPCText_Withdraw, + [MENU_TEXT_MOVE] = gPCText_Move, + [MENU_TEXT_SHIFT] = gPCText_Shift, + [MENU_TEXT_PLACE] = gPCText_Place, + [MENU_TEXT_SUMMARY] = gPCText_Summary, + [MENU_TEXT_RELEASE] = gPCText_Release, + [MENU_TEXT_MARK] = gPCText_Mark, + [MENU_TEXT_JUMP] = gPCText_Jump, + [MENU_TEXT_WALLPAPER] = gPCText_Wallpaper, + [MENU_TEXT_NAME] = gPCText_Name, + [MENU_TEXT_TAKE] = gPCText_Take, + [MENU_TEXT_GIVE] = gPCText_Give, + [MENU_TEXT_GIVE2] = gPCText_Give, + [MENU_TEXT_SWITCH] = gPCText_Switch, + [MENU_TEXT_BAG] = gPCText_Bag, + [MENU_TEXT_INFO] = gPCText_Info, + [MENU_TEXT_SCENERY_1] = gPCText_Scenery1, + [MENU_TEXT_SCENERY_2] = gPCText_Scenery2, + [MENU_TEXT_SCENERY_3] = gPCText_Scenery3, + [MENU_TEXT_ETCETERA] = gPCText_Etcetera, + [MENU_TEXT_FOREST] = gPCText_Forest, + [MENU_TEXT_CITY] = gPCText_City, + [MENU_TEXT_DESERT] = gPCText_Desert, + [MENU_TEXT_SAVANNA] = gPCText_Savanna, + [MENU_TEXT_CRAG] = gPCText_Crag, + [MENU_TEXT_VOLCANO] = gPCText_Volcano, + [MENU_TEXT_SNOW] = gPCText_Snow, + [MENU_TEXT_CAVE] = gPCText_Cave, + [MENU_TEXT_BEACH] = gPCText_Beach, + [MENU_TEXT_SEAFLOOR] = gPCText_Seafloor, + [MENU_TEXT_RIVER] = gPCText_River, + [MENU_TEXT_SKY] = gPCText_Sky, + [MENU_TEXT_POLKADOT] = gPCText_PolkaDot, + [MENU_TEXT_POKECENTER] = gPCText_Pokecenter, + [MENU_TEXT_MACHINE] = gPCText_Machine, + [MENU_TEXT_SIMPLE] = gPCText_Simple, }; void SetMenuText(u8 textId) { - if (gPSSData->menuItemsCount < ARRAY_COUNT(gPSSData->menuItems)) + if (gStorage->menuItemsCount < ARRAY_COUNT(gStorage->menuItems)) { u8 len; - struct StorageMenu *menu = &gPSSData->menuItems[gPSSData->menuItemsCount]; + struct StorageMenu *menu = &gStorage->menuItems[gStorage->menuItemsCount]; menu->text = sMenuTexts[textId]; menu->textId = textId; len = StringLength(menu->text); - if (len > gPSSData->menuWidth) - gPSSData->menuWidth = len; + if (len > gStorage->menuWidth) + gStorage->menuWidth = len; - gPSSData->menuItemsCount++; + gStorage->menuItemsCount++; } } -s8 sub_8094E50(u8 arg0) +s8 GetMenuItemTextId(u8 menuIndex) { - if (arg0 >= gPSSData->menuItemsCount) - return -1; + if (menuIndex >= gStorage->menuItemsCount) + return MENU_B_PRESSED; else - return gPSSData->menuItems[arg0].textId; + return gStorage->menuItems[menuIndex].textId; } void AddMenu(void) { - gPSSData->menuWindow.width = gPSSData->menuWidth + 2; - gPSSData->menuWindow.height = 2 * gPSSData->menuItemsCount; - gPSSData->menuWindow.tilemapLeft = 29 - gPSSData->menuWindow.width; - gPSSData->menuWindow.tilemapTop = 15 - gPSSData->menuWindow.height; - gPSSData->menuWindowId = AddWindow(&gPSSData->menuWindow); - ClearWindowTilemap(gPSSData->menuWindowId); - DrawStdFrameWithCustomTileAndPalette(gPSSData->menuWindowId, FALSE, 0x00b, 14); - PrintTextArray(gPSSData->menuWindowId, FONT_1, 8, 2, 16, gPSSData->menuItemsCount, (void *)gPSSData->menuItems); - Menu_InitCursor(gPSSData->menuWindowId, FONT_1, 0, 2, 16, gPSSData->menuItemsCount, 0); + gStorage->menuWindow.width = gStorage->menuWidth + 2; + gStorage->menuWindow.height = 2 * gStorage->menuItemsCount; + gStorage->menuWindow.tilemapLeft = 29 - gStorage->menuWindow.width; + gStorage->menuWindow.tilemapTop = 15 - gStorage->menuWindow.height; + gStorage->menuWindowId = AddWindow(&gStorage->menuWindow); + ClearWindowTilemap(gStorage->menuWindowId); + DrawStdFrameWithCustomTileAndPalette(gStorage->menuWindowId, FALSE, 11, 14); + PrintTextArray(gStorage->menuWindowId, FONT_1, 8, 2, 16, gStorage->menuItemsCount, (void *)gStorage->menuItems); + Menu_InitCursor(gStorage->menuWindowId, FONT_1, 0, 2, 16, gStorage->menuItemsCount, 0); ScheduleBgCopyTilemapToVram(0); - gPSSData->menuUnusedField = 0; + gStorage->menuUnusedField = 0; } -bool8 sub_8094F90(void) +bool8 IsMenuLoading(void) { - // Some debug flag? + // Possibly stubbed out debug code? return FALSE; } -s16 sub_8094F94(void) +s16 HandleMenuInput(void) { - s32 textId = -2; + s32 input = MENU_NOTHING_CHOSEN; do { if (JOY_NEW(A_BUTTON)) { - textId = Menu_GetCursorPos(); + input = Menu_GetCursorPos(); break; } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - textId = -1; + input = MENU_B_PRESSED; } if (JOY_NEW(DPAD_UP)) @@ -129,19 +129,19 @@ s16 sub_8094F94(void) PlaySE(SE_SELECT); Menu_MoveCursor(1); } - } while (0); + } while (FALSE); - if (textId != -2) - sub_8095024(); + if (input != MENU_NOTHING_CHOSEN) + RemoveMenu(); - if (textId >= 0) - textId = gPSSData->menuItems[textId].textId; + if (input >= 0) + input = gStorage->menuItems[input].textId; - return textId; + return input; } -void sub_8095024(void) +void RemoveMenu(void) { - ClearStdWindowAndFrameToTransparent(gPSSData->menuWindowId, TRUE); - RemoveWindow(gPSSData->menuWindowId); + ClearStdWindowAndFrameToTransparent(gStorage->menuWindowId, TRUE); + RemoveWindow(gStorage->menuWindowId); } diff --git a/src/pokemon_storage_system_7.c b/src/pokemon_storage_system_7.c index 95d199172..573aa4b82 100644 --- a/src/pokemon_storage_system_7.c +++ b/src/pokemon_storage_system_7.c @@ -5,50 +5,48 @@ #include "pokemon_storage_system_internal.h" #include "text_window.h" -struct MoveMons +static EWRAM_DATA struct { - u8 field_0; + u8 funcId; u8 state; - u8 fromRow; u8 fromColumn; - u8 toRow; + u8 fromRow; u8 toColumn; - u8 field_6; - u8 field_7; - u8 minRow; + u8 toRow; + u8 cursorColumn; + u8 cursorRow; u8 minColumn; + u8 minRow; + u8 columnsTotal; u8 rowsTotal; - u8 columsTotal; u16 bgX; u16 bgY; - u16 field_10; + u16 bgMoveSteps; struct BoxPokemon boxMons[IN_BOX_COUNT]; -}; +} *sMultiMove = NULL; -static EWRAM_DATA struct MoveMons *sMoveMonsPtr = NULL; +static bool8 MultiMove_Function_Start(void); +static bool8 MultiMove_Function_Single(void); +static bool8 MultiMove_Function_ChangeSelection(void); +static bool8 MultiMove_Function_GrabSelection(void); +static bool8 MultiMove_Function_MoveMons(void); +static bool8 MultiMove_Function_PlaceMons(void); +static void MultiMove_UpdateSelectedIcons(void); +static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow); +static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn); +static void MultiMove_DeselectColumn(u8 arg0, u8 minRow, u8 maxRow); +static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn); +static void MultiMove_SetIconToBg(u8 x, u8 y); +static void MultiMove_ClearIconFromBg(u8 x, u8 y); +static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration); +static u8 MultiMove_UpdateBg(void); +static void MultiMove_GetMonsFromSelection(void); +static void MultiMove_RemoveMonsFromBox(void); +static void MultiMove_CreatePlacedMonIcons(void); +static void MultiMove_SetPlacedMonData(void); +static void MultiMove_ResetBg(void); -static bool8 sub_8095138(void); -static bool8 sub_8095234(void); -static bool8 sub_80952A0(void); -static bool8 sub_8095314(void); -static bool8 sub_8095394(void); -static bool8 sub_80953BC(void); -static void sub_8095520(void); -static void sub_80955C4(u8 arg0, u8 arg1, u8 arg2); -static void sub_80955FC(u8 arg0, u8 arg1, u8 arg2); -static void sub_8095634(u8 arg0, u8 arg1, u8 arg2); -static void sub_809566C(u8 arg0, u8 arg1, u8 arg2); -static void sub_80956A4(u8 x, u8 y); -static void sub_809572C(u8 x, u8 y); -static void sub_8095780(u16 bgX, u16 bgY, u16 duration); -static u8 sub_8095790(void); -static void sub_80957C8(void); -static void sub_80958A0(void); -static void sub_8095918(void); -static void sub_80959A8(void); -static void sub_8095A58(void); - -static const struct WindowTemplate gUnknown_83D35D4 = { +static const struct WindowTemplate sWindowTemplate_MultiMove = { .bg = 0, .tilemapLeft = 10, .tilemapTop = 3, @@ -58,15 +56,15 @@ static const struct WindowTemplate gUnknown_83D35D4 = { .baseBlock = 0x00a }; -bool8 sub_8095050(void) +bool8 MultiMove_Init(void) { - sMoveMonsPtr = Alloc(sizeof(*sMoveMonsPtr)); - if (sMoveMonsPtr != NULL) + sMultiMove = Alloc(sizeof(*sMultiMove)); + if (sMultiMove != NULL) { - gPSSData->field_2200 = AddWindow8Bit(&gUnknown_83D35D4); - if (gPSSData->field_2200 != 0xFF) + gStorage->multiMoveWindowId = AddWindow8Bit(&sWindowTemplate_MultiMove); + if (gStorage->multiMoveWindowId != WINDOW_NONE) { - FillWindowPixelBuffer(gPSSData->field_2200, PIXEL_FILL(0)); + FillWindowPixelBuffer(gStorage->multiMoveWindowId, PIXEL_FILL(0)); return TRUE; } } @@ -74,64 +72,64 @@ bool8 sub_8095050(void) return FALSE; } -void sub_80950A4(void) +void MultiMove_Free(void) { - if (sMoveMonsPtr != NULL) - Free(sMoveMonsPtr); + if (sMultiMove != NULL) + Free(sMultiMove); } -void sub_80950BC(u8 arg0) +void MultiMove_SetFunction(u8 funcId) { - sMoveMonsPtr->field_0 = arg0; - sMoveMonsPtr->state = 0; + sMultiMove->funcId = funcId; + sMultiMove->state = 0; } -bool8 sub_80950D0(void) +bool8 MultiMove_RunFunction(void) { - switch (sMoveMonsPtr->field_0) + switch (sMultiMove->funcId) { - case 0: - return sub_8095138(); - case 1: - return sub_8095234(); - case 2: - return sub_80952A0(); - case 3: - return sub_8095314(); - case 4: - return sub_8095394(); - case 5: - return sub_80953BC(); + case MULTIMOVE_START: + return MultiMove_Function_Start(); + case MULTIMOVE_SINGLE: + return MultiMove_Function_Single(); + case MULTIMOVE_CHANGE_SELECTION: + return MultiMove_Function_ChangeSelection(); + case MULTIMOVE_GRAB_SELECTION: + return MultiMove_Function_GrabSelection(); + case MULTIMOVE_MOVE_MONS: + return MultiMove_Function_MoveMons(); + case MULTIMOVE_PLACE_MONS: + return MultiMove_Function_PlaceMons(); } return FALSE; } -static bool8 sub_8095138(void) +static bool8 MultiMove_Function_Start(void) { - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: HideBg(0); LoadMonIconPalettesAt(0x80); - sMoveMonsPtr->state++; + sMultiMove->state++; break; case 1: - sub_8094CD4(&sMoveMonsPtr->fromRow, &sMoveMonsPtr->fromColumn); - sMoveMonsPtr->toRow = sMoveMonsPtr->fromRow; - sMoveMonsPtr->toColumn = sMoveMonsPtr->fromColumn; - ChangeBgX(0, -1024, 0); - ChangeBgY(0, -1024, 0); - FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); - FillWindowPixelBuffer8Bit(gPSSData->field_2200, PIXEL_FILL(0)); - sub_80956A4(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn); + GetCursorBoxColumnAndRow(&sMultiMove->fromColumn, &sMultiMove->fromRow); + sMultiMove->toColumn = sMultiMove->fromColumn; + sMultiMove->toRow = sMultiMove->fromRow; + ChangeBgX(0, -1024, BG_COORD_SET); + ChangeBgY(0, -1024, BG_COORD_SET); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); + FillWindowPixelBuffer8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0)); + MultiMove_SetIconToBg(sMultiMove->fromColumn, sMultiMove->fromRow); SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); - PutWindowTilemap(gPSSData->field_2200); - CopyWindowToVram8Bit(gPSSData->field_2200, COPYWIN_FULL); + PutWindowTilemap(gStorage->multiMoveWindowId); + CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_FULL); BlendPalettes(0x3F00, 8, RGB_WHITE); - sub_8094D14(2); + StartCursorAnim(CURSOR_ANIM_OPEN); SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); - sMoveMonsPtr->state++; + sMultiMove->state++; break; case 2: if (!IsDma3ManagerBusyWithBgCopy()) @@ -145,23 +143,23 @@ static bool8 sub_8095138(void) return TRUE; } -static bool8 sub_8095234(void) +static bool8 MultiMove_Function_Single(void) { - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: HideBg(0); - sMoveMonsPtr->state++; + sMultiMove->state++; break; case 1: - sub_8095A58(); - sub_8094D14(0); - sMoveMonsPtr->state++; + MultiMove_ResetBg(); + StartCursorAnim(CURSOR_ANIM_BOUNCE); + sMultiMove->state++; break; case 2: if (!IsDma3ManagerBusyWithBgCopy()) { - sub_8094D40(); + SetCursorPriorityTo1(); LoadPalette(stdpal_get(3), 0xD0, 0x20); ShowBg(0); return FALSE; @@ -172,19 +170,19 @@ static bool8 sub_8095234(void) return TRUE; } -static bool8 sub_80952A0(void) +static bool8 MultiMove_Function_ChangeSelection(void) { - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: - if (!sub_80924A8()) + if (!UpdateCursorPos()) { - sub_8094CD4(&sMoveMonsPtr->field_6, &sMoveMonsPtr->field_7); - sub_8095520(); - sMoveMonsPtr->toRow = sMoveMonsPtr->field_6; - sMoveMonsPtr->toColumn = sMoveMonsPtr->field_7; - CopyWindowToVram8Bit(gPSSData->field_2200, COPYWIN_GFX); - sMoveMonsPtr->state++; + GetCursorBoxColumnAndRow(&sMultiMove->cursorColumn, &sMultiMove->cursorRow); + MultiMove_UpdateSelectedIcons(); + sMultiMove->toColumn = sMultiMove->cursorColumn; + sMultiMove->toRow = sMultiMove->cursorRow; + CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_GFX); + sMultiMove->state++; } break; case 1: @@ -194,31 +192,31 @@ static bool8 sub_80952A0(void) return TRUE; } -static bool8 sub_8095314(void) +static bool8 MultiMove_Function_GrabSelection(void) { - u8 var1, var2; + u8 movingBg, movingMon; - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: - sub_80957C8(); - sub_80958A0(); - sub_8092BAC(FALSE); - sMoveMonsPtr->state++; + MultiMove_GetMonsFromSelection(); + MultiMove_RemoveMonsFromBox(); + InitMultiMonPlaceChange(FALSE); + sMultiMove->state++; break; case 1: if (!DoMonPlaceChange()) { - sub_8094D14(3); - sub_8095780(0, 256, 8); - sub_8092BAC(TRUE); - sMoveMonsPtr->state++; + StartCursorAnim(CURSOR_ANIM_FIST); + MultiMove_InitBg(0, 256, 8); + InitMultiMonPlaceChange(TRUE); + sMultiMove->state++; } break; case 2: - var1 = sub_8095790(); - var2 = DoMonPlaceChange(); - if (!var1 && !var2) + movingBg = MultiMove_UpdateBg(); + movingMon = DoMonPlaceChange(); + if (!movingBg && !movingMon) return FALSE; break; } @@ -226,50 +224,50 @@ static bool8 sub_8095314(void) return TRUE; } -static bool8 sub_8095394(void) +static bool8 MultiMove_Function_MoveMons(void) { - u8 var1 = sub_80924A8(); - u8 var2 = sub_8095790(); + u8 movingCursor = UpdateCursorPos(); + u8 movingBg = MultiMove_UpdateBg(); - if (!var1 && !var2) + if (!movingCursor && !movingBg) return FALSE; else return TRUE; } -static bool8 sub_80953BC(void) +static bool8 MultiMove_Function_PlaceMons(void) { - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: - sub_80959A8(); - sub_8095780(0, -256, 8); - sub_8092BAC(FALSE); - sMoveMonsPtr->state++; + MultiMove_SetPlacedMonData(); + MultiMove_InitBg(0, -256, 8); + InitMultiMonPlaceChange(FALSE); + sMultiMove->state++; break; case 1: - if (!DoMonPlaceChange() && !sub_8095790()) + if (!DoMonPlaceChange() && !MultiMove_UpdateBg()) { - sub_8095918(); - sub_8094D14(2); - sub_8092BAC(TRUE); + MultiMove_CreatePlacedMonIcons(); + StartCursorAnim(CURSOR_ANIM_OPEN); + InitMultiMonPlaceChange(TRUE); HideBg(0); - sMoveMonsPtr->state++; + sMultiMove->state++; } break; case 2: if (!DoMonPlaceChange()) { - sub_8094D14(0); - sub_8095A58(); - sMoveMonsPtr->state++; + StartCursorAnim(CURSOR_ANIM_BOUNCE); + MultiMove_ResetBg(); + sMultiMove->state++; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) { LoadPalette(stdpal_get(3), 0xD0, 0x20); - sub_8094D40(); + SetCursorPriorityTo1(); ShowBg(0); return FALSE; } @@ -279,206 +277,188 @@ static bool8 sub_80953BC(void) return TRUE; } -bool8 sub_8095474(u8 arg0) +bool8 MultiMove_TryMoveGroup(u8 dir) { - switch (arg0) + switch (dir) { case 0: // up - if (sMoveMonsPtr->minColumn == 0) + if (sMultiMove->minRow == 0) return FALSE; - sMoveMonsPtr->minColumn--; - sub_8095780(0, 1024, 6); + sMultiMove->minRow--; + MultiMove_InitBg(0, 1024, 6); break; case 1: // down - if (sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal >= 5) + if (sMultiMove->minRow + sMultiMove->rowsTotal >= 5) return FALSE; - sMoveMonsPtr->minColumn++; - sub_8095780(0, -1024, 6); + sMultiMove->minRow++; + MultiMove_InitBg(0, -1024, 6); break; case 2: // left - if (sMoveMonsPtr->minRow == 0) + if (sMultiMove->minColumn == 0) return FALSE; - sMoveMonsPtr->minRow--; - sub_8095780(1024, 0, 6); + sMultiMove->minColumn--; + MultiMove_InitBg(1024, 0, 6); break; case 3: // right - if (sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal > 5) + if (sMultiMove->minColumn + sMultiMove->columnsTotal > 5) return FALSE; - sMoveMonsPtr->minRow++; - sub_8095780(-1024, 0, 6); + sMultiMove->minColumn++; + MultiMove_InitBg(-1024, 0, 6); break; } return TRUE; } -static void sub_8095520(void) +static void MultiMove_UpdateSelectedIcons(void) { - s16 var = (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->field_6)) - (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow)); - s16 var2 = (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->field_7)) - (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn)); + s16 columnChange = (abs(sMultiMove->fromColumn - sMultiMove->cursorColumn)) - (abs(sMultiMove->fromColumn - sMultiMove->toColumn)); + s16 rowChange = (abs(sMultiMove->fromRow - sMultiMove->cursorRow)) - (abs(sMultiMove->fromRow - sMultiMove->toRow)); - if (var > 0) - sub_80955C4(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + if (columnChange > 0) + MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); - if (var < 0) + if (columnChange < 0) { - sub_8095634(sMoveMonsPtr->toRow, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); - sub_80955C4(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + MultiMove_DeselectColumn(sMultiMove->toColumn, sMultiMove->fromRow, sMultiMove->toRow); + MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); } - if (var2 > 0) - sub_80955FC(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + if (rowChange > 0) + MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); - if (var2 < 0) + if (rowChange < 0) { - sub_809566C(sMoveMonsPtr->toColumn, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); - sub_80955FC(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + MultiMove_DeselectRow(sMultiMove->toRow, sMultiMove->fromColumn, sMultiMove->toColumn); + MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); } } -static void sub_80955C4(u8 arg0, u8 arg1, u8 arg2) +static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow) { - u8 var1 = arg1; + u8 tmp = minRow; - if (arg1 > arg2) + if (minRow > maxRow) { - arg1 = arg2; - arg2 = var1; + minRow = maxRow; + maxRow = tmp; } - while (arg1 <= arg2) - sub_80956A4(arg0, arg1++); + while (minRow <= maxRow) + MultiMove_SetIconToBg(column, minRow++); } -static void sub_80955FC(u8 arg0, u8 arg1, u8 arg2) +static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn) { - u8 var1 = arg1; + u8 tmp = minColumn; - if (arg1 > arg2) + if (minColumn > maxColumn) { - arg1 = arg2; - arg2 = var1; + minColumn = maxColumn; + maxColumn = tmp; } - while (arg1 <= arg2) - sub_80956A4(arg1++, arg0); + while (minColumn <= maxColumn) + MultiMove_SetIconToBg(minColumn++, row); } -static void sub_8095634(u8 arg0, u8 arg1, u8 arg2) +static void MultiMove_DeselectColumn(u8 column, u8 minRow, u8 maxRow) { - u8 var1 = arg1; + u8 tmp = minRow; - if (arg1 > arg2) + if (minRow > maxRow) { - arg1 = arg2; - arg2 = var1; + minRow = maxRow; + maxRow = tmp; } - while (arg1 <= arg2) - sub_809572C(arg0, arg1++); + while (minRow <= maxRow) + MultiMove_ClearIconFromBg(column, minRow++); } -static void sub_809566C(u8 arg0, u8 arg1, u8 arg2) +static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn) { - u8 var1 = arg1; + u8 tmp = minColumn; - if (arg1 > arg2) + if (minColumn > maxColumn) { - arg1 = arg2; - arg2 = var1; + minColumn = maxColumn; + maxColumn = tmp; } - while (arg1 <= arg2) - sub_809572C(arg1++, arg0); + while (minColumn <= maxColumn) + MultiMove_ClearIconFromBg(minColumn++, row); } -static void sub_80956A4(u8 x, u8 y) +static void MultiMove_SetIconToBg(u8 x, u8 y) { - u8 position = x + (IN_BOX_ROWS * y); + u8 position = x + (IN_BOX_COLUMNS * y); u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY); if (species != SPECIES_NONE) { const u8 *iconGfx = GetMonIconPtr(species, personality, 1); - u8 index = GetValidMonIconPalIndex(species) + 8; - - BlitBitmapRectToWindow4BitTo8Bit(gPSSData->field_2200, - iconGfx, - 0, - 0, - 32, - 32, - 24 * x, - 24 * y, - 32, - 32, - index); + u8 palNum = GetValidMonIconPalIndex(species) + 8; + BlitBitmapRectToWindow4BitTo8Bit(gStorage->multiMoveWindowId, iconGfx, 0, 0, 32, 32, 24 * x, 24 * y, 32, 32, palNum); } } -static void sub_809572C(u8 x, u8 y) +static void MultiMove_ClearIconFromBg(u8 x, u8 y) { - u8 position = x + (IN_BOX_ROWS * y); + u8 position = x + (IN_BOX_COLUMNS * y); u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); if (species != SPECIES_NONE) - { - FillWindowPixelRect8Bit(gPSSData->field_2200, - PIXEL_FILL(0), - 24 * x, - 24 * y, - 32, - 32); - } + FillWindowPixelRect8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0), 24 * x, 24 * y, 32, 32); } -static void sub_8095780(u16 bgX, u16 bgY, u16 duration) +static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration) { - sMoveMonsPtr->bgX = bgX; - sMoveMonsPtr->bgY = bgY; - sMoveMonsPtr->field_10 = duration; + sMultiMove->bgX = bgX; + sMultiMove->bgY = bgY; + sMultiMove->bgMoveSteps = duration; } -static u8 sub_8095790(void) +static u8 MultiMove_UpdateBg(void) { - if (sMoveMonsPtr->field_10 != 0) + if (sMultiMove->bgMoveSteps != 0) { - ChangeBgX(0, sMoveMonsPtr->bgX, 1); - ChangeBgY(0, sMoveMonsPtr->bgY, 1); - sMoveMonsPtr->field_10--; + ChangeBgX(0, sMultiMove->bgX, BG_COORD_ADD); + ChangeBgY(0, sMultiMove->bgY, BG_COORD_ADD); + sMultiMove->bgMoveSteps--; } - return sMoveMonsPtr->field_10; + return sMultiMove->bgMoveSteps; } -static void sub_80957C8(void) +static void MultiMove_GetMonsFromSelection(void) { s32 i, j; - s32 rowCount, columnCount; + s32 columnCount, rowCount; u8 boxId; u8 monArrayId; - sMoveMonsPtr->minRow = min(sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); - sMoveMonsPtr->minColumn = min(sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); - sMoveMonsPtr->rowsTotal = abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow) + 1; - sMoveMonsPtr->columsTotal = abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn) + 1; + sMultiMove->minColumn = min(sMultiMove->fromColumn, sMultiMove->toColumn); + sMultiMove->minRow = min(sMultiMove->fromRow, sMultiMove->toRow); + sMultiMove->columnsTotal = abs(sMultiMove->fromColumn - sMultiMove->toColumn) + 1; + sMultiMove->rowsTotal = abs(sMultiMove->fromRow - sMultiMove->toRow) + 1; boxId = StorageGetCurrentBox(); monArrayId = 0; - rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition); // UB: possible null dereference #ifdef UBFIX if (boxMon != NULL) - sMoveMonsPtr->boxMons[monArrayId] = *boxMon; + sMultiMove->boxMons[monArrayId] = *boxMon; #else - sMoveMonsPtr->boxMons[monArrayId] = *boxMon; + sMultiMove->boxMons[monArrayId] = *boxMon; #endif monArrayId++; boxPosition++; @@ -486,17 +466,17 @@ static void sub_80957C8(void) } } -static void sub_80958A0(void) +static void MultiMove_RemoveMonsFromBox(void) { s32 i, j; - s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; u8 boxId = StorageGetCurrentBox(); - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { DestroyBoxMonIconAtPosition(boxPosition); ZeroBoxMonAt(boxId, boxPosition); @@ -505,75 +485,75 @@ static void sub_80958A0(void) } } -static void sub_8095918(void) +static void MultiMove_CreatePlacedMonIcons(void) { s32 i, j; - s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; u8 monArrayId = 0; - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { - if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) - sub_80901EC(boxPosition); + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + CreateBoxMonIconAtPos(boxPosition); monArrayId++; boxPosition++; } } } -static void sub_80959A8(void) +static void MultiMove_SetPlacedMonData(void) { s32 i, j; - s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; u8 boxId = StorageGetCurrentBox(); u8 monArrayId = 0; - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { - if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) - SetBoxMonAt(boxId, boxPosition, &sMoveMonsPtr->boxMons[monArrayId]); + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + SetBoxMonAt(boxId, boxPosition, &sMultiMove->boxMons[monArrayId]); boxPosition++; monArrayId++; } } } -static void sub_8095A58(void) +static void MultiMove_ResetBg(void) { - ChangeBgX(0, 0, 0); - ChangeBgY(0, 0, 0); + ChangeBgX(0, 0, BG_COORD_SET); + ChangeBgY(0, 0, BG_COORD_SET); SetBgAttribute(0, BG_ATTR_PALETTEMODE, 0); ClearGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); CopyBgTilemapBufferToVram(0); } -u8 sub_8095AA0(void) +u8 MultiMove_GetOriginPosition(void) { - return (IN_BOX_ROWS * sMoveMonsPtr->fromColumn) + sMoveMonsPtr->fromRow; + return (IN_BOX_COLUMNS * sMultiMove->fromRow) + sMultiMove->fromColumn; } -bool8 sub_8095ABC(void) +bool8 MultiMove_CanPlaceSelection(void) { s32 i, j; - s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; u8 monArrayId = 0; - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { - if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) && GetCurrentBoxMonData(boxPosition, MON_DATA_SANITY_HAS_SPECIES)) return FALSE; diff --git a/src/pokemon_storage_system_8.c b/src/pokemon_storage_system_8.c index cdd7728a2..e7241e4b7 100644 --- a/src/pokemon_storage_system_8.c +++ b/src/pokemon_storage_system_8.c @@ -42,7 +42,7 @@ static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite); static const u32 sItemInfoFrame_Gfx[] = INCBIN_U32("graphics/interface/pss_unk_83D35DC.4bpp"); -static const struct OamData gUnknown_83D365C = { +static const struct OamData sOamData_ItemIcon = { .y = 0, .affineMode = ST_OAM_AFFINE_NORMAL, .objMode = ST_OAM_OBJ_NORMAL, @@ -58,65 +58,65 @@ static const struct OamData gUnknown_83D365C = { .affineParam = 0 }; -static const union AffineAnimCmd gUnknown_83D3664[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_Small[] = { AFFINEANIMCMD_FRAME(128, 128, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D3674[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_Appear[] = { AFFINEANIMCMD_FRAME(88, 88, 0, 0), AFFINEANIMCMD_FRAME(5, 5, 0, 8), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D368C[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_Disappear[] = { AFFINEANIMCMD_FRAME(128, 128, 0, 0), AFFINEANIMCMD_FRAME(-5, -5, 0, 8), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D36A4[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_PickUp[] = { AFFINEANIMCMD_FRAME(128, 128, 0, 0), AFFINEANIMCMD_FRAME(10, 10, 0, 12), AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D36C4[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_PutDown[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_FRAME(-10, -10, 0, 12), AFFINEANIMCMD_FRAME(128, 128, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D36E4[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_PutAway[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_FRAME(-5, -5, 0, 16), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D36FC[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_Large[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const gUnknown_83D370C[] = { - gUnknown_83D3664, - gUnknown_83D3674, - gUnknown_83D368C, - gUnknown_83D36A4, - gUnknown_83D36C4, - gUnknown_83D36E4, - gUnknown_83D36FC +static const union AffineAnimCmd *const sAffineAnims_ItemIcon[] = { + [ITEM_ANIM_NONE] = sAffineAnim_ItemIcon_Small, + [ITEM_ANIM_APPEAR] = sAffineAnim_ItemIcon_Appear, + [ITEM_ANIM_DISAPPEAR] = sAffineAnim_ItemIcon_Disappear, + [ITEM_ANIM_PICK_UP] = sAffineAnim_ItemIcon_PickUp, + [ITEM_ANIM_PUT_DOWN] = sAffineAnim_ItemIcon_PutDown, + [ITEM_ANIM_PUT_AWAY] = sAffineAnim_ItemIcon_PutAway, + [ITEM_ANIM_LARGE] = sAffineAnim_ItemIcon_Large, }; static const struct SpriteTemplate sSpriteTemplate_ItemIcon = { - .tileTag = TAG_TILE_7, - .paletteTag = TAG_PAL_DACB, - .oam = &gUnknown_83D365C, + .tileTag = GFXTAG_ITEM_ICON_0, + .paletteTag = PALTAG_ITEM_ICON_0, + .oam = &sOamData_ItemIcon, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gUnknown_83D370C, + .affineAnims = sAffineAnims_ItemIcon, .callback = SpriteCallbackDummy, }; @@ -128,7 +128,7 @@ void CreateItemIconSprites(void) struct SpriteTemplate spriteTemplate; static u32 sItemIconGfxBuffer[0x61]; - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { spriteSheet.data = sItemIconGfxBuffer; spriteSheet.size = 0x200; @@ -136,30 +136,28 @@ void CreateItemIconSprites(void) for (i = 0; i < MAX_ITEM_ICONS; i++) { - spriteSheet.tag = TAG_TILE_7 + i; + spriteSheet.tag = GFXTAG_ITEM_ICON_0 + i; LoadCompressedSpriteSheet(&spriteSheet); - gPSSData->itemIcons[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * TILE_SIZE_4BPP + (void *)(OBJ_VRAM0); - gPSSData->itemIcons[i].palIndex = AllocSpritePalette(TAG_PAL_DACB + i); - gPSSData->itemIcons[i].palIndex *= 16; - gPSSData->itemIcons[i].palIndex += 0x100; - spriteTemplate.tileTag = TAG_TILE_7 + i; - spriteTemplate.paletteTag = TAG_PAL_DACB + i; + gStorage->itemIcons[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * TILE_SIZE_4BPP + (void *)(OBJ_VRAM0); + gStorage->itemIcons[i].palIndex = AllocSpritePalette(PALTAG_ITEM_ICON_0 + i); + gStorage->itemIcons[i].palIndex *= 16; + gStorage->itemIcons[i].palIndex += 0x100; + spriteTemplate.tileTag = GFXTAG_ITEM_ICON_0 + i; + spriteTemplate.paletteTag = PALTAG_ITEM_ICON_0 + i; spriteId = CreateSprite(&spriteTemplate, 0, 0, 11); - gPSSData->itemIcons[i].sprite = &gSprites[spriteId]; - gPSSData->itemIcons[i].sprite->invisible = TRUE; - gPSSData->itemIcons[i].active = FALSE; + gStorage->itemIcons[i].sprite = &gSprites[spriteId]; + gStorage->itemIcons[i].sprite->invisible = TRUE; + gStorage->itemIcons[i].active = FALSE; } } - gPSSData->movingItemId = ITEM_NONE; + gStorage->movingItemId = ITEM_NONE; } -void sub_8095C84(u8 cursorArea, u8 cursorPos) +void TryLoadItemIconAtPos(u8 cursorArea, u8 cursorPos) { u16 heldItem; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) - return; - if (IsItemIconAtPosition(cursorArea, cursorPos)) + if ((gStorage->boxOption != OPTION_MOVE_ITEMS) || IsItemIconAtPosition(cursorArea, cursorPos)) return; switch (cursorArea) @@ -186,21 +184,21 @@ void sub_8095C84(u8 cursorArea, u8 cursorPos) SetItemIconPosition(id, cursorArea, cursorPos); LoadItemIconGfx(id, tiles, pal); - SetItemIconAffineAnim(id, 1); + SetItemIconAffineAnim(id, ITEM_ANIM_APPEAR); SetItemIconActive(id, TRUE); } } -void sub_8095D44(u8 cursorArea, u8 cursorPos) +void TryHideItemIconAtPos(u8 cursorArea, u8 cursorPos) { u8 id; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; id = GetItemIconIdxByPosition(cursorArea, cursorPos); - SetItemIconAffineAnim(id, 2); - SetItemIconCallback(id, 0, cursorArea, cursorPos); + SetItemIconAffineAnim(id, ITEM_ANIM_DISAPPEAR); + SetItemIconCallback(id, ITEM_CB_WAIT_ANIM, cursorArea, cursorPos); } void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos) @@ -208,14 +206,14 @@ void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos) u8 id; u16 item; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; id = GetItemIconIdxByPosition(cursorArea, cursorPos); item = 0; - SetItemIconAffineAnim(id, 3); - SetItemIconCallback(id, 1, cursorArea, cursorPos); - SetItemIconPosition(id, 2, 0); + SetItemIconAffineAnim(id, ITEM_ANIM_PICK_UP); + SetItemIconCallback(id, ITEM_CB_TO_HAND, cursorArea, cursorPos); + SetItemIconPosition(id, CURSOR_AREA_IN_HAND, 0); if (cursorArea == CURSOR_AREA_IN_BOX) { SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item); @@ -227,21 +225,21 @@ void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos) SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND); } - gPSSData->movingItemId = gPSSData->displayMonItemId; + gStorage->movingItemId = gStorage->displayMonItemId; } -void sub_8095E2C(u16 item) +void InitItemIconInCursor(u16 item) { const u32 *tiles = GetItemIconPic(item); const u32 *pal = GetItemIconPalette(item); u8 id = GetNewItemIconIdx(); LoadItemIconGfx(id, tiles, pal); - SetItemIconAffineAnim(id, 6); - SetItemIconCallback(id, 1, CURSOR_AREA_IN_BOX, 0); - SetItemIconPosition(id, CURSOR_AREA_BOX, 0); + SetItemIconAffineAnim(id, ITEM_ANIM_LARGE); + SetItemIconCallback(id, ITEM_CB_TO_HAND, 0, 0); + SetItemIconPosition(id, CURSOR_AREA_IN_HAND, 0); SetItemIconActive(id, TRUE); - gPSSData->movingItemId = item; + gStorage->movingItemId = item; } void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos) @@ -249,48 +247,48 @@ void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos) u8 id; u16 item; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; id = GetItemIconIdxByPosition(cursorArea, cursorPos); - SetItemIconAffineAnim(id, 3); - SetItemIconCallback(id, 3, CURSOR_AREA_BOX, 0); + SetItemIconAffineAnim(id, ITEM_ANIM_PICK_UP); + SetItemIconCallback(id, ITEM_CB_SWAP_TO_HAND, CURSOR_AREA_IN_HAND, 0); if (cursorArea == CURSOR_AREA_IN_BOX) { item = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM); - SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gPSSData->movingItemId); - gPSSData->movingItemId = item; + SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gStorage->movingItemId); + gStorage->movingItemId = item; } else { item = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM); - SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gPSSData->movingItemId); - gPSSData->movingItemId = item; + SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gStorage->movingItemId); + gStorage->movingItemId = item; } id = GetItemIconIdxByPosition(2, 0); - SetItemIconAffineAnim(id, 4); - SetItemIconCallback(id, 4, cursorArea, cursorPos); + SetItemIconAffineAnim(id, ITEM_ANIM_PUT_DOWN); + SetItemIconCallback(id, ITEM_CB_SWAP_TO_MON, cursorArea, cursorPos); } void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos) { u8 id; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; id = GetItemIconIdxByPosition(2, 0); - SetItemIconAffineAnim(id, 4); - SetItemIconCallback(id, 2, cursorArea, cursorPos); + SetItemIconAffineAnim(id, ITEM_ANIM_PUT_DOWN); + SetItemIconCallback(id, ITEM_CB_TO_MON, cursorArea, cursorPos); if (cursorArea == CURSOR_AREA_IN_BOX) { - SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gPSSData->movingItemId); + SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gStorage->movingItemId); SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL); } else { - SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gPSSData->movingItemId); + SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gStorage->movingItemId); SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL); } } @@ -300,13 +298,13 @@ void Item_TakeMons(u8 cursorArea, u8 cursorPos) u8 id; u16 item; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; - item = 0; + item = ITEM_NONE; id = GetItemIconIdxByPosition(cursorArea, cursorPos); - SetItemIconAffineAnim(id, 2); - SetItemIconCallback(id, 0, cursorArea, cursorPos); + SetItemIconAffineAnim(id, ITEM_ANIM_DISAPPEAR); + SetItemIconCallback(id, ITEM_CB_WAIT_ANIM, cursorArea, cursorPos); if (cursorArea == CURSOR_AREA_IN_BOX) { SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item); @@ -319,41 +317,44 @@ void Item_TakeMons(u8 cursorArea, u8 cursorPos) } } -void sub_8096088(void) +void MoveItemFromCursorToBag(void) { - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { - u8 id = GetItemIconIdxByPosition(2, 0); - SetItemIconAffineAnim(id, 5); - SetItemIconCallback(id, 0, CURSOR_AREA_BOX, 0); + u8 id = GetItemIconIdxByPosition(CURSOR_AREA_IN_HAND, 0); + SetItemIconAffineAnim(id, ITEM_ANIM_PUT_AWAY); + SetItemIconCallback(id, ITEM_CB_WAIT_ANIM, 2, 0); } } -void sub_80960C0(void) +// The party menu is being closed, if the cursor is on +// a Pokémon that has a held item make sure it slides +// up along with the closing menu. +void MoveHeldItemWithPartyMenu(void) { s32 i; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active && gPSSData->itemIcons[i].cursorArea == CURSOR_AREA_IN_PARTY) - SetItemIconCallback(i, 7, CURSOR_AREA_BOX, 0); + if (gStorage->itemIcons[i].active && gStorage->itemIcons[i].cursorArea == CURSOR_AREA_IN_PARTY) + SetItemIconCallback(i, ITEM_CB_HIDE_PARTY, 2, 0); } } -bool8 sub_809610C(void) +bool8 IsItemIconAnimActive(void) { s32 i; for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active) + if (gStorage->itemIcons[i].active) { - if (!gPSSData->itemIcons[i].sprite->affineAnimEnded && gPSSData->itemIcons[i].sprite->affineAnimBeginning) + if (!gStorage->itemIcons[i].sprite->affineAnimEnded && gStorage->itemIcons[i].sprite->affineAnimBeginning) return TRUE; - if (gPSSData->itemIcons[i].sprite->callback != SpriteCallbackDummy && gPSSData->itemIcons[i].sprite->callback != SpriteCB_ItemIcon_SetPosToCursor) + if (gStorage->itemIcons[i].sprite->callback != SpriteCallbackDummy && gStorage->itemIcons[i].sprite->callback != SpriteCB_ItemIcon_SetPosToCursor) return TRUE; } } @@ -365,11 +366,11 @@ bool8 IsActiveItemMoving(void) { s32 i; - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active && gPSSData->itemIcons[i].cursorArea == CURSOR_AREA_BOX) + if (gStorage->itemIcons[i].active && gStorage->itemIcons[i].cursorArea == CURSOR_AREA_BOX_TITLE) return TRUE; } } @@ -379,12 +380,12 @@ bool8 IsActiveItemMoving(void) const u8 *GetMovingItemName(void) { - return ItemId_GetName(gPSSData->movingItemId); + return ItemId_GetName(gStorage->movingItemId); } u16 GetMovingItem(void) { - return gPSSData->movingItemId; + return gStorage->movingItemId; } static u8 GetNewItemIconIdx(void) @@ -393,9 +394,9 @@ static u8 GetNewItemIconIdx(void) for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (!gPSSData->itemIcons[i].active) + if (!gStorage->itemIcons[i].active) { - gPSSData->itemIcons[i].active = TRUE; + gStorage->itemIcons[i].active = TRUE; return i; } } @@ -409,9 +410,9 @@ static bool32 IsItemIconAtPosition(u8 cursorArea, u8 cursorPos) for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active - && gPSSData->itemIcons[i].cursorArea == cursorArea - && gPSSData->itemIcons[i].cursorPos == cursorPos) + if (gStorage->itemIcons[i].active + && gStorage->itemIcons[i].cursorArea == cursorArea + && gStorage->itemIcons[i].cursorPos == cursorPos) return TRUE; } @@ -424,9 +425,9 @@ static u8 GetItemIconIdxByPosition(u8 cursorArea, u8 cursorPos) for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active - && gPSSData->itemIcons[i].cursorArea == cursorArea - && gPSSData->itemIcons[i].cursorPos == cursorPos) + if (gStorage->itemIcons[i].active + && gStorage->itemIcons[i].cursorArea == cursorArea + && gStorage->itemIcons[i].cursorPos == cursorPos) return i; } @@ -439,8 +440,8 @@ static u8 GetItemIconIdxBySprite(struct Sprite *sprite) for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active - && gPSSData->itemIcons[i].sprite == sprite) + if (gStorage->itemIcons[i].active + && gStorage->itemIcons[i].sprite == sprite) return i; } @@ -457,29 +458,29 @@ static void SetItemIconPosition(u8 id, u8 cursorArea, u8 cursorPos) switch (cursorArea) { case CURSOR_AREA_IN_BOX: - row = cursorPos % IN_BOX_ROWS; - column = cursorPos / IN_BOX_ROWS; - gPSSData->itemIcons[id].sprite->x = (24 * row) + 112; - gPSSData->itemIcons[id].sprite->y = (24 * column) + 56; - gPSSData->itemIcons[id].sprite->oam.priority = 2; + row = cursorPos % IN_BOX_COLUMNS; + column = cursorPos / IN_BOX_COLUMNS; + gStorage->itemIcons[id].sprite->x = (24 * row) + 112; + gStorage->itemIcons[id].sprite->y = (24 * column) + 56; + gStorage->itemIcons[id].sprite->oam.priority = 2; break; case CURSOR_AREA_IN_PARTY: if (cursorPos == 0) { - gPSSData->itemIcons[id].sprite->x = 116; - gPSSData->itemIcons[id].sprite->y = 76; + gStorage->itemIcons[id].sprite->x = 116; + gStorage->itemIcons[id].sprite->y = 76; } else { - gPSSData->itemIcons[id].sprite->x = 164; - gPSSData->itemIcons[id].sprite->y = 24 * (cursorPos - 1) + 28; + gStorage->itemIcons[id].sprite->x = 164; + gStorage->itemIcons[id].sprite->y = 24 * (cursorPos - 1) + 28; } - gPSSData->itemIcons[id].sprite->oam.priority = 1; + gStorage->itemIcons[id].sprite->oam.priority = 1; break; } - gPSSData->itemIcons[id].cursorArea = cursorArea; - gPSSData->itemIcons[id].cursorPos = cursorPos; + gStorage->itemIcons[id].cursorArea = cursorArea; + gStorage->itemIcons[id].cursorPos = cursorPos; } static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal) @@ -489,14 +490,14 @@ static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal) if (id >= MAX_ITEM_ICONS) return; - CpuFastFill(0, gPSSData->itemIconBuffer, 0x200); - LZ77UnCompWram(itemTiles, gPSSData->field_22C4); + CpuFastFill(0, gStorage->itemIconBuffer, 0x200); + LZ77UnCompWram(itemTiles, gStorage->tileBuffer); for (i = 0; i < 3; i++) - CpuFastCopy(gPSSData->field_22C4 + (i * 0x60), gPSSData->itemIconBuffer + (i * 0x80), 0x60); + CpuFastCopy(gStorage->tileBuffer + (i * 0x60), gStorage->itemIconBuffer + (i * 0x80), 0x60); - CpuFastCopy(gPSSData->itemIconBuffer, gPSSData->itemIcons[id].tiles, 0x200); - LZ77UnCompWram(itemPal, gPSSData->itemIconBuffer); - LoadPalette(gPSSData->itemIconBuffer, gPSSData->itemIcons[id].palIndex, 0x20); + CpuFastCopy(gStorage->itemIconBuffer, gStorage->itemIcons[id].tiles, 0x200); + LZ77UnCompWram(itemPal, gStorage->itemIconBuffer); + LoadPalette(gStorage->itemIconBuffer, gStorage->itemIcons[id].palIndex, 0x20); } static void SetItemIconAffineAnim(u8 id, u8 animNum) @@ -504,7 +505,7 @@ static void SetItemIconAffineAnim(u8 id, u8 animNum) if (id >= MAX_ITEM_ICONS) return; - StartSpriteAffineAnim(gPSSData->itemIcons[id].sprite, animNum); + StartSpriteAffineAnim(gStorage->itemIcons[id].sprite, animNum); } #define sItemIconId data[0] @@ -520,36 +521,36 @@ static void SetItemIconCallback(u8 id, u8 callbackId, u8 cursorArea, u8 cursorPo switch (callbackId) { case ITEM_CB_WAIT_ANIM: - gPSSData->itemIcons[id].sprite->sItemIconId = id; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_WaitAnim; + gStorage->itemIcons[id].sprite->sItemIconId = id; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_WaitAnim; break; case ITEM_CB_TO_HAND: - gPSSData->itemIcons[id].sprite->sState = 0; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToHand; + gStorage->itemIcons[id].sprite->sState = 0; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToHand; break; case ITEM_CB_TO_MON: - gPSSData->itemIcons[id].sprite->sState = 0; - gPSSData->itemIcons[id].sprite->sCursorArea = cursorArea; - gPSSData->itemIcons[id].sprite->sCursorPos = cursorPos; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToMon; + gStorage->itemIcons[id].sprite->sState = 0; + gStorage->itemIcons[id].sprite->sCursorArea = cursorArea; + gStorage->itemIcons[id].sprite->sCursorPos = cursorPos; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToMon; break; case ITEM_CB_SWAP_TO_HAND: - gPSSData->itemIcons[id].sprite->sState = 0; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToHand; - gPSSData->itemIcons[id].sprite->sCursorArea = cursorArea; - gPSSData->itemIcons[id].sprite->sCursorPos = cursorPos; + gStorage->itemIcons[id].sprite->sState = 0; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToHand; + gStorage->itemIcons[id].sprite->sCursorArea = cursorArea; + gStorage->itemIcons[id].sprite->sCursorPos = cursorPos; break; case ITEM_CB_SWAP_TO_MON: - gPSSData->itemIcons[id].sprite->sState = 0; - gPSSData->itemIcons[id].sprite->sCursorArea = cursorArea; - gPSSData->itemIcons[id].sprite->sCursorPos = cursorPos; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToMon; + gStorage->itemIcons[id].sprite->sState = 0; + gStorage->itemIcons[id].sprite->sCursorArea = cursorArea; + gStorage->itemIcons[id].sprite->sCursorPos = cursorPos; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToMon; break; case ITEM_CB_HIDE_PARTY: // If cursor is on a Pokémon with a held item and // the player closes the party menu, have the held // item follow the Pokémon as the menu slides out - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_HideParty; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_HideParty; break; } } @@ -559,8 +560,8 @@ static void SetItemIconActive(u8 id, bool8 show) if (id >= MAX_ITEM_ICONS) return; - gPSSData->itemIcons[id].active = show; - gPSSData->itemIcons[id].sprite->invisible = (show == FALSE); + gStorage->itemIcons[id].active = show; + gStorage->itemIcons[id].sprite->invisible = (show == FALSE); } static const u32 *GetItemIconPic(u16 itemId) @@ -578,9 +579,9 @@ void PrintItemDescription(void) const u8 *description; if (IsActiveItemMoving()) - description = ItemId_GetDescription(gPSSData->movingItemId); + description = ItemId_GetDescription(gStorage->movingItemId); else - description = ItemId_GetDescription(gPSSData->displayMonItemId); + description = ItemId_GetDescription(gStorage->displayMonItemId); FillWindowPixelBuffer(2, PIXEL_FILL(1)); AddTextPrinterParameterized5(2, FONT_2, description, 2, 0, 0, NULL, 0, 0); @@ -588,7 +589,7 @@ void PrintItemDescription(void) void InitItemInfoWindow(void) { - gPSSData->itemInfoWindowOffset = 25; + gStorage->itemInfoWindowOffset = 25; LoadBgTiles(0, sItemInfoFrame_Gfx, 0x80, 0x1A4); DrawItemInfoWindow(0); } @@ -597,53 +598,49 @@ bool8 UpdateItemInfoWindowSlideIn(void) { s32 i, pos; - if (gPSSData->itemInfoWindowOffset == 0) + if (gStorage->itemInfoWindowOffset == 0) return FALSE; - gPSSData->itemInfoWindowOffset--; - pos = 25 - gPSSData->itemInfoWindowOffset; + gStorage->itemInfoWindowOffset--; + pos = 25 - gStorage->itemInfoWindowOffset; for (i = 0; i < pos; i++) - { - WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gPSSData->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25); - } + WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gStorage->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25); DrawItemInfoWindow(pos); - return (gPSSData->itemInfoWindowOffset != 0); + return (gStorage->itemInfoWindowOffset != 0); } bool8 UpdateItemInfoWindowSlideOut(void) { s32 i, pos; - if (gPSSData->itemInfoWindowOffset == 25) + if (gStorage->itemInfoWindowOffset == 25) return FALSE; - if (gPSSData->itemInfoWindowOffset == 0) + if (gStorage->itemInfoWindowOffset == 0) FillBgTilemapBufferRect(0, 0, 25, 11, 1, 10, 17); - gPSSData->itemInfoWindowOffset++; - pos = 25 - gPSSData->itemInfoWindowOffset; + gStorage->itemInfoWindowOffset++; + pos = 25 - gStorage->itemInfoWindowOffset; for (i = 0; i < pos; i++) - { - WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gPSSData->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25); - } + WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gStorage->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25); DrawItemInfoWindow(pos); - FillBgTilemapBufferRect(0, 0, pos, 11, 1, 10, 0x11); - return (gPSSData->itemInfoWindowOffset != 25); + FillBgTilemapBufferRect(0, 0, pos, 11, 1, 10, 17); + return (gStorage->itemInfoWindowOffset != 25); } static void DrawItemInfoWindow(u32 x) { if (x != 0) { - FillBgTilemapBufferRect(0, 0x1A4, 0, 0xB, x, 1, 0xFu); - FillBgTilemapBufferRect(0, 0x9A4, 0, 0x14, x, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x1A4, 0, 0xB, x, 1, 15); + FillBgTilemapBufferRect(0, 0x9A4, 0, 0x14, x, 1, 15); } - FillBgTilemapBufferRect(0, 0x1A5, x, 0xC, 1, 8, 0xFu); - FillBgTilemapBufferRect(0, 0x1A6, x, 0xB, 1, 1, 0xFu); - FillBgTilemapBufferRect(0, 0x1A7, x, 0x14, 1, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x1A5, x, 0xC, 1, 8, 15); + FillBgTilemapBufferRect(0, 0x1A6, x, 0xB, 1, 1, 15); + FillBgTilemapBufferRect(0, 0x1A7, x, 0x14, 1, 1, 15); ScheduleBgCopyTilemapToVram(0); } @@ -651,14 +648,14 @@ static void SpriteCB_ItemIcon_WaitAnim(struct Sprite *sprite) { if (sprite->affineAnimEnded) { - SetItemIconActive(sprite->data[0], FALSE); + SetItemIconActive(sprite->sItemIconId, FALSE); sprite->callback = SpriteCallbackDummy; } } static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->data[1] = sprite->x << 4; @@ -666,7 +663,7 @@ static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite) sprite->data[3] = 10; sprite->data[4] = 21; sprite->data[5] = 0; - sprite->data[0]++; + sprite->sState++; case 1: sprite->data[1] -= sprite->data[3]; sprite->data[2] -= sprite->data[4]; @@ -680,14 +677,14 @@ static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite) static void SpriteCB_ItemIcon_SetPosToCursor(struct Sprite *sprite) { - sprite->x = gPSSData->cursorSprite->x + 4; - sprite->y = gPSSData->cursorSprite->y + gPSSData->cursorSprite->y2 + 8; - sprite->oam.priority = gPSSData->cursorSprite->oam.priority; + sprite->x = gStorage->cursorSprite->x + 4; + sprite->y = gStorage->cursorSprite->y + gStorage->cursorSprite->y2 + 8; + sprite->oam.priority = gStorage->cursorSprite->oam.priority; } static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->data[1] = sprite->x << 4; @@ -695,7 +692,7 @@ static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite) sprite->data[3] = 10; sprite->data[4] = 21; sprite->data[5] = 0; - sprite->data[0]++; + sprite->sState++; case 1: sprite->data[1] += sprite->data[3]; sprite->data[2] += sprite->data[4]; @@ -703,7 +700,7 @@ static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite) sprite->y = sprite->data[2] >> 4; if (++sprite->data[5] > 11) { - SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->data[6], sprite->data[7]); + SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->sCursorArea, sprite->sCursorPos); sprite->callback = SpriteCallbackDummy; } break; @@ -712,7 +709,7 @@ static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite) static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->data[1] = sprite->x << 4; @@ -720,7 +717,7 @@ static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite) sprite->data[3] = 10; sprite->data[4] = 21; sprite->data[5] = 0; - sprite->data[0]++; + sprite->sState++; case 1: sprite->data[1] -= sprite->data[3]; sprite->data[2] -= sprite->data[4]; @@ -729,7 +726,7 @@ static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite) sprite->x2 = gSineTable[sprite->data[5] * 8] >> 4; if (++sprite->data[5] > 11) { - SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->data[6], sprite->data[7]); + SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->sCursorArea, sprite->sCursorPos); sprite->x2 = 0; sprite->callback = SpriteCB_ItemIcon_SetPosToCursor; } @@ -739,7 +736,7 @@ static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite) static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->data[1] = sprite->x << 4; @@ -747,7 +744,7 @@ static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite) sprite->data[3] = 10; sprite->data[4] = 21; sprite->data[5] = 0; - sprite->data[0]++; + sprite->sState++; case 1: sprite->data[1] += sprite->data[3]; sprite->data[2] += sprite->data[4]; @@ -756,7 +753,7 @@ static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite) sprite->x2 = -(gSineTable[sprite->data[5] * 8] >> 4); if (++sprite->data[5] > 11) { - SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->data[6], sprite->data[7]); + SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->sCursorArea, sprite->sCursorPos); sprite->callback = SpriteCallbackDummy; sprite->x2 = 0; } @@ -779,16 +776,10 @@ static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite) #undef sCursorArea #undef sCursorPos - -//------------------------------------------------------------------------------ -// SECTION: UnkUtil -// // Some data transfer utility that goes functionally unused. // It gets initialized with UnkUtil_Init, and run every vblank in Pokémon // Storage with UnkUtil_Run, but neither of the Add functions are ever used, // so UnkUtil_Run performs no actions. -//------------------------------------------------------------------------------ - static EWRAM_DATA struct UnkUtil *sUnkUtil = NULL; diff --git a/src/tm_case.c b/src/tm_case.c index 43d590c40..8b77972ab 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -953,7 +953,7 @@ static void Task_SelectTMAction_Type3(u8 taskId) if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]))) { - sTMCaseDynamicResources->savedCallback = Cb2_ReturnToPSS; + sTMCaseDynamicResources->savedCallback = CB2_ReturnToPokeStorage; Task_BeginFadeOutFromTMCase(taskId); } else From c0bf5764452e1ed294682db61e1cd2e88c68010d Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Sat, 3 Sep 2022 23:30:02 +0800 Subject: [PATCH 36/38] Organize Pokemon storage graphics --- graphics/interface/pss_unk_83CDAB8.png | Bin 113 -> 0 bytes graphics/interface/pss_unk_83CE2B8.png | Bin 132 -> 0 bytes graphics/interface/pss_unk_83CE438.png | Bin 168 -> 0 bytes graphics/interface/pss_unk_83CE738.pal | 19 -- graphics/interface/pss_unk_83CE810.png | Bin 282 -> 0 bytes graphics/interface/pss_unk_83CEA10.pal | 19 -- graphics/interface/pss_unk_83CEC80.png | Bin 886 -> 0 bytes graphics/interface/pss_unk_83CF16C.png | Bin 478 -> 0 bytes graphics/interface/pss_unk_83CF464.png | Bin 665 -> 0 bytes graphics/interface/pss_unk_83CF874.png | Bin 512 -> 0 bytes graphics/interface/pss_unk_83CFBA0.png | Bin 748 -> 0 bytes graphics/interface/pss_unk_83D0008.png | Bin 749 -> 0 bytes graphics/interface/pss_unk_83D0454.png | Bin 618 -> 0 bytes graphics/interface/pss_unk_83D0818.png | Bin 736 -> 0 bytes graphics/interface/pss_unk_83D0C78.png | Bin 805 -> 0 bytes graphics/interface/pss_unk_83D1124.png | Bin 636 -> 0 bytes graphics/interface/pss_unk_83D14F4.png | Bin 665 -> 0 bytes graphics/interface/pss_unk_83D18B4.png | Bin 603 -> 0 bytes graphics/interface/pss_unk_83D1C8C.png | Bin 552 -> 0 bytes graphics/interface/pss_unk_83D1FD4.png | Bin 722 -> 0 bytes graphics/interface/pss_unk_83D23DC.png | Bin 404 -> 0 bytes graphics/interface/pss_unk_83D2654.png | Bin 310 -> 0 bytes graphics/interface/pss_unk_83D29D0.pal | 35 ---- graphics/interface/pss_unk_83D2AD0.png | Bin 201 -> 0 bytes graphics/interface/pss_unk_83D2BEC.png | Bin 432 -> 0 bytes graphics/interface/pss_unk_83D33EC.png | Bin 168 -> 0 bytes graphics/interface/pss_unk_83D35DC.png | Bin 110 -> 0 bytes graphics/pokemon_storage/box_scroll_arrow.png | Bin 0 -> 270 bytes .../choose_box_menu_center.png | Bin 0 -> 140 bytes .../choose_box_menu_corners.png | Bin 0 -> 238 bytes graphics/pokemon_storage/close_box_button.bin | 1 + graphics/pokemon_storage/cursor.png | Bin 0 -> 489 bytes graphics/pokemon_storage/cursor_shadow.png | Bin 0 -> 238 bytes .../interface.pal} | 0 .../interface_no_display_mon.pal} | 0 graphics/pokemon_storage/item_info_frame.png | Bin 0 -> 173 bytes .../menu.bin} | Bin .../menu.pal} | 0 .../menu.png} | Bin .../misc1.pal} | 0 graphics/pokemon_storage/misc2.pal | 19 ++ .../party_menu.bin} | Bin .../party_menu.pal} | 0 graphics/pokemon_storage/party_slot_empty.bin | 1 + .../pokemon_storage/party_slot_filled.bin | 1 + graphics/pokemon_storage/pkmn_data.bin | 1 + .../scrolling_bg.bin} | Bin graphics/pokemon_storage/scrolling_bg.png | Bin 0 -> 228 bytes .../scrolling_bg_move_items.pal} | 0 .../unused.pal} | 0 .../unused_choose_box_menu.pal} | 0 .../pokemon_storage/wallpapers/beach/box.pal | 19 ++ .../wallpapers/beach/tilemap.bin} | Bin .../wallpapers/beach/tiles.png | Bin 0 -> 818 bytes .../wallpapers/beach/title.pal} | 18 +- .../wallpapers/cave/box.pal} | 18 +- .../wallpapers/cave/tilemap.bin} | Bin .../pokemon_storage/wallpapers/cave/tiles.png | Bin 0 -> 694 bytes .../pokemon_storage/wallpapers/cave/title.pal | 19 ++ .../pokemon_storage/wallpapers/city/box.pal | 19 ++ .../wallpapers/city/tilemap.bin} | Bin .../pokemon_storage/wallpapers/city/tiles.png | Bin 0 -> 484 bytes .../wallpapers/city/title.pal} | 18 +- .../pokemon_storage/wallpapers/crag/box.pal | 19 ++ .../wallpapers/crag/tilemap.bin} | Bin .../pokemon_storage/wallpapers/crag/tiles.png | Bin 0 -> 729 bytes .../wallpapers/crag/title.pal} | 18 +- .../pokemon_storage/wallpapers/desert/box.pal | 19 ++ .../wallpapers/desert/tilemap.bin} | Bin .../wallpapers/desert/tiles.png | Bin 0 -> 657 bytes .../wallpapers/desert/title.pal} | 18 +- .../pokemon_storage/wallpapers/forest/box.pal | 19 ++ .../wallpapers/forest/tilemap.bin} | Bin .../wallpapers/forest/tiles.png | Bin 0 -> 743 bytes .../wallpapers/forest/title.pal} | 18 +- .../wallpapers/pokecenter/box.pal | 19 ++ .../wallpapers/pokecenter/tilemap.bin} | Bin .../wallpapers/pokecenter/tiles.png | Bin 0 -> 707 bytes .../wallpapers/pokecenter/title.pal} | 18 +- .../wallpapers/river/box.pal} | 18 +- .../wallpapers/river/tilemap.bin} | Bin .../wallpapers/river/tiles.png | Bin 0 -> 622 bytes .../wallpapers/river/title.pal | 19 ++ .../wallpapers/savanna/box.pal | 19 ++ .../wallpapers/savanna/tilemap.bin} | Bin .../wallpapers/savanna/tiles.png | Bin 0 -> 529 bytes .../wallpapers/savanna/title.pal} | 18 +- .../wallpapers/seafloor/box.pal} | 18 +- .../wallpapers/seafloor/tilemap.bin} | Bin .../wallpapers/seafloor/tiles.png | Bin 0 -> 659 bytes .../wallpapers/seafloor/title.pal | 19 ++ .../wallpapers/simple/box.pal} | 18 +- .../wallpapers/simple/tilemap.bin} | Bin .../wallpapers/simple/tiles.png | Bin 0 -> 347 bytes .../wallpapers/simple/title.pal | 19 ++ .../wallpapers/sky/box.pal} | 18 +- .../wallpapers/sky/tilemap.bin} | Bin .../pokemon_storage/wallpapers/sky/tiles.png | Bin 0 -> 614 bytes .../pokemon_storage/wallpapers/sky/title.pal | 19 ++ .../pokemon_storage/wallpapers/snow/box.pal | 19 ++ .../wallpapers/snow/tilemap.bin} | Bin .../pokemon_storage/wallpapers/snow/tiles.png | Bin 0 -> 607 bytes .../wallpapers/snow/title.pal} | 18 +- .../wallpapers/stars/box.pal} | 18 +- .../wallpapers/stars/tilemap.bin} | Bin .../wallpapers/stars/tiles.png | Bin 0 -> 571 bytes .../wallpapers/stars/title.pal | 19 ++ .../wallpapers/tiles/box.pal} | 18 +- .../wallpapers/tiles/tilemap.bin} | Bin .../wallpapers/tiles/tiles.png | Bin 0 -> 444 bytes .../wallpapers/tiles/title.pal | 19 ++ .../wallpapers/unused.bin} | 0 .../wallpapers/volcano/box.pal} | 18 +- .../wallpapers/volcano/tilemap.bin} | Bin .../wallpapers/volcano/tiles.png | Bin 0 -> 720 bytes .../wallpapers/volcano/title.pal | 19 ++ graphics/pokemon_storage/waveform.png | Bin 0 -> 260 bytes graphics_file_rules.mk | 50 +++++ src/graphics.c | 10 +- src/pokemon_storage_system_2.c | 6 +- src/pokemon_storage_system_3.c | 58 ++---- src/pokemon_storage_system_4.c | 180 +++++++++++------- src/pokemon_storage_system_5.c | 6 +- src/pokemon_storage_system_8.c | 2 +- 124 files changed, 536 insertions(+), 464 deletions(-) delete mode 100644 graphics/interface/pss_unk_83CDAB8.png delete mode 100644 graphics/interface/pss_unk_83CE2B8.png delete mode 100644 graphics/interface/pss_unk_83CE438.png delete mode 100644 graphics/interface/pss_unk_83CE738.pal delete mode 100644 graphics/interface/pss_unk_83CE810.png delete mode 100644 graphics/interface/pss_unk_83CEA10.pal delete mode 100644 graphics/interface/pss_unk_83CEC80.png delete mode 100644 graphics/interface/pss_unk_83CF16C.png delete mode 100644 graphics/interface/pss_unk_83CF464.png delete mode 100644 graphics/interface/pss_unk_83CF874.png delete mode 100644 graphics/interface/pss_unk_83CFBA0.png delete mode 100644 graphics/interface/pss_unk_83D0008.png delete mode 100644 graphics/interface/pss_unk_83D0454.png delete mode 100644 graphics/interface/pss_unk_83D0818.png delete mode 100644 graphics/interface/pss_unk_83D0C78.png delete mode 100644 graphics/interface/pss_unk_83D1124.png delete mode 100644 graphics/interface/pss_unk_83D14F4.png delete mode 100644 graphics/interface/pss_unk_83D18B4.png delete mode 100644 graphics/interface/pss_unk_83D1C8C.png delete mode 100644 graphics/interface/pss_unk_83D1FD4.png delete mode 100644 graphics/interface/pss_unk_83D23DC.png delete mode 100644 graphics/interface/pss_unk_83D2654.png delete mode 100644 graphics/interface/pss_unk_83D29D0.pal delete mode 100644 graphics/interface/pss_unk_83D2AD0.png delete mode 100644 graphics/interface/pss_unk_83D2BEC.png delete mode 100644 graphics/interface/pss_unk_83D33EC.png delete mode 100644 graphics/interface/pss_unk_83D35DC.png create mode 100644 graphics/pokemon_storage/box_scroll_arrow.png create mode 100644 graphics/pokemon_storage/choose_box_menu_center.png create mode 100644 graphics/pokemon_storage/choose_box_menu_corners.png create mode 100644 graphics/pokemon_storage/close_box_button.bin create mode 100644 graphics/pokemon_storage/cursor.png create mode 100644 graphics/pokemon_storage/cursor_shadow.png rename graphics/{interface/box_tiles_pal2.pal => pokemon_storage/interface.pal} (100%) rename graphics/{interface/box_tiles_pal3.pal => pokemon_storage/interface_no_display_mon.pal} (100%) create mode 100644 graphics/pokemon_storage/item_info_frame.png rename graphics/{interface/pss_unk_83CE5FC.bin => pokemon_storage/menu.bin} (100%) rename graphics/{interface/pss_unk_83CE5DC.pal => pokemon_storage/menu.pal} (100%) rename graphics/{interface/box_tiles.png => pokemon_storage/menu.png} (100%) rename graphics/{interface/pss_unk_83D2BCC.pal => pokemon_storage/misc1.pal} (100%) create mode 100644 graphics/pokemon_storage/misc2.pal rename graphics/{unknown/unknown_E9CAEC.bin => pokemon_storage/party_menu.bin} (100%) rename graphics/{interface/box_tiles_pal1.pal => pokemon_storage/party_menu.pal} (100%) create mode 100644 graphics/pokemon_storage/party_slot_empty.bin create mode 100644 graphics/pokemon_storage/party_slot_filled.bin create mode 100644 graphics/pokemon_storage/pkmn_data.bin rename graphics/{interface/pss_unk_83CE4D0.bin => pokemon_storage/scrolling_bg.bin} (100%) create mode 100644 graphics/pokemon_storage/scrolling_bg.png rename graphics/{interface/pss_unk_83CE758.pal => pokemon_storage/scrolling_bg_move_items.pal} (100%) rename graphics/{interface/pss_unk_83CE9D0.pal => pokemon_storage/unused.pal} (100%) rename graphics/{interface/pss_unk_83CDA98.pal => pokemon_storage/unused_choose_box_menu.pal} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/beach/box.pal rename graphics/{interface/pss_unk_83D0FFC.bin => pokemon_storage/wallpapers/beach/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/beach/tiles.png rename graphics/{interface/pss_unk_83D0C38.pal => pokemon_storage/wallpapers/beach/title.pal} (52%) rename graphics/{interface/pss_unk_83D07D8.pal => pokemon_storage/wallpapers/cave/box.pal} (52%) rename graphics/{interface/pss_unk_83D0B5C.bin => pokemon_storage/wallpapers/cave/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/cave/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/cave/title.pal create mode 100644 graphics/pokemon_storage/wallpapers/city/box.pal rename graphics/{interface/pss_unk_83CF374.bin => pokemon_storage/wallpapers/city/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/city/tiles.png rename graphics/{interface/pss_unk_83CF12C.pal => pokemon_storage/wallpapers/city/title.pal} (55%) create mode 100644 graphics/pokemon_storage/wallpapers/crag/box.pal rename graphics/{interface/pss_unk_83CFEF0.bin => pokemon_storage/wallpapers/crag/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/crag/tiles.png rename graphics/{interface/pss_unk_83CFB60.pal => pokemon_storage/wallpapers/crag/title.pal} (52%) create mode 100644 graphics/pokemon_storage/wallpapers/desert/box.pal rename graphics/{interface/pss_unk_83CF750.bin => pokemon_storage/wallpapers/desert/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/desert/tiles.png rename graphics/{interface/pss_unk_83CF424.pal => pokemon_storage/wallpapers/desert/title.pal} (55%) create mode 100644 graphics/pokemon_storage/wallpapers/forest/box.pal rename graphics/{interface/pss_unk_83CF050.bin => pokemon_storage/wallpapers/forest/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/forest/tiles.png rename graphics/{interface/pss_unk_83CEC40.pal => pokemon_storage/wallpapers/forest/title.pal} (54%) create mode 100644 graphics/pokemon_storage/wallpapers/pokecenter/box.pal rename graphics/{interface/pss_unk_83D22B8.bin => pokemon_storage/wallpapers/pokecenter/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/pokecenter/tiles.png rename graphics/{interface/pss_unk_83D1F94.pal => pokemon_storage/wallpapers/pokecenter/title.pal} (52%) rename graphics/{interface/pss_unk_83D14B4.pal => pokemon_storage/wallpapers/river/box.pal} (53%) rename graphics/{interface/pss_unk_83D1788.bin => pokemon_storage/wallpapers/river/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/river/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/river/title.pal create mode 100644 graphics/pokemon_storage/wallpapers/savanna/box.pal rename graphics/{interface/pss_unk_83CFA94.bin => pokemon_storage/wallpapers/savanna/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/savanna/tiles.png rename graphics/{interface/pss_unk_83CF834.pal => pokemon_storage/wallpapers/savanna/title.pal} (52%) rename graphics/{interface/pss_unk_83D10E4.pal => pokemon_storage/wallpapers/seafloor/box.pal} (52%) rename graphics/{interface/pss_unk_83D13D8.bin => pokemon_storage/wallpapers/seafloor/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/seafloor/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/seafloor/title.pal rename graphics/{interface/pss_unk_83D2614.pal => pokemon_storage/wallpapers/simple/box.pal} (55%) rename graphics/{interface/pss_unk_83D277C.bin => pokemon_storage/wallpapers/simple/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/simple/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/simple/title.pal rename graphics/{interface/pss_unk_83D1874.pal => pokemon_storage/wallpapers/sky/box.pal} (51%) rename graphics/{interface/pss_unk_83D1B4C.bin => pokemon_storage/wallpapers/sky/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/sky/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/sky/title.pal create mode 100644 graphics/pokemon_storage/wallpapers/snow/box.pal rename graphics/{interface/pss_unk_83D070C.bin => pokemon_storage/wallpapers/snow/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/snow/tiles.png rename graphics/{interface/pss_unk_83D0414.pal => pokemon_storage/wallpapers/snow/title.pal} (51%) rename graphics/{interface/pss_unk_83D1C2C.pal => pokemon_storage/wallpapers/stars/box.pal} (51%) rename graphics/{interface/pss_unk_83D1EC4.bin => pokemon_storage/wallpapers/stars/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/stars/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/stars/title.pal rename graphics/{interface/pss_unk_83D239C.pal => pokemon_storage/wallpapers/tiles/box.pal} (52%) rename graphics/{interface/pss_unk_83D256C.bin => pokemon_storage/wallpapers/tiles/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/tiles/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/tiles/title.pal rename graphics/{interface/pss_unk_83D2820.bin => pokemon_storage/wallpapers/unused.bin} (100%) rename graphics/{interface/pss_unk_83CFFC8.pal => pokemon_storage/wallpapers/volcano/box.pal} (52%) rename graphics/{interface/pss_unk_83D033C.bin => pokemon_storage/wallpapers/volcano/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/volcano/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/volcano/title.pal create mode 100644 graphics/pokemon_storage/waveform.png diff --git a/graphics/interface/pss_unk_83CDAB8.png b/graphics/interface/pss_unk_83CDAB8.png deleted file mode 100644 index 5b7d0a3b69e18afdf3d3f4ddf79bb97df6a93f7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^3P9Yz0wfr^{@y$eq%1sL978-hlV^0YNf@w%Eo5xF zo6(@f)O=KSF%twfdoe72@!ElT21xM##RDr2tY8pgU|1>QcKh*U9X60zp00i_>zopr E0JU!-!2kdN diff --git a/graphics/interface/pss_unk_83CE2B8.png b/graphics/interface/pss_unk_83CE2B8.png deleted file mode 100644 index 18ac36e21dbf4fa437e14919c8f1f9936125a073..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ0wfrI9P#J^Qr?~}jv*3L&z{>T+Mpo75_oF= znJLDGQZ~3(YF7|Ui{aQ8oX#E@qhLi>Q94goH4xDLmFW7%VF@!NgZGuM+ gZzDqi`#z!LED5(5w|P63W`d0OboFyt=akR{0I{+y<^TWy diff --git a/graphics/interface/pss_unk_83CE438.png b/graphics/interface/pss_unk_83CE438.png deleted file mode 100644 index 8be861a2670f9b9107292efd1963f4ef1ef94d86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et0wfrw&pzJ*r1Cvo9780gmYzQ;c));z*G(^QIV{(z!=$wy1~+Y>6Tc#&gXWAqMJ{pinVaaTZM-G>VFRI{+?dn+ak~W@>Znd2Q@9Th+Gw8wXoaY zQvb<3mw&eG&c>BWvo~Gi^2q0(Ve&AnJdoScJ-_b6m%_$(70UZhR0LGcQ2V@+)#?WO Yie65y^-X-`UvsCH9QdAFp9VmoP2OyRwXj@aP= zqPU<(5u^m95r;*-}N|1{{kra$EGc7C7to`*O-9$N7FMne%(%ob%V? z`Z2C)8fiiZ62dG<5t_O)?u+Wpj@n$pEO!!e=eqSYt|hS?l9=R6H_zJ>tmd`)%{$}1so#3xw+6E&EZ1u=A^{^(Wy}3GvX2q*7!ik& zZXXy?3r8|jzYRuim_Lk2t`^)s^S7#4nM?nn%;oe9tb79U0pyB#Z_O!K>E08)dt!8G z_3jdDsW@FckcoAv6XT4L)Yw$Br8)`H;}!5oz_SG0 z?E_)>U7;;yjA6-)-;vQ^n#gDi#3uZE#kie~!B8fOB#B76<0d&pP9P!UsbZ@$&Lb#0 z2&&Xzx!zEvh6u_KEsYy@#<2h_naw9M9SsxN+8QpYZ#;OpKr$XA%k#d@Xru`wWTf?t zx_vNn85R)?>E2h!3y|nh(0`yqxuaP9 z{}1tl^JU(PxPJ=Th*l9gep~LzTS3}BD&y8wIO6pow9_|6$p(B5b6d5<7222T><{* z+&(F7=|A{F$j7@BgTGC**oQw zzOEuSzOfkNE8?dSKZQ&9r~#jKz32#`5keudfEq$|M0)~gaTQNc$&+z0gRSF^^h_&^ z8%0Zluk{L(+|g^eRXn%)xF*HVIJ^SF$0=&3K>b|K7l*fk!wevz{FlL3MHW+lT&{W6 zc-AJ*vdA*kHCcVtDfe8nO^uG(p}y*ONFk-(RSN@M+LlR<*)j!A|`Z6~Jvd^g?WklQd;sZ~3VH|kHt0Is|`UrW5Mq%p&Qq*U7g8QAe z?kAmLtbbK;zzxxhLJfa_8K6f3io&p`fk_Q06fa3l={2aGDxVMPr?;ppUsp>QIl zVW6?C0@7>X7l?Q7BFE$S<9KKM%u4fW@AkA>Qw5PP0?45O(ExIoKvY0}zBu;r#qo9@ zBaVU1K8Nl3VlKg>j-s$Aw&in42cG*|@a-^eR@8Vv6%CGnk4JT6Q3cPi$>8aXqjQe( zIa1(>aj?bAAUcOAha6If4CGMED~GM{@mc)8&%#>tX5Y96U$c!uL%Q z0zn8QnKT#Fg6N0Dr4&Mt5M@bX?{|Yli4$*@9PQyAYzKI@^^?S|d_fmNNGcK1bA(i0 z?D8e<*>w*XEf7yIcz?pKA@_5>yjI6mG5hm+@f)u9<+;vD57i;5uIg;^E#$+x-_Z<9 z$iLPwpKDaXBUR(!ZAKfo)c}a7`orMXQ;WQ++|GM z2*>Q1ZNoblyA*JRdq0EFKnIth3MfE&b%9jp~ zM|5(07E%90l2X(Uvz7UhBtpKyX@mm9g?#@2s0Od!i?C&x00000NkvXXu0mjfdV)vZ diff --git a/graphics/interface/pss_unk_83CF874.png b/graphics/interface/pss_unk_83CF874.png deleted file mode 100644 index bacf96c2ea8edc1159868b0e23e53bd574f24812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmV+b0{{JqP)q9TB8s3h9W#FkIuaCBpT-JWn4tj^&3@)z?|{#So34HF>ebXk;*M?fh&* zU&qWhG4xF*6un~eG)%{H=#16=9t+@*0Y{q>KCoi}M3ntV$fF{J=o7oXX5>RT)ZzM< z^0{pxh(U$V^Xh%boB6m0xNfblZ&!SL`MA}*Rr3=v@4~%g#9d6ycbDe%?K02vmglwg zae4hZkXQInkyY~(P8U8@L)FFgOxC-)E>7;_E9=sI#9?6Pz|Ae-OIZ5=(S}5G@#Xr( z`;s*j_EI2GNF?5CAGZ|BkwAH?>MI|k^b6yrA3*X9d=Jz)O=1&-(rkd@k59B4Z}JB0 z3jN3{s0%iL@`@{HrBhI$0|}wM=0 zq;T#N=QgK1r)!h%*jMD=W0m-AF0?XaISt*i*7pa*4iaUnU4TIV0000GU2zgYqM)G2N>@;vgoyY7 zh!mutxRWgS1v> zta*;Hg(uI!lLQYG0mY#BrXd9KIgoqAA^~Hyh96TA0@HI_hZr2kj3U-x0Tm6#feHw* z-jj?@mK#erM^u;yKz!o@@hQ-ca23xD|K|CHfk6r^$lph7atrg%mr?cZPk?&?xO>%r zv(USd0Yp^&HdskbU=~YQ=Tz&AUs$7a$Q4qzTgT>V<*#wNO_zG>DxVLv|Y= zx?(uEd{h6y{ZjQ3Zbe{`urPevdYQ-7d5g4w)vZlka~Z{-m^Xe07Vm(wNvgla*Djcu zxC2%reppd|v7){i+NGS34$ehUC$v(Rkep5oA>mcm)TJZzU~0IwZcXcrV#COaaKK_M zW*UhwZW?EMDF(LJ!H}FBIveJivG~PcfW3;;-z0SiDq99aA$MpJ0Wiv0udJ&ieH#Ms zEKWzzp~JC_tw%IEOff(NJX!_hAWG>H zpU&GlOX*?D)oeEVM)Udntf8}rgP$H#R=D3(l$jxaacro#;ICY~Gw%z^jd@K*DT7Fj zAYv#og)hmm&I?MlONw_>yUvq(o_!^y9fs0oSQoQSur7am z)T-Ro1oWQQ8q<&r>Q?J9;+G?i`_u)isjDwl{|Ebe+_mIB0ayFd&u+d6rYzn7)f<X}1LexcQCdG3a~RhJu>gmhV`tTTl50-g&Dj zvMkXN`->vN1nFK^TKw^VMSOef@J2n7*kXr6O9o00000NkvXXu0mjf&1ztw diff --git a/graphics/interface/pss_unk_83D0454.png b/graphics/interface/pss_unk_83D0454.png deleted file mode 100644 index 48156edeea99012bfbc8e953a6ff227b0abd717d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)j0006pNklyaT@8wSR_Y z_AwvgQ`twJ=W9iNh7#7t8a7S$L^9Ov6rnH4x7#fiih{xcItP-I>d@D1RaX>+og%<4 zQW@Cm>P8W0!y88u0#M-+quyktU~x>Wr?@@9j2#^IfkYT$(H&sI$>m-l1`SOFDX>ah z^wl7bE?-tSkb*mu-KquoJw=M>9dNIJ^K!=_IkF&mpAg_}r_qNNHInJMOhKy4Hb_L^ z&;0(cZiuPrqr4xYnZ3_CJa7MAIe>_oKMH-K8LSU`)F&J27L+X@8P_cwWg)F{hk?$C z*9v+MM1{z>&T&NnbwqhsB@#zutPJ&+;BVf>a2A?EEO-hzh$ZsK6_l+Byt>) z?ZP?I6R_sAcYsNowvCC8&;e@o2p1)71lFO@Ue}G{A2%D15W*-9WdHyG07*qoM6N<$ Ef}?jKlK=n! diff --git a/graphics/interface/pss_unk_83D0818.png b/graphics/interface/pss_unk_83D0818.png deleted file mode 100644 index 6e42fd5258b44efacc60351a0c8a7054ebd5468a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmV<60w4W}P) zO_I|v5QUoqKoM4~7|4F^$TC;R5s*9=kjw#a5<9XYTgcb>N0s_Y^AcLcBUTV9*B=8*?yCg#24TsLqxP%9E)*NS&F_D69VJR)2q3LuN&W^jPW3K3n!|%=74~+Gre-q3(R(jf`%(; zy$~YvM#OnO^%wh7BdMkO{Y{;*x_dXlE1>5~n5Jaj^NqUEvxA<-8N(Yuc!dqFSMhur zCaAd}Fb6~kv^MykyiqV=b(3;9XV~w+rW~aSH3b}>dP7^Va`f%Ze)M^ZH}a0qyinmG zD$0PnTGl+0n#I&e8Q{bKC$^Kru8=MeJ=5j9O~6e- z@;0r@+uX^EF&6@64!WH=mq;^o4S;rJ;+nPRM?DxP@%%D+9YeHbiOpM%qq!8%FXQOj zeg#C{5f8Ut*ngO(r;XwZJsB0WBZkpiAK`HuX*SX4apUk!f9UpCZsP~w_Ue0z-iHRS z!0<+c-hj~TI_^JQ8^MM8 Sk=x(^0000mjG3KLSSPHf04qbpE`Y&TVwR+X>~9jH3Q*IlTP zXzeUzKxyoOtuR>d1mQo&N!qk_YR>TK+W!6DbMC!9rXhmLqJqd^ASgj(=piUVl+(p= z8C@LTtYgG6Fk5$la=QLZU5(KpRr}t_)%829b2@!W&XgkMy6v%Uj&XZP#seBszXhmM z;1eTZ3@Zy*#7Z^fQNSZTK^1_#Ko&bhP=Fwf$WTROX$V9ofGjGb6a2qUkgt>ckm+ol z)FBn!Lx_QQ9dZzk{B3C)2+KxkQch9A6JN=Ez^cS^S%}p{| z=LWg$51VxC?ww=1_fl$qbOG(8nxr?vfvwvEd1&Qq#!J z0q_3&BJgl^j61yhL^S-v;3Fjqv525mLD5)#whr?7#7f$;v_7+ZO`PEpr zl28;!z5M(}x*i2d5>xMoWzDD~KB_?niDg-9#kyJ;B`mSXMC9wjD5QiX)|)l6SciIp zOI8ijtQXCDMAn))vZ^tAk zy%A$vIkthj_SH{FAW13&*@z5RmQEn1ieU@hmR&mebe|*>^s-j3b%37ZX;kEMpY)K1 z-}SiuQn_StV~1*09We17|!-_kPtc3fPZ;6VUu?(&)r1B?bTIt=*U0PhBqe?<^* zZF)dmKR6_hox2#aGf(c1I`uWbuk2S}$Gu(58~78ym+(7iu-`iSdF-bz{QQyMKKm^# j!(|603{DF2E2;YjsL?`7#cEtu00000NkvXXu0mjfL;-^e diff --git a/graphics/interface/pss_unk_83D1124.png b/graphics/interface/pss_unk_83D1124.png deleted file mode 100644 index fe7810abbb95ac0a379a1bef810ad058862dd661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmV-?0)zdDP)9wBG&vjXfR@_0J&I@G&lqp5Qbi(*rVyj~yykX3EPg9EMVzF4n zv|6oVa$WZoot|FQx~!p#5d}hqj$z-h%38YQAdcfm(+<(i8#g2sAnQC|(yQxOB?!7j zjOqZ$2K>rb*tMSTAlCZGZ}2@@lI%#QL)1^}u$1f?;-4(J;rh*Z^^FnX;CDdj>qyb` zomS+&1eQ^t2n$6Q3>^Tf-9Ce8wa>$9^>_jhQT~^~EvgiowqcsO4x_`%Xg>X7qr=nc z5gmF)m!_q2zpm&+eGm`&aT8kUP;3ibEgAK*(lz~pd+HKwF+5PdvF}lT>3X0{o&iJ; z7$?UQ_#fs~?if79AahcKlo9m~>3Z~;-Zf9()K$Z6e}}yLUqC8>K$!kx({UKF1}87CMQQr*I(5fp6{|_7lT?qR&qhe%ND3@A8tw=c^fcS5p_4XD$i# z=?u=|14)w?>1aMj-qqW=Ab0vklDov-@*H{3MP*w0vAx{zW#HoyE1__&@H%<#(ftR3 Wb14i?fo|~t0000`e8KNmeelw{}?50_>| zlSZt0(ksiJ)UmSYO_Z(P;(CK(7hNOPJYGx%W!)3QQ2*hbw|Hkn@7*vScC>p&9qB#r z>NQY*1kRsN*&U287ZSe!C>XmP=oLaMxbhVN6m?a;g!Z1!|Sc0GTPixTqL>~nYG{k*8=9+m3EXnSi2-uoccMk;FyKLd_h<(YQTKzE2#OknG|(>9qG$)1++Zd}N-m~OfSPy6CYdDRPhpO1`nPa#P1hbrmq`(ArH z^xEzzKy;6BGylT=#d+Fg7EcV&STu~U$&YZTjNKLC9G@J%<|p23zVn9o0DL;yzUM)& z!^#`r|M3I&*_Q+G_%Pi_Y z`?zJG8VXQ5$cmpt*lG$DqvVA=#M%L+So3H}RRu^XHvF`ir?$9{xvuLv`i3~7>vDCu z>n3zh2x`CJ@Mb`54=@xLdWScR2jHy$h-moD;8xKHa>8mZc1<{hDpYrhpnDLKv|;e5 z3#WCctN8Gg+CxgGDomB3lM3&Y66yu~SxWcZV+-1pmYkm%yGieZ_p5bZlI<~Co3WeH zI-u0r@w&%!v+n$duC`p~#r*Cgv8t_3>h2MdPP>J5gRVDxWJmM!7e|EBE#-$cB5R0G z5ctFp=K#?w#@V3*|AAi(g~z)s;5;1TIcd^cM1Vtt)MDLeZrfj2ce?>x2RyaD?|IVW z@Zt=-eDRar@jL9bIBn)vXsVyTwUZamO6TDxZ5fTnWp3&G)eTPlI`ZtO1^yHL{!gxR zFUD>HOfUufM|m$c`(B)!)LHhD5}(N$P@nyPA*Y=r<0?r%xUYJ?>{wAnX{5Y;@`$Mq pgm4xExaaVL9h|0`bGBnHe*u<6GX2H=57Ynv002ovPDHLkV1kfJAQS)q diff --git a/graphics/interface/pss_unk_83D1C8C.png b/graphics/interface/pss_unk_83D1C8C.png deleted file mode 100644 index 5554f6a51de1ad0c45088355483408a32a836044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmV+@0@wYCP)ZjsYKAK$PocP9D*#OrdIQvMBi^_pTVD?Z@`L`%)r>e?Sp+E%Ge6p#l@Ew3d@VHd9d>x7MHT#09_vjRA zVy?*`Xd-aN3~1M&*zOLG*2=q`#1J#ofQKKTm<9VlPmz)RPOP2Kapz7f>@f(wo>GdG zpvoIpSQ>Pon7fufF?UGyv7&9(8tUV-|2EZP!k$-8M(+m!ByD_Mub&^T6)>NJ?VX6j zUc|eN2w1#1)|5l7JT?&l-s0yVpG9oC2sewE&)@p3oRooA0s^M@)EvUDL07xSoJigt zu&=^L+!#XiSk>By-%+b?{_j>sM~fP?`}$1Td)0^KT#4_zJ+E|-(Q5h(NeZ&n*Vgkk z-+^?RrPI78kSmDZKK+=oEXC=^ItzEn*k34Gr*xrpg2y4=jj~~_(#I|;#)re0000l&X6os#&f|5wBY^gsWGGT!Y|A97o-4QA~6LUA(p%Po^#uz+B-FR$_MXI`Waiq?b zlKum#?ycN&-m~Gwc~D=WPdB{7jeULYwd4q?iwt35LN6s1jj%`wuTC3ra3=ajv>@^8 z&a_@T_4J{7F+$daHbCmvB}tD+ByJH%{W_i|iA9e%P!GbQ6veINP`$XLfi4jnbp3r< zcXgfn)t~HLwt2q_civWBU0bP86vBZ|7erAcAv1+k6jPrrqOOt^x}U)9T`uzUK9@+g z$cQK`Gi#bZD3xahU-8=vPe0Fsl-W7(J7mU#Ao@=RcP+ga^e8*mxQtX=-$fx>$0vde z-4J=MpnIZh@6p$etS?Tw0#R%+xHxIcRUBW68lca%_bUR;x7IUIig-m_+3ynP)Q2wZ z4R0Nh?9rkL;YK2E?aC+iPjg@-rs(lfiOnt*@S0HSfke}ypS88EdO=6Lq&Hv=DY}QO z9O8&WeDnd78K0Qrh~wD|Q3sE_0r%y%-;v$jZzcb`-CFA%ytFOCqR<6&M5xSQP#1c2 zm9Ywx8u)bs47=jk59|WyXs@m^_QsArU1iM~JNk5H8M(U-tIDU_Z?0nD_5AgWPYeGg zh1b0G9azc*ip+3!UaI){dPlK z*KNZaK4p0EZ$Ceifv7KP$iYfVIU=Rh#6!%N%^x$$pdB7=vR*z$%$Hy=O)-vf%b2yk zPhh<gXXAGY&F>O%+ zPYk!{d92vn1MMG6U{R4-e*l|pL*}Pxyj`szsvr*y00-miunb;wuLK}! zQ(vfmV-nUUhI@uBjn@rZl}N9G`b2$ zG($kHIo($b26&TGFJB#;7+lDjjaHF2Jn+y@+g9GS**wv&GBq zOZJ5fLcS;@M-r!T>hi9;f$U<4I#)wG(uU#FVdQ&MBb@0JJquJpcdz diff --git a/graphics/interface/pss_unk_83D2BEC.png b/graphics/interface/pss_unk_83D2BEC.png deleted file mode 100644 index 3a6e353079ee9d11e6f822ad9448b2ec721668c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^3P9Yz!VDy5c$8@ZDT4r?5ZC`l|4*5+CMYQC|FfuX z_lmzg+j6#=q1ub#KOAhy`o9Fky?5^(P}AgFW_N%TV@Z%-FoVOh8)-nco~Mgrh)3ts zsfKxn4R~CaO3&EU_%bjqs_)Ipr4#2(*=QA#xjfTD)U{!oGefqK{62@9fBtbjjK6Mj z#bCD))4nKAACIeEmz<8c32jv~>sn%Z@(pXqviXhgCNORY`L>|bgnQe(+{r#m*WWG8 zopGV;siYDM`=8a%&o(D~k5?7&+dl7t0oN*XpVWoyZ4bZct$V#K>hK$ei+nbLj2oE! zw>@RdX@8txVWDy0$4|cvbq{BBPh@ztC;pv~1dq_=M+dj=<9Gj`^Ik%BPWKFFg&C^KY_~v;4uTA978ty2cbdxvBT#8rCxmnGD7aZY@jgTe~ HDWM4fJ}n`j diff --git a/graphics/pokemon_storage/box_scroll_arrow.png b/graphics/pokemon_storage/box_scroll_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..c56139ea115173ed0662c6d534b4d45402ed8b6b GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV!VDzu-cxxDq*&4&eH|GXHuiJ>Nn{1`4FY^Z zT!HkIDQkj)qW=H?fA;_XsJ-u^mYfZ0UJ{g54HN{*-n;j0$&xKVHO0jsk+lq5!az~R zk|4ie28U-i(tsTH5>H=O_GcV2f`a0&XUy{i3W=AvMwA5SrA{CXFZnOzNo+i; z-Z4?|h}`Ce8LUUXe?PJN>57gIN-f*vJl{^(bNR+iDGOayn^n(#USAG0k-^i|&t;uc GLK6VC{$vUO literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/choose_box_menu_center.png b/graphics/pokemon_storage/choose_box_menu_center.png new file mode 100644 index 0000000000000000000000000000000000000000..81500fdf6e93dec9647a884fd2cfca79502eba58 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|ei2$Dv*Z)WVPnohNC@AXxv#4+P zioZSEa<-bG+Ka*UwQwR(jlQRgV~EG`WDjKq2@Wj|RR)O|j)p+i#awQpJz5f>4l9|O lTnjB39U=~DNU(Y^Fz6iIIN`G6@hG5H22WQ%mvv4FO#lLoDZl^# literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/choose_box_menu_corners.png b/graphics/pokemon_storage/choose_box_menu_corners.png new file mode 100644 index 0000000000000000000000000000000000000000..5600b0462ca7d162c3a21db8f7eed5de6847d4d8 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ!VDx|6+TY^QY`6?zK#qG8~eHcB(ehe5&=FT zuK$nzpE6}lP*BwWXHnno6@PoSRaKOb{ gK;(q`4b^{~g()?+ZRfNt02<5S>FVdQ&MBb@08D9A0RR91 literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/close_box_button.bin b/graphics/pokemon_storage/close_box_button.bin new file mode 100644 index 000000000..8b130a481 --- /dev/null +++ b/graphics/pokemon_storage/close_box_button.bin @@ -0,0 +1 @@ +LMNOpqrst\]^_uvwxyz{|} \ No newline at end of file diff --git a/graphics/pokemon_storage/cursor.png b/graphics/pokemon_storage/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..d64dc3bd8b571722ac4c40a2e3c3aa4fa74896b4 GIT binary patch literal 489 zcmV(O5E1~000+sMObuGZ)S9NVRB^v zM@&RePDdbiWpW@hE;Mn4q~QPn0V+vEK~zY`?UgZZ#4rp5$sbt!fv8e$k}a86%Ozd; z%J@+!66Z+cf}}`*11{<`SYs`5u_F4_HJ$dQrY#qJjuIBd5+%|A3leSsEGPs3yk-H$ z^feH`Pr!V!3^w;If_3lFq+{&!o?JH-jjmP;7fK)>y{{Qi{Ql#1=;78K28J7!9GJx% z-vq|CS5L0%90NmwRW%M=FiMF7muN{uB+-G0h_#+?Yx+;j4-#_;lA;ZGx=P9^AS^9| z_x*J^+$<+XFjB>Evj+DifB|#uI9vq-uA44LP{o>!y_Sx8jJlcbmFLg@DBY`0u{1=d zl1k$d`{U2^!qR}3Adz;fPy&#g7vgp~ff+z76rN%39)Y_?K;k1kNyOdP1W5KRRSvP% f(;HK!d&|fh(ByWT!yjc200000NkvXXu0mjfKTgGJ literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/cursor_shadow.png b/graphics/pokemon_storage/cursor_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..7b2e218e5e5ea14d64b3b2a2596afef042f084da GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF7lTCBGH?k4MHx$i z{DK)Ap4~_Ta@b2eeO=j~amWZtam(aNp9Knum$*ih1m~xflqVLYGPwJ=0NtlhmRh7> ztY=c#y5u2HiJGU2V+coda)N^37xMd UVMEBfD?l9#p00i_>zopr02w_@WdHyG literal 0 HcmV?d00001 diff --git a/graphics/interface/box_tiles_pal2.pal b/graphics/pokemon_storage/interface.pal similarity index 100% rename from graphics/interface/box_tiles_pal2.pal rename to graphics/pokemon_storage/interface.pal diff --git a/graphics/interface/box_tiles_pal3.pal b/graphics/pokemon_storage/interface_no_display_mon.pal similarity index 100% rename from graphics/interface/box_tiles_pal3.pal rename to graphics/pokemon_storage/interface_no_display_mon.pal diff --git a/graphics/pokemon_storage/item_info_frame.png b/graphics/pokemon_storage/item_info_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5f52460ccded64db27413ffb89e82b86ca8aee GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-k!VDy{RzH{nqznRlLR^9L|NsA!l9H}oJqu(L z1eXuKodHy2;pyTSQZXm_1}{rfQ`6?gD?$Qi4TL!ydS)6gf6v6t;dCI!(eY%K2_uJ^ lib7JA`_JYD@<);T3K0RUUWDBS=6 literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CE5FC.bin b/graphics/pokemon_storage/menu.bin similarity index 100% rename from graphics/interface/pss_unk_83CE5FC.bin rename to graphics/pokemon_storage/menu.bin diff --git a/graphics/interface/pss_unk_83CE5DC.pal b/graphics/pokemon_storage/menu.pal similarity index 100% rename from graphics/interface/pss_unk_83CE5DC.pal rename to graphics/pokemon_storage/menu.pal diff --git a/graphics/interface/box_tiles.png b/graphics/pokemon_storage/menu.png similarity index 100% rename from graphics/interface/box_tiles.png rename to graphics/pokemon_storage/menu.png diff --git a/graphics/interface/pss_unk_83D2BCC.pal b/graphics/pokemon_storage/misc1.pal similarity index 100% rename from graphics/interface/pss_unk_83D2BCC.pal rename to graphics/pokemon_storage/misc1.pal diff --git a/graphics/pokemon_storage/misc2.pal b/graphics/pokemon_storage/misc2.pal new file mode 100644 index 000000000..40bc5d1cb --- /dev/null +++ b/graphics/pokemon_storage/misc2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +148 148 172 +82 82 90 +255 255 255 +205 255 255 +90 189 238 +90 164 205 +82 131 164 +82 106 123 +82 82 90 +0 0 0 +222 222 246 +164 164 180 +148 148 172 +115 115 123 +82 82 90 diff --git a/graphics/unknown/unknown_E9CAEC.bin b/graphics/pokemon_storage/party_menu.bin similarity index 100% rename from graphics/unknown/unknown_E9CAEC.bin rename to graphics/pokemon_storage/party_menu.bin diff --git a/graphics/interface/box_tiles_pal1.pal b/graphics/pokemon_storage/party_menu.pal similarity index 100% rename from graphics/interface/box_tiles_pal1.pal rename to graphics/pokemon_storage/party_menu.pal diff --git a/graphics/pokemon_storage/party_slot_empty.bin b/graphics/pokemon_storage/party_slot_empty.bin new file mode 100644 index 000000000..991c232f7 --- /dev/null +++ b/graphics/pokemon_storage/party_slot_empty.bin @@ -0,0 +1 @@ +CDDESTTUcdde \ No newline at end of file diff --git a/graphics/pokemon_storage/party_slot_filled.bin b/graphics/pokemon_storage/party_slot_filled.bin new file mode 100644 index 000000000..c0b93bf14 --- /dev/null +++ b/graphics/pokemon_storage/party_slot_filled.bin @@ -0,0 +1 @@ +@AABPQQR`aab \ No newline at end of file diff --git a/graphics/pokemon_storage/pkmn_data.bin b/graphics/pokemon_storage/pkmn_data.bin new file mode 100644 index 000000000..3336797aa --- /dev/null +++ b/graphics/pokemon_storage/pkmn_data.bin @@ -0,0 +1 @@ +!!!!!!!!!!!!!!!! \ No newline at end of file diff --git a/graphics/interface/pss_unk_83CE4D0.bin b/graphics/pokemon_storage/scrolling_bg.bin similarity index 100% rename from graphics/interface/pss_unk_83CE4D0.bin rename to graphics/pokemon_storage/scrolling_bg.bin diff --git a/graphics/pokemon_storage/scrolling_bg.png b/graphics/pokemon_storage/scrolling_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..7215fdb40cdcafd1477c17fb9a57b5e5de249cd8 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1nuGG)#G|NnuE>b?IN zs{j9QZeAlH@&Dbk|Ie=ezjqcWjtnlxNtpxr`JOJ0Ar*5<&z}@LV8FrbaLRoh!-@j| zsZWf5wmk3Ku_Pk1pgcHKe`Vye)h28^!jl>s4`}4IOgMS(g|yEqcICI9rSuhn;5nOTR56@5F|+c|J-Ztq Or+B*hxvX{- zMhaEEoBA>UfcR0hpf(LKqbabV)Kdd2Icg}LVoLdisinHpGoh<4KVM!9D8?Th`g6i5coYx0V?+H zMG!SDFdompZrAmC<0z^herb+0u$BfskLv5A!%_WX0|AuXAa~D>Qs%O|Maf{H`WVGQ zZo5y;7V6yRzMtcMtCa!<#o;E+(PHsI3w4_L(U^xdUZK^%N*S|^;&Gt!ZAu$>=h6C( zTij>V_ghY8}5 zetH=;|7pO_0`P-&9cFp^^V!TmsIkfT>Y3|#+5$OcSzig@90-KKpr&Jz z_e|E(w;)e6&7lmqitn0yd5+^i7b*)LU9p4GJK%dDFj6m#@w?l}v&##>NCDPwHwY@Bz(@gk_E`H3S$>NFM!G`K>z2#F(Kp6| wJsjXM0Q$yA0l@JQ3hP@(8gPDXW~mDQ0UcB}p$QjWh5!Hn07*qoM6N<$f}MkvsN%OL^j{L2v+;`D16@ zRq(FFNX|O;FW&jSjGeB#Ce}t=2OJt905n2@F?pZT0;V5Q^fMxkK8FHcfV5bks}Bnz zaX#>k0E4G{x=U`LOAHAo8sPa9|IdSUeZBXz<06DyggPxC6fjfxUGPjTIQN<{agX(nQxMIflhZ91s`7vx7V{IGx5pg)AZ^) zb^42SjZqG)yoyg}z{??wyu~Gxk=q&Y2+J6i2+PFn9QcJH1YVp|;dTxfd3cKcA4v*8 c3#VP+FO<;NH!gcedH?_b07*qoM6N<$f{D5^X8-^I literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/cave/title.pal b/graphics/pokemon_storage/wallpapers/cave/title.pal new file mode 100644 index 000000000..f6e731395 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/cave/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +230 197 123 +213 180 98 +180 148 65 +148 115 32 +115 82 0 +0 0 0 +0 0 0 +139 90 115 +156 106 131 +115 65 90 +0 0 0 +230 230 230 +255 255 255 +90 90 131 +49 49 90 diff --git a/graphics/pokemon_storage/wallpapers/city/box.pal b/graphics/pokemon_storage/wallpapers/city/box.pal new file mode 100644 index 000000000..ba67b3414 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/city/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 246 +255 238 246 +230 213 222 +205 189 197 +164 148 156 +139 123 131 +0 0 0 +0 0 0 +180 164 172 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +156 123 82 +115 82 41 diff --git a/graphics/interface/pss_unk_83CF374.bin b/graphics/pokemon_storage/wallpapers/city/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83CF374.bin rename to graphics/pokemon_storage/wallpapers/city/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/city/tiles.png b/graphics/pokemon_storage/wallpapers/city/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..f5684850afc67772d4f6be3f1b345fa7e8394edb GIT binary patch literal 484 zcmV(b~26vLLZlXOo@yo4*juyJW( z6WzG1HxS><8_G->Ab!c~6y^&vzsWp8y4VaY9JPGH#DU!*{ID-fxUjF|xMW{&xM1oy z{f{t~QG}y47c9<5APa|um~4mGK&LQ4#G~?nf}>yyT7@S4!ny}ibdrVjIh^CcD1`Z< zLrBwXp3hr_G^Y;%4O)dX4d|Q#b<9g9d^PUPj!-tJ&*2S(fkp^%&AfOi^;iFKS){XU zS%lBw`^T=dF>UgcK%mzoyH9TELMOy=d`IJW1tXm?VNY%x5Rzm?Dg5w}2}8p*XR2g-8c%AqjwI6lU7BJf?P zXe(U!2*%V1-#CARF}-WgbD?0I3PFx(m~8c`P#DND4YuQ`DpKvdj%kd0grUV&ci9d+ aZ~6yg=KBNylb>J!00005P)(owIx5<+yBv)jf$<>pp|1X^03SxN1~Kq#4=@@T!@#3*c_72+H20EWP#*6GPRXXp1JuS?qMQer zdtF&r8ooW`Nw3(A&vJ`do_cF7N|>wTCImpNoOl5!ce%Adrj!myf(lrg6Gtxfd7e9) z8u4ayegzm~ND6?=p_Mv(CM#)`_ZZ+fFOANTb-n@I#TJk!4DiP>z$^LG+BCCt(EwKF zVkTcpnar0YgaJs_pJtVSBqm;6W}PKni-FHpob{$xNpf@BjR-7uZT$@!}v5T)uzDz_sWwwW1;c;=|N2{!M@% zMsTSpmT_Tp8XtXIg2mmJW%T>*EaqiSW;jB+<``q00000 LNkvXXu0mjf1B*kF literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CFB60.pal b/graphics/pokemon_storage/wallpapers/crag/title.pal similarity index 52% rename from graphics/interface/pss_unk_83CFB60.pal rename to graphics/pokemon_storage/wallpapers/crag/title.pal index 292b6db72..c4f85c644 100644 --- a/graphics/interface/pss_unk_83CFB60.pal +++ b/graphics/pokemon_storage/wallpapers/crag/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 222 222 222 189 189 189 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 213 189 82 172 148 41 -255 255 255 -222 222 222 -189 189 189 -156 156 156 -123 123 123 -90 90 90 -57 57 57 -41 41 41 -222 189 205 -197 164 180 -172 139 156 -246 213 230 -238 238 238 -255 255 255 -213 189 82 -172 148 41 diff --git a/graphics/pokemon_storage/wallpapers/desert/box.pal b/graphics/pokemon_storage/wallpapers/desert/box.pal new file mode 100644 index 000000000..c5ca027d2 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/desert/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 238 189 +255 213 164 +230 189 139 +205 164 115 +180 139 90 +156 115 65 +131 90 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +164 139 82 +123 98 41 diff --git a/graphics/interface/pss_unk_83CF750.bin b/graphics/pokemon_storage/wallpapers/desert/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83CF750.bin rename to graphics/pokemon_storage/wallpapers/desert/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/desert/tiles.png b/graphics/pokemon_storage/wallpapers/desert/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..373749994149e4b1d9cb25f9c1ee63040ceb3024 GIT binary patch literal 657 zcmV;C0&e|@P)PRK_V^~8fz6742>hFBbCq#7)I(SeH8SlfP&I3 z9p@%>)DW04DGa1wGAV#J!0g_g;>+nz{LOey_Wtgh`_{T;Y!m(I&}P80LkbvoXfvQ^ z%M?Z)$pGrv8yQh`r0e*jllRnfWkvjnz?U6T3-Fg59vH2GtH9q^75>DC*gv4X~4HnV9S0Q2~3IQfgwZ zherimXyBE84HzfgSy_M`bMaCGJqy^fV=jK_yLo5<*ABkuv8zapz^O+-0D+3G)>^Xw zXVCyns?R=55icInCPOH7pg00000NkvXXu0mjfnA$5O literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CF424.pal b/graphics/pokemon_storage/wallpapers/desert/title.pal similarity index 55% rename from graphics/interface/pss_unk_83CF424.pal rename to graphics/pokemon_storage/wallpapers/desert/title.pal index a3a5cb4ea..4cf04f8ae 100644 --- a/graphics/interface/pss_unk_83CF424.pal +++ b/graphics/pokemon_storage/wallpapers/desert/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 255 255 139 205 189 131 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 164 139 82 123 98 41 -255 255 255 -255 238 189 -255 213 164 -230 189 139 -205 164 115 -180 139 90 -156 115 65 -131 90 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -164 139 82 -123 98 41 diff --git a/graphics/pokemon_storage/wallpapers/forest/box.pal b/graphics/pokemon_storage/wallpapers/forest/box.pal new file mode 100644 index 000000000..946becabb --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/forest/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +230 255 172 +205 255 148 +180 230 123 +156 205 98 +131 180 74 +106 156 49 +82 131 24 +0 0 0 +205 213 172 +172 180 139 +0 0 0 +0 0 0 +0 0 0 +164 139 82 +123 98 41 diff --git a/graphics/interface/pss_unk_83CF050.bin b/graphics/pokemon_storage/wallpapers/forest/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83CF050.bin rename to graphics/pokemon_storage/wallpapers/forest/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/forest/tiles.png b/graphics/pokemon_storage/wallpapers/forest/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..1c00feb8200dbf24075bbf466d23c3ab6daa4375 GIT binary patch literal 743 zcmV?P)KGlg3G!p5Ki$|C3iuAP_%=VN;ZY2-6VHGMZ%^4(i*Ls!YF{m za2ISUtcnxVwXP}*>Zg%3+y$$IQQ?^}c-*RR+S-dyTJC~T!lf}>Iux!7tz8eI#Bmo~ zDtg$S#2IVq!a6(+TyhtBXwiMv#l5Yq3bap$pNEpWpt_=#e?`stDxGuc<@@PmkQpvS zEziKWmBi@*0Z33GYWdd$d@sh+cX^&qCwV^NLe%mMe96asnx~BV^e$@oHw66I{NvQ} z3=|s?wLBg2cneU=6R<5T>})m|O+Q|*bpaG9ulcg*KM5!e*-^Y=DjanL2`-w8pK=z>3i9x&Z*UJab+G6dZB zFO3R#;y4VfT^beey9C}c@Tw5v1w* zDr$DSJ^;|#V!2EbSW637h+6>B0oV)NSv5;^n)CA(aJMKIheMRb&EmKP+>^L^b%lD{ ZfPba2`O6JDf=B=W002ovPDHLkV1gAYQtJQ! literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CEC40.pal b/graphics/pokemon_storage/wallpapers/forest/title.pal similarity index 54% rename from graphics/interface/pss_unk_83CEC40.pal rename to graphics/pokemon_storage/wallpapers/forest/title.pal index d2663e710..1b4166087 100644 --- a/graphics/interface/pss_unk_83CEC40.pal +++ b/graphics/pokemon_storage/wallpapers/forest/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 246 255 230 255 255 213 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 164 139 82 123 98 41 -255 255 255 -230 255 172 -205 255 148 -180 230 123 -156 205 98 -131 180 74 -106 156 49 -82 131 24 -0 0 0 -205 213 172 -172 180 139 -0 0 0 -0 0 0 -0 0 0 -164 139 82 -123 98 41 diff --git a/graphics/pokemon_storage/wallpapers/pokecenter/box.pal b/graphics/pokemon_storage/wallpapers/pokecenter/box.pal new file mode 100644 index 000000000..60b96bbd9 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/pokecenter/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 115 +41 82 82 +65 115 115 +115 164 156 +90 131 82 +131 172 123 +172 213 172 +189 230 197 +213 255 222 +255 164 139 +213 213 230 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +255 255 255 diff --git a/graphics/interface/pss_unk_83D22B8.bin b/graphics/pokemon_storage/wallpapers/pokecenter/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D22B8.bin rename to graphics/pokemon_storage/wallpapers/pokecenter/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/pokecenter/tiles.png b/graphics/pokemon_storage/wallpapers/pokecenter/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..e82b88e077b7e2f15331271d32fbbbbe47e57eb6 GIT binary patch literal 707 zcmV;!0zCbRP)<%%Ydp6VB+H0*l zKq`uJm=^`$ivXlvbxm&_0ayeD;GN|+O~9Pb&k1B83kI7kZnp@A?hy3*R z8vJP?@X{)P83tBr{TASdF^lS#lT8q?8iCSBkLO6#76eoo0^svEEN`)3hbscg$RM&H z;PHYei#O4;_NtCWD#Zl_`X6VR(b-IQp%ztJ99U>@c~{D1cmU>+1O8$yG*m*Mjtw`HL24aK?q{xV`};UoMRK9x6CMd1obNUyS({Dky+B zJ0QA*%?`jht~%J*fz)tlKaU;gJ{t~)t%T%&H`Mp54hM+<1p_l09JzJx;AL$kjdJ1} zM+VEy4k*3^QfNJH7e9T}_ElsMEZqDm3ag^?sQrbI4X|^0a2=98+7IkiJ$gqA*&|d* zYX=eF@~6S!O_ZqNczhEBWiUVsbhsUlC$v0xPl6CfG&r&i5t!Ug{AO9N!|y~bPnV}E zeK8_!N>eSTQv?RvfG27=o!+Rl|AB!`;xyBI5c(p``|rE7Fmg$SKaY<2E*gM-&En5} z>26w>HIQ`!FghNRgDgx3w4cfOs|XlEU>p5rcn`AclBf0(GT+Tmd$1K}LbwaxVi-ZVJ+ax(}0YV7&5`+wX8GJWrKCj?TlPW zAyvF44}cAughe$V?9sGbSc?G3W!rZfM!=emaxUx>0b8gr^?LV|F#u-a)Ix^fK6w+{8;@UN!;p(phtCt7oWRl%AiFd^4imw#jHn-GHf0^tz-+p&rw*dF zw%wHnzG?W_+5J3^0XtmVc`N`{$!7LNlVm{|av8NIb+HD} zmp)+KeFF7JKw<8?SQ14`Btv)yAYJ5d7qHyvpFwyhvh(XAiOjk@Tq}&0zPzS95w+ElnFm-;5Yz!VVSjgTyF!Qy>nO6MgT{ROkWWQ?{ z%1i@LAYI0j05IPTuv*Ynz8#pWbwEVGPZywQ%4rH{SHXQ1e_n$ccf4BMa{vGU07*qo IM6N<$f_Z!o&;S4c literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/river/title.pal b/graphics/pokemon_storage/wallpapers/river/title.pal new file mode 100644 index 000000000..9fcc4cbca --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/river/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +238 255 255 +205 255 255 +164 255 255 +131 222 222 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +115 180 0 +148 213 24 +180 246 57 +230 230 230 +255 255 255 +180 148 106 +139 106 65 diff --git a/graphics/pokemon_storage/wallpapers/savanna/box.pal b/graphics/pokemon_storage/wallpapers/savanna/box.pal new file mode 100644 index 000000000..d80816c35 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/savanna/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 131 +222 222 98 +189 189 65 +156 156 32 +123 123 0 +90 90 0 +57 57 0 +189 189 65 +131 180 57 +115 164 41 +205 205 82 +238 238 238 +255 255 255 +189 156 82 +148 115 41 diff --git a/graphics/interface/pss_unk_83CFA94.bin b/graphics/pokemon_storage/wallpapers/savanna/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83CFA94.bin rename to graphics/pokemon_storage/wallpapers/savanna/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/savanna/tiles.png b/graphics/pokemon_storage/wallpapers/savanna/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1e4e8fdf793730847b56cf8c6fa2dcb8411b1a GIT binary patch literal 529 zcmV+s0`C2ZP)RX};RO&D zPXQH3sQj6j2on+$!RI?SP7@o!r@FrQezE;s;xN{v{LWVjf&i~8dMN>^2H>L(%uGEM zb)au*4}jZ_Rt?zy4Y1CzgQ@@-0McsUJH%YczW`lS6F{5YLUn3l^`U~uGuKA@P;NdHpD^6sKRm77>1DH!>F5-O7%7}F~ z0eGL;L_lE`0xbtH0l+12jrNDKr6a09Iy#^mtIj!}hc^U}H~NPfU=hwvC9ss|jEbYY z^Q0_S1b{q7%vykF0AAb7ZtzMAHmEq5OzQ T2}0n)00000NkvXXu0mjfemdb? literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CF834.pal b/graphics/pokemon_storage/wallpapers/savanna/title.pal similarity index 52% rename from graphics/interface/pss_unk_83CF834.pal rename to graphics/pokemon_storage/wallpapers/savanna/title.pal index a7789ddfe..1c1742cc2 100644 --- a/graphics/interface/pss_unk_83CF834.pal +++ b/graphics/pokemon_storage/wallpapers/savanna/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 222 222 222 189 189 189 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 189 156 82 148 115 41 -255 255 255 -255 255 131 -222 222 98 -189 189 65 -156 156 32 -123 123 0 -90 90 0 -57 57 0 -189 189 65 -131 180 57 -115 164 41 -205 205 82 -238 238 238 -255 255 255 -189 156 82 -148 115 41 diff --git a/graphics/interface/pss_unk_83D10E4.pal b/graphics/pokemon_storage/wallpapers/seafloor/box.pal similarity index 52% rename from graphics/interface/pss_unk_83D10E4.pal rename to graphics/pokemon_storage/wallpapers/seafloor/box.pal index b91fdd173..43b2eecab 100644 --- a/graphics/interface/pss_unk_83D10E4.pal +++ b/graphics/pokemon_storage/wallpapers/seafloor/box.pal @@ -1,22 +1,6 @@ JASC-PAL 0100 -32 -255 255 255 -131 180 255 -98 148 222 -65 115 189 -32 82 156 -0 24 98 -0 0 0 -0 0 0 -139 90 115 -156 106 131 -115 65 90 -0 0 0 -230 230 230 -255 255 255 -148 180 41 -106 139 0 +16 255 255 255 164 213 255 131 180 255 diff --git a/graphics/interface/pss_unk_83D13D8.bin b/graphics/pokemon_storage/wallpapers/seafloor/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D13D8.bin rename to graphics/pokemon_storage/wallpapers/seafloor/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/seafloor/tiles.png b/graphics/pokemon_storage/wallpapers/seafloor/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..192f7126c0d682d6c6cd12996588a613d3b4a6ee GIT binary patch literal 659 zcmV;E0&M+>P)@-8iSVEAj@ktL5m;@4_=pqtHUZ7)!poQ$QE)08a z5CnN2kNG!ssxxJca>pZOQI@NGGC_m<@p#`!q!91XVyzzAfM*8o*6F@rK+5Rjsy1W! z)dPcG0}v(ON}#{n2*?JY!>R&{xx_8HRefUF{|rd*M5kMm2M)`TP8+aPkK}TIXgnTA zb#0>@&_5Ushjy@6gFGxataK|o;IzQM}nK|o;ofq*AI##;pgp{Z9IWMHQeu=}!<16HrRu6@mk zae)6*4x)@PN^7I3cfht`u}y=sN*P7H1NOdK8MbLsg>Y)9cfel;F8EW=FnE>?4D}AE z+MG*cH%KW3m%~QY=KKZsPPN1&%Nzom7(pq_k{+cS0Wv{3QZJle9HAd8SU~AmB4bk5 z0rIQ#+1X^mB()GgzvlRKI{Y!g+03>OK)?EQmglpdxHw6v1pxU~`XXWDr|!|iX*P{3tQYMXTJ~P z4T6&9ues*{Ybst4NHGj#p>t{h9AK!p+wzqMDJDr$v))`#96&Ey7o`{k3_&=n=JzhJ zQ~-hR)o}pD0Y+wi;sCFxb3k42{08WU*{Gt9UHcJaRq*4Q18jk#>7aOX1=^tQ5YFii tse2C`XaTLwa{_zwoWKqi2mg)#0dF89`@BX?eXIZg002ovPDHLkV1i%Fjm-c6 literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/simple/title.pal b/graphics/pokemon_storage/wallpapers/simple/title.pal new file mode 100644 index 000000000..9b4ffb97f --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/simple/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 156 213 +82 65 115 +106 90 139 +131 115 164 +172 172 255 +189 189 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +255 255 255 diff --git a/graphics/interface/pss_unk_83D1874.pal b/graphics/pokemon_storage/wallpapers/sky/box.pal similarity index 51% rename from graphics/interface/pss_unk_83D1874.pal rename to graphics/pokemon_storage/wallpapers/sky/box.pal index a529046e5..3d722ed6d 100644 --- a/graphics/interface/pss_unk_83D1874.pal +++ b/graphics/pokemon_storage/wallpapers/sky/box.pal @@ -1,22 +1,6 @@ JASC-PAL 0100 -32 -255 255 255 -238 255 255 -205 255 255 -164 255 255 -123 213 246 -90 180 213 -57 148 180 -24 115 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -230 230 230 -255 255 255 -205 139 41 -164 98 0 +16 255 255 255 238 255 255 205 255 255 diff --git a/graphics/interface/pss_unk_83D1B4C.bin b/graphics/pokemon_storage/wallpapers/sky/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D1B4C.bin rename to graphics/pokemon_storage/wallpapers/sky/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/sky/tiles.png b/graphics/pokemon_storage/wallpapers/sky/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..2b28d3897a03cb10b4b4ec9e65f7b5fd3f97e97c GIT binary patch literal 614 zcmV-s0-61ZP)L5d?g+dL~#l#lWtmJ}?>pW+(=_!pxME;AtExj}`%6RU56M z0*Scj5)}X#DU7j<3iHIu!WziAj5@=1;bL&ba2=W9N8|Fa+oS!!UM;Mo2ReV)!ZhHG zn7h3QqXEDgN4p3dG=>KQ;0$T~KtOYN5YRIHLcrT0>u4uH+td#&3NZEpe6A?5K!4=H zlrBC?E#N+?MO3TY0vy}67Ms;BRKTf>oK$SOeVkVgc(-Fs+TQNRG_Nesw7E%L1e#X@ zjG8t#-}MpN1n%aw%_;&H;SV5|maC$%AnYYh>_W-)%nLsdK`wwce&EE;CO-h7irwSU zpn3q%V^hEnETi0ah1q0J)B^Mv`+&Z0zvhm90VC~3-z!L)^#A|>07*qoM6N<$f=Pc5 A2mk;8 literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/sky/title.pal b/graphics/pokemon_storage/wallpapers/sky/title.pal new file mode 100644 index 000000000..951f59ecf --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/sky/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +238 255 255 +205 255 255 +164 255 255 +123 213 246 +90 180 213 +57 148 180 +24 115 148 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +230 230 230 +255 255 255 +205 139 41 +164 98 0 diff --git a/graphics/pokemon_storage/wallpapers/snow/box.pal b/graphics/pokemon_storage/wallpapers/snow/box.pal new file mode 100644 index 000000000..01e46d027 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/snow/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +230 230 230 +205 205 205 +139 148 189 +106 115 156 +74 82 123 +41 49 90 +8 16 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +238 238 238 +255 255 255 +213 131 139 +172 90 98 diff --git a/graphics/interface/pss_unk_83D070C.bin b/graphics/pokemon_storage/wallpapers/snow/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D070C.bin rename to graphics/pokemon_storage/wallpapers/snow/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/snow/tiles.png b/graphics/pokemon_storage/wallpapers/snow/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..00225d6fccfe16a45cd4406228ea4400bc7fa30b GIT binary patch literal 607 zcmV-l0-*hgP)d-QG=i$TLz=@n62(s6j`(d88hZH9ujxECY?Gp zotiP~-O-Y$fAP{h*cL_pNbo%$nIubky01i=(4OeA1*!$$&k*3Tel$a1JJweP?n>1x z@a+&Vv%=?~IbdU|Vy!89Nvf%k(^r5st(mA=rxV~b2oRYtMQDMt(wEyqbXp&lUVx9S93CPsD`ZVNPfp^hG(mUpWC=g#H z6XOpG{0wv6OM7bUMF1awkF$VYVEfF!EXDBT3tiy2ZtUfBqYZi5#aK6ki!A~^?2`&M z?F0^ivl~+#Y+4oI0QePv+fepW#;l(Rh;8n+HeF6~4;;ldcYnhcrD!`~U~{*fx>y1R t^*5*g0jM8_Wx#GMS_Z(*CcNP${{e@&%H4*_sF(l%002ovPDHLkV1kQT49oxk literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83D0414.pal b/graphics/pokemon_storage/wallpapers/snow/title.pal similarity index 51% rename from graphics/interface/pss_unk_83D0414.pal rename to graphics/pokemon_storage/wallpapers/snow/title.pal index 64a768cb1..437ccb934 100644 --- a/graphics/interface/pss_unk_83D0414.pal +++ b/graphics/pokemon_storage/wallpapers/snow/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 230 230 230 205 205 205 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 213 131 139 172 90 98 -255 255 255 -230 230 230 -205 205 205 -139 148 189 -106 115 156 -74 82 123 -41 49 90 -8 16 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -238 238 238 -255 255 255 -213 131 139 -172 90 98 diff --git a/graphics/interface/pss_unk_83D1C2C.pal b/graphics/pokemon_storage/wallpapers/stars/box.pal similarity index 51% rename from graphics/interface/pss_unk_83D1C2C.pal rename to graphics/pokemon_storage/wallpapers/stars/box.pal index 0d9a33ee1..fc4215468 100644 --- a/graphics/interface/pss_unk_83D1C2C.pal +++ b/graphics/pokemon_storage/wallpapers/stars/box.pal @@ -1,22 +1,6 @@ JASC-PAL 0100 -32 -255 255 115 -106 8 115 -156 41 148 -205 74 180 -74 106 156 -98 123 205 -123 139 255 -238 238 57 -213 156 123 -156 230 82 -180 164 131 -213 106 189 -156 115 197 -139 180 164 -230 213 213 -255 255 255 +16 255 255 115 106 8 115 156 41 148 diff --git a/graphics/interface/pss_unk_83D1EC4.bin b/graphics/pokemon_storage/wallpapers/stars/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D1EC4.bin rename to graphics/pokemon_storage/wallpapers/stars/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/stars/tiles.png b/graphics/pokemon_storage/wallpapers/stars/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..51c9f86749d30f7428ddba365af20170a7c63184 GIT binary patch literal 571 zcmV-B0>u4^P){0~s8Dz!KT=RlU{qf*cW z=YV$E%mVCO>vN7O1rX*rBmlUcw1QcKZg6KzK%|2iLnqvoPJ`LYfzUM=;r3W;TL6H! z9B4@|wI@yp& z3b2sZm)Oumz`6+F9T3ie?e^{>P19e1N%#N|TT5jG^mG~m(?;bRR-6Ncb`pg$;Rmplp89hMDQ%LA+(lnkGt0B^4&jJmRR=o`k`1JYA#Z#=^!^p`0o zxIKUb+}>dDDJNC+DnDfhCpMA#voSA7IIRP|XvthZC$Bk3&zwSyc!-S7rl=F)6av&% zv%jKr)q7!PBEZ6*^jt5xWJ=5;b0qz4u-(qh{;{*7~w-GRW`31<{ zaR?R^77w76?Bnmi@I)9Y14}qW?1}{Se1Ou9Ol(ZDk3hRT#5aA3f1X-w7pMRL002ov JPDHLkV1k2o`vU*~ literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/stars/title.pal b/graphics/pokemon_storage/wallpapers/stars/title.pal new file mode 100644 index 000000000..e7b45e524 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/stars/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 115 +106 8 115 +156 41 148 +205 74 180 +74 106 156 +98 123 205 +123 139 255 +238 238 57 +213 156 123 +156 230 82 +180 164 131 +213 106 189 +156 115 197 +139 180 164 +230 213 213 +255 255 255 diff --git a/graphics/interface/pss_unk_83D239C.pal b/graphics/pokemon_storage/wallpapers/tiles/box.pal similarity index 52% rename from graphics/interface/pss_unk_83D239C.pal rename to graphics/pokemon_storage/wallpapers/tiles/box.pal index 07d069629..9ff5c0789 100644 --- a/graphics/interface/pss_unk_83D239C.pal +++ b/graphics/pokemon_storage/wallpapers/tiles/box.pal @@ -1,22 +1,6 @@ JASC-PAL 0100 -32 -255 255 115 -156 90 41 -205 106 8 -230 156 8 -0 0 255 -0 0 255 -0 0 255 -164 156 139 -213 205 172 -0 0 255 -131 131 131 -164 164 164 -180 180 180 -197 197 197 -213 213 213 -255 255 255 +16 255 255 115 156 90 41 205 106 8 diff --git a/graphics/interface/pss_unk_83D256C.bin b/graphics/pokemon_storage/wallpapers/tiles/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D256C.bin rename to graphics/pokemon_storage/wallpapers/tiles/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/tiles/tiles.png b/graphics/pokemon_storage/wallpapers/tiles/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3443a0a9c22b0ea697ae6ce45d5d41b17293fc GIT binary patch literal 444 zcmV;t0YmF#!loJvu8#D(dX_%~LO*N$$C zO9@=p9Dt^2wzXtKH_bbP`5<`Scz|@^@g;!elLwWe$TsHHwD6Nt4v#Va)%3xvKvHZI z08ME@RkUCd05>Io{L(+aWpLvF>btB1<1CfXoHGE6S=xcK@OASjE=hqX+-6Qoz4rO$poN@!AETRs5s*5Ksz8Ps1OQF>ePm m07j@#TB`@Yb`-Goz~gVv!Hgu{B88m*00000x$iEP)Y%0xe z5OCEAq)85HcF}AB?z8Ud;R&enDFdHIqhn*vMy-xWhv|@7Jo5m>D|k6t5f9B*_y&f7 z$trNDbsB&P0RUiV`M7HP0lZa!2 zS&17H0BVfqI?;n@`;ljrk=K+ACoWRSu*A|tNTo%|z-Lx)Ch>{@!YS z<_!Z)rxY--*9W|7`j5Ws#EADW8$Tr4C?^Xr4Zy^OgPRt>8p0f6y(9S{`A(N$d>>{<#ki5T9F+0;5L;j{c4FXKxDn?OaQnGPfcDC~ih!REcp<<)_%(66JpYIA9S2=%aRu z*aDZcHa>mr@+?;92?D;9d`M*7*iaduu8~hC1HYi=tBk1Hw!L|e^ijJC(ibhS+R$7W z3oXDkYkAluL0`&kq(}b+V6Q!LUVG%c_O+<{EBpm5a$w3d=7}Z%0000#u$$|!0gvnXN5|VG zZ!flYY<~I1v87Lr>F-;aeP;&bK~{azlGJ^!L8 zOGAS`!;2TM8IsmoM#ve~*E{Cjmy8v-{87{)HP~*?w!`;U^eQv`zOthm=tKrjS3j3^ HP6boxOption != OPTION_MOVE_ITEMS) LoadPalette(sScrollingBg_Pal, 0x30, sizeof(sScrollingBg_Pal)); else diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index 11eccef85..c6b45194a 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -76,74 +76,122 @@ static const union AffineAnimCmd *const sAffineAnims_ReleaseMon[] = { [RELEASE_ANIM_COME_BACK] = sAffineAnim_ReleaseMon_ComeBack, }; -static const u16 sWallpaperPalettes_Forest[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal"); -static const u32 sWallpaperTiles_Forest[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz"); -static const u32 sWallpaperTilemap_Forest[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz"); +static const u16 sWallpaperPalettes_Forest[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/forest/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/forest/box.gbapal"), +}; +static const u32 sWallpaperTiles_Forest[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/forest/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Forest[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/forest/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_City[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal"); -static const u32 sWallpaperTiles_City[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz"); -static const u32 sWallpaperTilemap_City[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz"); +static const u16 sWallpaperPalettes_City[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/city/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/city/box.gbapal"), +}; +static const u32 sWallpaperTiles_City[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/city/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_City[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/city/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Desert[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal"); -static const u32 sWallpaperTiles_Desert[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz"); -static const u32 sWallpaperTilemap_Desert[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz"); +static const u16 sWallpaperPalettes_Desert[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/desert/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/desert/box.gbapal"), +}; +static const u32 sWallpaperTiles_Desert[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/desert/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Desert[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/desert/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Savanna[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal"); -static const u32 sWallpaperTiles_Savanna[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz"); -static const u32 sWallpaperTilemap_Savanna[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz"); +static const u16 sWallpaperPalettes_Savanna[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/savanna/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/savanna/box.gbapal"), +}; +static const u32 sWallpaperTiles_Savanna[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/savanna/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Savanna[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/savanna/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Crag[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal"); -static const u32 sWallpaperTiles_Crag[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz"); -static const u32 sWallpaperTilemap_Crag[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz"); +static const u16 sWallpaperPalettes_Crag[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/crag/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/crag/box.gbapal"), +}; +static const u32 sWallpaperTiles_Crag[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/crag/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Crag[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/crag/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Volcano[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal"); -static const u32 sWallpaperTiles_Volcano[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz"); +static const u16 sWallpaperPalettes_Volcano[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/volcano/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/volcano/box.gbapal"), +}; +static const u32 sWallpaperTiles_Volcano[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/volcano/tiles.4bpp.lz"); static const u8 sUnusedSpace1[4] = {}; -static const u32 sWallpaperTilemap_Volcano[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz"); +static const u32 sWallpaperTilemap_Volcano[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/volcano/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Snow[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal"); -static const u32 sWallpaperTiles_Snow[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz"); -static const u32 sWallpaperTilemap_Snow[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz"); +static const u16 sWallpaperPalettes_Snow[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/snow/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/snow/box.gbapal"), +}; +static const u32 sWallpaperTiles_Snow[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/snow/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Snow[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/snow/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Cave[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal"); -static const u32 sWallpaperTiles_Cave[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz"); -static const u32 sWallpaperTilemap_Cave[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz"); +static const u16 sWallpaperPalettes_Cave[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/cave/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/cave/box.gbapal"), +}; +static const u32 sWallpaperTiles_Cave[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/cave/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Cave[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/cave/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Beach[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal"); -static const u32 sWallpaperTiles_Beach[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz"); -static const u32 sWallpaperTilemap_Beach[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz"); +static const u16 sWallpaperPalettes_Beach[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/beach/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/beach/box.gbapal"), +}; +static const u32 sWallpaperTiles_Beach[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/beach/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Beach[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/beach/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Seafloor[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal"); -static const u32 sWallpaperTiles_Seafloor[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz"); -static const u32 sWallpaperTilemap_Seafloor[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz"); +static const u16 sWallpaperPalettes_Seafloor[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/seafloor/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/seafloor/box.gbapal"), +}; +static const u32 sWallpaperTiles_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/seafloor/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/seafloor/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_River[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal"); -static const u32 sWallpaperTiles_River[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz"); -static const u32 sWallpaperTilemap_River[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz"); +static const u16 sWallpaperPalettes_River[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/river/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/river/box.gbapal"), +}; +static const u32 sWallpaperTiles_River[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/river/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_River[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/river/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Sky[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal"); -static const u32 sWallpaperTiles_Sky[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz"); -static const u32 sWallpaperTilemap_Sky[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz"); +static const u16 sWallpaperPalettes_Sky[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/sky/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/sky/box.gbapal"), +}; +static const u32 sWallpaperTiles_Sky[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/sky/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Sky[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/sky/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Stars[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal"); +static const u16 sWallpaperPalettes_Stars[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/stars/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/stars/box.gbapal"), +}; static const u8 sUnusedSpace2[32] = {}; -static const u32 sWallpaperTiles_Stars[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz"); -static const u32 sWallpaperTilemap_Stars[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz"); +static const u32 sWallpaperTiles_Stars[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/stars/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Stars[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/stars/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Pokecenter[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal"); -static const u32 sWallpaperTiles_Pokecenter[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz"); -static const u32 sWallpaperTilemap_Pokecenter[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz"); +static const u16 sWallpaperPalettes_Pokecenter[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/pokecenter/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/pokecenter/box.gbapal"), +}; +static const u32 sWallpaperTiles_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pokecenter/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pokecenter/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Tiles[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal"); -static const u32 sWallpaperTiles_Tiles[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz"); -static const u32 sWallpaperTilemap_Tiles[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz"); +static const u16 sWallpaperPalettes_Tiles[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/tiles/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/tiles/box.gbapal"), +}; +static const u32 sWallpaperTiles_Tiles[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/tiles/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Tiles[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/tiles/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Simple[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal"); -static const u32 sWallpaperTiles_Simple[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz"); -static const u32 sWallpaperTilemap_Simple[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz"); +static const u16 sWallpaperPalettes_Simple[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/simple/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/simple/box.gbapal"), +}; +static const u32 sWallpaperTiles_Simple[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/simple/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Simple[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/simple/tilemap.bin.lz"); // Unused -static const u16 sWallpaperTilemap_Unused[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin"); +static const u16 sWallpaperTilemap_Unused[] = INCBIN_U16("graphics/pokemon_storage/wallpapers/unused.bin"); // Shadow color, text color static const u16 sBoxTitleColors[][2] = { @@ -166,25 +214,25 @@ static const u16 sBoxTitleColors[][2] = { }; static const struct Wallpaper sWallpapers[] = { - {sWallpaperTiles_Forest, sWallpaperTilemap_Forest, sWallpaperPalettes_Forest }, - {sWallpaperTiles_City, sWallpaperTilemap_City, sWallpaperPalettes_City }, - {sWallpaperTiles_Desert, sWallpaperTilemap_Desert, sWallpaperPalettes_Desert }, - {sWallpaperTiles_Savanna, sWallpaperTilemap_Savanna, sWallpaperPalettes_Savanna }, - {sWallpaperTiles_Crag, sWallpaperTilemap_Crag, sWallpaperPalettes_Crag }, - {sWallpaperTiles_Volcano, sWallpaperTilemap_Volcano, sWallpaperPalettes_Volcano }, - {sWallpaperTiles_Snow, sWallpaperTilemap_Snow, sWallpaperPalettes_Snow }, - {sWallpaperTiles_Cave, sWallpaperTilemap_Cave, sWallpaperPalettes_Cave }, - {sWallpaperTiles_Beach, sWallpaperTilemap_Beach, sWallpaperPalettes_Beach }, - {sWallpaperTiles_Seafloor, sWallpaperTilemap_Seafloor, sWallpaperPalettes_Seafloor }, - {sWallpaperTiles_River, sWallpaperTilemap_River, sWallpaperPalettes_River }, - {sWallpaperTiles_Sky, sWallpaperTilemap_Sky, sWallpaperPalettes_Sky }, - {sWallpaperTiles_Stars, sWallpaperTilemap_Stars, sWallpaperPalettes_Stars }, - {sWallpaperTiles_Pokecenter, sWallpaperTilemap_Pokecenter, sWallpaperPalettes_Pokecenter}, - {sWallpaperTiles_Tiles, sWallpaperTilemap_Tiles, sWallpaperPalettes_Tiles }, - {sWallpaperTiles_Simple, sWallpaperTilemap_Simple, sWallpaperPalettes_Simple }, + {sWallpaperTiles_Forest, sWallpaperTilemap_Forest, *sWallpaperPalettes_Forest }, + {sWallpaperTiles_City, sWallpaperTilemap_City, *sWallpaperPalettes_City }, + {sWallpaperTiles_Desert, sWallpaperTilemap_Desert, *sWallpaperPalettes_Desert }, + {sWallpaperTiles_Savanna, sWallpaperTilemap_Savanna, *sWallpaperPalettes_Savanna }, + {sWallpaperTiles_Crag, sWallpaperTilemap_Crag, *sWallpaperPalettes_Crag }, + {sWallpaperTiles_Volcano, sWallpaperTilemap_Volcano, *sWallpaperPalettes_Volcano }, + {sWallpaperTiles_Snow, sWallpaperTilemap_Snow, *sWallpaperPalettes_Snow }, + {sWallpaperTiles_Cave, sWallpaperTilemap_Cave, *sWallpaperPalettes_Cave }, + {sWallpaperTiles_Beach, sWallpaperTilemap_Beach, *sWallpaperPalettes_Beach }, + {sWallpaperTiles_Seafloor, sWallpaperTilemap_Seafloor, *sWallpaperPalettes_Seafloor }, + {sWallpaperTiles_River, sWallpaperTilemap_River, *sWallpaperPalettes_River }, + {sWallpaperTiles_Sky, sWallpaperTilemap_Sky, *sWallpaperPalettes_Sky }, + {sWallpaperTiles_Stars, sWallpaperTilemap_Stars, *sWallpaperPalettes_Stars }, + {sWallpaperTiles_Pokecenter, sWallpaperTilemap_Pokecenter, *sWallpaperPalettes_Pokecenter}, + {sWallpaperTiles_Tiles, sWallpaperTilemap_Tiles, *sWallpaperPalettes_Tiles }, + {sWallpaperTiles_Simple, sWallpaperTilemap_Simple, *sWallpaperPalettes_Simple }, }; -static const u16 sBoxScrollArrow_Gfx[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp"); +static const u16 sBoxScrollArrow_Gfx[] = INCBIN_U16("graphics/pokemon_storage/box_scroll_arrow.4bpp"); static const u16 sUnusedColor = RGB(26, 29, 8); diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c index 4eecee08b..d3373f247 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_5.c @@ -45,9 +45,9 @@ static bool8 SetMenuTextsForItem(void); static void CreateCursorSprites(void); static void ToggleCursorMultiMoveMode(void); -static const u16 sPokeStorageMisc1Pal[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal"); -static const u16 sHandCursorTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D2BEC.4bpp"); -static const u16 sHandCursorShadowTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D33EC.4bpp"); +static const u16 sPokeStorageMisc1Pal[] = INCBIN_U16("graphics/pokemon_storage/misc1.gbapal"); +static const u16 sHandCursorTiles[] = INCBIN_U16("graphics/pokemon_storage/cursor.4bpp"); +static const u16 sHandCursorShadowTiles[] = INCBIN_U16("graphics/pokemon_storage/cursor_shadow.4bpp"); // Modes for selecting and moving Pokémon in the box. Multiple Pokémon can be // selected by pressing the Select button to change the cursor, then holding diff --git a/src/pokemon_storage_system_8.c b/src/pokemon_storage_system_8.c index e7241e4b7..644aad1aa 100644 --- a/src/pokemon_storage_system_8.c +++ b/src/pokemon_storage_system_8.c @@ -40,7 +40,7 @@ static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite); static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite); static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite); -static const u32 sItemInfoFrame_Gfx[] = INCBIN_U32("graphics/interface/pss_unk_83D35DC.4bpp"); +static const u32 sItemInfoFrame_Gfx[] = INCBIN_U32("graphics/pokemon_storage/item_info_frame.4bpp"); static const struct OamData sOamData_ItemIcon = { .y = 0, From 3a1994f7f790dd7d50ea6963c4f3bea833628f29 Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Sat, 3 Sep 2022 23:35:07 +0800 Subject: [PATCH 37/38] Rearrange Pokemon storage source files --- ...arty_pokemon_dropdown.h => tilemap_util.h} | 6 +- ld_script.txt | 28 +- src/pokemon_storage_system_6.c | 147 ----- src/pokemon_storage_system_7.c | 566 ------------------ ...stem_5.c => pokemon_storage_system_data.c} | 143 +++++ ..._4.c => pokemon_storage_system_graphics.c} | 0 ...stem_2.c => pokemon_storage_system_menu.c} | 0 ...stem_8.c => pokemon_storage_system_misc.c} | 563 +++++++++++++++++ ...tem_3.c => pokemon_storage_system_tasks.c} | 2 +- ...arty_pokemon_dropdown.c => tilemap_util.c} | 2 +- sym_bss.txt | 2 +- sym_ewram.txt | 11 +- 12 files changed, 729 insertions(+), 741 deletions(-) rename include/{box_party_pokemon_dropdown.h => tilemap_util.h} (75%) delete mode 100644 src/pokemon_storage_system_6.c delete mode 100644 src/pokemon_storage_system_7.c rename src/{pokemon_storage_system_5.c => pokemon_storage_system_data.c} (92%) rename src/{pokemon_storage_system_4.c => pokemon_storage_system_graphics.c} (100%) rename src/{pokemon_storage_system_2.c => pokemon_storage_system_menu.c} (100%) rename src/{pokemon_storage_system_8.c => pokemon_storage_system_misc.c} (61%) rename src/{pokemon_storage_system_3.c => pokemon_storage_system_tasks.c} (99%) rename src/{box_party_pokemon_dropdown.c => tilemap_util.c} (99%) diff --git a/include/box_party_pokemon_dropdown.h b/include/tilemap_util.h similarity index 75% rename from include/box_party_pokemon_dropdown.h rename to include/tilemap_util.h index 5e925e8a2..b8388c6f5 100644 --- a/include/box_party_pokemon_dropdown.h +++ b/include/tilemap_util.h @@ -1,5 +1,5 @@ -#ifndef GUARD_BOX_PARTY_POKEMON_DROPDOWN_H -#define GUARD_BOX_PARTY_POKEMON_DROPDOWN_H +#ifndef GUARD_TILEMAP_UTIL_H +#define GUARD_TILEMAP_UTIL_H void TilemapUtil_Init(u8 numTilemapIds); void TilemapUtil_Free(void); @@ -9,4 +9,4 @@ void TilemapUtil_SetRect(u8 tilemapId, u16 x, u16 y, u16 width, u16 height); void TilemapUtil_Move(u8 tilemapId, u8 mode, s8 param); void TilemapUtil_Update(u8 tilemapId); -#endif //GUARD_BOX_PARTY_POKEMON_DROPDOWN_H +#endif //GUARD_TILEMAP_UTIL_H diff --git a/ld_script.txt b/ld_script.txt index 21538a7ba..a97a5ac2a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -130,13 +130,11 @@ SECTIONS { src/pokedex.o(.text); src/trainer_card.o(.text); src/pokemon_storage_system.o(.text); - src/pokemon_storage_system_2.o(.text); - src/pokemon_storage_system_3.o(.text); - src/pokemon_storage_system_4.o(.text); - src/pokemon_storage_system_5.o(.text); - src/pokemon_storage_system_6.o(.text); - src/pokemon_storage_system_7.o(.text); - src/pokemon_storage_system_8.o(.text); + src/pokemon_storage_system_menu.o(.text); + src/pokemon_storage_system_tasks.o(.text); + src/pokemon_storage_system_graphics.o(.text); + src/pokemon_storage_system_data.o(.text); + src/pokemon_storage_system_misc.o(.text); src/pokemon_icon.o(.text); src/script_movement.o(.text); src/fldeff_cut.o(.text); @@ -228,7 +226,7 @@ SECTIONS { src/evolution_graphics.o(.text); src/fldeff_teleport.o(.text); src/new_menu_helpers.o(.text); - src/box_party_pokemon_dropdown.o(.text); + src/tilemap_util.o(.text); src/save_menu_util.o(.text); src/map_preview_screen.o(.text); src/link_rfu_2.o(.text); @@ -452,13 +450,11 @@ SECTIONS { src/field_effect.o(.rodata); src/option_menu.o(.rodata); src/trainer_card.o(.rodata); - src/pokemon_storage_system_2.o(.rodata); - src/pokemon_storage_system_3.o(.rodata); - src/pokemon_storage_system_4.o(.rodata); - src/pokemon_storage_system_5.o(.rodata); - src/pokemon_storage_system_6.o(.rodata); - src/pokemon_storage_system_7.o(.rodata); - src/pokemon_storage_system_8.o(.rodata); + src/pokemon_storage_system_menu.o(.rodata); + src/pokemon_storage_system_tasks.o(.rodata); + src/pokemon_storage_system_graphics.o(.rodata); + src/pokemon_storage_system_data.o(.rodata); + src/pokemon_storage_system_misc.o(.rodata); src/pokemon_icon.o(.rodata); src/fldeff_cut.o(.rodata); src/map_name_popup.o(.rodata); @@ -524,7 +520,7 @@ SECTIONS { src/clear_save_data_screen.o(.rodata); src/evolution_graphics.o(.rodata); src/new_menu_helpers.o(.rodata); - src/box_party_pokemon_dropdown.o(.rodata); + src/tilemap_util.o(.rodata); src/map_preview_screen.o(.rodata); src/link_rfu_2.o(.rodata); src/link_rfu_3.o(.rodata); diff --git a/src/pokemon_storage_system_6.c b/src/pokemon_storage_system_6.c deleted file mode 100644 index b8fcc3e8b..000000000 --- a/src/pokemon_storage_system_6.c +++ /dev/null @@ -1,147 +0,0 @@ -#include "global.h" -#include "gflib.h" -#include "menu.h" -#include "new_menu_helpers.h" -#include "pokemon_storage_system_internal.h" -#include "strings.h" -#include "constants/songs.h" - -void InitMenu(void) -{ - gStorage->menuItemsCount = 0; - gStorage->menuWidth = 0; - gStorage->menuWindow.bg = 0; - gStorage->menuWindow.paletteNum = 15; - gStorage->menuWindow.baseBlock = 92; -} - -static const u8 *const sMenuTexts[] = { - [MENU_TEXT_CANCEL] = gPCText_Cancel, - [MENU_TEXT_STORE] = gPCText_Store, - [MENU_TEXT_WITHDRAW] = gPCText_Withdraw, - [MENU_TEXT_MOVE] = gPCText_Move, - [MENU_TEXT_SHIFT] = gPCText_Shift, - [MENU_TEXT_PLACE] = gPCText_Place, - [MENU_TEXT_SUMMARY] = gPCText_Summary, - [MENU_TEXT_RELEASE] = gPCText_Release, - [MENU_TEXT_MARK] = gPCText_Mark, - [MENU_TEXT_JUMP] = gPCText_Jump, - [MENU_TEXT_WALLPAPER] = gPCText_Wallpaper, - [MENU_TEXT_NAME] = gPCText_Name, - [MENU_TEXT_TAKE] = gPCText_Take, - [MENU_TEXT_GIVE] = gPCText_Give, - [MENU_TEXT_GIVE2] = gPCText_Give, - [MENU_TEXT_SWITCH] = gPCText_Switch, - [MENU_TEXT_BAG] = gPCText_Bag, - [MENU_TEXT_INFO] = gPCText_Info, - [MENU_TEXT_SCENERY_1] = gPCText_Scenery1, - [MENU_TEXT_SCENERY_2] = gPCText_Scenery2, - [MENU_TEXT_SCENERY_3] = gPCText_Scenery3, - [MENU_TEXT_ETCETERA] = gPCText_Etcetera, - [MENU_TEXT_FOREST] = gPCText_Forest, - [MENU_TEXT_CITY] = gPCText_City, - [MENU_TEXT_DESERT] = gPCText_Desert, - [MENU_TEXT_SAVANNA] = gPCText_Savanna, - [MENU_TEXT_CRAG] = gPCText_Crag, - [MENU_TEXT_VOLCANO] = gPCText_Volcano, - [MENU_TEXT_SNOW] = gPCText_Snow, - [MENU_TEXT_CAVE] = gPCText_Cave, - [MENU_TEXT_BEACH] = gPCText_Beach, - [MENU_TEXT_SEAFLOOR] = gPCText_Seafloor, - [MENU_TEXT_RIVER] = gPCText_River, - [MENU_TEXT_SKY] = gPCText_Sky, - [MENU_TEXT_POLKADOT] = gPCText_PolkaDot, - [MENU_TEXT_POKECENTER] = gPCText_Pokecenter, - [MENU_TEXT_MACHINE] = gPCText_Machine, - [MENU_TEXT_SIMPLE] = gPCText_Simple, -}; - -void SetMenuText(u8 textId) -{ - if (gStorage->menuItemsCount < ARRAY_COUNT(gStorage->menuItems)) - { - u8 len; - struct StorageMenu *menu = &gStorage->menuItems[gStorage->menuItemsCount]; - - menu->text = sMenuTexts[textId]; - menu->textId = textId; - len = StringLength(menu->text); - if (len > gStorage->menuWidth) - gStorage->menuWidth = len; - - gStorage->menuItemsCount++; - } -} - -s8 GetMenuItemTextId(u8 menuIndex) -{ - if (menuIndex >= gStorage->menuItemsCount) - return MENU_B_PRESSED; - else - return gStorage->menuItems[menuIndex].textId; -} - -void AddMenu(void) -{ - gStorage->menuWindow.width = gStorage->menuWidth + 2; - gStorage->menuWindow.height = 2 * gStorage->menuItemsCount; - gStorage->menuWindow.tilemapLeft = 29 - gStorage->menuWindow.width; - gStorage->menuWindow.tilemapTop = 15 - gStorage->menuWindow.height; - gStorage->menuWindowId = AddWindow(&gStorage->menuWindow); - ClearWindowTilemap(gStorage->menuWindowId); - DrawStdFrameWithCustomTileAndPalette(gStorage->menuWindowId, FALSE, 11, 14); - PrintTextArray(gStorage->menuWindowId, FONT_1, 8, 2, 16, gStorage->menuItemsCount, (void *)gStorage->menuItems); - Menu_InitCursor(gStorage->menuWindowId, FONT_1, 0, 2, 16, gStorage->menuItemsCount, 0); - ScheduleBgCopyTilemapToVram(0); - gStorage->menuUnusedField = 0; -} - -bool8 IsMenuLoading(void) -{ - // Possibly stubbed out debug code? - return FALSE; -} - -s16 HandleMenuInput(void) -{ - s32 input = MENU_NOTHING_CHOSEN; - - do - { - if (JOY_NEW(A_BUTTON)) - { - input = Menu_GetCursorPos(); - break; - } - else if (JOY_NEW(B_BUTTON)) - { - PlaySE(SE_SELECT); - input = MENU_B_PRESSED; - } - - if (JOY_NEW(DPAD_UP)) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(-1); - } - else if (JOY_NEW(DPAD_DOWN)) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(1); - } - } while (FALSE); - - if (input != MENU_NOTHING_CHOSEN) - RemoveMenu(); - - if (input >= 0) - input = gStorage->menuItems[input].textId; - - return input; -} - -void RemoveMenu(void) -{ - ClearStdWindowAndFrameToTransparent(gStorage->menuWindowId, TRUE); - RemoveWindow(gStorage->menuWindowId); -} diff --git a/src/pokemon_storage_system_7.c b/src/pokemon_storage_system_7.c deleted file mode 100644 index 573aa4b82..000000000 --- a/src/pokemon_storage_system_7.c +++ /dev/null @@ -1,566 +0,0 @@ -#include // to declare abs -#include "global.h" -#include "gflib.h" -#include "pokemon_icon.h" -#include "pokemon_storage_system_internal.h" -#include "text_window.h" - -static EWRAM_DATA struct -{ - u8 funcId; - u8 state; - u8 fromColumn; - u8 fromRow; - u8 toColumn; - u8 toRow; - u8 cursorColumn; - u8 cursorRow; - u8 minColumn; - u8 minRow; - u8 columnsTotal; - u8 rowsTotal; - u16 bgX; - u16 bgY; - u16 bgMoveSteps; - struct BoxPokemon boxMons[IN_BOX_COUNT]; -} *sMultiMove = NULL; - -static bool8 MultiMove_Function_Start(void); -static bool8 MultiMove_Function_Single(void); -static bool8 MultiMove_Function_ChangeSelection(void); -static bool8 MultiMove_Function_GrabSelection(void); -static bool8 MultiMove_Function_MoveMons(void); -static bool8 MultiMove_Function_PlaceMons(void); -static void MultiMove_UpdateSelectedIcons(void); -static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow); -static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn); -static void MultiMove_DeselectColumn(u8 arg0, u8 minRow, u8 maxRow); -static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn); -static void MultiMove_SetIconToBg(u8 x, u8 y); -static void MultiMove_ClearIconFromBg(u8 x, u8 y); -static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration); -static u8 MultiMove_UpdateBg(void); -static void MultiMove_GetMonsFromSelection(void); -static void MultiMove_RemoveMonsFromBox(void); -static void MultiMove_CreatePlacedMonIcons(void); -static void MultiMove_SetPlacedMonData(void); -static void MultiMove_ResetBg(void); - -static const struct WindowTemplate sWindowTemplate_MultiMove = { - .bg = 0, - .tilemapLeft = 10, - .tilemapTop = 3, - .width = 20, - .height = 18, - .paletteNum = 9, - .baseBlock = 0x00a -}; - -bool8 MultiMove_Init(void) -{ - sMultiMove = Alloc(sizeof(*sMultiMove)); - if (sMultiMove != NULL) - { - gStorage->multiMoveWindowId = AddWindow8Bit(&sWindowTemplate_MultiMove); - if (gStorage->multiMoveWindowId != WINDOW_NONE) - { - FillWindowPixelBuffer(gStorage->multiMoveWindowId, PIXEL_FILL(0)); - return TRUE; - } - } - - return FALSE; -} - -void MultiMove_Free(void) -{ - if (sMultiMove != NULL) - Free(sMultiMove); -} - -void MultiMove_SetFunction(u8 funcId) -{ - sMultiMove->funcId = funcId; - sMultiMove->state = 0; -} - -bool8 MultiMove_RunFunction(void) -{ - switch (sMultiMove->funcId) - { - case MULTIMOVE_START: - return MultiMove_Function_Start(); - case MULTIMOVE_SINGLE: - return MultiMove_Function_Single(); - case MULTIMOVE_CHANGE_SELECTION: - return MultiMove_Function_ChangeSelection(); - case MULTIMOVE_GRAB_SELECTION: - return MultiMove_Function_GrabSelection(); - case MULTIMOVE_MOVE_MONS: - return MultiMove_Function_MoveMons(); - case MULTIMOVE_PLACE_MONS: - return MultiMove_Function_PlaceMons(); - } - - return FALSE; -} - -static bool8 MultiMove_Function_Start(void) -{ - switch (sMultiMove->state) - { - case 0: - HideBg(0); - LoadMonIconPalettesAt(0x80); - sMultiMove->state++; - break; - case 1: - GetCursorBoxColumnAndRow(&sMultiMove->fromColumn, &sMultiMove->fromRow); - sMultiMove->toColumn = sMultiMove->fromColumn; - sMultiMove->toRow = sMultiMove->fromRow; - ChangeBgX(0, -1024, BG_COORD_SET); - ChangeBgY(0, -1024, BG_COORD_SET); - FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); - FillWindowPixelBuffer8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0)); - MultiMove_SetIconToBg(sMultiMove->fromColumn, sMultiMove->fromRow); - SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); - PutWindowTilemap(gStorage->multiMoveWindowId); - CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_FULL); - BlendPalettes(0x3F00, 8, RGB_WHITE); - StartCursorAnim(CURSOR_ANIM_OPEN); - SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); - sMultiMove->state++; - break; - case 2: - if (!IsDma3ManagerBusyWithBgCopy()) - { - ShowBg(0); - return FALSE; - } - break; - } - - return TRUE; -} - -static bool8 MultiMove_Function_Single(void) -{ - switch (sMultiMove->state) - { - case 0: - HideBg(0); - sMultiMove->state++; - break; - case 1: - MultiMove_ResetBg(); - StartCursorAnim(CURSOR_ANIM_BOUNCE); - sMultiMove->state++; - break; - case 2: - if (!IsDma3ManagerBusyWithBgCopy()) - { - SetCursorPriorityTo1(); - LoadPalette(stdpal_get(3), 0xD0, 0x20); - ShowBg(0); - return FALSE; - } - break; - } - - return TRUE; -} - -static bool8 MultiMove_Function_ChangeSelection(void) -{ - switch (sMultiMove->state) - { - case 0: - if (!UpdateCursorPos()) - { - GetCursorBoxColumnAndRow(&sMultiMove->cursorColumn, &sMultiMove->cursorRow); - MultiMove_UpdateSelectedIcons(); - sMultiMove->toColumn = sMultiMove->cursorColumn; - sMultiMove->toRow = sMultiMove->cursorRow; - CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_GFX); - sMultiMove->state++; - } - break; - case 1: - return IsDma3ManagerBusyWithBgCopy(); - } - - return TRUE; -} - -static bool8 MultiMove_Function_GrabSelection(void) -{ - u8 movingBg, movingMon; - - switch (sMultiMove->state) - { - case 0: - MultiMove_GetMonsFromSelection(); - MultiMove_RemoveMonsFromBox(); - InitMultiMonPlaceChange(FALSE); - sMultiMove->state++; - break; - case 1: - if (!DoMonPlaceChange()) - { - StartCursorAnim(CURSOR_ANIM_FIST); - MultiMove_InitBg(0, 256, 8); - InitMultiMonPlaceChange(TRUE); - sMultiMove->state++; - } - break; - case 2: - movingBg = MultiMove_UpdateBg(); - movingMon = DoMonPlaceChange(); - if (!movingBg && !movingMon) - return FALSE; - break; - } - - return TRUE; -} - -static bool8 MultiMove_Function_MoveMons(void) -{ - u8 movingCursor = UpdateCursorPos(); - u8 movingBg = MultiMove_UpdateBg(); - - if (!movingCursor && !movingBg) - return FALSE; - else - return TRUE; -} - -static bool8 MultiMove_Function_PlaceMons(void) -{ - switch (sMultiMove->state) - { - case 0: - MultiMove_SetPlacedMonData(); - MultiMove_InitBg(0, -256, 8); - InitMultiMonPlaceChange(FALSE); - sMultiMove->state++; - break; - case 1: - if (!DoMonPlaceChange() && !MultiMove_UpdateBg()) - { - MultiMove_CreatePlacedMonIcons(); - StartCursorAnim(CURSOR_ANIM_OPEN); - InitMultiMonPlaceChange(TRUE); - HideBg(0); - sMultiMove->state++; - } - break; - case 2: - if (!DoMonPlaceChange()) - { - StartCursorAnim(CURSOR_ANIM_BOUNCE); - MultiMove_ResetBg(); - sMultiMove->state++; - } - break; - case 3: - if (!IsDma3ManagerBusyWithBgCopy()) - { - LoadPalette(stdpal_get(3), 0xD0, 0x20); - SetCursorPriorityTo1(); - ShowBg(0); - return FALSE; - } - break; - } - - return TRUE; -} - -bool8 MultiMove_TryMoveGroup(u8 dir) -{ - switch (dir) - { - case 0: // up - if (sMultiMove->minRow == 0) - return FALSE; - sMultiMove->minRow--; - MultiMove_InitBg(0, 1024, 6); - break; - case 1: // down - if (sMultiMove->minRow + sMultiMove->rowsTotal >= 5) - return FALSE; - sMultiMove->minRow++; - MultiMove_InitBg(0, -1024, 6); - break; - case 2: // left - if (sMultiMove->minColumn == 0) - return FALSE; - sMultiMove->minColumn--; - MultiMove_InitBg(1024, 0, 6); - break; - case 3: // right - if (sMultiMove->minColumn + sMultiMove->columnsTotal > 5) - return FALSE; - sMultiMove->minColumn++; - MultiMove_InitBg(-1024, 0, 6); - break; - } - - return TRUE; -} - -static void MultiMove_UpdateSelectedIcons(void) -{ - s16 columnChange = (abs(sMultiMove->fromColumn - sMultiMove->cursorColumn)) - (abs(sMultiMove->fromColumn - sMultiMove->toColumn)); - s16 rowChange = (abs(sMultiMove->fromRow - sMultiMove->cursorRow)) - (abs(sMultiMove->fromRow - sMultiMove->toRow)); - - if (columnChange > 0) - MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); - - if (columnChange < 0) - { - MultiMove_DeselectColumn(sMultiMove->toColumn, sMultiMove->fromRow, sMultiMove->toRow); - MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); - } - - if (rowChange > 0) - MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); - - if (rowChange < 0) - { - MultiMove_DeselectRow(sMultiMove->toRow, sMultiMove->fromColumn, sMultiMove->toColumn); - MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); - } -} - -static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow) -{ - u8 tmp = minRow; - - if (minRow > maxRow) - { - minRow = maxRow; - maxRow = tmp; - } - - while (minRow <= maxRow) - MultiMove_SetIconToBg(column, minRow++); -} - -static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn) -{ - u8 tmp = minColumn; - - if (minColumn > maxColumn) - { - minColumn = maxColumn; - maxColumn = tmp; - } - - while (minColumn <= maxColumn) - MultiMove_SetIconToBg(minColumn++, row); -} - -static void MultiMove_DeselectColumn(u8 column, u8 minRow, u8 maxRow) -{ - u8 tmp = minRow; - - if (minRow > maxRow) - { - minRow = maxRow; - maxRow = tmp; - } - - while (minRow <= maxRow) - MultiMove_ClearIconFromBg(column, minRow++); -} - -static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn) -{ - u8 tmp = minColumn; - - if (minColumn > maxColumn) - { - minColumn = maxColumn; - maxColumn = tmp; - } - - while (minColumn <= maxColumn) - MultiMove_ClearIconFromBg(minColumn++, row); -} - -static void MultiMove_SetIconToBg(u8 x, u8 y) -{ - u8 position = x + (IN_BOX_COLUMNS * y); - u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); - u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY); - - if (species != SPECIES_NONE) - { - const u8 *iconGfx = GetMonIconPtr(species, personality, 1); - u8 palNum = GetValidMonIconPalIndex(species) + 8; - BlitBitmapRectToWindow4BitTo8Bit(gStorage->multiMoveWindowId, iconGfx, 0, 0, 32, 32, 24 * x, 24 * y, 32, 32, palNum); - } -} - -static void MultiMove_ClearIconFromBg(u8 x, u8 y) -{ - u8 position = x + (IN_BOX_COLUMNS * y); - u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); - - if (species != SPECIES_NONE) - FillWindowPixelRect8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0), 24 * x, 24 * y, 32, 32); -} - -static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration) -{ - sMultiMove->bgX = bgX; - sMultiMove->bgY = bgY; - sMultiMove->bgMoveSteps = duration; -} - -static u8 MultiMove_UpdateBg(void) -{ - if (sMultiMove->bgMoveSteps != 0) - { - ChangeBgX(0, sMultiMove->bgX, BG_COORD_ADD); - ChangeBgY(0, sMultiMove->bgY, BG_COORD_ADD); - sMultiMove->bgMoveSteps--; - } - - return sMultiMove->bgMoveSteps; -} - -static void MultiMove_GetMonsFromSelection(void) -{ - s32 i, j; - s32 columnCount, rowCount; - u8 boxId; - u8 monArrayId; - - sMultiMove->minColumn = min(sMultiMove->fromColumn, sMultiMove->toColumn); - sMultiMove->minRow = min(sMultiMove->fromRow, sMultiMove->toRow); - sMultiMove->columnsTotal = abs(sMultiMove->fromColumn - sMultiMove->toColumn) + 1; - sMultiMove->rowsTotal = abs(sMultiMove->fromRow - sMultiMove->toRow) + 1; - boxId = StorageGetCurrentBox(); - monArrayId = 0; - columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition); - // UB: possible null dereference -#ifdef UBFIX - if (boxMon != NULL) - sMultiMove->boxMons[monArrayId] = *boxMon; -#else - sMultiMove->boxMons[monArrayId] = *boxMon; -#endif - monArrayId++; - boxPosition++; - } - } -} - -static void MultiMove_RemoveMonsFromBox(void) -{ - s32 i, j; - s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - u8 boxId = StorageGetCurrentBox(); - - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - DestroyBoxMonIconAtPosition(boxPosition); - ZeroBoxMonAt(boxId, boxPosition); - boxPosition++; - } - } -} - -static void MultiMove_CreatePlacedMonIcons(void) -{ - s32 i, j; - s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - u8 monArrayId = 0; - - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) - CreateBoxMonIconAtPos(boxPosition); - monArrayId++; - boxPosition++; - } - } -} - -static void MultiMove_SetPlacedMonData(void) -{ - s32 i, j; - s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - u8 boxId = StorageGetCurrentBox(); - u8 monArrayId = 0; - - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) - SetBoxMonAt(boxId, boxPosition, &sMultiMove->boxMons[monArrayId]); - boxPosition++; - monArrayId++; - } - } -} - -static void MultiMove_ResetBg(void) -{ - ChangeBgX(0, 0, BG_COORD_SET); - ChangeBgY(0, 0, BG_COORD_SET); - SetBgAttribute(0, BG_ATTR_PALETTEMODE, 0); - ClearGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); - FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); - CopyBgTilemapBufferToVram(0); -} - -u8 MultiMove_GetOriginPosition(void) -{ - return (IN_BOX_COLUMNS * sMultiMove->fromRow) + sMultiMove->fromColumn; -} - -bool8 MultiMove_CanPlaceSelection(void) -{ - s32 i, j; - s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - u8 monArrayId = 0; - - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) - && GetCurrentBoxMonData(boxPosition, MON_DATA_SANITY_HAS_SPECIES)) - return FALSE; - - monArrayId++; - boxPosition++; - } - } - - return TRUE; -} diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_data.c similarity index 92% rename from src/pokemon_storage_system_5.c rename to src/pokemon_storage_system_data.c index d3373f247..dfe34330a 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_data.c @@ -3,11 +3,14 @@ #include "data.h" #include "item.h" #include "mail_data.h" +#include "menu.h" +#include "new_menu_helpers.h" #include "pokemon_storage_system_internal.h" #include "pokemon_summary_screen.h" #include "strings.h" #include "constants/items.h" #include "constants/moves.h" +#include "constants/songs.h" static EWRAM_DATA struct Pokemon sMonBeingCarried = {}; static EWRAM_DATA s8 sCursorArea = 0; @@ -2020,3 +2023,143 @@ void TryShowItemAtCursor(void) if (sCursorArea == CURSOR_AREA_IN_BOX) TryLoadItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition); } + +static const u8 *const sMenuTexts[] = { + [MENU_TEXT_CANCEL] = gPCText_Cancel, + [MENU_TEXT_STORE] = gPCText_Store, + [MENU_TEXT_WITHDRAW] = gPCText_Withdraw, + [MENU_TEXT_MOVE] = gPCText_Move, + [MENU_TEXT_SHIFT] = gPCText_Shift, + [MENU_TEXT_PLACE] = gPCText_Place, + [MENU_TEXT_SUMMARY] = gPCText_Summary, + [MENU_TEXT_RELEASE] = gPCText_Release, + [MENU_TEXT_MARK] = gPCText_Mark, + [MENU_TEXT_JUMP] = gPCText_Jump, + [MENU_TEXT_WALLPAPER] = gPCText_Wallpaper, + [MENU_TEXT_NAME] = gPCText_Name, + [MENU_TEXT_TAKE] = gPCText_Take, + [MENU_TEXT_GIVE] = gPCText_Give, + [MENU_TEXT_GIVE2] = gPCText_Give, + [MENU_TEXT_SWITCH] = gPCText_Switch, + [MENU_TEXT_BAG] = gPCText_Bag, + [MENU_TEXT_INFO] = gPCText_Info, + [MENU_TEXT_SCENERY_1] = gPCText_Scenery1, + [MENU_TEXT_SCENERY_2] = gPCText_Scenery2, + [MENU_TEXT_SCENERY_3] = gPCText_Scenery3, + [MENU_TEXT_ETCETERA] = gPCText_Etcetera, + [MENU_TEXT_FOREST] = gPCText_Forest, + [MENU_TEXT_CITY] = gPCText_City, + [MENU_TEXT_DESERT] = gPCText_Desert, + [MENU_TEXT_SAVANNA] = gPCText_Savanna, + [MENU_TEXT_CRAG] = gPCText_Crag, + [MENU_TEXT_VOLCANO] = gPCText_Volcano, + [MENU_TEXT_SNOW] = gPCText_Snow, + [MENU_TEXT_CAVE] = gPCText_Cave, + [MENU_TEXT_BEACH] = gPCText_Beach, + [MENU_TEXT_SEAFLOOR] = gPCText_Seafloor, + [MENU_TEXT_RIVER] = gPCText_River, + [MENU_TEXT_SKY] = gPCText_Sky, + [MENU_TEXT_POLKADOT] = gPCText_PolkaDot, + [MENU_TEXT_POKECENTER] = gPCText_Pokecenter, + [MENU_TEXT_MACHINE] = gPCText_Machine, + [MENU_TEXT_SIMPLE] = gPCText_Simple, +}; + +void InitMenu(void) +{ + gStorage->menuItemsCount = 0; + gStorage->menuWidth = 0; + gStorage->menuWindow.bg = 0; + gStorage->menuWindow.paletteNum = 15; + gStorage->menuWindow.baseBlock = 92; +} + +void SetMenuText(u8 textId) +{ + if (gStorage->menuItemsCount < ARRAY_COUNT(gStorage->menuItems)) + { + u8 len; + struct StorageMenu *menu = &gStorage->menuItems[gStorage->menuItemsCount]; + + menu->text = sMenuTexts[textId]; + menu->textId = textId; + len = StringLength(menu->text); + if (len > gStorage->menuWidth) + gStorage->menuWidth = len; + + gStorage->menuItemsCount++; + } +} + +s8 GetMenuItemTextId(u8 menuIndex) +{ + if (menuIndex >= gStorage->menuItemsCount) + return MENU_B_PRESSED; + else + return gStorage->menuItems[menuIndex].textId; +} + +void AddMenu(void) +{ + gStorage->menuWindow.width = gStorage->menuWidth + 2; + gStorage->menuWindow.height = 2 * gStorage->menuItemsCount; + gStorage->menuWindow.tilemapLeft = 29 - gStorage->menuWindow.width; + gStorage->menuWindow.tilemapTop = 15 - gStorage->menuWindow.height; + gStorage->menuWindowId = AddWindow(&gStorage->menuWindow); + ClearWindowTilemap(gStorage->menuWindowId); + DrawStdFrameWithCustomTileAndPalette(gStorage->menuWindowId, FALSE, 11, 14); + PrintTextArray(gStorage->menuWindowId, FONT_1, 8, 2, 16, gStorage->menuItemsCount, (void *)gStorage->menuItems); + Menu_InitCursor(gStorage->menuWindowId, FONT_1, 0, 2, 16, gStorage->menuItemsCount, 0); + ScheduleBgCopyTilemapToVram(0); + gStorage->menuUnusedField = 0; +} + +bool8 IsMenuLoading(void) +{ + // Possibly stubbed out debug code? + return FALSE; +} + +s16 HandleMenuInput(void) +{ + s32 input = MENU_NOTHING_CHOSEN; + + do + { + if (JOY_NEW(A_BUTTON)) + { + input = Menu_GetCursorPos(); + break; + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + input = MENU_B_PRESSED; + } + + if (JOY_NEW(DPAD_UP)) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(-1); + } + else if (JOY_NEW(DPAD_DOWN)) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(1); + } + } while (FALSE); + + if (input != MENU_NOTHING_CHOSEN) + RemoveMenu(); + + if (input >= 0) + input = gStorage->menuItems[input].textId; + + return input; +} + +void RemoveMenu(void) +{ + ClearStdWindowAndFrameToTransparent(gStorage->menuWindowId, TRUE); + RemoveWindow(gStorage->menuWindowId); +} diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_graphics.c similarity index 100% rename from src/pokemon_storage_system_4.c rename to src/pokemon_storage_system_graphics.c diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_menu.c similarity index 100% rename from src/pokemon_storage_system_2.c rename to src/pokemon_storage_system_menu.c diff --git a/src/pokemon_storage_system_8.c b/src/pokemon_storage_system_misc.c similarity index 61% rename from src/pokemon_storage_system_8.c rename to src/pokemon_storage_system_misc.c index 644aad1aa..2cfa98152 100644 --- a/src/pokemon_storage_system_8.c +++ b/src/pokemon_storage_system_misc.c @@ -1,3 +1,4 @@ +#include // to declare abs #include "global.h" #include "gflib.h" #include "decompress.h" @@ -5,10 +6,572 @@ #include "item_menu_icons.h" #include "menu.h" #include "new_menu_helpers.h" +#include "pokemon_icon.h" #include "pokemon_storage_system_internal.h" +#include "text_window.h" #include "trig.h" #include "constants/items.h" +static EWRAM_DATA struct +{ + u8 funcId; + u8 state; + u8 fromColumn; + u8 fromRow; + u8 toColumn; + u8 toRow; + u8 cursorColumn; + u8 cursorRow; + u8 minColumn; + u8 minRow; + u8 columnsTotal; + u8 rowsTotal; + u16 bgX; + u16 bgY; + u16 bgMoveSteps; + struct BoxPokemon boxMons[IN_BOX_COUNT]; +} *sMultiMove = NULL; + +static bool8 MultiMove_Function_Start(void); +static bool8 MultiMove_Function_Single(void); +static bool8 MultiMove_Function_ChangeSelection(void); +static bool8 MultiMove_Function_GrabSelection(void); +static bool8 MultiMove_Function_MoveMons(void); +static bool8 MultiMove_Function_PlaceMons(void); +static void MultiMove_UpdateSelectedIcons(void); +static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow); +static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn); +static void MultiMove_DeselectColumn(u8 arg0, u8 minRow, u8 maxRow); +static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn); +static void MultiMove_SetIconToBg(u8 x, u8 y); +static void MultiMove_ClearIconFromBg(u8 x, u8 y); +static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration); +static u8 MultiMove_UpdateBg(void); +static void MultiMove_GetMonsFromSelection(void); +static void MultiMove_RemoveMonsFromBox(void); +static void MultiMove_CreatePlacedMonIcons(void); +static void MultiMove_SetPlacedMonData(void); +static void MultiMove_ResetBg(void); + +static const struct WindowTemplate sWindowTemplate_MultiMove = { + .bg = 0, + .tilemapLeft = 10, + .tilemapTop = 3, + .width = 20, + .height = 18, + .paletteNum = 9, + .baseBlock = 0x00a +}; + +bool8 MultiMove_Init(void) +{ + sMultiMove = Alloc(sizeof(*sMultiMove)); + if (sMultiMove != NULL) + { + gStorage->multiMoveWindowId = AddWindow8Bit(&sWindowTemplate_MultiMove); + if (gStorage->multiMoveWindowId != WINDOW_NONE) + { + FillWindowPixelBuffer(gStorage->multiMoveWindowId, PIXEL_FILL(0)); + return TRUE; + } + } + + return FALSE; +} + +void MultiMove_Free(void) +{ + if (sMultiMove != NULL) + Free(sMultiMove); +} + +void MultiMove_SetFunction(u8 funcId) +{ + sMultiMove->funcId = funcId; + sMultiMove->state = 0; +} + +bool8 MultiMove_RunFunction(void) +{ + switch (sMultiMove->funcId) + { + case MULTIMOVE_START: + return MultiMove_Function_Start(); + case MULTIMOVE_SINGLE: + return MultiMove_Function_Single(); + case MULTIMOVE_CHANGE_SELECTION: + return MultiMove_Function_ChangeSelection(); + case MULTIMOVE_GRAB_SELECTION: + return MultiMove_Function_GrabSelection(); + case MULTIMOVE_MOVE_MONS: + return MultiMove_Function_MoveMons(); + case MULTIMOVE_PLACE_MONS: + return MultiMove_Function_PlaceMons(); + } + + return FALSE; +} + +static bool8 MultiMove_Function_Start(void) +{ + switch (sMultiMove->state) + { + case 0: + HideBg(0); + LoadMonIconPalettesAt(0x80); + sMultiMove->state++; + break; + case 1: + GetCursorBoxColumnAndRow(&sMultiMove->fromColumn, &sMultiMove->fromRow); + sMultiMove->toColumn = sMultiMove->fromColumn; + sMultiMove->toRow = sMultiMove->fromRow; + ChangeBgX(0, -1024, BG_COORD_SET); + ChangeBgY(0, -1024, BG_COORD_SET); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); + FillWindowPixelBuffer8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0)); + MultiMove_SetIconToBg(sMultiMove->fromColumn, sMultiMove->fromRow); + SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); + PutWindowTilemap(gStorage->multiMoveWindowId); + CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_FULL); + BlendPalettes(0x3F00, 8, RGB_WHITE); + StartCursorAnim(CURSOR_ANIM_OPEN); + SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); + sMultiMove->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +static bool8 MultiMove_Function_Single(void) +{ + switch (sMultiMove->state) + { + case 0: + HideBg(0); + sMultiMove->state++; + break; + case 1: + MultiMove_ResetBg(); + StartCursorAnim(CURSOR_ANIM_BOUNCE); + sMultiMove->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + SetCursorPriorityTo1(); + LoadPalette(stdpal_get(3), 0xD0, 0x20); + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +static bool8 MultiMove_Function_ChangeSelection(void) +{ + switch (sMultiMove->state) + { + case 0: + if (!UpdateCursorPos()) + { + GetCursorBoxColumnAndRow(&sMultiMove->cursorColumn, &sMultiMove->cursorRow); + MultiMove_UpdateSelectedIcons(); + sMultiMove->toColumn = sMultiMove->cursorColumn; + sMultiMove->toRow = sMultiMove->cursorRow; + CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_GFX); + sMultiMove->state++; + } + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 MultiMove_Function_GrabSelection(void) +{ + u8 movingBg, movingMon; + + switch (sMultiMove->state) + { + case 0: + MultiMove_GetMonsFromSelection(); + MultiMove_RemoveMonsFromBox(); + InitMultiMonPlaceChange(FALSE); + sMultiMove->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + StartCursorAnim(CURSOR_ANIM_FIST); + MultiMove_InitBg(0, 256, 8); + InitMultiMonPlaceChange(TRUE); + sMultiMove->state++; + } + break; + case 2: + movingBg = MultiMove_UpdateBg(); + movingMon = DoMonPlaceChange(); + if (!movingBg && !movingMon) + return FALSE; + break; + } + + return TRUE; +} + +static bool8 MultiMove_Function_MoveMons(void) +{ + u8 movingCursor = UpdateCursorPos(); + u8 movingBg = MultiMove_UpdateBg(); + + if (!movingCursor && !movingBg) + return FALSE; + else + return TRUE; +} + +static bool8 MultiMove_Function_PlaceMons(void) +{ + switch (sMultiMove->state) + { + case 0: + MultiMove_SetPlacedMonData(); + MultiMove_InitBg(0, -256, 8); + InitMultiMonPlaceChange(FALSE); + sMultiMove->state++; + break; + case 1: + if (!DoMonPlaceChange() && !MultiMove_UpdateBg()) + { + MultiMove_CreatePlacedMonIcons(); + StartCursorAnim(CURSOR_ANIM_OPEN); + InitMultiMonPlaceChange(TRUE); + HideBg(0); + sMultiMove->state++; + } + break; + case 2: + if (!DoMonPlaceChange()) + { + StartCursorAnim(CURSOR_ANIM_BOUNCE); + MultiMove_ResetBg(); + sMultiMove->state++; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + LoadPalette(stdpal_get(3), 0xD0, 0x20); + SetCursorPriorityTo1(); + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +bool8 MultiMove_TryMoveGroup(u8 dir) +{ + switch (dir) + { + case 0: // up + if (sMultiMove->minRow == 0) + return FALSE; + sMultiMove->minRow--; + MultiMove_InitBg(0, 1024, 6); + break; + case 1: // down + if (sMultiMove->minRow + sMultiMove->rowsTotal >= 5) + return FALSE; + sMultiMove->minRow++; + MultiMove_InitBg(0, -1024, 6); + break; + case 2: // left + if (sMultiMove->minColumn == 0) + return FALSE; + sMultiMove->minColumn--; + MultiMove_InitBg(1024, 0, 6); + break; + case 3: // right + if (sMultiMove->minColumn + sMultiMove->columnsTotal > 5) + return FALSE; + sMultiMove->minColumn++; + MultiMove_InitBg(-1024, 0, 6); + break; + } + + return TRUE; +} + +static void MultiMove_UpdateSelectedIcons(void) +{ + s16 columnChange = (abs(sMultiMove->fromColumn - sMultiMove->cursorColumn)) - (abs(sMultiMove->fromColumn - sMultiMove->toColumn)); + s16 rowChange = (abs(sMultiMove->fromRow - sMultiMove->cursorRow)) - (abs(sMultiMove->fromRow - sMultiMove->toRow)); + + if (columnChange > 0) + MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); + + if (columnChange < 0) + { + MultiMove_DeselectColumn(sMultiMove->toColumn, sMultiMove->fromRow, sMultiMove->toRow); + MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); + } + + if (rowChange > 0) + MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); + + if (rowChange < 0) + { + MultiMove_DeselectRow(sMultiMove->toRow, sMultiMove->fromColumn, sMultiMove->toColumn); + MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); + } +} + +static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow) +{ + u8 tmp = minRow; + + if (minRow > maxRow) + { + minRow = maxRow; + maxRow = tmp; + } + + while (minRow <= maxRow) + MultiMove_SetIconToBg(column, minRow++); +} + +static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn) +{ + u8 tmp = minColumn; + + if (minColumn > maxColumn) + { + minColumn = maxColumn; + maxColumn = tmp; + } + + while (minColumn <= maxColumn) + MultiMove_SetIconToBg(minColumn++, row); +} + +static void MultiMove_DeselectColumn(u8 column, u8 minRow, u8 maxRow) +{ + u8 tmp = minRow; + + if (minRow > maxRow) + { + minRow = maxRow; + maxRow = tmp; + } + + while (minRow <= maxRow) + MultiMove_ClearIconFromBg(column, minRow++); +} + +static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn) +{ + u8 tmp = minColumn; + + if (minColumn > maxColumn) + { + minColumn = maxColumn; + maxColumn = tmp; + } + + while (minColumn <= maxColumn) + MultiMove_ClearIconFromBg(minColumn++, row); +} + +static void MultiMove_SetIconToBg(u8 x, u8 y) +{ + u8 position = x + (IN_BOX_COLUMNS * y); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY); + + if (species != SPECIES_NONE) + { + const u8 *iconGfx = GetMonIconPtr(species, personality, 1); + u8 palNum = GetValidMonIconPalIndex(species) + 8; + BlitBitmapRectToWindow4BitTo8Bit(gStorage->multiMoveWindowId, iconGfx, 0, 0, 32, 32, 24 * x, 24 * y, 32, 32, palNum); + } +} + +static void MultiMove_ClearIconFromBg(u8 x, u8 y) +{ + u8 position = x + (IN_BOX_COLUMNS * y); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + + if (species != SPECIES_NONE) + FillWindowPixelRect8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0), 24 * x, 24 * y, 32, 32); +} + +static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration) +{ + sMultiMove->bgX = bgX; + sMultiMove->bgY = bgY; + sMultiMove->bgMoveSteps = duration; +} + +static u8 MultiMove_UpdateBg(void) +{ + if (sMultiMove->bgMoveSteps != 0) + { + ChangeBgX(0, sMultiMove->bgX, BG_COORD_ADD); + ChangeBgY(0, sMultiMove->bgY, BG_COORD_ADD); + sMultiMove->bgMoveSteps--; + } + + return sMultiMove->bgMoveSteps; +} + +static void MultiMove_GetMonsFromSelection(void) +{ + s32 i, j; + s32 columnCount, rowCount; + u8 boxId; + u8 monArrayId; + + sMultiMove->minColumn = min(sMultiMove->fromColumn, sMultiMove->toColumn); + sMultiMove->minRow = min(sMultiMove->fromRow, sMultiMove->toRow); + sMultiMove->columnsTotal = abs(sMultiMove->fromColumn - sMultiMove->toColumn) + 1; + sMultiMove->rowsTotal = abs(sMultiMove->fromRow - sMultiMove->toRow) + 1; + boxId = StorageGetCurrentBox(); + monArrayId = 0; + columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition); + // UB: possible null dereference +#ifdef UBFIX + if (boxMon != NULL) + sMultiMove->boxMons[monArrayId] = *boxMon; +#else + sMultiMove->boxMons[monArrayId] = *boxMon; +#endif + monArrayId++; + boxPosition++; + } + } +} + +static void MultiMove_RemoveMonsFromBox(void) +{ + s32 i, j; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + u8 boxId = StorageGetCurrentBox(); + + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + DestroyBoxMonIconAtPosition(boxPosition); + ZeroBoxMonAt(boxId, boxPosition); + boxPosition++; + } + } +} + +static void MultiMove_CreatePlacedMonIcons(void) +{ + s32 i, j; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + u8 monArrayId = 0; + + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + CreateBoxMonIconAtPos(boxPosition); + monArrayId++; + boxPosition++; + } + } +} + +static void MultiMove_SetPlacedMonData(void) +{ + s32 i, j; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + u8 boxId = StorageGetCurrentBox(); + u8 monArrayId = 0; + + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + SetBoxMonAt(boxId, boxPosition, &sMultiMove->boxMons[monArrayId]); + boxPosition++; + monArrayId++; + } + } +} + +static void MultiMove_ResetBg(void) +{ + ChangeBgX(0, 0, BG_COORD_SET); + ChangeBgY(0, 0, BG_COORD_SET); + SetBgAttribute(0, BG_ATTR_PALETTEMODE, 0); + ClearGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); + CopyBgTilemapBufferToVram(0); +} + +u8 MultiMove_GetOriginPosition(void) +{ + return (IN_BOX_COLUMNS * sMultiMove->fromRow) + sMultiMove->fromColumn; +} + +bool8 MultiMove_CanPlaceSelection(void) +{ + s32 i, j; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + u8 monArrayId = 0; + + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) + && GetCurrentBoxMonData(boxPosition, MON_DATA_SANITY_HAS_SPECIES)) + return FALSE; + + monArrayId++; + boxPosition++; + } + } + + return TRUE; +} + // IDs for the item icon sprite callbacks enum { ITEM_CB_WAIT_ANIM, diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_tasks.c similarity index 99% rename from src/pokemon_storage_system_3.c rename to src/pokemon_storage_system_tasks.c index b7b4eaf4f..bad54118e 100644 --- a/src/pokemon_storage_system_3.c +++ b/src/pokemon_storage_system_tasks.c @@ -1,6 +1,5 @@ #include "global.h" #include "gflib.h" -#include "box_party_pokemon_dropdown.h" #include "data.h" #include "decompress.h" #include "dynamic_placeholder_text_util.h" @@ -21,6 +20,7 @@ #include "strings.h" #include "task.h" #include "text_window.h" +#include "tilemap_util.h" #include "trig.h" #include "constants/items.h" #include "constants/help_system.h" diff --git a/src/box_party_pokemon_dropdown.c b/src/tilemap_util.c similarity index 99% rename from src/box_party_pokemon_dropdown.c rename to src/tilemap_util.c index f4cf05bd8..fe2f34866 100644 --- a/src/box_party_pokemon_dropdown.c +++ b/src/tilemap_util.c @@ -1,6 +1,6 @@ #include "global.h" #include "bg.h" -#include "box_party_pokemon_dropdown.h" +#include "tilemap_util.h" #include "malloc.h" // Handles 3 particular tilemaps ("PKMN Data" text, party menu, close box diff --git a/sym_bss.txt b/sym_bss.txt index 63a52555c..9f50fd0a7 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -16,7 +16,7 @@ .include "src/tileset_anims.o" .include "src/sound.o" .include "src/field_effect.o" - .include "src/pokemon_storage_system_8.o" + .include "src/pokemon_storage_system_misc.o" .include "src/easy_chat.o" .include "src/link_rfu_2.o" .include "src/link_rfu_3.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index a3766873e..ef48abffa 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -38,11 +38,10 @@ .include "src/scanline_effect.o" .include "src/option_menu.o" .include "src/trainer_card.o" - .include "src/pokemon_storage_system_2.o" - .include "src/pokemon_storage_system_3.o" - .include "src/pokemon_storage_system_5.o" - .include "src/pokemon_storage_system_7.o" - .include "src/pokemon_storage_system_8.o" + .include "src/pokemon_storage_system_menu.o" + .include "src/pokemon_storage_system_tasks.o" + .include "src/pokemon_storage_system_data.o" + .include "src/pokemon_storage_system_misc.o" .include "src/script_movement.o" .include "src/fldeff_cut.o" .include "src/item_menu_icons.o" @@ -84,7 +83,7 @@ .include "src/save_failed_screen.o" .include "src/clear_save_data_screen.o" .include "src/new_menu_helpers.o" - .include "src/box_party_pokemon_dropdown.o" + .include "src/tilemap_util.o" .include "src/map_preview_screen.o" .include "src/link_rfu_2.o" .include "src/link_rfu_3.o" From dbaf8f5900ff65e948659bfd92aa639cc9fd9e8d Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Sun, 4 Sep 2022 17:55:15 +0800 Subject: [PATCH 38/38] Document field moves --- include/event_object_movement.h | 4 +- .../object_events/object_event_graphics.h | 6 +- src/fldeff_cut.c | 4 +- src/fldeff_dig.c | 6 +- src/fldeff_rocksmash.c | 12 ++-- src/fldeff_softboiled.c | 63 +++++++++---------- src/strings.c | 2 +- 7 files changed, 48 insertions(+), 49 deletions(-) diff --git a/include/event_object_movement.h b/include/event_object_movement.h index b59fb209b..21bac2013 100644 --- a/include/event_object_movement.h +++ b/include/event_object_movement.h @@ -192,8 +192,8 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[]; extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1; extern const struct SpriteTemplate * const gFieldEffectObjectTemplatePointers[]; extern const struct OamData gObjectEventBaseOam_32x32; -extern const u16 gUnknown_8398648[]; -extern const u16 gUnknown_8398688[]; +extern const u16 gFieldEffectObjectPic_CutGrass[]; +extern const u16 gFieldEffectPal_CutGrass[]; extern const u8 gReflectionEffectPaletteMap[]; u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z); u8 sub_8063FDC(u32 direction); diff --git a/src/data/object_events/object_event_graphics.h b/src/data/object_events/object_event_graphics.h index 7d0f57e3c..6e6831a82 100644 --- a/src/data/object_events/object_event_graphics.h +++ b/src/data/object_events/object_event_graphics.h @@ -191,9 +191,9 @@ const u16 gFieldEffectObjectPic_ShadowMedium[] = INCBIN_U16("graphics/field_effe const u16 gFieldEffectObjectPic_ShadowLarge[] = INCBIN_U16("graphics/field_effects/pics/shadow_large.4bpp"); const u16 gFieldEffectObjectPic_ShadowExtraLarge[] = INCBIN_U16("graphics/field_effects/pics/shadow_extra_large.4bpp"); const u16 filler_8398188[0x90] = {}; -const u16 gUnknown_8398648[] = INCBIN_U16("graphics/field_effects/fldeff_cut.4bpp"); -const u16 gUnknown_8398668[] = INCBIN_U16("graphics/field_effects/fldeff_cut.4bpp"); -const u16 gUnknown_8398688[] = INCBIN_U16("graphics/field_effects/fldeff_cut.gbapal"); +const u16 gFieldEffectObjectPic_CutGrass[] = INCBIN_U16("graphics/field_effects/fldeff_cut.4bpp"); +UNUSED const u16 gFieldEffectObjectPic_CutGrass2[] = INCBIN_U16("graphics/field_effects/fldeff_cut.4bpp"); +const u16 gFieldEffectPal_CutGrass[] = INCBIN_U16("graphics/field_effects/fldeff_cut.gbapal"); const u16 gFieldEffectObjectPic_Ripple[] = INCBIN_U16("graphics/field_effects/pics/ripple.4bpp"); const u16 gFieldEffectObjectPic_Ash[] = INCBIN_U16("graphics/field_effects/pics/ash.4bpp"); const u16 gFieldEffectObjectPic_Arrow[] = INCBIN_U16("graphics/field_effects/pics/arrow.4bpp"); diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index 20fff2606..86548ddb2 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -93,11 +93,11 @@ static const union AnimCmd *const sSpriteAnimTable_FldEff_CutGrass[] = { }; static const struct SpriteFrameImage sSpriteFrameImages_FldEff_CutGrass[] = { - {gUnknown_8398648, 0x20} + {gFieldEffectObjectPic_CutGrass, 0x20} }; const struct SpritePalette gFldEffPalette_CutGrass[] = { - gUnknown_8398688, 4096 + gFieldEffectPal_CutGrass, 4096 }; static const struct SpriteTemplate sSpriteTemplate_FldEff_CutGrass = { diff --git a/src/fldeff_dig.c b/src/fldeff_dig.c index 0eb0d3c1e..0d25953af 100644 --- a/src/fldeff_dig.c +++ b/src/fldeff_dig.c @@ -7,7 +7,7 @@ #include "party_menu.h" static void FieldCallback_Dig(void); -static void sub_80C9AFC(void); +static void StartDigFieldEffect(void); bool8 SetUpFieldMove_Dig(void) { @@ -31,12 +31,12 @@ bool8 FldEff_UseDig(void) { u8 taskId = CreateFieldEffectShowMon(); - FLDEFF_SET_FUNC_TO_DATA(sub_80C9AFC); + FLDEFF_SET_FUNC_TO_DATA(StartDigFieldEffect); SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT); return FALSE; } -static void sub_80C9AFC(void) +static void StartDigFieldEffect(void) { u8 taskId; diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index 74e92e9ee..b416e1fce 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -18,8 +18,8 @@ static void Task_FieldEffectShowMon_Init(u8 taskId); static void Task_FieldEffectShowMon_WaitFldeff(u8 taskId); static void Task_FieldEffectShowMon_WaitPlayerAnim(u8 taskId); static void Task_FieldEffectShowMon_Cleanup(u8 taskId); -static void sub_80C9A10(void); -static void sub_80C9A60(void); +static void FieldCallback_UseRockSmash(void); +static void StartRockSmashFieldEffect(void); EWRAM_DATA struct MapPosition gPlayerFacingPosition = {}; @@ -108,13 +108,13 @@ bool8 SetUpFieldMove_RockSmash(void) if (CheckObjectGraphicsInFrontOfPlayer(OBJ_EVENT_GFX_ROCK_SMASH_ROCK) == TRUE) { gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu; - gPostMenuFieldCallback = sub_80C9A10; + gPostMenuFieldCallback = FieldCallback_UseRockSmash; return TRUE; } return FALSE; } -static void sub_80C9A10(void) +static void FieldCallback_UseRockSmash(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); ScriptContext_SetupScript(EventScript_FldEffRockSmash); @@ -124,12 +124,12 @@ bool8 FldEff_UseRockSmash(void) { u8 taskId = CreateFieldEffectShowMon(); - FLDEFF_SET_FUNC_TO_DATA(sub_80C9A60); + FLDEFF_SET_FUNC_TO_DATA(StartRockSmashFieldEffect); IncrementGameStat(GAME_STAT_USED_ROCK_SMASH); return FALSE; } -static void sub_80C9A60(void) +static void StartRockSmashFieldEffect(void) { PlaySE(SE_M_ROCK_THROW); FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH); diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c index 22887242a..6eb24dc6b 100644 --- a/src/fldeff_softboiled.c +++ b/src/fldeff_softboiled.c @@ -5,12 +5,12 @@ #include "new_menu_helpers.h" #include "constants/songs.h" -static void sub_80E57E8(u8 taskId); -static void sub_80E583C(u8 taskId); -static void sub_80E58A0(u8 taskId); -static void sub_80E5934(u8 taskId); +static void Task_SoftboiledRestoreHealth(u8 taskId); +static void Task_DisplayHPRestoredMessage(u8 taskId); +static void Task_FinishSoftboiled(u8 taskId); +static void CantUseSoftboiledOnMon(u8 taskId); -extern const u8 gUnknown_84169F8[]; +extern const u8 gText_CantBeUsedOnPkmn[]; extern const u8 gText_PkmnHPRestoredByVar2[]; bool8 SetUpFieldMove_SoftBoiled(void) @@ -26,84 +26,83 @@ bool8 SetUpFieldMove_SoftBoiled(void) void ChooseMonForSoftboiled(u8 taskId) { - gPartyMenu.action = 10; + gPartyMenu.action = PARTY_ACTION_SOFTBOILED; gPartyMenu.slotId2 = gPartyMenu.slotId; AnimatePartySlot(GetCursorSelectionMonId(), 1); - DisplayPartyMenuStdMessage(5); + DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON); gTasks[taskId].func = Task_HandleChooseMonInput; } void Task_TryUseSoftboiledOnPartyMon(u8 taskId) { - u8 r8 = gPartyMenu.slotId; - u8 r5 = gPartyMenu.slotId2; + u8 userPartyId = gPartyMenu.slotId; + u8 recipientPartyId = gPartyMenu.slotId2; u16 curHp; - s16 delta; - if (r5 > 6) + if (recipientPartyId > PARTY_SIZE) { - gPartyMenu.action = 0; - DisplayPartyMenuStdMessage(0); + gPartyMenu.action = PARTY_ACTION_CHOOSE_MON; + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); gTasks[taskId].func = Task_HandleChooseMonInput; } else { - curHp = GetMonData(&gPlayerParty[r5], MON_DATA_HP); - if (curHp == 0 || r8 == r5 || GetMonData(&gPlayerParty[r5], MON_DATA_MAX_HP) == curHp) - { - sub_80E5934(taskId); - } + curHp = GetMonData(&gPlayerParty[recipientPartyId], MON_DATA_HP); + if (curHp == 0 + || userPartyId == recipientPartyId + || GetMonData(&gPlayerParty[recipientPartyId], MON_DATA_MAX_HP) == curHp) + CantUseSoftboiledOnMon(taskId); else { PlaySE(SE_USE_ITEM); - PartyMenuModifyHP(taskId, r8, -1, GetMonData(&gPlayerParty[r8], MON_DATA_MAX_HP) / 5, sub_80E57E8); + PartyMenuModifyHP(taskId, userPartyId, -1, GetMonData(&gPlayerParty[userPartyId], MON_DATA_MAX_HP) / 5, Task_SoftboiledRestoreHealth); } } } -static void sub_80E57E8(u8 taskId) +static void Task_SoftboiledRestoreHealth(u8 taskId) { PlaySE(SE_USE_ITEM); - PartyMenuModifyHP(taskId, gPartyMenu.slotId2, 1, GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAX_HP) / 5, sub_80E583C); + PartyMenuModifyHP(taskId, gPartyMenu.slotId2, 1, GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAX_HP) / 5, Task_DisplayHPRestoredMessage); } -static void sub_80E583C(u8 taskId) +static void Task_DisplayHPRestoredMessage(u8 taskId) { GetMonNickname(&gPlayerParty[gPartyMenu.slotId2], gStringVar1); StringExpandPlaceholders(gStringVar4, gText_PkmnHPRestoredByVar2); - DisplayPartyMenuMessage(gStringVar4, 0); + DisplayPartyMenuMessage(gStringVar4, FALSE); ScheduleBgCopyTilemapToVram(2); - gTasks[taskId].func = sub_80E58A0; + gTasks[taskId].func = Task_FinishSoftboiled; } -static void sub_80E58A0(u8 taskId) +static void Task_FinishSoftboiled(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { - gPartyMenu.action = 0; + gPartyMenu.action = PARTY_ACTION_CHOOSE_MON; AnimatePartySlot(gPartyMenu.slotId, 0); gPartyMenu.slotId = gPartyMenu.slotId2; AnimatePartySlot(gPartyMenu.slotId2, 1); ClearStdWindowAndFrameToTransparent(6, 0); ClearWindowTilemap(6); - DisplayPartyMenuStdMessage(0); + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); gTasks[taskId].func = Task_HandleChooseMonInput; } } -static void sub_80E5900(u8 taskId) +static void Task_ChooseNewMonForSoftboiled(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { - DisplayPartyMenuStdMessage(5); + DisplayPartyMenuStdMessage(PARTY_MSG_USE_ON_WHICH_MON); gTasks[taskId].func = Task_HandleChooseMonInput; } } -static void sub_80E5934(u8 taskId) +static void CantUseSoftboiledOnMon(u8 taskId) { PlaySE(SE_SELECT); - DisplayPartyMenuMessage(gUnknown_84169F8, 0); + DisplayPartyMenuMessage(gText_CantBeUsedOnPkmn, FALSE); ScheduleBgCopyTilemapToVram(2); - gTasks[taskId].func = sub_80E5900; + gTasks[taskId].func = Task_ChooseNewMonForSoftboiled; } diff --git a/src/strings.c b/src/strings.c index c8f85b50f..996cf1ac3 100644 --- a/src/strings.c +++ b/src/strings.c @@ -252,7 +252,7 @@ const u8 gMenuText_Confirm[] = _("OK"); const u8 gUnknown_84169D8[] = _(""); const u8 gText_PauseUntilPress[] = _("{PAUSE_UNTIL_PRESS}"); const u8 gText_WontHaveEffect[] = _("It won't have any effect.{PAUSE_UNTIL_PRESS}"); -const u8 gUnknown_84169F8[] = _("This can't be used on\nthat POKéMON.{PAUSE_UNTIL_PRESS}"); +const u8 gText_CantBeUsedOnPkmn[] = _("This can't be used on\nthat POKéMON.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnCantSwitchOut[] = _("{STR_VAR_1} can't be switched\nout!{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnAlreadyInBattle[] = _("{STR_VAR_1} is already\nin battle!{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnAlreadySelected[] = _("{STR_VAR_1} has already been\nselected.{PAUSE_UNTIL_PRESS}");