summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_controller_link_partner.c203
1 files changed, 203 insertions, 0 deletions
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
new file mode 100644
index 000000000..62361ebef
--- /dev/null
+++ b/src/battle_controller_link_partner.c
@@ -0,0 +1,203 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_controllers.h"
+#include "battle_message.h"
+#include "battle_interface.h"
+#include "battle_anim.h"
+#include "battle_ai_script_commands.h"
+#include "pokemon.h"
+#include "link.h"
+#include "util.h"
+#include "main.h"
+#include "songs.h"
+#include "sound.h"
+#include "window.h"
+#include "m4a.h"
+#include "palette.h"
+#include "task.h"
+#include "text.h"
+#include "string_util.h"
+#include "bg.h"
+#include "reshow_battle_screen.h"
+#include "pokeball.h"
+
+extern u32 gBattleExecBuffer;
+extern u8 gActiveBank;
+extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
+extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
+extern u8 gNoOfAllBanks;
+extern bool8 gDoingBattleAnim;
+extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
+extern void (*gPreBattleCallback1)(void);
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
+extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
+extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
+extern struct SpriteTemplate gUnknown_0202499C;
+extern u16 gScriptItemId;
+extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
+extern u8 gBattleOutcome;
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
+extern u8 gBankInMenu;
+extern u16 gUnknown_020243FC;
+extern u8 gUnknown_03005D7C[BATTLE_BANKS_COUNT];
+extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
+extern u16 gPartnerTrainerId;
+extern u8 GetFrontierTrainerFrontSpriteId(u16 trainerId);
+extern u8 gBankTarget;
+extern u8 gAbsentBankFlags;
+extern u8 gUnknown_020244B4[];
+extern u32 gTransformedPersonalities[BATTLE_BANKS_COUNT];
+extern struct UnusedControllerStruct gUnknown_02022D0C;
+
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
+extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
+extern const struct BattleMove gBattleMoves[];
+
+extern void sub_81358F4(void);
+extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
+extern void sub_806A068(u16, u8);
+
+// this file's functions
+void LinkPartnerHandleGetMonData(void);
+void LinkPartnerHandleGetRawMonData(void);
+void LinkPartnerHandleSetMonData(void);
+void LinkPartnerHandleSetRawMonData(void);
+void LinkPartnerHandleLoadMonSprite(void);
+void LinkPartnerHandleSwitchInAnim(void);
+void LinkPartnerHandleReturnMonToBall(void);
+void LinkPartnerHandleDrawTrainerPic(void);
+void LinkPartnerHandleTrainerSlide(void);
+void LinkPartnerHandleTrainerSlideBack(void);
+void LinkPartnerHandleFaintAnimation(void);
+void LinkPartnerHandlePaletteFade(void);
+void LinkPartnerHandleSuccessBallThrowAnim(void);
+void LinkPartnerHandleBallThrowAnim(void);
+void LinkPartnerHandlePause(void);
+void LinkPartnerHandleMoveAnimation(void);
+void LinkPartnerHandlePrintString(void);
+void LinkPartnerHandlePrintStringPlayerOnly(void);
+void LinkPartnerHandleChooseAction(void);
+void LinkPartnerHandleUnknownYesNoBox(void);
+void LinkPartnerHandleChooseMove(void);
+void LinkPartnerHandleChooseItem(void);
+void LinkPartnerHandleChoosePokemon(void);
+void LinkPartnerHandleCmd23(void);
+void LinkPartnerHandleHealthBarUpdate(void);
+void LinkPartnerHandleExpUpdate(void);
+void LinkPartnerHandleStatusIconUpdate(void);
+void LinkPartnerHandleStatusAnimation(void);
+void LinkPartnerHandleStatusXor(void);
+void LinkPartnerHandleDataTransfer(void);
+void LinkPartnerHandleDMA3Transfer(void);
+void LinkPartnerHandlePlayBGM(void);
+void LinkPartnerHandleCmd32(void);
+void LinkPartnerHandleTwoReturnValues(void);
+void LinkPartnerHandleChosenMonReturnValue(void);
+void LinkPartnerHandleOneReturnValue(void);
+void LinkPartnerHandleOneReturnValue_Duplicate(void);
+void LinkPartnerHandleCmd37(void);
+void LinkPartnerHandleCmd38(void);
+void LinkPartnerHandleCmd39(void);
+void LinkPartnerHandleCmd40(void);
+void LinkPartnerHandleHitAnimation(void);
+void LinkPartnerHandleCmd42(void);
+void LinkPartnerHandleEffectivenessSound(void);
+void LinkPartnerHandlePlayFanfareOrBGM(void);
+void LinkPartnerHandleFaintingCry(void);
+void LinkPartnerHandleIntroSlide(void);
+void LinkPartnerHandleIntroTrainerBallThrow(void);
+void LinkPartnerHandleDrawPartyStatusSummary(void);
+void LinkPartnerHandleCmd49(void);
+void LinkPartnerHandleCmd50(void);
+void LinkPartnerHandleSpriteInvisibility(void);
+void LinkPartnerHandleBattleAnimation(void);
+void LinkPartnerHandleLinkStandbyMsg(void);
+void LinkPartnerHandleResetActionMoveSelection(void);
+void LinkPartnerHandleCmd55(void);
+void nullsub_113(void);
+
+void LinkPartnerBufferRunCommand(void);
+void LinkPartnerBufferExecCompleted(void);
+
+void (*const gLinkPartnerBufferCommands[CONTOLLER_CMDS_COUNT])(void) =
+{
+ LinkPartnerHandleGetMonData,
+ LinkPartnerHandleGetRawMonData,
+ LinkPartnerHandleSetMonData,
+ LinkPartnerHandleSetRawMonData,
+ LinkPartnerHandleLoadMonSprite,
+ LinkPartnerHandleSwitchInAnim,
+ LinkPartnerHandleReturnMonToBall,
+ LinkPartnerHandleDrawTrainerPic,
+ LinkPartnerHandleTrainerSlide,
+ LinkPartnerHandleTrainerSlideBack,
+ LinkPartnerHandleFaintAnimation,
+ LinkPartnerHandlePaletteFade,
+ LinkPartnerHandleSuccessBallThrowAnim,
+ LinkPartnerHandleBallThrowAnim,
+ LinkPartnerHandlePause,
+ LinkPartnerHandleMoveAnimation,
+ LinkPartnerHandlePrintString,
+ LinkPartnerHandlePrintStringPlayerOnly,
+ LinkPartnerHandleChooseAction,
+ LinkPartnerHandleUnknownYesNoBox,
+ LinkPartnerHandleChooseMove,
+ LinkPartnerHandleChooseItem,
+ LinkPartnerHandleChoosePokemon,
+ LinkPartnerHandleCmd23,
+ LinkPartnerHandleHealthBarUpdate,
+ LinkPartnerHandleExpUpdate,
+ LinkPartnerHandleStatusIconUpdate,
+ LinkPartnerHandleStatusAnimation,
+ LinkPartnerHandleStatusXor,
+ LinkPartnerHandleDataTransfer,
+ LinkPartnerHandleDMA3Transfer,
+ LinkPartnerHandlePlayBGM,
+ LinkPartnerHandleCmd32,
+ LinkPartnerHandleTwoReturnValues,
+ LinkPartnerHandleChosenMonReturnValue,
+ LinkPartnerHandleOneReturnValue,
+ LinkPartnerHandleOneReturnValue_Duplicate,
+ LinkPartnerHandleCmd37,
+ LinkPartnerHandleCmd38,
+ LinkPartnerHandleCmd39,
+ LinkPartnerHandleCmd40,
+ LinkPartnerHandleHitAnimation,
+ LinkPartnerHandleCmd42,
+ LinkPartnerHandleEffectivenessSound,
+ LinkPartnerHandlePlayFanfareOrBGM,
+ LinkPartnerHandleFaintingCry,
+ LinkPartnerHandleIntroSlide,
+ LinkPartnerHandleIntroTrainerBallThrow,
+ LinkPartnerHandleDrawPartyStatusSummary,
+ LinkPartnerHandleCmd49,
+ LinkPartnerHandleCmd50,
+ LinkPartnerHandleSpriteInvisibility,
+ LinkPartnerHandleBattleAnimation,
+ LinkPartnerHandleLinkStandbyMsg,
+ LinkPartnerHandleResetActionMoveSelection,
+ LinkPartnerHandleCmd55,
+ nullsub_113
+};
+
+void nullsub_112(void)
+{
+}
+
+void SetBankFuncToLinkPartnerBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = LinkPartnerBufferRunCommand;
+}
+
+void LinkPartnerBufferRunCommand(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(gLinkPartnerBufferCommands))
+ gLinkPartnerBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ LinkPartnerBufferExecCompleted();
+ }
+}