refactoring: prep for removing gActiveBattler

This commit is contained in:
cawtds
2024-05-03 20:37:48 +02:00
parent 3e3f6d8974
commit 4887646e6e
10 changed files with 1981 additions and 2037 deletions

View File

@@ -982,7 +982,7 @@ extern u8 gBattlerPositions[MAX_BATTLERS_COUNT];
extern u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
extern u8 gBattleOutcome;
extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
extern void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(u32 battler);
extern u32 gBattleControllerExecFlags;
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];

View File

@@ -252,8 +252,8 @@ void BtlController_EmitResetActionMoveSelection(u32 bufferId, u8 caseId);
void BtlController_EmitEndLinkBattle(u32 bufferId, u8 battleOutcome);
// player controller
void BattleControllerDummy(void);
void SetControllerToPlayer(void);
void BattleControllerDummy(u32 battler);
void SetControllerToPlayer(u32 battler);
void PlayerHandleGetRawMonData(u32 battler);
void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite);
void SetCB2ToReshowScreenAfterMenu(void);
@@ -261,25 +261,25 @@ void SetCB2ToReshowScreenAfterMenu2(void);
void Task_PlayerController_RestoreBgmAfterCry(u8 taskId);
void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
void ActionSelectionDestroyCursorAt(u8 cursorPos);
void InitMoveSelectionsVarsAndStrings(void);
void SetBattleEndCallbacks(void);
void InitMoveSelectionsVarsAndStrings(u32 battler);
void SetBattleEndCallbacks(u32 battler);
void MoveSelectionCreateCursorAt(u8 cursorPos, u8 arg1);
void MoveSelectionDestroyCursorAt(u8 cursorPos);
void HandleInputChooseMove(void);
void HandleInputChooseMove(u32 battler);
// opponent controller
void SetControllerToOpponent(void);
void OpponentBufferExecCompleted(void);
void SetControllerToOpponent(u32 battler);
void OpponentBufferExecCompleted(u32 battler);
// safari controller
void SetControllerToSafari(void);
void SetControllerToSafari(u32 battler);
// pokedude controller
void SetControllerToPokedude(void);
void SetControllerToPokedude(u32 battler);
void InitPokedudePartyAndOpponent(void);
// oak and old man controller
void SetControllerToOakOrOldMan(void);
void SetControllerToOakOrOldMan(u32 battler);
// These flags are set to signal that the indicated message
// was already emitted
@@ -295,17 +295,17 @@ void SetControllerToOakOrOldMan(void);
bool8 BtlCtrl_OakOldMan_TestState2Flag(u8 mask);
void BtlCtrl_OakOldMan_SetState2Flag(u8 mask);
void PrintOakText_InflictingDamageIsKey(void);
void PrintOakText_HowDisappointing(void);
void PrintOakText_OakNoRunningFromATrainer(void);
void OakOldManHandleInputChooseMove(void);
void PrintOakText_InflictingDamageIsKey(u32 battler);
void PrintOakText_HowDisappointing(u32 battler);
void PrintOakText_OakNoRunningFromATrainer(u32 battler);
void OakOldManHandleInputChooseMove(u32 battler);
void BtlCtrl_DrawVoiceoverMessageFrame(void);
void BtlCtrl_RemoveVoiceoverMessageFrame(void);
// link opponent controller
void SetControllerToLinkOpponent(void);
void SetControllerToLinkOpponent(u32 battler);
// link partner controller
void SetControllerToLinkPartner(void);
void SetControllerToLinkPartner(u32 battler);
#endif // GUARD_BATTLE_CONTROLLERS_H

View File

@@ -16,77 +16,77 @@
#include "constants/sound.h"
#include "constants/trainers.h"
static void LinkOpponentHandleGetMonData(void);
static void LinkOpponentHandleGetRawMonData(void);
static void LinkOpponentHandleSetMonData(void);
static void LinkOpponentHandleSetRawMonData(void);
static void LinkOpponentHandleLoadMonSprite(void);
static void LinkOpponentHandleSwitchInAnim(void);
static void LinkOpponentHandleReturnMonToBall(void);
static void LinkOpponentHandleDrawTrainerPic(void);
static void LinkOpponentHandleTrainerSlide(void);
static void LinkOpponentHandleTrainerSlideBack(void);
static void LinkOpponentHandleFaintAnimation(void);
static void LinkOpponentHandlePaletteFade(void);
static void LinkOpponentHandleSuccessBallThrowAnim(void);
static void LinkOpponentHandleBallThrowAnim(void);
static void LinkOpponentHandlePause(void);
static void LinkOpponentHandleMoveAnimation(void);
static void LinkOpponentHandlePrintString(void);
static void LinkOpponentHandlePrintSelectionString(void);
static void LinkOpponentHandleChooseAction(void);
static void LinkOpponentHandleUnknownYesNoBox(void);
static void LinkOpponentHandleChooseMove(void);
static void LinkOpponentHandleChooseItem(void);
static void LinkOpponentHandleChoosePokemon(void);
static void LinkOpponentHandleCmd23(void);
static void LinkOpponentHandleHealthBarUpdate(void);
static void LinkOpponentHandleExpUpdate(void);
static void LinkOpponentHandleStatusIconUpdate(void);
static void LinkOpponentHandleStatusAnimation(void);
static void LinkOpponentHandleStatusXor(void);
static void LinkOpponentHandleDataTransfer(void);
static void LinkOpponentHandleDMA3Transfer(void);
static void LinkOpponentHandlePlayBGM(void);
static void LinkOpponentHandleCmd32(void);
static void LinkOpponentHandleTwoReturnValues(void);
static void LinkOpponentHandleChosenMonReturnValue(void);
static void LinkOpponentHandleOneReturnValue(void);
static void LinkOpponentHandleOneReturnValue_Duplicate(void);
static void LinkOpponentHandleClearUnkVar(void);
static void LinkOpponentHandleSetUnkVar(void);
static void LinkOpponentHandleClearUnkFlag(void);
static void LinkOpponentHandleToggleUnkFlag(void);
static void LinkOpponentHandleHitAnimation(void);
static void LinkOpponentHandleCantSwitch(void);
static void LinkOpponentHandlePlaySE(void);
static void LinkOpponentHandlePlayFanfare(void);
static void LinkOpponentHandleFaintingCry(void);
static void LinkOpponentHandleIntroSlide(void);
static void LinkOpponentHandleIntroTrainerBallThrow(void);
static void LinkOpponentHandleDrawPartyStatusSummary(void);
static void LinkOpponentHandleHidePartyStatusSummary(void);
static void LinkOpponentHandleEndBounceEffect(void);
static void LinkOpponentHandleSpriteInvisibility(void);
static void LinkOpponentHandleBattleAnimation(void);
static void LinkOpponentHandleLinkStandbyMsg(void);
static void LinkOpponentHandleResetActionMoveSelection(void);
static void LinkOpponentHandleEndLinkBattle(void);
static void LinkOpponentCmdEnd(void);
static void LinkOpponentHandleGetMonData(u32 battler);
static void LinkOpponentHandleGetRawMonData(u32 battler);
static void LinkOpponentHandleSetMonData(u32 battler);
static void LinkOpponentHandleSetRawMonData(u32 battler);
static void LinkOpponentHandleLoadMonSprite(u32 battler);
static void LinkOpponentHandleSwitchInAnim(u32 battler);
static void LinkOpponentHandleReturnMonToBall(u32 battler);
static void LinkOpponentHandleDrawTrainerPic(u32 battler);
static void LinkOpponentHandleTrainerSlide(u32 battler);
static void LinkOpponentHandleTrainerSlideBack(u32 battler);
static void LinkOpponentHandleFaintAnimation(u32 battler);
static void LinkOpponentHandlePaletteFade(u32 battler);
static void LinkOpponentHandleSuccessBallThrowAnim(u32 battler);
static void LinkOpponentHandleBallThrowAnim(u32 battler);
static void LinkOpponentHandlePause(u32 battler);
static void LinkOpponentHandleMoveAnimation(u32 battler);
static void LinkOpponentHandlePrintString(u32 battler);
static void LinkOpponentHandlePrintSelectionString(u32 battler);
static void LinkOpponentHandleChooseAction(u32 battler);
static void LinkOpponentHandleUnknownYesNoBox(u32 battler);
static void LinkOpponentHandleChooseMove(u32 battler);
static void LinkOpponentHandleChooseItem(u32 battler);
static void LinkOpponentHandleChoosePokemon(u32 battler);
static void LinkOpponentHandleCmd23(u32 battler);
static void LinkOpponentHandleHealthBarUpdate(u32 battler);
static void LinkOpponentHandleExpUpdate(u32 battler);
static void LinkOpponentHandleStatusIconUpdate(u32 battler);
static void LinkOpponentHandleStatusAnimation(u32 battler);
static void LinkOpponentHandleStatusXor(u32 battler);
static void LinkOpponentHandleDataTransfer(u32 battler);
static void LinkOpponentHandleDMA3Transfer(u32 battler);
static void LinkOpponentHandlePlayBGM(u32 battler);
static void LinkOpponentHandleCmd32(u32 battler);
static void LinkOpponentHandleTwoReturnValues(u32 battler);
static void LinkOpponentHandleChosenMonReturnValue(u32 battler);
static void LinkOpponentHandleOneReturnValue(u32 battler);
static void LinkOpponentHandleOneReturnValue_Duplicate(u32 battler);
static void LinkOpponentHandleClearUnkVar(u32 battler);
static void LinkOpponentHandleSetUnkVar(u32 battler);
static void LinkOpponentHandleClearUnkFlag(u32 battler);
static void LinkOpponentHandleToggleUnkFlag(u32 battler);
static void LinkOpponentHandleHitAnimation(u32 battler);
static void LinkOpponentHandleCantSwitch(u32 battler);
static void LinkOpponentHandlePlaySE(u32 battler);
static void LinkOpponentHandlePlayFanfare(u32 battler);
static void LinkOpponentHandleFaintingCry(u32 battler);
static void LinkOpponentHandleIntroSlide(u32 battler);
static void LinkOpponentHandleIntroTrainerBallThrow(u32 battler);
static void LinkOpponentHandleDrawPartyStatusSummary(u32 battler);
static void LinkOpponentHandleHidePartyStatusSummary(u32 battler);
static void LinkOpponentHandleEndBounceEffect(u32 battler);
static void LinkOpponentHandleSpriteInvisibility(u32 battler);
static void LinkOpponentHandleBattleAnimation(u32 battler);
static void LinkOpponentHandleLinkStandbyMsg(u32 battler);
static void LinkOpponentHandleResetActionMoveSelection(u32 battler);
static void LinkOpponentHandleEndLinkBattle(u32 battler);
static void LinkOpponentCmdEnd(u32 battler);
static void LinkOpponentBufferRunCommand(void);
static void LinkOpponentBufferExecCompleted(void);
static void SwitchIn_HandleSoundAndEnd(void);
static void LinkOpponentBufferRunCommand(u32 battler);
static void LinkOpponentBufferExecCompleted(u32 battler);
static void SwitchIn_HandleSoundAndEnd(u32 battler);
static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst);
static void SetLinkOpponentMonData(u8 monId);
static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
static void DoSwitchOutAnimation(void);
static void LinkOpponentDoMoveAnimation(void);
static void DoSwitchOutAnimation(u32 battler);
static void LinkOpponentDoMoveAnimation(u32 battler);
static void Task_StartSendOutAnim(u8 taskId);
static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite);
static void EndDrawPartyStatusSummary(void);
static void EndDrawPartyStatusSummary(u32 battler);
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) =
{
[CONTROLLER_GETMONDATA] = LinkOpponentHandleGetMonData,
[CONTROLLER_GETRAWMONDATA] = LinkOpponentHandleGetRawMonData,
@@ -147,33 +147,33 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_TERMINATOR_NOP] = LinkOpponentCmdEnd
};
static void LinkOpponentDummy(void)
static void LinkOpponentDummy(u32 battler)
{
}
void SetControllerToLinkOpponent(void)
void SetControllerToLinkOpponent(u32 battler)
{
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentBufferRunCommand;
}
static void LinkOpponentBufferRunCommand(void)
static void LinkOpponentBufferRunCommand(u32 battler)
{
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sLinkOpponentBufferCommands))
sLinkOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
sLinkOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]](battler);
else
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
}
static void CompleteOnBattlerSpriteCallbackDummy(void)
static void CompleteOnBattlerSpriteCallbackDummy(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void FreeTrainerSpriteAfterSlide(void)
static void FreeTrainerSpriteAfterSlide(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
@@ -181,20 +181,20 @@ static void FreeTrainerSpriteAfterSlide(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBattlerSpriteIds[gActiveBattler]].data[5];
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
}
static void Intro_DelayAndEnd(void)
static void Intro_DelayAndEnd(u32 battler)
{
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
}
static void Intro_WaitForShinyAnimAndHealthbox(void)
static void Intro_WaitForShinyAnimAndHealthbox(u32 battler)
{
bool32 healthboxAnimDone = FALSE;
@@ -241,7 +241,7 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
}
}
static void Intro_TryShinyAnimShowHealthbox(void)
static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive)
@@ -278,7 +278,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
}
}
static void TryShinyAnimAfterMonAnim(void)
static void TryShinyAnimAfterMonAnim(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
&& gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
@@ -293,12 +293,12 @@ static void TryShinyAnimAfterMonAnim(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
}
}
static void CompleteOnHealthbarDone(void)
static void CompleteOnHealthbarDone(u32 battler)
{
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
@@ -307,19 +307,19 @@ static void CompleteOnHealthbarDone(void)
if (hpValue != -1)
UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT);
else
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void HideHealthboxAfterMonFaint(void)
static void HideHealthboxAfterMonFaint(u32 battler)
{
if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
{
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
}
static void FreeMonSpriteAfterSwitchOutAnim(void)
static void FreeMonSpriteAfterSwitchOutAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -327,17 +327,17 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
HideBattlerShadowSprite(gActiveBattler);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
}
static void CompleteOnInactiveTextPrinter(void)
static void CompleteOnInactiveTextPrinter(u32 battler)
{
if (!IsTextPrinterActive(B_WIN_MSG))
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void DoHitAnimBlinkSpriteEffect(void)
static void DoHitAnimBlinkSpriteEffect(u32 battler)
{
u8 spriteId = gBattlerSpriteIds[gActiveBattler];
@@ -346,7 +346,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = FALSE;
gDoingBattleAnim = FALSE;
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
else
{
@@ -356,7 +356,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
static void SwitchIn_ShowSubstitute(void)
static void SwitchIn_ShowSubstitute(u32 battler)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
@@ -367,16 +367,16 @@ static void SwitchIn_ShowSubstitute(void)
}
}
static void SwitchIn_HandleSoundAndEnd(void)
static void SwitchIn_HandleSoundAndEnd(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs())
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
}
static void SwitchIn_ShowHealthbox(void)
static void SwitchIn_ShowHealthbox(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
@@ -396,7 +396,7 @@ static void SwitchIn_ShowHealthbox(void)
}
}
static void SwitchIn_TryShinyAnim(void)
static void SwitchIn_TryShinyAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim)
@@ -413,19 +413,19 @@ static void SwitchIn_TryShinyAnim(void)
}
}
static void CompleteOnFinishedStatusAnimation(void)
static void CompleteOnFinishedStatusAnimation(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void CompleteOnFinishedBattleAnimation(void)
static void CompleteOnFinishedBattleAnimation(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentBufferExecCompleted(void)
static void LinkOpponentBufferExecCompleted(u32 battler)
{
gBattlerControllerFuncs[gActiveBattler] = LinkOpponentBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -441,7 +441,7 @@ static void LinkOpponentBufferExecCompleted(void)
}
}
static void LinkOpponentHandleGetMonData(void)
static void LinkOpponentHandleGetMonData(u32 battler)
{
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
u32 size = 0;
@@ -463,7 +463,7 @@ static void LinkOpponentHandleGetMonData(void)
}
}
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
@@ -771,12 +771,12 @@ static u32 CopyLinkOpponentMonData(u8 monId, u8 *dst)
return size;
}
static void LinkOpponentHandleGetRawMonData(void)
static void LinkOpponentHandleGetRawMonData(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleSetMonData(void)
static void LinkOpponentHandleSetMonData(u32 battler)
{
u8 monToCheck;
u8 i;
@@ -795,7 +795,7 @@ static void LinkOpponentHandleSetMonData(void)
monToCheck >>= 1;
}
}
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void SetLinkOpponentMonData(u8 monId)
@@ -1014,7 +1014,7 @@ static void SetLinkOpponentMonData(u8 monId)
}
}
static void LinkOpponentHandleSetRawMonData(void)
static void LinkOpponentHandleSetRawMonData(u32 battler)
{
u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
@@ -1022,10 +1022,10 @@ static void LinkOpponentHandleSetRawMonData(void)
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleLoadMonSprite(void)
static void LinkOpponentHandleLoadMonSprite(u32 battler)
{
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
@@ -1047,7 +1047,7 @@ static void LinkOpponentHandleLoadMonSprite(void)
gBattlerControllerFuncs[gActiveBattler] = TryShinyAnimAfterMonAnim;
}
static void LinkOpponentHandleSwitchInAnim(void)
static void LinkOpponentHandleSwitchInAnim(u32 battler)
{
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
StartSendOutAnim(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
@@ -1083,7 +1083,7 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void LinkOpponentHandleReturnMonToBall(void)
static void LinkOpponentHandleReturnMonToBall(u32 battler)
{
if (gBattleBufferA[gActiveBattler][1] == 0)
{
@@ -1096,11 +1096,11 @@ static void LinkOpponentHandleReturnMonToBall(void)
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
HideBattlerShadowSprite(gActiveBattler);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
}
static void DoSwitchOutAnimation(void)
static void DoSwitchOutAnimation(u32 battler)
{
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
@@ -1123,7 +1123,7 @@ static void DoSwitchOutAnimation(void)
#define sSpeedX data[0]
static void LinkOpponentHandleDrawTrainerPic(void)
static void LinkOpponentHandleDrawTrainerPic(u32 battler)
{
s16 xPos;
u32 trainerPicId;
@@ -1195,14 +1195,14 @@ static void LinkOpponentHandleDrawTrainerPic(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
static void LinkOpponentHandleTrainerSlide(void)
static void LinkOpponentHandleTrainerSlide(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
#undef sSpeedX
static void LinkOpponentHandleTrainerSlideBack(void)
static void LinkOpponentHandleTrainerSlideBack(u32 battler)
{
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
@@ -1213,7 +1213,7 @@ static void LinkOpponentHandleTrainerSlideBack(void)
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
}
static void LinkOpponentHandleFaintAnimation(void)
static void LinkOpponentHandleFaintAnimation(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
{
@@ -1233,27 +1233,27 @@ static void LinkOpponentHandleFaintAnimation(void)
}
}
static void LinkOpponentHandlePaletteFade(void)
static void LinkOpponentHandlePaletteFade(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleSuccessBallThrowAnim(void)
static void LinkOpponentHandleSuccessBallThrowAnim(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleBallThrowAnim(void)
static void LinkOpponentHandleBallThrowAnim(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandlePause(void)
static void LinkOpponentHandlePause(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleMoveAnimation(void)
static void LinkOpponentHandleMoveAnimation(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1268,7 +1268,7 @@ static void LinkOpponentHandleMoveAnimation(void)
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
else
{
@@ -1278,7 +1278,7 @@ static void LinkOpponentHandleMoveAnimation(void)
}
}
static void LinkOpponentDoMoveAnimation(void)
static void LinkOpponentDoMoveAnimation(u32 battler)
{
u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
u8 multihit = gBattleBufferA[gActiveBattler][11];
@@ -1321,13 +1321,13 @@ static void LinkOpponentDoMoveAnimation(void)
CopyAllBattleSpritesInvisibilities();
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
break;
}
}
static void LinkOpponentHandlePrintString(void)
static void LinkOpponentHandlePrintString(u32 battler)
{
u16 *stringId;
@@ -1342,42 +1342,42 @@ static void LinkOpponentHandlePrintString(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
static void LinkOpponentHandlePrintSelectionString(void)
static void LinkOpponentHandlePrintSelectionString(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleChooseAction(void)
static void LinkOpponentHandleChooseAction(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleUnknownYesNoBox(void)
static void LinkOpponentHandleUnknownYesNoBox(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleChooseMove(void)
static void LinkOpponentHandleChooseMove(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleChooseItem(void)
static void LinkOpponentHandleChooseItem(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleChoosePokemon(void)
static void LinkOpponentHandleChoosePokemon(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleCmd23(void)
static void LinkOpponentHandleCmd23(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleHealthBarUpdate(void)
static void LinkOpponentHandleHealthBarUpdate(u32 battler)
{
s16 hpVal;
@@ -1401,12 +1401,12 @@ static void LinkOpponentHandleHealthBarUpdate(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void LinkOpponentHandleExpUpdate(void)
static void LinkOpponentHandleExpUpdate(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleStatusIconUpdate(void)
static void LinkOpponentHandleStatusIconUpdate(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1419,7 +1419,7 @@ static void LinkOpponentHandleStatusIconUpdate(void)
}
}
static void LinkOpponentHandleStatusAnimation(void)
static void LinkOpponentHandleStatusAnimation(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1429,80 +1429,80 @@ static void LinkOpponentHandleStatusAnimation(void)
}
}
static void LinkOpponentHandleStatusXor(void)
static void LinkOpponentHandleStatusXor(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleDataTransfer(void)
static void LinkOpponentHandleDataTransfer(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleDMA3Transfer(void)
static void LinkOpponentHandleDMA3Transfer(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandlePlayBGM(void)
static void LinkOpponentHandlePlayBGM(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleCmd32(void)
static void LinkOpponentHandleCmd32(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleTwoReturnValues(void)
static void LinkOpponentHandleTwoReturnValues(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleChosenMonReturnValue(void)
static void LinkOpponentHandleChosenMonReturnValue(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleOneReturnValue(void)
static void LinkOpponentHandleOneReturnValue(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleOneReturnValue_Duplicate(void)
static void LinkOpponentHandleOneReturnValue_Duplicate(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleClearUnkVar(void)
static void LinkOpponentHandleClearUnkVar(u32 battler)
{
gUnusedControllerStruct.unk = 0;
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleSetUnkVar(void)
static void LinkOpponentHandleSetUnkVar(u32 battler)
{
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleClearUnkFlag(void)
static void LinkOpponentHandleClearUnkFlag(u32 battler)
{
gUnusedControllerStruct.flag = 0;
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleToggleUnkFlag(void)
static void LinkOpponentHandleToggleUnkFlag(u32 battler)
{
gUnusedControllerStruct.flag ^= 1;
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleHitAnimation(void)
static void LinkOpponentHandleHitAnimation(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
else
{
@@ -1513,12 +1513,12 @@ static void LinkOpponentHandleHitAnimation(void)
}
}
static void LinkOpponentHandleCantSwitch(void)
static void LinkOpponentHandleCantSwitch(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandlePlaySE(void)
static void LinkOpponentHandlePlaySE(u32 battler)
{
s8 pan;
@@ -1528,31 +1528,31 @@ static void LinkOpponentHandlePlaySE(void)
pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandlePlayFanfare(void)
static void LinkOpponentHandlePlayFanfare(u32 battler)
{
PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleFaintingCry(void)
static void LinkOpponentHandleFaintingCry(u32 battler)
{
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry_ByMode(species, 25, CRY_MODE_FAINT);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleIntroSlide(void)
static void LinkOpponentHandleIntroSlide(u32 battler)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
gIntroSlideFlags |= 1;
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleIntroTrainerBallThrow(void)
static void LinkOpponentHandleIntroTrainerBallThrow(u32 battler)
{
u8 taskId;
@@ -1607,11 +1607,11 @@ static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite)
DestroySprite(sprite);
}
static void LinkOpponentHandleDrawPartyStatusSummary(void)
static void LinkOpponentHandleDrawPartyStatusSummary(u32 battler)
{
if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
else
{
@@ -1640,38 +1640,38 @@ static void LinkOpponentHandleDrawPartyStatusSummary(void)
}
}
static void EndDrawPartyStatusSummary(void)
static void EndDrawPartyStatusSummary(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 92)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
}
static void LinkOpponentHandleHidePartyStatusSummary(void)
static void LinkOpponentHandleHidePartyStatusSummary(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleEndBounceEffect(void)
static void LinkOpponentHandleEndBounceEffect(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleSpriteInvisibility(void)
static void LinkOpponentHandleSpriteInvisibility(u32 battler)
{
if (IsBattlerSpritePresent(gActiveBattler))
{
gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
CopyBattleSpriteInvisibility(gActiveBattler);
}
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleBattleAnimation(void)
static void LinkOpponentHandleBattleAnimation(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1679,23 +1679,23 @@ static void LinkOpponentHandleBattleAnimation(void)
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
else
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
}
static void LinkOpponentHandleLinkStandbyMsg(void)
static void LinkOpponentHandleLinkStandbyMsg(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleResetActionMoveSelection(void)
static void LinkOpponentHandleResetActionMoveSelection(u32 battler)
{
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
}
static void LinkOpponentHandleEndLinkBattle(void)
static void LinkOpponentHandleEndLinkBattle(u32 battler)
{
if (gBattleBufferA[gActiveBattler][1] == B_OUTCOME_DREW)
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
@@ -1704,10 +1704,10 @@ static void LinkOpponentHandleEndLinkBattle(void)
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
LinkOpponentBufferExecCompleted();
LinkOpponentBufferExecCompleted(battler);
gBattlerControllerFuncs[gActiveBattler] = SetBattleEndCallbacks;
}
static void LinkOpponentCmdEnd(void)
static void LinkOpponentCmdEnd(u32 battler)
{
}

View File

@@ -14,76 +14,76 @@
#include "constants/songs.h"
#include "constants/sound.h"
static void LinkPartnerHandleGetMonData(void);
static void LinkPartnerHandleGetRawMonData(void);
static void LinkPartnerHandleSetMonData(void);
static void LinkPartnerHandleSetRawMonData(void);
static void LinkPartnerHandleLoadMonSprite(void);
static void LinkPartnerHandleSwitchInAnim(void);
static void LinkPartnerHandleReturnMonToBall(void);
static void LinkPartnerHandleDrawTrainerPic(void);
static void LinkPartnerHandleTrainerSlide(void);
static void LinkPartnerHandleTrainerSlideBack(void);
static void LinkPartnerHandleFaintAnimation(void);
static void LinkPartnerHandlePaletteFade(void);
static void LinkPartnerHandleSuccessBallThrowAnim(void);
static void LinkPartnerHandleBallThrowAnim(void);
static void LinkPartnerHandlePause(void);
static void LinkPartnerHandleMoveAnimation(void);
static void LinkPartnerHandlePrintString(void);
static void LinkPartnerHandlePrintSelectionString(void);
static void LinkPartnerHandleChooseAction(void);
static void LinkPartnerHandleUnknownYesNoBox(void);
static void LinkPartnerHandleChooseMove(void);
static void LinkPartnerHandleChooseItem(void);
static void LinkPartnerHandleChoosePokemon(void);
static void LinkPartnerHandleCmd23(void);
static void LinkPartnerHandleHealthBarUpdate(void);
static void LinkPartnerHandleExpUpdate(void);
static void LinkPartnerHandleStatusIconUpdate(void);
static void LinkPartnerHandleStatusAnimation(void);
static void LinkPartnerHandleStatusXor(void);
static void LinkPartnerHandleDataTransfer(void);
static void LinkPartnerHandleDMA3Transfer(void);
static void LinkPartnerHandlePlayBGM(void);
static void LinkPartnerHandleCmd32(void);
static void LinkPartnerHandleTwoReturnValues(void);
static void LinkPartnerHandleChosenMonReturnValue(void);
static void LinkPartnerHandleOneReturnValue(void);
static void LinkPartnerHandleOneReturnValue_Duplicate(void);
static void LinkPartnerHandleClearUnkVar(void);
static void LinkPartnerHandleSetUnkVar(void);
static void LinkPartnerHandleClearUnkFlag(void);
static void LinkPartnerHandleToggleUnkFlag(void);
static void LinkPartnerHandleHitAnimation(void);
static void LinkPartnerHandleCantSwitch(void);
static void LinkPartnerHandlePlaySE(void);
static void LinkPartnerHandlePlayFanfare(void);
static void LinkPartnerHandleFaintingCry(void);
static void LinkPartnerHandleIntroSlide(void);
static void LinkPartnerHandleIntroTrainerBallThrow(void);
static void LinkPartnerHandleDrawPartyStatusSummary(void);
static void LinkPartnerHandleHidePartyStatusSummary(void);
static void LinkPartnerHandleEndBounceEffect(void);
static void LinkPartnerHandleSpriteInvisibility(void);
static void LinkPartnerHandleBattleAnimation(void);
static void LinkPartnerHandleLinkStandbyMsg(void);
static void LinkPartnerHandleResetActionMoveSelection(void);
static void LinkPartnerHandleEndLinkBattle(void);
static void LinkPartnerCmdEnd(void);
static void LinkPartnerHandleGetMonData(u32 battler);
static void LinkPartnerHandleGetRawMonData(u32 battler);
static void LinkPartnerHandleSetMonData(u32 battler);
static void LinkPartnerHandleSetRawMonData(u32 battler);
static void LinkPartnerHandleLoadMonSprite(u32 battler);
static void LinkPartnerHandleSwitchInAnim(u32 battler);
static void LinkPartnerHandleReturnMonToBall(u32 battler);
static void LinkPartnerHandleDrawTrainerPic(u32 battler);
static void LinkPartnerHandleTrainerSlide(u32 battler);
static void LinkPartnerHandleTrainerSlideBack(u32 battler);
static void LinkPartnerHandleFaintAnimation(u32 battler);
static void LinkPartnerHandlePaletteFade(u32 battler);
static void LinkPartnerHandleSuccessBallThrowAnim(u32 battler);
static void LinkPartnerHandleBallThrowAnim(u32 battler);
static void LinkPartnerHandlePause(u32 battler);
static void LinkPartnerHandleMoveAnimation(u32 battler);
static void LinkPartnerHandlePrintString(u32 battler);
static void LinkPartnerHandlePrintSelectionString(u32 battler);
static void LinkPartnerHandleChooseAction(u32 battler);
static void LinkPartnerHandleUnknownYesNoBox(u32 battler);
static void LinkPartnerHandleChooseMove(u32 battler);
static void LinkPartnerHandleChooseItem(u32 battler);
static void LinkPartnerHandleChoosePokemon(u32 battler);
static void LinkPartnerHandleCmd23(u32 battler);
static void LinkPartnerHandleHealthBarUpdate(u32 battler);
static void LinkPartnerHandleExpUpdate(u32 battler);
static void LinkPartnerHandleStatusIconUpdate(u32 battler);
static void LinkPartnerHandleStatusAnimation(u32 battler);
static void LinkPartnerHandleStatusXor(u32 battler);
static void LinkPartnerHandleDataTransfer(u32 battler);
static void LinkPartnerHandleDMA3Transfer(u32 battler);
static void LinkPartnerHandlePlayBGM(u32 battler);
static void LinkPartnerHandleCmd32(u32 battler);
static void LinkPartnerHandleTwoReturnValues(u32 battler);
static void LinkPartnerHandleChosenMonReturnValue(u32 battler);
static void LinkPartnerHandleOneReturnValue(u32 battler);
static void LinkPartnerHandleOneReturnValue_Duplicate(u32 battler);
static void LinkPartnerHandleClearUnkVar(u32 battler);
static void LinkPartnerHandleSetUnkVar(u32 battler);
static void LinkPartnerHandleClearUnkFlag(u32 battler);
static void LinkPartnerHandleToggleUnkFlag(u32 battler);
static void LinkPartnerHandleHitAnimation(u32 battler);
static void LinkPartnerHandleCantSwitch(u32 battler);
static void LinkPartnerHandlePlaySE(u32 battler);
static void LinkPartnerHandlePlayFanfare(u32 battler);
static void LinkPartnerHandleFaintingCry(u32 battler);
static void LinkPartnerHandleIntroSlide(u32 battler);
static void LinkPartnerHandleIntroTrainerBallThrow(u32 battler);
static void LinkPartnerHandleDrawPartyStatusSummary(u32 battler);
static void LinkPartnerHandleHidePartyStatusSummary(u32 battler);
static void LinkPartnerHandleEndBounceEffect(u32 battler);
static void LinkPartnerHandleSpriteInvisibility(u32 battler);
static void LinkPartnerHandleBattleAnimation(u32 battler);
static void LinkPartnerHandleLinkStandbyMsg(u32 battler);
static void LinkPartnerHandleResetActionMoveSelection(u32 battler);
static void LinkPartnerHandleEndLinkBattle(u32 battler);
static void LinkPartnerCmdEnd(u32 battler);
static void LinkPartnerBufferRunCommand(void);
static void LinkPartnerBufferExecCompleted(void);
static void SwitchIn_WaitAndEnd(void);
static void LinkPartnerBufferRunCommand(u32 battler);
static void LinkPartnerBufferExecCompleted(u32 battler);
static void SwitchIn_WaitAndEnd(u32 battler);
static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst);
static void SetLinkPartnerMonData(u8 monId);
static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
static void DoSwitchOutAnimation(void);
static void LinkPartnerDoMoveAnimation(void);
static void DoSwitchOutAnimation(u32 battler);
static void LinkPartnerDoMoveAnimation(u32 battler);
static void Task_StartSendOutAnim(u8 taskId);
static void EndDrawPartyStatusSummary(void);
static void EndDrawPartyStatusSummary(u32 battler);
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) =
{
[CONTROLLER_GETMONDATA] = LinkPartnerHandleGetMonData,
[CONTROLLER_GETRAWMONDATA] = LinkPartnerHandleGetRawMonData,
@@ -144,53 +144,53 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_TERMINATOR_NOP] = LinkPartnerCmdEnd
};
static void LinkPartnerDummy(void)
static void LinkPartnerDummy(u32 battler)
{
}
void SetControllerToLinkPartner(void)
void SetControllerToLinkPartner(u32 battler)
{
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerBufferRunCommand;
}
static void LinkPartnerBufferRunCommand(void)
static void LinkPartnerBufferRunCommand(u32 battler)
{
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sLinkPartnerBufferCommands))
sLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]]();
sLinkPartnerBufferCommands[gBattleBufferA[gActiveBattler][0]](battler);
else
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
}
static void CompleteOnBattlerSpriteCallbackDummy(void)
static void CompleteOnBattlerSpriteCallbackDummy(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void FreeTrainerSpriteAfterSlide(void)
static void FreeTrainerSpriteAfterSlide(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
BattleGfxSfxDummy3(MALE);
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
}
static void Intro_DelayAndEnd(void)
static void Intro_DelayAndEnd(u32 battler)
{
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
}
static void Intro_WaitForHealthbox(void)
static void Intro_WaitForHealthbox(u32 battler)
{
bool32 finished = FALSE;
@@ -215,7 +215,7 @@ static void Intro_WaitForHealthbox(void)
}
}
static void Intro_ShowHealthbox(void)
static void Intro_ShowHealthbox(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive
@@ -248,13 +248,13 @@ static void Intro_ShowHealthbox(void)
}
}
static void WaitForMonAnimAfterLoad(void)
static void WaitForMonAnimAfterLoad(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded && gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void CompleteOnHealthbarDone(void)
static void CompleteOnHealthbarDone(u32 battler)
{
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
@@ -267,39 +267,39 @@ static void CompleteOnHealthbarDone(void)
else
{
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
}
static void FreeMonSpriteAfterFaintAnim(void)
static void FreeMonSpriteAfterFaintAnim(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].y + gSprites[gBattlerSpriteIds[gActiveBattler]].y2 > DISPLAY_HEIGHT)
{
FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
}
static void FreeMonSpriteAfterSwitchOutAnim(void)
static void FreeMonSpriteAfterSwitchOutAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
}
static void CompleteOnInactiveTextPrinter(void)
static void CompleteOnInactiveTextPrinter(u32 battler)
{
if (!IsTextPrinterActive(B_WIN_MSG))
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void DoHitAnimBlinkSpriteEffect(void)
static void DoHitAnimBlinkSpriteEffect(u32 battler)
{
u8 spriteId = gBattlerSpriteIds[gActiveBattler];
@@ -308,7 +308,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = FALSE;
gDoingBattleAnim = FALSE;
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
else
{
@@ -318,7 +318,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
static void SwitchIn_ShowSubstitute(void)
static void SwitchIn_ShowSubstitute(u32 battler)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
@@ -329,15 +329,15 @@ static void SwitchIn_ShowSubstitute(void)
}
}
static void SwitchIn_WaitAndEnd(void)
static void SwitchIn_WaitAndEnd(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
}
static void SwitchIn_ShowHealthbox(void)
static void SwitchIn_ShowHealthbox(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
@@ -358,7 +358,7 @@ static void SwitchIn_ShowHealthbox(void)
}
}
static void SwitchIn_TryShinyAnim(void)
static void SwitchIn_TryShinyAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
@@ -374,7 +374,7 @@ static void SwitchIn_TryShinyAnim(void)
}
}
static void LinkPartnerBufferExecCompleted(void)
static void LinkPartnerBufferExecCompleted(u32 battler)
{
gBattlerControllerFuncs[gActiveBattler] = LinkPartnerBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -390,19 +390,19 @@ static void LinkPartnerBufferExecCompleted(void)
}
}
static void CompleteOnFinishedStatusAnimation(void)
static void CompleteOnFinishedStatusAnimation(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void CompleteOnFinishedBattleAnimation(void)
static void CompleteOnFinishedBattleAnimation(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleGetMonData(void)
static void LinkPartnerHandleGetMonData(u32 battler)
{
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
u32 size = 0;
@@ -424,7 +424,7 @@ static void LinkPartnerHandleGetMonData(void)
}
}
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
@@ -733,12 +733,12 @@ static u32 CopyLinkPartnerMonData(u8 monId, u8 *dst)
return size;
}
static void LinkPartnerHandleGetRawMonData(void)
static void LinkPartnerHandleGetRawMonData(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleSetMonData(void)
static void LinkPartnerHandleSetMonData(u32 battler)
{
u8 monToCheck;
u8 i;
@@ -757,7 +757,7 @@ static void LinkPartnerHandleSetMonData(void)
monToCheck >>= 1;
}
}
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void SetLinkPartnerMonData(u8 monId)
@@ -978,7 +978,7 @@ static void SetLinkPartnerMonData(u8 monId)
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
}
static void LinkPartnerHandleSetRawMonData(void)
static void LinkPartnerHandleSetRawMonData(u32 battler)
{
u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
@@ -986,10 +986,10 @@ static void LinkPartnerHandleSetRawMonData(void)
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleLoadMonSprite(void)
static void LinkPartnerHandleLoadMonSprite(u32 battler)
{
u16 species;
@@ -1008,7 +1008,7 @@ static void LinkPartnerHandleLoadMonSprite(void)
gBattlerControllerFuncs[gActiveBattler] = WaitForMonAnimAfterLoad;
}
static void LinkPartnerHandleSwitchInAnim(void)
static void LinkPartnerHandleSwitchInAnim(u32 battler)
{
ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]);
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
@@ -1046,7 +1046,7 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void LinkPartnerHandleReturnMonToBall(void)
static void LinkPartnerHandleReturnMonToBall(u32 battler)
{
if (gBattleBufferA[gActiveBattler][1] == 0)
{
@@ -1058,11 +1058,11 @@ static void LinkPartnerHandleReturnMonToBall(void)
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
}
static void DoSwitchOutAnimation(void)
static void DoSwitchOutAnimation(u32 battler)
{
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
@@ -1085,7 +1085,7 @@ static void DoSwitchOutAnimation(void)
#define sSpeedX data[0]
static void LinkPartnerHandleDrawTrainerPic(void)
static void LinkPartnerHandleDrawTrainerPic(u32 battler)
{
s16 xPos;
u32 trainerPicId;
@@ -1120,12 +1120,12 @@ static void LinkPartnerHandleDrawTrainerPic(void)
#undef sSpeedX
static void LinkPartnerHandleTrainerSlide(void)
static void LinkPartnerHandleTrainerSlide(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleTrainerSlideBack(void)
static void LinkPartnerHandleTrainerSlideBack(u32 battler)
{
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
@@ -1139,7 +1139,7 @@ static void LinkPartnerHandleTrainerSlideBack(void)
#define sSpeedX data[1]
#define sSpeedY data[2]
static void LinkPartnerHandleFaintAnimation(void)
static void LinkPartnerHandleFaintAnimation(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0)
{
@@ -1165,27 +1165,27 @@ static void LinkPartnerHandleFaintAnimation(void)
#undef sSpeedX
#undef sSpeedY
static void LinkPartnerHandlePaletteFade(void)
static void LinkPartnerHandlePaletteFade(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleSuccessBallThrowAnim(void)
static void LinkPartnerHandleSuccessBallThrowAnim(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleBallThrowAnim(void)
static void LinkPartnerHandleBallThrowAnim(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandlePause(void)
static void LinkPartnerHandlePause(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleMoveAnimation(void)
static void LinkPartnerHandleMoveAnimation(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1200,7 +1200,7 @@ static void LinkPartnerHandleMoveAnimation(void)
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
else
{
@@ -1210,7 +1210,7 @@ static void LinkPartnerHandleMoveAnimation(void)
}
}
static void LinkPartnerDoMoveAnimation(void)
static void LinkPartnerDoMoveAnimation(u32 battler)
{
u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
u8 multihit = gBattleBufferA[gActiveBattler][11];
@@ -1253,13 +1253,13 @@ static void LinkPartnerDoMoveAnimation(void)
CopyAllBattleSpritesInvisibilities();
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
break;
}
}
static void LinkPartnerHandlePrintString(void)
static void LinkPartnerHandlePrintString(u32 battler)
{
u16 *stringId;
@@ -1274,42 +1274,42 @@ static void LinkPartnerHandlePrintString(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
static void LinkPartnerHandlePrintSelectionString(void)
static void LinkPartnerHandlePrintSelectionString(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleChooseAction(void)
static void LinkPartnerHandleChooseAction(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleUnknownYesNoBox(void)
static void LinkPartnerHandleUnknownYesNoBox(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleChooseMove(void)
static void LinkPartnerHandleChooseMove(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleChooseItem(void)
static void LinkPartnerHandleChooseItem(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleChoosePokemon(void)
static void LinkPartnerHandleChoosePokemon(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleCmd23(void)
static void LinkPartnerHandleCmd23(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleHealthBarUpdate(void)
static void LinkPartnerHandleHealthBarUpdate(u32 battler)
{
s16 hpVal;
@@ -1333,12 +1333,12 @@ static void LinkPartnerHandleHealthBarUpdate(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void LinkPartnerHandleExpUpdate(void)
static void LinkPartnerHandleExpUpdate(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleStatusIconUpdate(void)
static void LinkPartnerHandleStatusIconUpdate(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1351,7 +1351,7 @@ static void LinkPartnerHandleStatusIconUpdate(void)
}
}
static void LinkPartnerHandleStatusAnimation(void)
static void LinkPartnerHandleStatusAnimation(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1361,80 +1361,80 @@ static void LinkPartnerHandleStatusAnimation(void)
}
}
static void LinkPartnerHandleStatusXor(void)
static void LinkPartnerHandleStatusXor(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleDataTransfer(void)
static void LinkPartnerHandleDataTransfer(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleDMA3Transfer(void)
static void LinkPartnerHandleDMA3Transfer(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandlePlayBGM(void)
static void LinkPartnerHandlePlayBGM(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleCmd32(void)
static void LinkPartnerHandleCmd32(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleTwoReturnValues(void)
static void LinkPartnerHandleTwoReturnValues(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleChosenMonReturnValue(void)
static void LinkPartnerHandleChosenMonReturnValue(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleOneReturnValue(void)
static void LinkPartnerHandleOneReturnValue(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleOneReturnValue_Duplicate(void)
static void LinkPartnerHandleOneReturnValue_Duplicate(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleClearUnkVar(void)
static void LinkPartnerHandleClearUnkVar(u32 battler)
{
gUnusedControllerStruct.unk = 0;
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleSetUnkVar(void)
static void LinkPartnerHandleSetUnkVar(u32 battler)
{
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleClearUnkFlag(void)
static void LinkPartnerHandleClearUnkFlag(u32 battler)
{
gUnusedControllerStruct.flag = 0;
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleToggleUnkFlag(void)
static void LinkPartnerHandleToggleUnkFlag(u32 battler)
{
gUnusedControllerStruct.flag ^= 1;
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleHitAnimation(void)
static void LinkPartnerHandleHitAnimation(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
else
{
@@ -1445,12 +1445,12 @@ static void LinkPartnerHandleHitAnimation(void)
}
}
static void LinkPartnerHandleCantSwitch(void)
static void LinkPartnerHandleCantSwitch(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandlePlaySE(void)
static void LinkPartnerHandlePlaySE(u32 battler)
{
s8 pan;
@@ -1460,31 +1460,31 @@ static void LinkPartnerHandlePlaySE(void)
pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandlePlayFanfare(void)
static void LinkPartnerHandlePlayFanfare(u32 battler)
{
PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleFaintingCry(void)
static void LinkPartnerHandleFaintingCry(u32 battler)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry_ByMode(species, -25, CRY_MODE_FAINT);
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleIntroSlide(void)
static void LinkPartnerHandleIntroSlide(u32 battler)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
gIntroSlideFlags |= 1;
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleIntroTrainerBallThrow(void)
static void LinkPartnerHandleIntroTrainerBallThrow(u32 battler)
{
u8 paletteNum;
u8 taskId;
@@ -1559,11 +1559,11 @@ static void Task_StartSendOutAnim(u8 taskId)
}
}
static void LinkPartnerHandleDrawPartyStatusSummary(void)
static void LinkPartnerHandleDrawPartyStatusSummary(u32 battler)
{
if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
else
{
@@ -1578,38 +1578,38 @@ static void LinkPartnerHandleDrawPartyStatusSummary(void)
}
}
static void EndDrawPartyStatusSummary(void)
static void EndDrawPartyStatusSummary(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 92)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
}
static void LinkPartnerHandleHidePartyStatusSummary(void)
static void LinkPartnerHandleHidePartyStatusSummary(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleEndBounceEffect(void)
static void LinkPartnerHandleEndBounceEffect(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleSpriteInvisibility(void)
static void LinkPartnerHandleSpriteInvisibility(u32 battler)
{
if (IsBattlerSpritePresent(gActiveBattler))
{
gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
CopyBattleSpriteInvisibility(gActiveBattler);
}
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleBattleAnimation(void)
static void LinkPartnerHandleBattleAnimation(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1617,31 +1617,31 @@ static void LinkPartnerHandleBattleAnimation(void)
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
else
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
}
static void LinkPartnerHandleLinkStandbyMsg(void)
static void LinkPartnerHandleLinkStandbyMsg(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleResetActionMoveSelection(void)
static void LinkPartnerHandleResetActionMoveSelection(u32 battler)
{
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
}
static void LinkPartnerHandleEndLinkBattle(void)
static void LinkPartnerHandleEndLinkBattle(u32 battler)
{
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
LinkPartnerBufferExecCompleted();
LinkPartnerBufferExecCompleted(battler);
gBattlerControllerFuncs[gActiveBattler] = SetBattleEndCallbacks;
}
static void LinkPartnerCmdEnd(void)
static void LinkPartnerCmdEnd(u32 battler)
{
}

File diff suppressed because it is too large Load Diff

View File

@@ -21,76 +21,76 @@
#include "constants/songs.h"
#include "constants/sound.h"
static void OpponentHandleGetMonData(void);
static void OpponentHandleGetRawMonData(void);
static void OpponentHandleSetMonData(void);
static void OpponentHandleSetRawMonData(void);
static void OpponentHandleLoadMonSprite(void);
static void OpponentHandleSwitchInAnim(void);
static void OpponentHandleReturnMonToBall(void);
static void OpponentHandleDrawTrainerPic(void);
static void OpponentHandleTrainerSlide(void);
static void OpponentHandleTrainerSlideBack(void);
static void OpponentHandleFaintAnimation(void);
static void OpponentHandlePaletteFade(void);
static void OpponentHandleSuccessBallThrowAnim(void);
static void OpponentHandleBallThrowAnim(void);
static void OpponentHandlePause(void);
static void OpponentHandleMoveAnimation(void);
static void OpponentHandlePrintString(void);
static void OpponentHandlePrintSelectionString(void);
static void OpponentHandleChooseAction(void);
static void OpponentHandleUnknownYesNoBox(void);
static void OpponentHandleChooseMove(void);
static void OpponentHandleChooseItem(void);
static void OpponentHandleChoosePokemon(void);
static void OpponentHandleCmd23(void);
static void OpponentHandleHealthBarUpdate(void);
static void OpponentHandleExpUpdate(void);
static void OpponentHandleStatusIconUpdate(void);
static void OpponentHandleStatusAnimation(void);
static void OpponentHandleStatusXor(void);
static void OpponentHandleDataTransfer(void);
static void OpponentHandleDMA3Transfer(void);
static void OpponentHandlePlayBGM(void);
static void OpponentHandleCmd32(void);
static void OpponentHandleTwoReturnValues(void);
static void OpponentHandleChosenMonReturnValue(void);
static void OpponentHandleOneReturnValue(void);
static void OpponentHandleOneReturnValue_Duplicate(void);
static void OpponentHandleCmd37(void);
static void OpponentHandleCmd38(void);
static void OpponentHandleCmd39(void);
static void OpponentHandleCmd40(void);
static void OpponentHandleHitAnimation(void);
static void OpponentHandleCmd42(void);
static void OpponentHandlePlaySE(void);
static void OpponentHandlePlayFanfare(void);
static void OpponentHandleFaintingCry(void);
static void OpponentHandleIntroSlide(void);
static void OpponentHandleIntroTrainerBallThrow(void);
static void OpponentHandleDrawPartyStatusSummary(void);
static void OpponentHandleHidePartyStatusSummary(void);
static void OpponentHandleEndBounceEffect(void);
static void OpponentHandleSpriteInvisibility(void);
static void OpponentHandleBattleAnimation(void);
static void OpponentHandleLinkStandbyMsg(void);
static void OpponentHandleResetActionMoveSelection(void);
static void OpponentHandleCmd55(void);
static void OpponentCmdEnd(void);
static void OpponentHandleGetMonData(u32 battler);
static void OpponentHandleGetRawMonData(u32 battler);
static void OpponentHandleSetMonData(u32 battler);
static void OpponentHandleSetRawMonData(u32 battler);
static void OpponentHandleLoadMonSprite(u32 battler);
static void OpponentHandleSwitchInAnim(u32 battler);
static void OpponentHandleReturnMonToBall(u32 battler);
static void OpponentHandleDrawTrainerPic(u32 battler);
static void OpponentHandleTrainerSlide(u32 battler);
static void OpponentHandleTrainerSlideBack(u32 battler);
static void OpponentHandleFaintAnimation(u32 battler);
static void OpponentHandlePaletteFade(u32 battler);
static void OpponentHandleSuccessBallThrowAnim(u32 battler);
static void OpponentHandleBallThrowAnim(u32 battler);
static void OpponentHandlePause(u32 battler);
static void OpponentHandleMoveAnimation(u32 battler);
static void OpponentHandlePrintString(u32 battler);
static void OpponentHandlePrintSelectionString(u32 battler);
static void OpponentHandleChooseAction(u32 battler);
static void OpponentHandleUnknownYesNoBox(u32 battler);
static void OpponentHandleChooseMove(u32 battler);
static void OpponentHandleChooseItem(u32 battler);
static void OpponentHandleChoosePokemon(u32 battler);
static void OpponentHandleCmd23(u32 battler);
static void OpponentHandleHealthBarUpdate(u32 battler);
static void OpponentHandleExpUpdate(u32 battler);
static void OpponentHandleStatusIconUpdate(u32 battler);
static void OpponentHandleStatusAnimation(u32 battler);
static void OpponentHandleStatusXor(u32 battler);
static void OpponentHandleDataTransfer(u32 battler);
static void OpponentHandleDMA3Transfer(u32 battler);
static void OpponentHandlePlayBGM(u32 battler);
static void OpponentHandleCmd32(u32 battler);
static void OpponentHandleTwoReturnValues(u32 battler);
static void OpponentHandleChosenMonReturnValue(u32 battler);
static void OpponentHandleOneReturnValue(u32 battler);
static void OpponentHandleOneReturnValue_Duplicate(u32 battler);
static void OpponentHandleCmd37(u32 battler);
static void OpponentHandleCmd38(u32 battler);
static void OpponentHandleCmd39(u32 battler);
static void OpponentHandleCmd40(u32 battler);
static void OpponentHandleHitAnimation(u32 battler);
static void OpponentHandleCmd42(u32 battler);
static void OpponentHandlePlaySE(u32 battler);
static void OpponentHandlePlayFanfare(u32 battler);
static void OpponentHandleFaintingCry(u32 battler);
static void OpponentHandleIntroSlide(u32 battler);
static void OpponentHandleIntroTrainerBallThrow(u32 battler);
static void OpponentHandleDrawPartyStatusSummary(u32 battler);
static void OpponentHandleHidePartyStatusSummary(u32 battler);
static void OpponentHandleEndBounceEffect(u32 battler);
static void OpponentHandleSpriteInvisibility(u32 battler);
static void OpponentHandleBattleAnimation(u32 battler);
static void OpponentHandleLinkStandbyMsg(u32 battler);
static void OpponentHandleResetActionMoveSelection(u32 battler);
static void OpponentHandleCmd55(u32 battler);
static void OpponentCmdEnd(u32 battler);
static void OpponentBufferRunCommand(void);
static void OpponentBufferRunCommand(u32 battler);
static u32 GetOpponentMonData(u8 monId, u8 *dst);
static void SetOpponentMonData(u8 monId);
static void DoSwitchOutAnimation(void);
static void OpponentDoMoveAnimation(void);
static void SwitchIn_HandleSoundAndEnd(void);
static void DoSwitchOutAnimation(u32 battler);
static void OpponentDoMoveAnimation(u32 battler);
static void SwitchIn_HandleSoundAndEnd(u32 battler);
static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit);
static void Task_StartSendOutAnim(u8 taskId);
static void SpriteCB_FreeOpponentSprite(struct Sprite *sprite);
static void EndDrawPartyStatusSummary(void);
static void EndDrawPartyStatusSummary(u32 battler);
static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) =
{
[CONTROLLER_GETMONDATA] = OpponentHandleGetMonData,
[CONTROLLER_GETRAWMONDATA] = OpponentHandleGetRawMonData,
@@ -154,39 +154,39 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
// unknown unused data
static const u8 sUnused[] = { 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20 };
static void OpponentDummy(void)
static void OpponentDummy(u32 battler)
{
}
void SetControllerToOpponent(void)
void SetControllerToOpponent(u32 battler)
{
gBattlerControllerFuncs[gActiveBattler] = OpponentBufferRunCommand;
}
static void OpponentBufferRunCommand(void)
static void OpponentBufferRunCommand(u32 battler)
{
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
if (gBattleBufferA[gActiveBattler][0] < NELEMS(sOpponentBufferCommands))
sOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]]();
sOpponentBufferCommands[gBattleBufferA[gActiveBattler][0]](battler);
else
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
static void CompleteOnBattlerSpriteCallbackDummy(void)
static void CompleteOnBattlerSpriteCallbackDummy(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void CompleteOnBattlerSpriteCallbackDummy2(void)
static void CompleteOnBattlerSpriteCallbackDummy2(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void FreeTrainerSpriteAfterSlide(void)
static void FreeTrainerSpriteAfterSlide(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
@@ -194,20 +194,20 @@ static void FreeTrainerSpriteAfterSlide(void)
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = gSprites[gBattlerSpriteIds[gActiveBattler]].data[5];
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
static void Intro_DelayAndEnd(void)
static void Intro_DelayAndEnd(u32 battler)
{
if (--gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay == (u8)-1)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].introEndDelay = 0;
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
static void Intro_WaitForShinyAnimAndHealthbox(void)
static void Intro_WaitForShinyAnimAndHealthbox(u32 battler)
{
bool8 var = FALSE;
@@ -240,7 +240,7 @@ static void Intro_WaitForShinyAnimAndHealthbox(void)
}
}
static void Intro_TryShinyAnimShowHealthbox(void)
static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
@@ -270,7 +270,7 @@ static void Intro_TryShinyAnimShowHealthbox(void)
}
}
static void TryShinyAnimAfterMonAnim(void)
static void TryShinyAnimAfterMonAnim(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].animEnded == TRUE
&& gSprites[gBattlerSpriteIds[gActiveBattler]].x2 == 0)
@@ -285,12 +285,12 @@ static void TryShinyAnimAfterMonAnim(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim = FALSE;
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
}
static void CompleteOnHealthbarDone(void)
static void CompleteOnHealthbarDone(u32 battler)
{
s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0);
@@ -308,21 +308,21 @@ static void CompleteOnHealthbarDone(void)
}
else
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
}
static void HideHealthboxAfterMonFaint(void)
static void HideHealthboxAfterMonFaint(u32 battler)
{
if (!gSprites[gBattlerSpriteIds[gActiveBattler]].inUse)
{
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
static void FreeMonSpriteAfterSwitchOutAnim(void)
static void FreeMonSpriteAfterSwitchOutAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
{
@@ -330,17 +330,17 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
HideBattlerShadowSprite(gActiveBattler);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
static void CompleteOnInactiveTextPrinter(void)
static void CompleteOnInactiveTextPrinter(u32 battler)
{
if (!IsTextPrinterActive(0))
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void DoHitAnimBlinkSpriteEffect(void)
static void DoHitAnimBlinkSpriteEffect(u32 battler)
{
u8 spriteId = gBattlerSpriteIds[gActiveBattler];
@@ -349,7 +349,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = FALSE;
gDoingBattleAnim = FALSE;
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
else
{
@@ -359,7 +359,7 @@ static void DoHitAnimBlinkSpriteEffect(void)
}
}
static void SwitchIn_ShowSubstitute(void)
static void SwitchIn_ShowSubstitute(u32 battler)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
{
@@ -369,16 +369,16 @@ static void SwitchIn_ShowSubstitute(void)
}
}
static void SwitchIn_HandleSoundAndEnd(void)
static void SwitchIn_HandleSoundAndEnd(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive && !IsCryPlayingOrClearCrySongs())
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
static void SwitchIn_ShowHealthbox(void)
static void SwitchIn_ShowHealthbox(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].finishedShinyMonAnim)
{
@@ -395,7 +395,7 @@ static void SwitchIn_ShowHealthbox(void)
}
}
static void SwitchIn_TryShinyAnim(void)
static void SwitchIn_TryShinyAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]);
@@ -408,25 +408,25 @@ static void SwitchIn_TryShinyAnim(void)
}
}
static void CompleteOnFinishedStatusAnimation(void)
static void CompleteOnFinishedStatusAnimation(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void CompleteOnFinishedBattleAnimation(void)
static void CompleteOnFinishedBattleAnimation(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
void OpponentBufferExecCompleted(void)
void OpponentBufferExecCompleted(u32 battler)
{
gBattlerControllerFuncs[gActiveBattler] = OpponentBufferRunCommand;
gBattleControllerExecFlags &= ~gBitTable[gActiveBattler];
}
static void OpponentHandleGetMonData(void)
static void OpponentHandleGetMonData(u32 battler)
{
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
u32 size = 0;
@@ -448,7 +448,7 @@ static void OpponentHandleGetMonData(void)
}
}
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static u32 GetOpponentMonData(u8 monId, u8 *dst)
@@ -756,7 +756,7 @@ static u32 GetOpponentMonData(u8 monId, u8 *dst)
return size;
}
static void OpponentHandleGetRawMonData(void)
static void OpponentHandleGetRawMonData(u32 battler)
{
struct BattlePokemon battleMon;
u8 *src = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
@@ -766,10 +766,10 @@ static void OpponentHandleGetRawMonData(void)
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
dst[i] = src[i];
BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleSetMonData(void)
static void OpponentHandleSetMonData(u32 battler)
{
u8 monToCheck;
u8 i;
@@ -788,7 +788,7 @@ static void OpponentHandleSetMonData(void)
monToCheck >>= 1;
}
}
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void SetOpponentMonData(u8 monId)
@@ -1007,17 +1007,17 @@ static void SetOpponentMonData(u8 monId)
}
}
static void OpponentHandleSetRawMonData(void)
static void OpponentHandleSetRawMonData(u32 battler)
{
u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1];
u8 i;
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i)
dst[i] = gBattleBufferA[gActiveBattler][3 + i];
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleLoadMonSprite(void)
static void OpponentHandleLoadMonSprite(u32 battler)
{
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
u32 y;
@@ -1049,7 +1049,7 @@ static void OpponentHandleLoadMonSprite(void)
gBattlerControllerFuncs[gActiveBattler] = TryShinyAnimAfterMonAnim;
}
static void OpponentHandleSwitchInAnim(void)
static void OpponentHandleSwitchInAnim(u32 battler)
{
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1];
@@ -1081,7 +1081,7 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
gSprites[gBattleControllerData[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void OpponentHandleReturnMonToBall(void)
static void OpponentHandleReturnMonToBall(u32 battler)
{
if (!gBattleBufferA[gActiveBattler][1])
{
@@ -1094,11 +1094,11 @@ static void OpponentHandleReturnMonToBall(void)
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
HideBattlerShadowSprite(gActiveBattler);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
static void DoSwitchOutAnimation(void)
static void DoSwitchOutAnimation(u32 battler)
{
switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
@@ -1118,7 +1118,7 @@ static void DoSwitchOutAnimation(void)
}
}
static void OpponentHandleDrawTrainerPic(void)
static void OpponentHandleDrawTrainerPic(u32 battler)
{
u32 trainerPicId;
@@ -1148,7 +1148,7 @@ static void OpponentHandleDrawTrainerPic(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
static void OpponentHandleTrainerSlide(void)
static void OpponentHandleTrainerSlide(u32 battler)
{
u32 trainerPicId;
@@ -1179,7 +1179,7 @@ static void OpponentHandleTrainerSlide(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy2;
}
static void OpponentHandleTrainerSlideBack(void)
static void OpponentHandleTrainerSlideBack(u32 battler)
{
SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 35;
@@ -1190,7 +1190,7 @@ static void OpponentHandleTrainerSlideBack(void)
gBattlerControllerFuncs[gActiveBattler] = FreeTrainerSpriteAfterSlide;
}
static void OpponentHandleFaintAnimation(void)
static void OpponentHandleFaintAnimation(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState)
{
@@ -1210,27 +1210,27 @@ static void OpponentHandleFaintAnimation(void)
}
}
static void OpponentHandlePaletteFade(void)
static void OpponentHandlePaletteFade(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleSuccessBallThrowAnim(void)
static void OpponentHandleSuccessBallThrowAnim(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleBallThrowAnim(void)
static void OpponentHandleBallThrowAnim(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandlePause(void)
static void OpponentHandlePause(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleMoveAnimation(void)
static void OpponentHandleMoveAnimation(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1245,7 +1245,7 @@ static void OpponentHandleMoveAnimation(void)
gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
else
{
@@ -1255,7 +1255,7 @@ static void OpponentHandleMoveAnimation(void)
}
}
static void OpponentDoMoveAnimation(void)
static void OpponentDoMoveAnimation(u32 battler)
{
u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
u8 multihit = gBattleBufferA[gActiveBattler][11];
@@ -1298,13 +1298,13 @@ static void OpponentDoMoveAnimation(void)
CopyAllBattleSpritesInvisibilities();
TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
break;
}
}
static void OpponentHandlePrintString(void)
static void OpponentHandlePrintString(u32 battler)
{
u16 *stringId;
@@ -1331,23 +1331,23 @@ static void OpponentHandlePrintString(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
static void OpponentHandlePrintSelectionString(void)
static void OpponentHandlePrintSelectionString(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleChooseAction(void)
static void OpponentHandleChooseAction(u32 battler)
{
AI_TrySwitchOrUseItem();
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleUnknownYesNoBox(void)
static void OpponentHandleUnknownYesNoBox(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleChooseMove(void)
static void OpponentHandleChooseMove(u32 battler)
{
u8 chosenMoveId;
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]);
@@ -1378,7 +1378,7 @@ static void OpponentHandleChooseMove(void)
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBattlerTarget << 8));
break;
}
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
else
{
@@ -1397,17 +1397,17 @@ static void OpponentHandleChooseMove(void)
else
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8));
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
static void OpponentHandleChooseItem(void)
static void OpponentHandleChooseItem(u32 battler)
{
BtlController_EmitOneReturnValue(1, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2));
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleChoosePokemon(void)
static void OpponentHandleChoosePokemon(u32 battler)
{
s32 chosenMonId;
@@ -1442,15 +1442,15 @@ static void OpponentHandleChoosePokemon(void)
}
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId;
BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleCmd23(void)
static void OpponentHandleCmd23(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleHealthBarUpdate(void)
static void OpponentHandleHealthBarUpdate(u32 battler)
{
s16 hpVal;
@@ -1473,12 +1473,12 @@ static void OpponentHandleHealthBarUpdate(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone;
}
static void OpponentHandleExpUpdate(void)
static void OpponentHandleExpUpdate(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleStatusIconUpdate(void)
static void OpponentHandleStatusIconUpdate(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1491,7 +1491,7 @@ static void OpponentHandleStatusIconUpdate(void)
}
}
static void OpponentHandleStatusAnimation(void)
static void OpponentHandleStatusAnimation(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1501,80 +1501,80 @@ static void OpponentHandleStatusAnimation(void)
}
}
static void OpponentHandleStatusXor(void)
static void OpponentHandleStatusXor(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleDataTransfer(void)
static void OpponentHandleDataTransfer(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleDMA3Transfer(void)
static void OpponentHandleDMA3Transfer(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandlePlayBGM(void)
static void OpponentHandlePlayBGM(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleCmd32(void)
static void OpponentHandleCmd32(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleTwoReturnValues(void)
static void OpponentHandleTwoReturnValues(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleChosenMonReturnValue(void)
static void OpponentHandleChosenMonReturnValue(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleOneReturnValue(void)
static void OpponentHandleOneReturnValue(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleOneReturnValue_Duplicate(void)
static void OpponentHandleOneReturnValue_Duplicate(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleCmd37(void)
static void OpponentHandleCmd37(u32 battler)
{
gUnusedControllerStruct.unk = 0;
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleCmd38(void)
static void OpponentHandleCmd38(u32 battler)
{
gUnusedControllerStruct.unk = gBattleBufferA[gActiveBattler][1];
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleCmd39(void)
static void OpponentHandleCmd39(u32 battler)
{
gUnusedControllerStruct.flag = 0;
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleCmd40(void)
static void OpponentHandleCmd40(u32 battler)
{
gUnusedControllerStruct.flag ^= 1;
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleHitAnimation(void)
static void OpponentHandleHitAnimation(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
else
{
@@ -1585,12 +1585,12 @@ static void OpponentHandleHitAnimation(void)
}
}
static void OpponentHandleCmd42(void)
static void OpponentHandleCmd42(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandlePlaySE(void)
static void OpponentHandlePlaySE(u32 battler)
{
s8 pan;
@@ -1599,31 +1599,31 @@ static void OpponentHandlePlaySE(void)
else
pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandlePlayFanfare(void)
static void OpponentHandlePlayFanfare(u32 battler)
{
PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleFaintingCry(void)
static void OpponentHandleFaintingCry(u32 battler)
{
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry_ByMode(species, 25, CRY_MODE_FAINT);
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleIntroSlide(void)
static void OpponentHandleIntroSlide(u32 battler)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
gIntroSlideFlags |= 1;
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleIntroTrainerBallThrow(void)
static void OpponentHandleIntroTrainerBallThrow(u32 battler)
{
u8 paletteNum;
u8 taskId;
@@ -1674,11 +1674,11 @@ static void Task_StartSendOutAnim(u8 taskId)
DestroyTask(taskId);
}
static void OpponentHandleDrawPartyStatusSummary(void)
static void OpponentHandleDrawPartyStatusSummary(u32 battler)
{
if (gBattleBufferA[gActiveBattler][1] && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
else
{
@@ -1706,38 +1706,38 @@ static void OpponentHandleDrawPartyStatusSummary(void)
}
}
static void EndDrawPartyStatusSummary(void)
static void EndDrawPartyStatusSummary(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer++ > 0x5C)
{
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusDelayTimer = 0;
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
}
static void OpponentHandleHidePartyStatusSummary(void)
static void OpponentHandleHidePartyStatusSummary(u32 battler)
{
if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown)
gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary;
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleEndBounceEffect(void)
static void OpponentHandleEndBounceEffect(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleSpriteInvisibility(void)
static void OpponentHandleSpriteInvisibility(u32 battler)
{
if (IsBattlerSpritePresent(gActiveBattler))
{
gSprites[gBattlerSpriteIds[gActiveBattler]].invisible = gBattleBufferA[gActiveBattler][1];
CopyBattleSpriteInvisibility(gActiveBattler);
}
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleBattleAnimation(void)
static void OpponentHandleBattleAnimation(u32 battler)
{
if (!IsBattleSEPlaying(gActiveBattler))
{
@@ -1745,23 +1745,23 @@ static void OpponentHandleBattleAnimation(void)
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
else
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
}
static void OpponentHandleLinkStandbyMsg(void)
static void OpponentHandleLinkStandbyMsg(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleResetActionMoveSelection(void)
static void OpponentHandleResetActionMoveSelection(u32 battler)
{
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentHandleCmd55(void)
static void OpponentHandleCmd55(u32 battler)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
{
@@ -1769,9 +1769,9 @@ static void OpponentHandleCmd55(void)
gMain.callback1 = gPreBattleCallback1;
SetMainCallback2(gMain.savedCallback);
}
OpponentBufferExecCompleted();
OpponentBufferExecCompleted(battler);
}
static void OpponentCmdEnd(void)
static void OpponentCmdEnd(u32 battler)
{
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -15,69 +15,69 @@
#include "constants/songs.h"
#include "constants/battle_anim.h"
static void SafariHandleGetMonData(void);
static void SafariHandleGetRawMonData(void);
static void SafariHandleSetMonData(void);
static void SafariHandleSetRawMonData(void);
static void SafariHandleLoadMonSprite(void);
static void SafariHandleSwitchInAnim(void);
static void SafariHandleReturnMonToBall(void);
static void SafariHandleDrawTrainerPic(void);
static void SafariHandleTrainerSlide(void);
static void SafariHandleTrainerSlideBack(void);
static void SafariHandleFaintAnimation(void);
static void SafariHandlePaletteFade(void);
static void SafariHandleSuccessBallThrowAnim(void);
static void SafariHandleBallThrowAnim(void);
static void SafariHandlePause(void);
static void SafariHandleMoveAnimation(void);
static void SafariHandlePrintString(void);
static void SafariHandlePrintSelectionString(void);
static void SafariHandleChooseAction(void);
static void SafariHandleUnknownYesNoBox(void);
static void SafariHandleChooseMove(void);
static void SafariHandleChooseItem(void);
static void SafariHandleChoosePokemon(void);
static void SafariHandleCmd23(void);
static void SafariHandleHealthBarUpdate(void);
static void SafariHandleExpUpdate(void);
static void SafariHandleStatusIconUpdate(void);
static void SafariHandleStatusAnimation(void);
static void SafariHandleStatusXor(void);
static void SafariHandleDataTransfer(void);
static void SafariHandleDMA3Transfer(void);
static void SafariHandlePlayBGM(void);
static void SafariHandleCmd32(void);
static void SafariHandleTwoReturnValues(void);
static void SafariHandleChosenMonReturnValue(void);
static void SafariHandleOneReturnValue(void);
static void SafariHandleOneReturnValue_Duplicate(void);
static void SafariHandleCmd37(void);
static void SafariHandleCmd38(void);
static void SafariHandleCmd39(void);
static void SafariHandleCmd40(void);
static void SafariHandleHitAnimation(void);
static void SafariHandleCmd42(void);
static void SafariHandlePlaySE(void);
static void SafariHandlePlayFanfareOrBGM(void);
static void SafariHandleFaintingCry(void);
static void SafariHandleIntroSlide(void);
static void SafariHandleIntroTrainerBallThrow(void);
static void SafariHandleDrawPartyStatusSummary(void);
static void SafariHandleHidePartyStatusSummary(void);
static void SafariHandleEndBounceEffect(void);
static void SafariHandleSpriteInvisibility(void);
static void SafariHandleBattleAnimation(void);
static void SafariHandleLinkStandbyMsg(void);
static void SafariHandleResetActionMoveSelection(void);
static void SafariHandleCmd55(void);
static void SafariCmdEnd(void);
static void SafariHandleGetMonData(u32 battler);
static void SafariHandleGetRawMonData(u32 battler);
static void SafariHandleSetMonData(u32 battler);
static void SafariHandleSetRawMonData(u32 battler);
static void SafariHandleLoadMonSprite(u32 battler);
static void SafariHandleSwitchInAnim(u32 battler);
static void SafariHandleReturnMonToBall(u32 battler);
static void SafariHandleDrawTrainerPic(u32 battler);
static void SafariHandleTrainerSlide(u32 battler);
static void SafariHandleTrainerSlideBack(u32 battler);
static void SafariHandleFaintAnimation(u32 battler);
static void SafariHandlePaletteFade(u32 battler);
static void SafariHandleSuccessBallThrowAnim(u32 battler);
static void SafariHandleBallThrowAnim(u32 battler);
static void SafariHandlePause(u32 battler);
static void SafariHandleMoveAnimation(u32 battler);
static void SafariHandlePrintString(u32 battler);
static void SafariHandlePrintSelectionString(u32 battler);
static void SafariHandleChooseAction(u32 battler);
static void SafariHandleUnknownYesNoBox(u32 battler);
static void SafariHandleChooseMove(u32 battler);
static void SafariHandleChooseItem(u32 battler);
static void SafariHandleChoosePokemon(u32 battler);
static void SafariHandleCmd23(u32 battler);
static void SafariHandleHealthBarUpdate(u32 battler);
static void SafariHandleExpUpdate(u32 battler);
static void SafariHandleStatusIconUpdate(u32 battler);
static void SafariHandleStatusAnimation(u32 battler);
static void SafariHandleStatusXor(u32 battler);
static void SafariHandleDataTransfer(u32 battler);
static void SafariHandleDMA3Transfer(u32 battler);
static void SafariHandlePlayBGM(u32 battler);
static void SafariHandleCmd32(u32 battler);
static void SafariHandleTwoReturnValues(u32 battler);
static void SafariHandleChosenMonReturnValue(u32 battler);
static void SafariHandleOneReturnValue(u32 battler);
static void SafariHandleOneReturnValue_Duplicate(u32 battler);
static void SafariHandleCmd37(u32 battler);
static void SafariHandleCmd38(u32 battler);
static void SafariHandleCmd39(u32 battler);
static void SafariHandleCmd40(u32 battler);
static void SafariHandleHitAnimation(u32 battler);
static void SafariHandleCmd42(u32 battler);
static void SafariHandlePlaySE(u32 battler);
static void SafariHandlePlayFanfareOrBGM(u32 battler);
static void SafariHandleFaintingCry(u32 battler);
static void SafariHandleIntroSlide(u32 battler);
static void SafariHandleIntroTrainerBallThrow(u32 battler);
static void SafariHandleDrawPartyStatusSummary(u32 battler);
static void SafariHandleHidePartyStatusSummary(u32 battler);
static void SafariHandleEndBounceEffect(u32 battler);
static void SafariHandleSpriteInvisibility(u32 battler);
static void SafariHandleBattleAnimation(u32 battler);
static void SafariHandleLinkStandbyMsg(u32 battler);
static void SafariHandleResetActionMoveSelection(u32 battler);
static void SafariHandleCmd55(u32 battler);
static void SafariCmdEnd(u32 battler);
static void SafariBufferRunCommand(void);
static void SafariBufferExecCompleted(void);
static void CompleteWhenChosePokeblock(void);
static void SafariBufferRunCommand(u32 battler);
static void SafariBufferExecCompleted(u32 battler);
static void CompleteWhenChosePokeblock(u32 battler);
static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) =
{
[CONTROLLER_GETMONDATA] = SafariHandleGetMonData,
[CONTROLLER_GETRAWMONDATA] = SafariHandleGetRawMonData,
@@ -123,7 +123,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
[CONTROLLER_HITANIMATION] = SafariHandleHitAnimation,
[CONTROLLER_CANTSWITCH] = SafariHandleCmd42,
[CONTROLLER_PLAYSE] = SafariHandlePlaySE,
[CONTROLLER_PLAYFANFAREORBGM] = SafariHandlePlayFanfareOrBGM,
[CONTROLLER_PLAYFANFAREORBGM] = SafariHandlePlayFanfareOrBGM,
[CONTROLLER_FAINTINGCRY] = SafariHandleFaintingCry,
[CONTROLLER_INTROSLIDE] = SafariHandleIntroSlide,
[CONTROLLER_INTROTRAINERBALLTHROW] = SafariHandleIntroTrainerBallThrow,
@@ -143,23 +143,23 @@ static void SafariDummy(void)
{
}
void SetControllerToSafari(void)
void SetControllerToSafari(u32 battler)
{
gBattlerControllerFuncs[gActiveBattler] = SafariBufferRunCommand;
}
static void SafariBufferRunCommand(void)
static void SafariBufferRunCommand(u32 battler)
{
if (gBattleControllerExecFlags & gBitTable[gActiveBattler])
{
if (gBattleBufferA[gActiveBattler][0] < NELEMS(sSafariBufferCommands))
sSafariBufferCommands[gBattleBufferA[gActiveBattler][0]]();
sSafariBufferCommands[gBattleBufferA[gActiveBattler][0]](battler);
else
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
}
static void HandleInputChooseAction(void)
static void HandleInputChooseAction(u32 battler)
{
if (JOY_NEW(A_BUTTON))
{
@@ -180,7 +180,7 @@ static void HandleInputChooseAction(void)
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_RUN, 0);
break;
}
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
else if (JOY_NEW(DPAD_LEFT))
{
@@ -224,25 +224,25 @@ static void HandleInputChooseAction(void)
}
}
static void CompleteOnBattlerSpriteCallbackDummy(void)
static void CompleteOnBattlerSpriteCallbackDummy(u32 battler)
{
if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void CompleteOnInactiveTextPrinter(void)
static void CompleteOnInactiveTextPrinter(u32 battler)
{
if (!IsTextPrinterActive(0))
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void CompleteOnHealthboxSpriteCallbackDummy(void)
static void CompleteOnHealthboxSpriteCallbackDummy(u32 battler)
{
if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void Safari_SetBattleEndCallbacks(void)
static void Safari_SetBattleEndCallbacks(u32 battler)
{
if (!gPaletteFade.active)
{
@@ -252,34 +252,34 @@ static void Safari_SetBattleEndCallbacks(void)
}
}
static void CompleteOnSpecialAnimDone(void)
static void CompleteOnSpecialAnimDone(u32 battler)
{
if (!gDoingBattleAnim || !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive)
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariOpenPokeblockCase(void)
static void SafariOpenPokeblockCase(u32 battler)
{
if (!gPaletteFade.active)
gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChosePokeblock;
}
static void CompleteWhenChosePokeblock(void)
static void CompleteWhenChosePokeblock(u32 battler)
{
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
}
static void CompleteOnFinishedBattleAnimation(void)
static void CompleteOnFinishedBattleAnimation(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive)
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariBufferExecCompleted(void)
static void SafariBufferExecCompleted(u32 battler)
{
gBattlerControllerFuncs[gActiveBattler] = SafariBufferRunCommand;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
@@ -296,48 +296,48 @@ static void SafariBufferExecCompleted(void)
}
// not used
static void CompleteOnFinishedStatusAnimation(void)
static void CompleteOnFinishedStatusAnimation(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive)
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleGetMonData(void)
static void SafariHandleGetMonData(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleGetRawMonData(void)
static void SafariHandleGetRawMonData(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleSetMonData(void)
static void SafariHandleSetMonData(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleSetRawMonData(void)
static void SafariHandleSetRawMonData(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleLoadMonSprite(void)
static void SafariHandleLoadMonSprite(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleSwitchInAnim(void)
static void SafariHandleSwitchInAnim(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleReturnMonToBall(void)
static void SafariHandleReturnMonToBall(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleDrawTrainerPic(void)
static void SafariHandleDrawTrainerPic(u32 battler)
{
DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler));
@@ -352,27 +352,27 @@ static void SafariHandleDrawTrainerPic(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy;
}
static void SafariHandleTrainerSlide(void)
static void SafariHandleTrainerSlide(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleTrainerSlideBack(void)
static void SafariHandleTrainerSlideBack(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleFaintAnimation(void)
static void SafariHandleFaintAnimation(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandlePaletteFade(void)
static void SafariHandlePaletteFade(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleSuccessBallThrowAnim(void)
static void SafariHandleSuccessBallThrowAnim(u32 battler)
{
gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS;
gDoingBattleAnim = TRUE;
@@ -380,7 +380,7 @@ static void SafariHandleSuccessBallThrowAnim(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
}
static void SafariHandleBallThrowAnim(void)
static void SafariHandleBallThrowAnim(u32 battler)
{
u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1];
@@ -390,17 +390,17 @@ static void SafariHandleBallThrowAnim(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone;
}
static void SafariHandlePause(void)
static void SafariHandlePause(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleMoveAnimation(void)
static void SafariHandleMoveAnimation(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandlePrintString(void)
static void SafariHandlePrintString(u32 battler)
{
u16 *stringId;
@@ -415,15 +415,15 @@ static void SafariHandlePrintString(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
}
static void SafariHandlePrintSelectionString(void)
static void SafariHandlePrintSelectionString(u32 battler)
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
SafariHandlePrintString();
SafariHandlePrintString(battler);
else
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void HandleChooseActionAfterDma3(void)
static void HandleChooseActionAfterDma3(u32 battler)
{
if (!IsDma3ManagerBusyWithBgCopy())
{
@@ -433,7 +433,7 @@ static void HandleChooseActionAfterDma3(void)
}
}
static void SafariHandleChooseAction(void)
static void SafariHandleChooseAction(u32 battler)
{
s32 i;
@@ -447,17 +447,17 @@ static void SafariHandleChooseAction(void)
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
}
static void SafariHandleUnknownYesNoBox(void)
static void SafariHandleUnknownYesNoBox(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleChooseMove(void)
static void SafariHandleChooseMove(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleChooseItem(void)
static void SafariHandleChooseItem(u32 battler)
{
s32 i;
@@ -466,113 +466,113 @@ static void SafariHandleChooseItem(void)
gBattlerInMenuId = gActiveBattler;
}
static void SafariHandleChoosePokemon(void)
static void SafariHandleChoosePokemon(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleCmd23(void)
static void SafariHandleCmd23(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleHealthBarUpdate(void)
static void SafariHandleHealthBarUpdate(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleExpUpdate(void)
static void SafariHandleExpUpdate(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleStatusIconUpdate(void)
static void SafariHandleStatusIconUpdate(u32 battler)
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_SAFARI_BALLS_TEXT);
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleStatusAnimation(void)
static void SafariHandleStatusAnimation(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleStatusXor(void)
static void SafariHandleStatusXor(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleDataTransfer(void)
static void SafariHandleDataTransfer(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleDMA3Transfer(void)
static void SafariHandleDMA3Transfer(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandlePlayBGM(void)
static void SafariHandlePlayBGM(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleCmd32(void)
static void SafariHandleCmd32(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleTwoReturnValues(void)
static void SafariHandleTwoReturnValues(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleChosenMonReturnValue(void)
static void SafariHandleChosenMonReturnValue(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleOneReturnValue(void)
static void SafariHandleOneReturnValue(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleOneReturnValue_Duplicate(void)
static void SafariHandleOneReturnValue_Duplicate(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleCmd37(void)
static void SafariHandleCmd37(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleCmd38(void)
static void SafariHandleCmd38(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleCmd39(void)
static void SafariHandleCmd39(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleCmd40(void)
static void SafariHandleCmd40(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleHitAnimation(void)
static void SafariHandleHitAnimation(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleCmd42(void)
static void SafariHandleCmd42(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandlePlaySE(void)
static void SafariHandlePlaySE(u32 battler)
{
s8 pan;
@@ -581,31 +581,31 @@ static void SafariHandlePlaySE(void)
else
pan = SOUND_PAN_TARGET;
PlaySE12WithPanning(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8), pan);
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandlePlayFanfareOrBGM(void)
static void SafariHandlePlayFanfareOrBGM(u32 battler)
{
PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleFaintingCry(void)
static void SafariHandleFaintingCry(u32 battler)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES);
PlayCry_Normal(species, 25);
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleIntroSlide(void)
static void SafariHandleIntroSlide(u32 battler)
{
HandleIntroSlide(gBattleBufferA[gActiveBattler][1]);
gIntroSlideFlags |= 1;
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleIntroTrainerBallThrow(void)
static void SafariHandleIntroTrainerBallThrow(u32 battler)
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_SAFARI_ALL_TEXT);
StartHealthboxSlideIn(gActiveBattler);
@@ -613,57 +613,57 @@ static void SafariHandleIntroTrainerBallThrow(void)
gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthboxSpriteCallbackDummy;
}
static void SafariHandleDrawPartyStatusSummary(void)
static void SafariHandleDrawPartyStatusSummary(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleHidePartyStatusSummary(void)
static void SafariHandleHidePartyStatusSummary(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleEndBounceEffect(void)
static void SafariHandleEndBounceEffect(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleSpriteInvisibility(void)
static void SafariHandleSpriteInvisibility(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleBattleAnimation(void)
static void SafariHandleBattleAnimation(u32 battler)
{
u8 animationId = gBattleBufferA[gActiveBattler][1];
u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument))
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
else
gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation;
}
static void SafariHandleLinkStandbyMsg(void)
static void SafariHandleLinkStandbyMsg(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleResetActionMoveSelection(void)
static void SafariHandleResetActionMoveSelection(u32 battler)
{
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
}
static void SafariHandleCmd55(void)
static void SafariHandleCmd55(u32 battler)
{
gBattleOutcome = gBattleBufferA[gActiveBattler][1];
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
SafariBufferExecCompleted();
SafariBufferExecCompleted(battler);
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
gBattlerControllerFuncs[gActiveBattler] = Safari_SetBattleEndCallbacks;
}
static void SafariCmdEnd(void)
static void SafariCmdEnd(u32 battler)
{
}

View File

@@ -237,7 +237,7 @@ void (*gPreBattleCallback1)(void);
void (*gBattleMainFunc)(void);
struct BattleResults gBattleResults;
u8 gLeveledUpInBattle;
void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(void);
void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(u32 battler);
u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
u8 gMultiUsePlayerCursor;
u8 gNumberOfMovesToChoose;
@@ -2523,7 +2523,7 @@ static void BattleMainCB1(void)
gBattleMainFunc();
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
gBattlerControllerFuncs[gActiveBattler]();
gBattlerControllerFuncs[gActiveBattler](gActiveBattler);
}
static void ClearSetBScriptingStruct(void)