summaryrefslogtreecommitdiff
path: root/src/battle_controller_player.c
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2021-02-02 00:24:16 -0500
committerGitHub <noreply@github.com>2021-02-02 00:24:16 -0500
commit64460e01aede2bbcaa8d1dd18dd3fab590fa4a6e (patch)
tree58be3a15322f5c0972b71525f5cd22149bb67696 /src/battle_controller_player.c
parent7e26aa3d21f55e1375bfde6ffbc70210170fdc37 (diff)
parent3fd5e143a986334985c2c786c324663dbba2db9b (diff)
Merge pull request #1314 from GriffinRichards/doc-controllers
Document battle controllers, misc other battle
Diffstat (limited to 'src/battle_controller_player.c')
-rw-r--r--src/battle_controller_player.c329
1 files changed, 187 insertions, 142 deletions
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index c1d7fc2a4..2717e4a28 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -57,7 +57,7 @@ static void PlayerHandleMoveAnimation(void);
static void PlayerHandlePrintString(void);
static void PlayerHandlePrintSelectionString(void);
static void PlayerHandleChooseAction(void);
-static void PlayerHandleUnknownYesNoBox(void);
+static void PlayerHandleYesNoBox(void);
static void PlayerHandleChooseMove(void);
static void PlayerHandleChooseItem(void);
static void PlayerHandleChoosePokemon(void);
@@ -93,7 +93,7 @@ static void PlayerHandleSpriteInvisibility(void);
static void PlayerHandleBattleAnimation(void);
static void PlayerHandleLinkStandbyMsg(void);
static void PlayerHandleResetActionMoveSelection(void);
-static void PlayerHandleCmd55(void);
+static void PlayerHandleEndLinkBattle(void);
static void PlayerCmdEnd(void);
static void PlayerBufferRunCommand(void);
@@ -106,22 +106,22 @@ static void MoveSelectionDisplayPpString(void);
static void MoveSelectionDisplayMoveType(void);
static void MoveSelectionDisplayMoveNames(void);
static void HandleMoveSwitching(void);
-static void sub_8058FC0(void);
+static void SwitchIn_HandleSoundAndEnd(void);
static void WaitForMonSelection(void);
static void CompleteWhenChoseItem(void);
static void Task_LaunchLvlUpAnim(u8 taskId);
static void Task_PrepareToGiveExpWithExpBar(u8 taskId);
static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId);
-static void sub_8059400(u8 taskId);
+static void Task_GiveExpWithExpBar(u8 taskId);
static void Task_UpdateLvlInHealthbox(u8 taskId);
static void PrintLinkStandbyMsg(void);
static u32 CopyPlayerMonData(u8 monId, u8 *dst);
static void SetPlayerMonData(u8 monId);
-static void sub_805B258(u8 battlerId, bool8 dontClearSubstituteBit);
+static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
static void DoSwitchOutAnimation(void);
static void PlayerDoMoveAnimation(void);
-static void task05_08033660(u8 taskId);
-static void sub_805CE38(void);
+static void Task_StartSendOutAnim(u8 taskId);
+static void EndDrawPartyStatusSummary(void);
static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
{
@@ -144,7 +144,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_PRINTSTRING] = PlayerHandlePrintString,
[CONTROLLER_PRINTSTRINGPLAYERONLY] = PlayerHandlePrintSelectionString,
[CONTROLLER_CHOOSEACTION] = PlayerHandleChooseAction,
- [CONTROLLER_UNKNOWNYESNOBOX] = PlayerHandleUnknownYesNoBox,
+ [CONTROLLER_YESNOBOX] = PlayerHandleYesNoBox,
[CONTROLLER_CHOOSEMOVE] = PlayerHandleChooseMove,
[CONTROLLER_OPENBAG] = PlayerHandleChooseItem,
[CONTROLLER_CHOOSEPOKEMON] = PlayerHandleChoosePokemon,
@@ -180,16 +180,16 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_BATTLEANIMATION] = PlayerHandleBattleAnimation,
[CONTROLLER_LINKSTANDBYMSG] = PlayerHandleLinkStandbyMsg,
[CONTROLLER_RESETACTIONMOVESELECTION] = PlayerHandleResetActionMoveSelection,
- [CONTROLLER_55] = PlayerHandleCmd55,
+ [CONTROLLER_ENDLINKBATTLE] = PlayerHandleEndLinkBattle,
[CONTROLLER_TERMINATOR_NOP] = PlayerCmdEnd
};
-static const u8 sTargetIdentities[] = {B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT};
+static const u8 sTargetIdentities[MAX_BATTLERS_COUNT] = {B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT};
// unknown unused data
static const u8 sUnused[] = {0x48, 0x48, 0x20, 0x5a, 0x50, 0x50, 0x50, 0x58};
-void nullsub_21(void)
+void BattleControllerDummy(void)
{
}
@@ -332,7 +332,7 @@ static void HandleInputChooseAction(void)
}
}
-static void sub_80577F0(void) // unused
+static void UnusedEndBounceEffect(void)
{
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
EndBounceEffect(gActiveBattler, BOUNCE_MON);
@@ -342,7 +342,7 @@ static void sub_80577F0(void) // unused
static void HandleInputChooseTarget(void)
{
s32 i;
- u8 identities[4];
+ u8 identities[MAX_BATTLERS_COUNT];
memcpy(identities, sTargetIdentities, ARRAY_COUNT(sTargetIdentities));
DoBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX, 15, 1);
@@ -398,7 +398,11 @@ static void HandleInputChooseTarget(void)
do
{
if (--i < 0)
+#ifdef UBFIX
+ i = MAX_BATTLERS_COUNT - 1;
+#else
i = MAX_BATTLERS_COUNT; // UB: array out of range
+#endif
gMultiUsePlayerCursor = GetBattlerAtPosition(identities[i]);
} while (gMultiUsePlayerCursor == gBattlersCount);
@@ -613,7 +617,7 @@ static void HandleInputChooseMove(void)
}
}
-u32 sub_8057FBC(void) // unused
+static u32 HandleMoveInputUnused(void)
{
u32 var = 0;
@@ -847,7 +851,7 @@ static void HandleMoveSwitching(void)
}
}
-static void sub_80586F8(void)
+static void SetLinkBattleEndCallbacks(void)
{
if (gWirelessCommType == 0)
{
@@ -856,7 +860,7 @@ static void sub_80586F8(void)
m4aSongNumStop(SE_LOW_HEALTH);
gMain.inBattle = 0;
gMain.callback1 = gPreBattleCallback1;
- SetMainCallback2(sub_8038D64);
+ SetMainCallback2(CB2_InitEndLinkBattle);
if (gBattleOutcome == B_OUTCOME_WON)
TryPutLinkBattleTvShowOnAir();
FreeAllWindowBuffers();
@@ -869,7 +873,7 @@ static void sub_80586F8(void)
m4aSongNumStop(SE_LOW_HEALTH);
gMain.inBattle = 0;
gMain.callback1 = gPreBattleCallback1;
- SetMainCallback2(sub_8038D64);
+ SetMainCallback2(CB2_InitEndLinkBattle);
if (gBattleOutcome == B_OUTCOME_WON)
TryPutLinkBattleTvShowOnAir();
FreeAllWindowBuffers();
@@ -877,7 +881,8 @@ static void sub_80586F8(void)
}
}
-void sub_80587B0(void)
+// Despite handling link battles separately, this is only ever used by link battles
+void SetBattleEndCallbacks(void)
{
if (!gPaletteFade.active)
{
@@ -890,7 +895,7 @@ void sub_80587B0(void)
else
SetLinkStandbyCallback();
- gBattlerControllerFuncs[gActiveBattler] = sub_80586F8;
+ gBattlerControllerFuncs[gActiveBattler] = SetLinkBattleEndCallbacks;
}
}
else
@@ -915,161 +920,174 @@ static void CompleteOnBankSpriteCallbackDummy2(void)
PlayerBufferExecCompleted();
}
-static void sub_80588B4(void)
+static void FreeTrainerSpriteAfterSlide(void)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- nullsub_25(gSaveBlock2Ptr->playerGender);
+ BattleGfxSfxDummy3(gSaveBlock2Ptr->playerGender);
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
PlayerBufferExecCompleted();
}
}
-static void sub_8058924(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;
PlayerBufferExecCompleted();
}
}
-static void sub_805896C(void)
+static void Intro_WaitForShinyAnimAndHealthbox(void)
{
- bool8 var = FALSE;
+ bool8 healthboxAnimDone = FALSE;
+ // Check if healthbox has finished sliding in
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
- var = TRUE;
+ healthboxAnimDone = TRUE;
}
else
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
&& gSprites[gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
- var = TRUE;
+ healthboxAnimDone = TRUE;
}
- if (var && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
+ // If healthbox and shiny anim are done
+ if (healthboxAnimDone && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim)
{
+ // Reset shiny anim (even if it didn't occur)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim = FALSE;
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].finishedShinyMonAnim = FALSE;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
if (IsDoubleBattle())
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], gActiveBattler ^ BIT_FLANK);
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_9 = 3;
- gBattlerControllerFuncs[gActiveBattler] = sub_8058924;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 3;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_DelayAndEnd;
}
}
-static void sub_8058B40(void)
+static void Intro_TryShinyAnimShowHealthbox(void)
{
- bool32 r9 = FALSE;
- bool32 r8 = FALSE;
+ bool32 bgmRestored = FALSE;
+ bool32 battlerAnimsDone = FALSE;
+ // Start shiny animation if applicable for 1st pokemon
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
+ // Start shiny animation if applicable for 2nd pokemon
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
+ // Show healthbox after ball anim
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
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]);
}
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_ALL);
- sub_8076918(gActiveBattler);
+ StartHealthboxSlideIn(gActiveBattler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 1;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted = TRUE;
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x40
- && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x40
+ // Restore bgm after cry has played and healthbox anim is started
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].waitForCry
+ && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].waitForCry
&& !IsCryPlayingOrClearCrySongs())
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].bgmRestored)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
m4aMPlayContinue(&gMPlayInfo_BGM);
else
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
}
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 1;
- r9 = TRUE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].bgmRestored = TRUE;
+ bgmRestored = TRUE;
}
+ // Wait for battler anims
if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
{
- if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
&& gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
- r8 = TRUE;
+ battlerAnimsDone = TRUE;
}
}
else
{
- if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
&& gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
- && gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy
+ && gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy
&& gSprites[gBattlerSpriteIds[gActiveBattler ^ BIT_FLANK]].callback == SpriteCallbackDummy)
{
- r8 = TRUE;
+ battlerAnimsDone = TRUE;
}
}
- if (r9 && r8)
+ // Clean up
+ if (bgmRestored && battlerAnimsDone)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler ^ BIT_FLANK]]);
- DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBattler]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler ^ BIT_FLANK]]);
+ DestroySprite(&gSprites[gBattleControllerData[gActiveBattler]]);
- gBattleSpritesDataPtr->animationData->field_9_x1 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x20 = 0;
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80 = 0;
+ gBattleSpritesDataPtr->animationData->introAnimActive = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].bgmRestored = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].healthboxSlideInStarted = FALSE;
- gBattlerControllerFuncs[gActiveBattler] = sub_805896C;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_WaitForShinyAnimAndHealthbox;
}
}
-static void sub_8058EDC(void)
+static void SwitchIn_CleanShinyAnimShowSubstitute(void)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy
&& gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim
&& gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
CopyBattleSpriteInvisibility(gActiveBattler);
+
+ // Reset shiny anim (even if it didn't occur)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim = FALSE;
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
+ FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
+ FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
+ // Check if Substitute should be shown
if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute)
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE);
- gBattlerControllerFuncs[gActiveBattler] = sub_8058FC0;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_HandleSoundAndEnd;
}
}
-static void sub_8058FC0(void)
+static void SwitchIn_HandleSoundAndEnd(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive
&& !IsCryPlayingOrClearCrySongs())
@@ -1080,24 +1098,26 @@ static void sub_8058FC0(void)
}
}
-static void sub_805902C(void)
+static void SwitchIn_TryShinyAnimShowHealthbox(void)
{
+ // Start shiny animation if applicable
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
- if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy
+ // Wait for ball anim, then show healthbox
+ if (gSprites[gBattleControllerData[gActiveBattler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
{
- 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]);
- gBattlerControllerFuncs[gActiveBattler] = sub_8058EDC;
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_CleanShinyAnimShowSubstitute;
}
}
-void c3_0802FDF4(u8 taskId)
+void Task_PlayerController_RestoreBgmAfterCry(u8 taskId)
{
if (!IsCryPlayingOrClearCrySongs())
{
@@ -1196,10 +1216,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_8059400;
+ gTasks[taskId].func = Task_GiveExpWithExpBar;
}
-static void sub_8059400(u8 taskId)
+static void Task_GiveExpWithExpBar(u8 taskId)
{
if (gTasks[taskId].tExpTask_frames < 13)
{
@@ -1294,13 +1314,13 @@ static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId)
DestroyTask(taskId);
}
-static void sub_80596A8(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]);
@@ -1308,7 +1328,7 @@ static void sub_80596A8(void)
}
}
-static void sub_8059744(void)
+static void FreeMonSpriteAfterSwitchOutAnim(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -1332,8 +1352,8 @@ static void OpenPartyMenuToChooseMon(void)
u8 caseId;
gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection;
- caseId = gTasks[gUnknown_03005D7C[gActiveBattler]].data[0];
- DestroyTask(gUnknown_03005D7C[gActiveBattler]);
+ caseId = gTasks[gBattleControllerData[gActiveBattler]].data[0];
+ DestroyTask(gBattleControllerData[gActiveBattler]);
FreeAllWindowBuffers();
OpenPartyMenuInBattle(caseId);
}
@@ -1360,7 +1380,7 @@ static void OpenBagAndChooseItem(void)
if (!gPaletteFade.active)
{
gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem;
- nullsub_35();
+ ReshowBattleScreenDummy();
FreeAllWindowBuffers();
CB2_BagMenuFromBattle();
}
@@ -1400,7 +1420,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
-static void PlayerHandleUnknownYesNoInput(void)
+static void PlayerHandleYesNoInput(void)
{
if (JOY_NEW(DPAD_UP) && gMultiUsePlayerCursor != 0)
{
@@ -2171,18 +2191,18 @@ static void PlayerHandleSwitchInAnim(void)
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
gActionSelectionCursor[gActiveBattler] = 0;
gMoveSelectionCursor[gActiveBattler] = 0;
- sub_805B258(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
- gBattlerControllerFuncs[gActiveBattler] = sub_805902C;
+ StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
+ gBattlerControllerFuncs[gActiveBattler] = SwitchIn_TryShinyAnimShowHealthbox;
}
-static void sub_805B258(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(
@@ -2191,8 +2211,8 @@ static void sub_805B258(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;
@@ -2203,7 +2223,7 @@ static void sub_805B258(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 PlayerHandleReturnMonToBall(void)
@@ -2237,12 +2257,14 @@ static void DoSwitchOutAnimation(void)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON);
- gBattlerControllerFuncs[gActiveBattler] = sub_8059744;
+ gBattlerControllerFuncs[gActiveBattler] = FreeMonSpriteAfterSwitchOutAnim;
}
break;
}
}
+#define sSpeedX data[0]
+
// 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 an animated back pic.
@@ -2306,10 +2328,10 @@ static void PlayerHandleDrawTrainerPic(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;
}
@@ -2321,9 +2343,9 @@ static void PlayerHandleDrawTrainerPic(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;
}
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
@@ -2361,12 +2383,14 @@ static void PlayerHandleTrainerSlide(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
- gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_805D7AC;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].sSpeedX = 2;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_TrainerSlideIn;
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBankSpriteCallbackDummy2;
}
+#undef sSpeedX
+
static void PlayerHandleTrainerSlideBack(void)
{
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
@@ -2376,9 +2400,12 @@ static void PlayerHandleTrainerSlideBack(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCallbackDummy);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
- gBattlerControllerFuncs[gActiveBattler] = sub_80588B4;
+ gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
}
+#define sSpeedX data[1]
+#define sSpeedY data[2]
+
static void PlayerHandleFaintAnimation(void)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
@@ -2394,14 +2421,17 @@ static void PlayerHandleFaintAnimation(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_80596A8;
+ 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 PlayerHandlePaletteFade(void)
{
BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, RGB_BLACK);
@@ -2428,18 +2458,17 @@ static void PlayerHandleBallThrowAnim(void)
static void PlayerHandlePause(void)
{
- u8 var = gBattleBufferA[gActiveBattler][1];
+ u8 timer = gBattleBufferA[gActiveBattler][1];
- // WTF is this??
- while (var != 0)
- var--;
+ while (timer != 0)
+ timer--;
PlayerBufferExecCompleted();
}
static void PlayerHandleMoveAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
@@ -2482,7 +2511,7 @@ static void PlayerDoMoveAnimation(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;
}
@@ -2491,7 +2520,7 @@ static void PlayerDoMoveAnimation(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);
@@ -2560,7 +2589,7 @@ static void PlayerHandleChooseAction(void)
BattlePutTextOnWindow(gDisplayedStringBattle, 1);
}
-static void PlayerHandleUnknownYesNoBox(void)
+static void PlayerHandleYesNoBox(void)
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
@@ -2568,7 +2597,7 @@ static void PlayerHandleUnknownYesNoBox(void)
BattlePutTextOnWindow(gText_BattleYesNoChoice, 12);
gMultiUsePlayerCursor = 1;
BattleCreateYesNoCursorAt(1);
- gBattlerControllerFuncs[gActiveBattler] = PlayerHandleUnknownYesNoInput;
+ gBattlerControllerFuncs[gActiveBattler] = PlayerHandleYesNoInput;
}
else
{
@@ -2648,10 +2677,10 @@ static void PlayerHandleChoosePokemon(void)
}
else
{
- gUnknown_03005D7C[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
- gTasks[gUnknown_03005D7C[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
+ gBattleControllerData[gActiveBattler] = CreateTask(TaskDummy, 0xFF);
+ gTasks[gBattleControllerData[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF;
*(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4;
- *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2];
+ *(&gBattleStruct->prevSelectedPartySlot) = gBattleBufferA[gActiveBattler][2];
*(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3];
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon;
@@ -2715,7 +2744,7 @@ static void PlayerHandleExpUpdate(void)
gTasks[taskId].tExpTask_monId = monId;
gTasks[taskId].tExpTask_gainedExp = expPointsToGive;
gTasks[taskId].tExpTask_battler = gActiveBattler;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
+ gBattlerControllerFuncs[gActiveBattler] = BattleControllerDummy;
}
}
@@ -2726,7 +2755,7 @@ static void PlayerHandleExpUpdate(void)
static void PlayerHandleStatusIconUpdate(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 battlerId;
@@ -2739,7 +2768,7 @@ static void PlayerHandleStatusIconUpdate(void)
static void PlayerHandleStatusAnimation(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));
@@ -2909,6 +2938,12 @@ static void PlayerHandleIntroSlide(void)
PlayerBufferExecCompleted();
}
+// Task data for Task_StartSendOutAnim
+#define tBattlerId data[0]
+#define tStartTimer data[1]
+
+#define sBattlerId data[5]
+
static void PlayerHandleIntroTrainerBallThrow(void)
{
u8 paletteNum;
@@ -2920,68 +2955,77 @@ static void PlayerHandleIntroTrainerBallThrow(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y;
gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
- gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
+ gSprites[gBattlerSpriteIds[gActiveBattler]].sBattlerId = gActiveBattler;
- StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_805CC00);
+ StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], SpriteCB_FreePlayerSpriteLoadMonSprite);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32);
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
- taskId = CreateTask(task05_08033660, 5);
- gTasks[taskId].data[0] = gActiveBattler;
+ taskId = CreateTask(Task_StartSendOutAnim, 5);
+ gTasks[taskId].tBattlerId = gActiveBattler;
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
- gBattleSpritesDataPtr->animationData->field_9_x1 = 1;
- gBattlerControllerFuncs[gActiveBattler] = nullsub_21;
+ gBattleSpritesDataPtr->animationData->introAnimActive = TRUE;
+ gBattlerControllerFuncs[gActiveBattler] = BattleControllerDummy;
}
-void sub_805CC00(struct Sprite *sprite)
+void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite)
{
- u8 battlerId = sprite->data[5];
+ u8 battlerId = sprite->sBattlerId;
+ // Free player trainer sprite
FreeSpriteOamMatrix(sprite);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
DestroySprite(sprite);
+
+ // Load mon sprite
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], 0);
}
-static void task05_08033660(u8 taskId)
+#undef sBattlerId
+
+// Send out at start of battle
+static void Task_StartSendOutAnim(u8 taskId)
{
- if (gTasks[taskId].data[1] < 31)
+ if (gTasks[taskId].tStartTimer < 31)
{
- gTasks[taskId].data[1]++;
+ gTasks[taskId].tStartTimer++;
}
else
{
u8 savedActiveBattler = gActiveBattler;
- gActiveBattler = gTasks[taskId].data[0];
+ gActiveBattler = gTasks[taskId].tBattlerId;
if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_805B258(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
}
else
{
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_805B258(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- sub_805B258(gActiveBattler, FALSE);
+ StartSendOutAnim(gActiveBattler, FALSE);
gActiveBattler ^= BIT_FLANK;
}
- gBattlerControllerFuncs[gActiveBattler] = sub_8058B40;
+ gBattlerControllerFuncs[gActiveBattler] = Intro_TryShinyAnimShowHealthbox;
gActiveBattler = savedActiveBattler;
DestroyTask(taskId);
}
}
+#undef tBattlerId
+#undef tStartTimer
+
static void PlayerHandleDrawPartyStatusSummary(void)
{
if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
@@ -2992,20 +3036,21 @@ static void PlayerHandleDrawPartyStatusSummary(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 intro, skip the delay after drawing
if (gBattleBufferA[gActiveBattler][2] != 0)
- gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_5 = 0x5D;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 93;
- gBattlerControllerFuncs[gActiveBattler] = sub_805CE38;
+ gBattlerControllerFuncs[gActiveBattler] = EndDrawPartyStatusSummary;
}
}
-static void sub_805CE38(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;
PlayerBufferExecCompleted();
}
}
@@ -3036,7 +3081,7 @@ static void PlayerHandleSpriteInvisibility(void)
static void PlayerHandleBattleAnimation(void)
{
- if (!mplay_80342A4(gActiveBattler))
+ if (!IsBattleSEPlaying(gActiveBattler))
{
u8 animationId = gBattleBufferA[gActiveBattler][1];
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
@@ -3052,7 +3097,7 @@ static void PlayerHandleBattleAnimation(void)
static void PlayerHandleLinkStandbyMsg(void)
{
- sub_81851A8(&gBattleBufferA[gActiveBattler][2]);
+ RecordedBattle_RecordAllBattlerData(&gBattleBufferA[gActiveBattler][2]);
switch (gBattleBufferA[gActiveBattler][1])
{
case 0:
@@ -3087,15 +3132,15 @@ static void PlayerHandleResetActionMoveSelection(void)
PlayerBufferExecCompleted();
}
-static void PlayerHandleCmd55(void)
+static void PlayerHandleEndLinkBattle(void)
{
- sub_81851A8(&gBattleBufferA[gActiveBattler][4]);
+ RecordedBattle_RecordAllBattlerData(&gBattleBufferA[gActiveBattler][4]);
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
gSaveBlock2Ptr->frontier.disableRecordBattle = gBattleBufferA[gActiveBattler][2];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
PlayerBufferExecCompleted();
- gBattlerControllerFuncs[gActiveBattler] = sub_80587B0;
+ gBattlerControllerFuncs[gActiveBattler] = SetBattleEndCallbacks;
}
static void PlayerCmdEnd(void)