summaryrefslogtreecommitdiff
path: root/src/battle_controller_player_partner.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_controller_player_partner.c')
-rw-r--r--src/battle_controller_player_partner.c361
1 files changed, 185 insertions, 176 deletions
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index af6b739cc..401ad311b 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -47,7 +47,7 @@ static void PlayerPartnerHandleMoveAnimation(void);
static void PlayerPartnerHandlePrintString(void);
static void PlayerPartnerHandlePrintSelectionString(void);
static void PlayerPartnerHandleChooseAction(void);
-static void PlayerPartnerHandleUnknownYesNoBox(void);
+static void PlayerPartnerHandleYesNoBox(void);
static void PlayerPartnerHandleChooseMove(void);
static void PlayerPartnerHandleChooseItem(void);
static void PlayerPartnerHandleChoosePokemon(void);
@@ -65,12 +65,12 @@ static void PlayerPartnerHandleTwoReturnValues(void);
static void PlayerPartnerHandleChosenMonReturnValue(void);
static void PlayerPartnerHandleOneReturnValue(void);
static void PlayerPartnerHandleOneReturnValue_Duplicate(void);
-static void PlayerPartnerHandleCmd37(void);
-static void PlayerPartnerHandleCmd38(void);
-static void PlayerPartnerHandleCmd39(void);
-static void PlayerPartnerHandleCmd40(void);
+static void PlayerPartnerHandleClearUnkVar(void);
+static void PlayerPartnerHandleSetUnkVar(void);
+static void PlayerPartnerHandleClearUnkFlag(void);
+static void PlayerPartnerHandleToggleUnkFlag(void);
static void PlayerPartnerHandleHitAnimation(void);
-static void PlayerPartnerHandleCmd42(void);
+static void PlayerPartnerHandleCantSwitch(void);
static void PlayerPartnerHandlePlaySE(void);
static void PlayerPartnerHandlePlayFanfareOrBGM(void);
static void PlayerPartnerHandleFaintingCry(void);
@@ -83,89 +83,88 @@ static void PlayerPartnerHandleSpriteInvisibility(void);
static void PlayerPartnerHandleBattleAnimation(void);
static void PlayerPartnerHandleLinkStandbyMsg(void);
static void PlayerPartnerHandleResetActionMoveSelection(void);
-static void PlayerPartnerHandleCmd55(void);
+static void PlayerPartnerHandleEndLinkBattle(void);
static void PlayerPartnerCmdEnd(void);
static void PlayerPartnerBufferRunCommand(void);
static void PlayerPartnerBufferExecCompleted(void);
-static void sub_81BB628(u8 taskId);
+static void Task_LaunchLvlUpAnim(u8 taskId);
static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId);
static void Task_PrepareToGiveExpWithExpBar(u8 taskId);
-static void sub_81BB4E4(u8 taskId);
-static void sub_81BB628(u8 taskId);
-static void sub_81BB688(u8 taskId);
-static void sub_81BB9A0(void);
+static void Task_GiveExpWithExpBar(u8 taskId);
+static void Task_UpdateLvlInHealthbox(u8 taskId);
+static void SwitchIn_WaitAndEnd(void);
static u32 CopyPlayerPartnerMonData(u8 monId, u8 *dst);
static void SetPlayerPartnerMonData(u8 monId);
-static void sub_81BD0E4(u8 battlerId, bool8 dontClearSubstituteBit);
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
static void DoSwitchOutAnimation(void);
static void PlayerPartnerDoMoveAnimation(void);
-static void sub_81BE2C8(u8 taskId);
-static void sub_81BE498(void);
+static void Task_StartSendOutAnim(u8 taskId);
+static void EndDrawPartyStatusSummary(void);
static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
- PlayerPartnerHandleGetMonData,
- PlayerPartnerHandleGetRawMonData,
- PlayerPartnerHandleSetMonData,
- PlayerPartnerHandleSetRawMonData,
- PlayerPartnerHandleLoadMonSprite,
- PlayerPartnerHandleSwitchInAnim,
- PlayerPartnerHandleReturnMonToBall,
- PlayerPartnerHandleDrawTrainerPic,
- PlayerPartnerHandleTrainerSlide,
- PlayerPartnerHandleTrainerSlideBack,
- PlayerPartnerHandleFaintAnimation,
- PlayerPartnerHandlePaletteFade,
- PlayerPartnerHandleSuccessBallThrowAnim,
- PlayerPartnerHandleBallThrowAnim,
- PlayerPartnerHandlePause,
- PlayerPartnerHandleMoveAnimation,
- PlayerPartnerHandlePrintString,
- PlayerPartnerHandlePrintSelectionString,
- PlayerPartnerHandleChooseAction,
- PlayerPartnerHandleUnknownYesNoBox,
- PlayerPartnerHandleChooseMove,
- PlayerPartnerHandleChooseItem,
- PlayerPartnerHandleChoosePokemon,
- PlayerPartnerHandleCmd23,
- PlayerPartnerHandleHealthBarUpdate,
- PlayerPartnerHandleExpUpdate,
- PlayerPartnerHandleStatusIconUpdate,
- PlayerPartnerHandleStatusAnimation,
- PlayerPartnerHandleStatusXor,
- PlayerPartnerHandleDataTransfer,
- PlayerPartnerHandleDMA3Transfer,
- PlayerPartnerHandlePlayBGM,
- PlayerPartnerHandleCmd32,
- PlayerPartnerHandleTwoReturnValues,
- PlayerPartnerHandleChosenMonReturnValue,
- PlayerPartnerHandleOneReturnValue,
- PlayerPartnerHandleOneReturnValue_Duplicate,
- PlayerPartnerHandleCmd37,
- PlayerPartnerHandleCmd38,
- PlayerPartnerHandleCmd39,
- PlayerPartnerHandleCmd40,
- PlayerPartnerHandleHitAnimation,
- PlayerPartnerHandleCmd42,
- PlayerPartnerHandlePlaySE,
- PlayerPartnerHandlePlayFanfareOrBGM,
- PlayerPartnerHandleFaintingCry,
- PlayerPartnerHandleIntroSlide,
- PlayerPartnerHandleIntroTrainerBallThrow,
- PlayerPartnerHandleDrawPartyStatusSummary,
- PlayerPartnerHandleHidePartyStatusSummary,
- PlayerPartnerHandleEndBounceEffect,
- PlayerPartnerHandleSpriteInvisibility,
- PlayerPartnerHandleBattleAnimation,
- PlayerPartnerHandleLinkStandbyMsg,
- PlayerPartnerHandleResetActionMoveSelection,
- PlayerPartnerHandleCmd55,
- PlayerPartnerCmdEnd
+ [CONTROLLER_GETMONDATA] = PlayerPartnerHandleGetMonData,
+ [CONTROLLER_GETRAWMONDATA] = PlayerPartnerHandleGetRawMonData,
+ [CONTROLLER_SETMONDATA] = PlayerPartnerHandleSetMonData,
+ [CONTROLLER_SETRAWMONDATA] = PlayerPartnerHandleSetRawMonData,
+ [CONTROLLER_LOADMONSPRITE] = PlayerPartnerHandleLoadMonSprite,
+ [CONTROLLER_SWITCHINANIM] = PlayerPartnerHandleSwitchInAnim,
+ [CONTROLLER_RETURNMONTOBALL] = PlayerPartnerHandleReturnMonToBall,
+ [CONTROLLER_DRAWTRAINERPIC] = PlayerPartnerHandleDrawTrainerPic,
+ [CONTROLLER_TRAINERSLIDE] = PlayerPartnerHandleTrainerSlide,
+ [CONTROLLER_TRAINERSLIDEBACK] = PlayerPartnerHandleTrainerSlideBack,
+ [CONTROLLER_FAINTANIMATION] = PlayerPartnerHandleFaintAnimation,
+ [CONTROLLER_PALETTEFADE] = PlayerPartnerHandlePaletteFade,
+ [CONTROLLER_SUCCESSBALLTHROWANIM] = PlayerPartnerHandleSuccessBallThrowAnim,
+ [CONTROLLER_BALLTHROWANIM] = PlayerPartnerHandleBallThrowAnim,
+ [CONTROLLER_PAUSE] = PlayerPartnerHandlePause,
+ [CONTROLLER_MOVEANIMATION] = PlayerPartnerHandleMoveAnimation,
+ [CONTROLLER_PRINTSTRING] = PlayerPartnerHandlePrintString,
+ [CONTROLLER_PRINTSTRINGPLAYERONLY] = PlayerPartnerHandlePrintSelectionString,
+ [CONTROLLER_CHOOSEACTION] = PlayerPartnerHandleChooseAction,
+ [CONTROLLER_YESNOBOX] = PlayerPartnerHandleYesNoBox,
+ [CONTROLLER_CHOOSEMOVE] = PlayerPartnerHandleChooseMove,
+ [CONTROLLER_OPENBAG] = PlayerPartnerHandleChooseItem,
+ [CONTROLLER_CHOOSEPOKEMON] = PlayerPartnerHandleChoosePokemon,
+ [CONTROLLER_23] = PlayerPartnerHandleCmd23,
+ [CONTROLLER_HEALTHBARUPDATE] = PlayerPartnerHandleHealthBarUpdate,
+ [CONTROLLER_EXPUPDATE] = PlayerPartnerHandleExpUpdate,
+ [CONTROLLER_STATUSICONUPDATE] = PlayerPartnerHandleStatusIconUpdate,
+ [CONTROLLER_STATUSANIMATION] = PlayerPartnerHandleStatusAnimation,
+ [CONTROLLER_STATUSXOR] = PlayerPartnerHandleStatusXor,
+ [CONTROLLER_DATATRANSFER] = PlayerPartnerHandleDataTransfer,
+ [CONTROLLER_DMA3TRANSFER] = PlayerPartnerHandleDMA3Transfer,
+ [CONTROLLER_PLAYBGM] = PlayerPartnerHandlePlayBGM,
+ [CONTROLLER_32] = PlayerPartnerHandleCmd32,
+ [CONTROLLER_TWORETURNVALUES] = PlayerPartnerHandleTwoReturnValues,
+ [CONTROLLER_CHOSENMONRETURNVALUE] = PlayerPartnerHandleChosenMonReturnValue,
+ [CONTROLLER_ONERETURNVALUE] = PlayerPartnerHandleOneReturnValue,
+ [CONTROLLER_ONERETURNVALUE_DUPLICATE] = PlayerPartnerHandleOneReturnValue_Duplicate,
+ [CONTROLLER_CLEARUNKVAR] = PlayerPartnerHandleClearUnkVar,
+ [CONTROLLER_SETUNKVAR] = PlayerPartnerHandleSetUnkVar,
+ [CONTROLLER_CLEARUNKFLAG] = PlayerPartnerHandleClearUnkFlag,
+ [CONTROLLER_TOGGLEUNKFLAG] = PlayerPartnerHandleToggleUnkFlag,
+ [CONTROLLER_HITANIMATION] = PlayerPartnerHandleHitAnimation,
+ [CONTROLLER_CANTSWITCH] = PlayerPartnerHandleCantSwitch,
+ [CONTROLLER_PLAYSE] = PlayerPartnerHandlePlaySE,
+ [CONTROLLER_PLAYFANFAREORBGM] = PlayerPartnerHandlePlayFanfareOrBGM,
+ [CONTROLLER_FAINTINGCRY] = PlayerPartnerHandleFaintingCry,
+ [CONTROLLER_INTROSLIDE] = PlayerPartnerHandleIntroSlide,
+ [CONTROLLER_INTROTRAINERBALLTHROW] = PlayerPartnerHandleIntroTrainerBallThrow,
+ [CONTROLLER_DRAWPARTYSTATUSSUMMARY] = PlayerPartnerHandleDrawPartyStatusSummary,
+ [CONTROLLER_HIDEPARTYSTATUSSUMMARY] = PlayerPartnerHandleHidePartyStatusSummary,
+ [CONTROLLER_ENDBOUNCE] = PlayerPartnerHandleEndBounceEffect,
+ [CONTROLLER_SPRITEINVISIBILITY] = PlayerPartnerHandleSpriteInvisibility,
+ [CONTROLLER_BATTLEANIMATION] = PlayerPartnerHandleBattleAnimation,
+ [CONTROLLER_LINKSTANDBYMSG] = PlayerPartnerHandleLinkStandbyMsg,
+ [CONTROLLER_RESETACTIONMOVESELECTION] = PlayerPartnerHandleResetActionMoveSelection,
+ [CONTROLLER_ENDLINKBATTLE] = PlayerPartnerHandleEndLinkBattle,
+ [CONTROLLER_TERMINATOR_NOP] = PlayerPartnerCmdEnd
};
// unknown unused data
-static const u8 sUnknown_08617254[] =
+static const u8 sUnused[] =
{
0x83, 0x4d, 0xf3, 0x5f, 0x6f, 0x4f, 0xeb, 0x3e,
0x67, 0x2e, 0x10, 0x46, 0x8c, 0x3d, 0x28, 0x35,
@@ -173,7 +172,7 @@ static const u8 sUnknown_08617254[] =
0x3b, 0x43, 0xda, 0x36, 0x79, 0x2a, 0x0e, 0x53,
};
-static void nullsub_77(void)
+static void PlayerPartnerDummy(void)
{
}
@@ -199,84 +198,84 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
PlayerPartnerBufferExecCompleted();
}
-static void sub_81BAE98(void)
+static void FreeTrainerSpriteAfterSlide(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- nullsub_25(0);
+ BattleGfxSfxDummy3(MALE);
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
PlayerPartnerBufferExecCompleted();
}
}
-static void sub_81BAF00(void)
+static void Intro_DelayAndEnd(void)
{
- if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 == 0xFF)
+ if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
PlayerPartnerBufferExecCompleted();
}
}
-static void sub_81BAF48(void)
+static void Intro_WaitForHealthbox(void)
{
- bool32 r6 = FALSE;
+ bool32 finished = FALSE;
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
- r6 = TRUE;
+ finished = TRUE;
}
else
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
{
- r6 = TRUE;
+ finished = TRUE;
}
}
if (IsCryPlayingOrClearCrySongs())
- r6 = FALSE;
+ finished = FALSE;
- if (r6)
+ if (finished)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
- gBattlerControllerFuncs[gActiveBattler] = sub_81BAF00;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
}
}
-static void sub_81BB02C(void)
+static void Intro_ShowHealthbox(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive
- && gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ && gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
&& gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
- && ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 != 1)
+ && ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay != 1)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], HEALTHBOX_ALL);
- sub_8076918(gActiveBattler ^ BIT_FLANK);
+ StartHealthboxSlideIn(gActiveBattler ^ BIT_FLANK);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]);
}
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
- sub_8076918(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
- gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
+ gBattleSpritesDataPtr->animationData->introAnimActive = FALSE;
- gBattlerControllerFuncs[gActiveBattler] = sub_81BAF48;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForHealthbox;
}
}
-static void sub_81BB1D4(void)
+static void WaitForMonAnimAfterLoad(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0)
PlayerPartnerBufferExecCompleted();
@@ -339,7 +338,7 @@ static void Task_GiveExpToMon(u8 taskId)
if (IsDoubleBattle() == TRUE
&& ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]))
- gTasks[taskId].func = sub_81BB628;
+ gTasks[taskId].func = Task_LaunchLvlUpAnim;
else
gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter;
}
@@ -373,10 +372,10 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId)
expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp;
SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp);
PlaySE(SE_EXP);
- gTasks[taskId].func = sub_81BB4E4;
+ gTasks[taskId].func = Task_GiveExpWithExpBar;
}
-static void sub_81BB4E4(u8 taskId)
+static void Task_GiveExpWithExpBar(u8 taskId)
{
if (gTasks[taskId].tExpTask_frames < 13)
{
@@ -415,7 +414,7 @@ static void sub_81BB4E4(u8 taskId)
gActiveBattler = battlerId;
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
gActiveBattler = savedActiveBank;
- gTasks[taskId].func = sub_81BB628;
+ gTasks[taskId].func = Task_LaunchLvlUpAnim;
}
else
{
@@ -428,7 +427,7 @@ static void sub_81BB4E4(u8 taskId)
}
}
-static void sub_81BB628(u8 taskId)
+static void Task_LaunchLvlUpAnim(u8 taskId)
{
u8 battlerId = gTasks[taskId].tExpTask_bank;
u8 monIndex = gTasks[taskId].tExpTask_monId;
@@ -437,10 +436,10 @@ static void sub_81BB628(u8 taskId)
battlerId ^= BIT_FLANK;
InitAndLaunchSpecialAnimation(battlerId, battlerId, battlerId, B_ANIM_LVL_UP);
- gTasks[taskId].func = sub_81BB688;
+ gTasks[taskId].func = Task_UpdateLvlInHealthbox;
}
-static void sub_81BB688(u8 taskId)
+static void Task_UpdateLvlInHealthbox(u8 taskId)
{
u8 battlerId = gTasks[taskId].tExpTask_bank;
@@ -471,13 +470,13 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
DestroyTask(taskId);
}
-static void sub_81BB78C(void)
+static void FreeMonSpriteAfterFaintAnim(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
- nullsub_24(species);
+ BattleGfxSfxDummy2(species);
FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
@@ -485,7 +484,7 @@ static void sub_81BB78C(void)
}
}
-static void sub_81BB828(void)
+static void FreeMonSpriteAfterSwitchOutAnim(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -521,7 +520,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
-static void sub_81BB92C(void)
+static void SwitchIn_ShowSubstitute(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
@@ -529,11 +528,11 @@ static void sub_81BB92C(void)
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattlerControllerFuncs[gActiveBattler] = sub_81BB9A0;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_WaitAndEnd;
}
}
-static void sub_81BB9A0(void)
+static void SwitchIn_WaitAndEnd(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive
&& gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
@@ -542,28 +541,28 @@ static void sub_81BB9A0(void)
}
}
-static void sub_81BB9F4(void)
+static void SwitchIn_ShowHealthbox(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
- CreateTask(c3_0802FDF4, 10);
+ CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
- sub_8076918(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
- gBattlerControllerFuncs[gActiveBattler] = sub_81BB92C;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowSubstitute;
}
}
-static void sub_81BBAE8(void)
+static void SwitchIn_TryShinyAnim(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
@@ -571,11 +570,11 @@ static void sub_81BBAE8(void)
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
}
- if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
- gBattlerControllerFuncs[gActiveBattler] = sub_81BB9F4;
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_ShowHealthbox;
}
}
@@ -1206,11 +1205,11 @@ static void PlayerPartnerHandleLoadMonSprite(void)
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
GetBattlerSpriteSubpriority(gActiveBattler));
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]);
- gBattlerControllerFuncs[gActiveBattler] = sub_81BB1D4;
+ gBattlerControllerFuncs[gActiveBattler] = WaitForMonAnimAfterLoad;
}
static void PlayerPartnerHandleSwitchInAnim(void)
@@ -1218,18 +1217,18 @@ static void PlayerPartnerHandleSwitchInAnim(void)
ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- sub_81BD0E4(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
- gBattlerControllerFuncs[gActiveBattler] = sub_81BBAE8;
+ StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnim;
}
-static void sub_81BD0E4(u8 battlerId, bool8 dontClearSubstituteBit)
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
{
u16 species;
ClearTemporarySpeciesSpriteData(battlerId, dontClearSubstituteBit);
gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1];
species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES);
- gUnknown_03005D7C[battlerId] = CreateInvisibleSpriteWithCallback(sub_805D714);
+ gBattleControllerData[battlerId] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId));
gBattlerSpriteIds[battlerId] = CreateSprite(
@@ -1238,8 +1237,8 @@ static void sub_81BD0E4(u8 battlerId, bool8 dontClearSubstituteBit)
GetBattlerSpriteDefault_Y(battlerId),
GetBattlerSpriteSubpriority(battlerId));
- gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
- gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
+ gSprites[gBattleControllerData[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
+ gSprites[gBattleControllerData[battlerId]].data[2] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
@@ -1250,7 +1249,7 @@ static void sub_81BD0E4(u8 battlerId, bool8 dontClearSubstituteBit)
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_03005D7C[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
+ gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void PlayerPartnerHandleReturnMonToBall(void)
@@ -1284,12 +1283,14 @@ static void DoSwitchOutAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattlerControllerFuncs[gActiveBattler] = sub_81BB828;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterSwitchOutAnim;
}
break;
}
}
+#define sSpeedX data[0]
+
// some explanation here
// in emerald it's possible to have a tag battle in the battle frontier facilities with AI
// which use the front sprite for both the player and the partner as opposed to any other battles (including the one with Steven) that use the back pic as well as animate it
@@ -1319,9 +1320,9 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
}
else // otherwise use front sprite
{
@@ -1330,10 +1331,10 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSpriteSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
- gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = DISPLAY_WIDTH;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y = 48;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = -2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineMode = ST_OAM_AFFINE_OFF;
gSprites[gBattlerSpriteIds[gActiveBattler]].hFlip = 1;
}
@@ -1341,6 +1342,8 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
+#undef sSpeedX
+
static void PlayerPartnerHandleTrainerSlide(void)
{
PlayerPartnerBufferExecCompleted();
@@ -1354,9 +1357,12 @@ static void PlayerPartnerHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
- gBattlerControllerFuncs[gActiveBattler] = sub_81BAE98;
+ gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
}
+#define sSpeedX data[1]
+#define sSpeedY data[2]
+
static void PlayerPartnerHandleFaintAnimation(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
@@ -1372,14 +1378,17 @@ static void PlayerPartnerHandleFaintAnimation(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00;
- gBattlerControllerFuncs[gActiveBattler] = sub_81BB78C;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 0;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedY = 5;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintSlideAnim;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterFaintAnim;
}
}
}
+#undef sSpeedX
+#undef sSpeedY
+
static void PlayerPartnerHandlePaletteFade(void)
{
PlayerPartnerBufferExecCompleted();
@@ -1402,7 +1411,7 @@ static void PlayerPartnerHandlePause(void)
static void PlayerPartnerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
@@ -1444,7 +1453,7 @@ static void PlayerPartnerDoMoveAnimation(void)
case 1:
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
- sub_805EB9C(ST_OAM_AFFINE_OFF);
+ SetBattlerSpriteAffineMode(ST_OAM_AFFINE_OFF);
DoMoveAnim(move);
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2;
}
@@ -1453,7 +1462,7 @@ static void PlayerPartnerDoMoveAnimation(void)
gAnimScriptCallback();
if (!gAnimScriptActive)
{
- sub_805EB9C(ST_OAM_AFFINE_NORMAL);
+ SetBattlerSpriteAffineMode(ST_OAM_AFFINE_NORMAL);
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute && multihit < 2)
{
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
@@ -1497,7 +1506,7 @@ static void PlayerPartnerHandleChooseAction(void)
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleUnknownYesNoBox(void)
+static void PlayerPartnerHandleYesNoBox(void)
{
PlayerPartnerBufferExecCompleted();
}
@@ -1602,7 +1611,7 @@ static void PlayerPartnerHandleExpUpdate(void)
gTasks[taskId].tExpTask_monId = monId;
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
gTasks[taskId].tExpTask_bank = gActiveBattler;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
+ gBattlerControllerFuncs[gActiveBattler] = BattleControllerDummy;
}
}
@@ -1613,7 +1622,7 @@ static void PlayerPartnerHandleExpUpdate(void)
static void PlayerPartnerHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 battlerId;
@@ -1626,7 +1635,7 @@ static void PlayerPartnerHandleStatusIconUpdate(void)
static void PlayerPartnerHandleStatusAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1],
gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24));
@@ -1679,27 +1688,27 @@ static void PlayerPartnerHandleOneReturnValue_Duplicate(void)
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleCmd37(void)
+static void PlayerPartnerHandleClearUnkVar(void)
{
- gUnknown_02022D0C.field_0 = 0;
+ gUnusedControllerStruct.unk = 0;
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleCmd38(void)
+static void PlayerPartnerHandleSetUnkVar(void)
{
- gUnknown_02022D0C.field_0 = gBattleBufferA[gActiveBattler][1];
+ gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleCmd39(void)
+static void PlayerPartnerHandleClearUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 = 0;
+ gUnusedControllerStruct.flag = 0;
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleCmd40(void)
+static void PlayerPartnerHandleToggleUnkFlag(void)
{
- gUnknown_02022D0C.flag_x80 ^= 1;
+ gUnusedControllerStruct.flag ^= 1;
PlayerPartnerBufferExecCompleted();
}
@@ -1718,7 +1727,7 @@ static void PlayerPartnerHandleHitAnimation(void)
}
}
-static void PlayerPartnerHandleCmd42(void)
+static void PlayerPartnerHandleCantSwitch(void)
{
PlayerPartnerBufferExecCompleted();
}
@@ -1779,7 +1788,7 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F9);
@@ -1797,17 +1806,17 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
- taskId = CreateTask(sub_81BE2C8, 5);
+ taskId = CreateTask(Task_StartSendOutAnim, 5);
gTasks[taskId].data[0] = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
- gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_77;
+ gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerPartnerDummy;
}
-static void sub_81BE2C8(u8 taskId)
+static void Task_StartSendOutAnim(u8 taskId)
{
if (gTasks[taskId].data[1] < 24)
{
@@ -1821,19 +1830,19 @@ static void sub_81BE2C8(u8 taskId)
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_81BD0E4(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
}
else
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_81BD0E4(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- sub_81BD0E4(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
}
- gBattlerControllerFuncs[gActiveBattler] = sub_81BB02C;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_ShowHealthbox;
gActiveBattler = savedActiveBank;
DestroyTask(taskId);
}
@@ -1849,20 +1858,20 @@ static void PlayerPartnerHandleDrawPartyStatusSummary(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = 1;
gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
if (gBattleBufferA[gActiveBattler][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 93;
- gBattlerControllerFuncs[gActiveBattler] = sub_81BE498;
+ gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
}
}
-static void sub_81BE498(void)
+static void EndDrawPartyStatusSummary(void)
{
- if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5++ > 0x5C)
+ if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 92)
{
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
PlayerPartnerBufferExecCompleted();
}
}
@@ -1891,7 +1900,7 @@ static void PlayerPartnerHandleSpriteInvisibility(void)
static void PlayerPartnerHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 animationId = gBattleBufferA[gActiveBattler][1];
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
@@ -1913,13 +1922,13 @@ static void PlayerPartnerHandleResetActionMoveSelection(void)
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleCmd55(void)
+static void PlayerPartnerHandleEndLinkBattle(void)
{
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
PlayerPartnerBufferExecCompleted();
- gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
+ gBattlerControllerFuncs[gActiveBattler] = SetBattleEndCallbacks;
}
static void PlayerPartnerCmdEnd(void)