pokeemerald/src/battle_controller_recorded_opponent.c

209 lines
7.6 KiB
C
Raw Normal View History

2017-10-25 16:24:17 +02:00
#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();
}
}