diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2017-10-25 16:24:17 +0200 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2017-10-25 16:24:17 +0200 |
commit | 91b010299f13125b0424d13f8e8119c40266df2c (patch) | |
tree | 3417edc46b4f4cd761c0e90821ee9bf5894ca82e /src | |
parent | 3ece244246cbd8aa689f3e471bb0e1cb1cf0d8f7 (diff) |
start recorded opponent controller
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_controller_recorded_opponent.c | 208 |
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(); + } +} |