summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2017-10-25 16:24:17 +0200
committerDizzyEggg <jajkodizzy@wp.pl>2017-10-25 16:24:17 +0200
commit91b010299f13125b0424d13f8e8119c40266df2c (patch)
tree3417edc46b4f4cd761c0e90821ee9bf5894ca82e /src
parent3ece244246cbd8aa689f3e471bb0e1cb1cf0d8f7 (diff)
start recorded opponent controller
Diffstat (limited to 'src')
-rw-r--r--src/battle_controller_recorded_opponent.c208
1 files changed, 208 insertions, 0 deletions
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
new file mode 100644
index 000000000..9cfd821f5
--- /dev/null
+++ b/src/battle_controller_recorded_opponent.c
@@ -0,0 +1,208 @@
+#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 "battle_link_817C95C.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 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 MusicPlayerInfo gMPlay_BGM;
+extern struct UnusedControllerStruct gUnknown_02022D0C;
+extern u16 gTrainerBattleOpponent_A;
+extern u16 gTrainerBattleOpponent_B;
+
+extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
+extern const struct CompressedSpritePalette gTrainerBackPicPaletteTable[];
+extern const struct BattleMove gBattleMoves[];
+extern const u8 gUnknown_0831F578[];
+
+extern void sub_8172EF0(u8 bank, struct Pokemon *mon);
+extern void sub_806A068(u16, u8);
+extern void sub_81851A8(u8 *);
+extern u16 sub_8068B48(void);
+
+// this file's functions
+void RecordedOpponentHandleGetMonData(void);
+void RecordedOpponentHandleGetRawMonData(void);
+void RecordedOpponentHandleSetMonData(void);
+void RecordedOpponentHandleSetRawMonData(void);
+void RecordedOpponentHandleLoadMonSprite(void);
+void RecordedOpponentHandleSwitchInAnim(void);
+void RecordedOpponentHandleReturnMonToBall(void);
+void RecordedOpponentHandleDrawTrainerPic(void);
+void RecordedOpponentHandleTrainerSlide(void);
+void RecordedOpponentHandleTrainerSlideBack(void);
+void RecordedOpponentHandleFaintAnimation(void);
+void RecordedOpponentHandlePaletteFade(void);
+void RecordedOpponentHandleSuccessBallThrowAnim(void);
+void RecordedOpponentHandleBallThrowAnim(void);
+void RecordedOpponentHandlePause(void);
+void RecordedOpponentHandleMoveAnimation(void);
+void RecordedOpponentHandlePrintString(void);
+void RecordedOpponentHandlePrintStringPlayerOnly(void);
+void RecordedOpponentHandleChooseAction(void);
+void RecordedOpponentHandleUnknownYesNoBox(void);
+void RecordedOpponentHandleChooseMove(void);
+void RecordedOpponentHandleChooseItem(void);
+void RecordedOpponentHandleChoosePokemon(void);
+void RecordedOpponentHandleCmd23(void);
+void RecordedOpponentHandleHealthBarUpdate(void);
+void RecordedOpponentHandleExpUpdate(void);
+void RecordedOpponentHandleStatusIconUpdate(void);
+void RecordedOpponentHandleStatusAnimation(void);
+void RecordedOpponentHandleStatusXor(void);
+void RecordedOpponentHandleDataTransfer(void);
+void RecordedOpponentHandleDMA3Transfer(void);
+void RecordedOpponentHandlePlayBGM(void);
+void RecordedOpponentHandleCmd32(void);
+void RecordedOpponentHandleTwoReturnValues(void);
+void RecordedOpponentHandleChosenMonReturnValue(void);
+void RecordedOpponentHandleOneReturnValue(void);
+void RecordedOpponentHandleOneReturnValue_Duplicate(void);
+void RecordedOpponentHandleCmd37(void);
+void RecordedOpponentHandleCmd38(void);
+void RecordedOpponentHandleCmd39(void);
+void RecordedOpponentHandleCmd40(void);
+void RecordedOpponentHandleHitAnimation(void);
+void RecordedOpponentHandleCmd42(void);
+void RecordedOpponentHandleEffectivenessSound(void);
+void RecordedOpponentHandlePlayFanfareOrBGM(void);
+void RecordedOpponentHandleFaintingCry(void);
+void RecordedOpponentHandleIntroSlide(void);
+void RecordedOpponentHandleIntroTrainerBallThrow(void);
+void RecordedOpponentHandleDrawPartyStatusSummary(void);
+void RecordedOpponentHandleCmd49(void);
+void RecordedOpponentHandleCmd50(void);
+void RecordedOpponentHandleSpriteInvisibility(void);
+void RecordedOpponentHandleBattleAnimation(void);
+void RecordedOpponentHandleLinkStandbyMsg(void);
+void RecordedOpponentHandleResetActionMoveSelection(void);
+void RecordedOpponentHandleCmd55(void);
+void nullsub_119(void);
+
+void RecordedOpponentBufferRunCommand(void);
+void RecordedOpponentBufferExecCompleted(void);
+
+void (*const gRecordedOpponentBufferCommands[CONTOLLER_CMDS_COUNT])(void) =
+{
+ RecordedOpponentHandleGetMonData,
+ RecordedOpponentHandleGetRawMonData,
+ RecordedOpponentHandleSetMonData,
+ RecordedOpponentHandleSetRawMonData,
+ RecordedOpponentHandleLoadMonSprite,
+ RecordedOpponentHandleSwitchInAnim,
+ RecordedOpponentHandleReturnMonToBall,
+ RecordedOpponentHandleDrawTrainerPic,
+ RecordedOpponentHandleTrainerSlide,
+ RecordedOpponentHandleTrainerSlideBack,
+ RecordedOpponentHandleFaintAnimation,
+ RecordedOpponentHandlePaletteFade,
+ RecordedOpponentHandleSuccessBallThrowAnim,
+ RecordedOpponentHandleBallThrowAnim,
+ RecordedOpponentHandlePause,
+ RecordedOpponentHandleMoveAnimation,
+ RecordedOpponentHandlePrintString,
+ RecordedOpponentHandlePrintStringPlayerOnly,
+ RecordedOpponentHandleChooseAction,
+ RecordedOpponentHandleUnknownYesNoBox,
+ RecordedOpponentHandleChooseMove,
+ RecordedOpponentHandleChooseItem,
+ RecordedOpponentHandleChoosePokemon,
+ RecordedOpponentHandleCmd23,
+ RecordedOpponentHandleHealthBarUpdate,
+ RecordedOpponentHandleExpUpdate,
+ RecordedOpponentHandleStatusIconUpdate,
+ RecordedOpponentHandleStatusAnimation,
+ RecordedOpponentHandleStatusXor,
+ RecordedOpponentHandleDataTransfer,
+ RecordedOpponentHandleDMA3Transfer,
+ RecordedOpponentHandlePlayBGM,
+ RecordedOpponentHandleCmd32,
+ RecordedOpponentHandleTwoReturnValues,
+ RecordedOpponentHandleChosenMonReturnValue,
+ RecordedOpponentHandleOneReturnValue,
+ RecordedOpponentHandleOneReturnValue_Duplicate,
+ RecordedOpponentHandleCmd37,
+ RecordedOpponentHandleCmd38,
+ RecordedOpponentHandleCmd39,
+ RecordedOpponentHandleCmd40,
+ RecordedOpponentHandleHitAnimation,
+ RecordedOpponentHandleCmd42,
+ RecordedOpponentHandleEffectivenessSound,
+ RecordedOpponentHandlePlayFanfareOrBGM,
+ RecordedOpponentHandleFaintingCry,
+ RecordedOpponentHandleIntroSlide,
+ RecordedOpponentHandleIntroTrainerBallThrow,
+ RecordedOpponentHandleDrawPartyStatusSummary,
+ RecordedOpponentHandleCmd49,
+ RecordedOpponentHandleCmd50,
+ RecordedOpponentHandleSpriteInvisibility,
+ RecordedOpponentHandleBattleAnimation,
+ RecordedOpponentHandleLinkStandbyMsg,
+ RecordedOpponentHandleResetActionMoveSelection,
+ RecordedOpponentHandleCmd55,
+ nullsub_119
+};
+
+void nullsub_70(void)
+{
+}
+
+void SetBankFuncToRecordedOpponentBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = RecordedOpponentBufferRunCommand;
+}
+
+void RecordedOpponentBufferRunCommand(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] < ARRAY_COUNT(gRecordedOpponentBufferCommands))
+ gRecordedOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ RecordedOpponentBufferExecCompleted();
+ }
+}