#ifndef GUARD_BATTLE_SETUP_H #define GUARD_BATTLE_SETUP_H /* the layout of the first byte can be confusing here isDoubleBattle is the least lsb. msb is in the mode. */ typedef union PACKED TrainerBattleParameter { struct PACKED _TrainerBattleParameter { u8 isDoubleBattle:1; u8 isRematch:1; u8 playMusicA:1; u8 playMusicB:1; u8 mode:4; u8 objEventLocalIdA; u16 opponentA; u8 *introTextA; u8 *defeatTextA; u8 *battleScriptRetAddrA; u8 objEventLocalIdB; u16 opponentB; u8 *introTextB; u8 *defeatTextB; u8 *battleScriptRetAddrB; u8 *victoryText; u8 *cannotBattleText; u16 rivalBattleFlags; } params; u8 data[sizeof(struct _TrainerBattleParameter)]; } TrainerBattleParameter; extern TrainerBattleParameter gTrainerBattleParameter; extern u16 gPartnerTrainerId; #define TRAINER_BATTLE_PARAM gTrainerBattleParameter.params void StartWildBattle(void); void StartDoubleWildBattle(void); void StartRoamerBattle(void); void StartOldManTutorialBattle(void); void BattleSetup_StartScriptedWildBattle(void); void BattleSetup_StartScriptedDoubleWildBattle(void); void StartMarowakBattle(void); void StartSouthernIslandBattle(void); void StartLegendaryBattle(void); void StartGroudonKyogreBattle(void); void StartRegiBattle(void); u8 BattleSetup_GetTerrainId(void); u8 BattleSetup_GetBattleTowerBattleTransition(void); void ResetTrainerOpponentIds(void); const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data); void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript); void ConfigureTwoTrainersBattle(u8 trainerObjEventId, const u8 *trainerScript); void SetUpTwoTrainersBattle(void); bool32 GetTrainerFlagFromScriptPointer(const u8 *data); void SetUpTrainerMovement(void); u8 GetTrainerBattleMode(void); u16 GetRivalBattleFlags(void); void SetBattledTrainerFlag(void); bool8 HasTrainerBeenFought(u16 trainerId); void SetTrainerFlag(u16 trainerId); void ClearTrainerFlag(u16 trainerId); void BattleSetup_StartTrainerBattle(void); void StartRematchBattle(void); void ShowTrainerIntroSpeech(void); const u8 *BattleSetup_GetScriptAddrAfterBattle(void); const u8 *BattleSetup_GetTrainerPostBattleScript(void); void ShowTrainerCantBattleSpeech(void); void PlayTrainerEncounterMusic(void); const u8 *GetTrainerALoseText(void); const u8 *GetTrainerBLoseText(void); const u8 *GetTrainerWonSpeech(void); void BattleSetup_StartTrainerBattle_Debug(void); u8 GetWildBattleTransition(void); u8 GetTrainerBattleTransition(void); void TrainerBattleLoadArgs(const u8 *data); #endif // GUARD_BATTLE_SETUP_H