This commit is contained in:
jiangzhengwenjz
2019-10-21 03:55:14 +08:00
parent b0400ef6ba
commit cfe2a27b9c
6 changed files with 187 additions and 106 deletions
+1 -1
View File
@@ -1937,7 +1937,7 @@ _080D8214:
_080D8230: .4byte gBattleTypeFlags _080D8230: .4byte gBattleTypeFlags
_080D8234: .4byte gStringVar4 _080D8234: .4byte gStringVar4
_080D8238: _080D8238:
bl GetTrainerBLoseText bl GetTrainerWonSpeech
adds r4, r0, 0 adds r4, r0, 0
b _080D8382 b _080D8382
_080D8240: _080D8240:
+1 -23
View File
@@ -13,29 +13,7 @@ gUnknown_83C68E4:: @ 83C68E4
gUnknown_83C68EC:: @ 83C68EC gUnknown_83C68EC:: @ 83C68EC
.incbin "baserom.gba", 0x3C68EC, 0x4 .incbin "baserom.gba", 0x3C68EC, 0x4
sBattleTransitionTable_Wild:: @ 83C68F0 .section .rodata.83C6AB0
.incbin "baserom.gba", 0x3C68F0, 0x8
sBattleTransitionTable_Trainer:: @ 83C68F8
.incbin "baserom.gba", 0x3C68F8, 0x8
sOrdinaryBattleParams:: @ 83C6900
.incbin "baserom.gba", 0x3C6900, 0x48
sContinueScriptBattleParams:: @ 83C6948
.incbin "baserom.gba", 0x3C6948, 0x48
sDoubleBattleParams:: @ 83C6990
.incbin "baserom.gba", 0x3C6990, 0x48
sOrdinaryNoIntroBattleParams:: @ 83C69D8
.incbin "baserom.gba", 0x3C69D8, 0x48
gUnknown_83C6A20:: @ 83C6A20
.incbin "baserom.gba", 0x3C6A20, 0x48
sContinueScriptDoubleBattleParams:: @ 83C6A68
.incbin "baserom.gba", 0x3C6A68, 0x48
gUnknown_83C6AB0:: @ 83C6AB0 gUnknown_83C6AB0:: @ 83C6AB0
.incbin "baserom.gba", 0x3C6AB0, 0x8 .incbin "baserom.gba", 0x3C6AB0, 0x8
+26 -12
View File
@@ -3,22 +3,36 @@
#include "global.h" #include "global.h"
void BattleSetup_StartScriptedWildBattle(void);
u8 BattleSetup_GetTerrainId(void);
const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
void BattleSetup_StartBattlePikeWildBattle(void);
void BattleSetup_StartWildBattle(void); void BattleSetup_StartWildBattle(void);
void BattleSetup_StartRoamerBattle(void); void BattleSetup_StartRoamerBattle(void);
void BattleSetup_StartOldManTutorialBattle(void);
u8 HasTrainerBeenFought(u16); void BattleSetup_StartScriptedWildBattle(void);
void SetTrainerFlag(u16); void BattleSetup_StartMarowakBattle(void);
void ClearTrainerFlag(u16); void sub_807F998(void);
void BattleSetup_StartTrainerBattle(void); void BattleSetup_StartLegendaryBattle(void);
const u8 *BattleSetup_GetScriptAddrAfterBattle(void); void BattleSetup_StartIceCaveBattle(void);
const u8 *BattleSetup_GetTrainerPostBattleScript(void); void sub_807FABC(void);
void SetBattledTrainerFlag(void); u8 BattleSetup_GetTerrainId(void);
u8 sub_8080060(void); u8 sub_8080060(void);
const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerScript);
bool32 GetTrainerFlagFromScriptPointer(const u8 *data);
void SetUpTrainerMovement(void);
u8 GetTrainerBattleMode(void); u8 GetTrainerBattleMode(void);
u16 sub_80803D8(void); u16 sub_80803D8(void);
u16 GetTrainerFlag(void);
void SetBattledTrainerFlag(void);
bool8 HasTrainerBeenFought(u16 trainerId);
void SetTrainerFlag(u16 trainerId);
void ClearTrainerFlag(u16 trainerId);
void BattleSetup_StartTrainerBattle(void);
void BattleSetup_StartRematchBattle(void);
void ShowTrainerIntroSpeech(void);
const u8 *BattleSetup_GetScriptAddrAfterBattle(void);
const u8 *BattleSetup_GetTrainerPostBattleScript(void);
void ShowTrainerCantBattleSpeech(void);
void SetUpTrainerEncounterMusic(void);
const u8 *GetTrainerALoseText(void);
const u8 *GetTrainerWonSpeech(void);
#endif // GUARD_BATTLE_SETUP_H #endif // GUARD_BATTLE_SETUP_H
+2
View File
@@ -16,4 +16,6 @@ void ExitSafariMode(void);
bool8 SafariZoneTakeStep(void); bool8 SafariZoneTakeStep(void);
void SafariZoneRetirePrompt(void); void SafariZoneRetirePrompt(void);
void CB2_EndSafariBattle(void);
#endif // GUARD_SAFARI_ZONE_H #endif // GUARD_SAFARI_ZONE_H
+2
View File
@@ -423,6 +423,8 @@ SECTIONS {
src/title_screen.o(.rodata); src/title_screen.o(.rodata);
data/field_weather.o(.rodata); data/field_weather.o(.rodata);
data/data_835B488.o(.rodata); data/data_835B488.o(.rodata);
src/battle_setup.o(.rodata);
data/data_835B488.o(.rodata.83C6AB0);
src/item_menu_icons.o(.rodata); src/item_menu_icons.o(.rodata);
src/battle_anim_mon_movement.o(.rodata); src/battle_anim_mon_movement.o(.rodata);
src/item.o(.rodata); src/item.o(.rodata);
+155 -70
View File
@@ -56,44 +56,129 @@ struct TrainerBattleParameter
u8 ptrType; u8 ptrType;
}; };
void BattleSetup_StartSafariBattle(void); static void DoSafariBattle(void);
void BattleSetup_StartGhostBattle(void); static void DoGhostBattle(void);
void BattleSetup_StandardWildBattle(void); static void DoStandardWildBattle(void);
void CB2_EndWildBattle(void); static void CB2_EndWildBattle(void);
u8 GetWildBattleTransition(void); static u8 GetWildBattleTransition(void);
void CB2_EndSafariBattle(void); static u8 GetTrainerBattleTransition(void);
u8 GetTrainerBattleTransition(void); static void CB2_EndScriptedWildBattle(void);
void CB2_EndScriptedWildBattle(void); static void CB2_EndMarowakBattle(void);
void CB2_EndMarowakBattle(void); static bool32 IsPlayerDefeated(u32 battleOutcome);
bool32 IsPlayerDefeated(u32 battleOutcome); static void CB2_EndTrainerBattle(void);
void CB2_EndTrainerBattle(void); static const u8 *GetIntroSpeechOfApproachingTrainer(void);
const u8 *GetIntroSpeechOfApproachingTrainer(void); static const u8 *GetTrainerCantBattleSpeech(void);
const u8 *GetTrainerCantBattleSpeech(void);
EWRAM_DATA u16 sTrainerBattleMode = 0; static EWRAM_DATA u16 sTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleOpponent_A = 0; EWRAM_DATA u16 gTrainerBattleOpponent_A = 0;
EWRAM_DATA u16 sTrainerEventObjectLocalId = 0; static EWRAM_DATA u16 sTrainerEventObjectLocalId = 0;
EWRAM_DATA u8 *sTrainerAIntroSpeech = NULL; static EWRAM_DATA u8 *sTrainerAIntroSpeech = NULL;
EWRAM_DATA u8 *sTrainerADefeatSpeech = NULL; static EWRAM_DATA u8 *sTrainerADefeatSpeech = NULL;
EWRAM_DATA u8 *sTrainerBDefeatSpeech = NULL; static EWRAM_DATA u8 *sTrainerVictorySpeech = NULL;
EWRAM_DATA u8 *sTrainerCannotBattleSpeech = NULL; static EWRAM_DATA u8 *sTrainerCannotBattleSpeech = NULL;
EWRAM_DATA u8 *sTrainerBattleEndScript = NULL; static EWRAM_DATA u8 *sTrainerBattleEndScript = NULL;
EWRAM_DATA u8 *sTrainerABattleScriptRetAddr = NULL; static EWRAM_DATA u8 *sTrainerABattleScriptRetAddr = NULL;
EWRAM_DATA u16 gUnknown_20386CC = 0; static EWRAM_DATA u16 gUnknown_20386CC = 0;
static const u8 sBattleTransitionTable_Wild[][2] =
{
B_TRANSITION_SLICED_SCREEN, B_TRANSITION_WHITEFADE_IN_STRIPES,
B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES,
B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES,
B_TRANSITION_BLACK_WAVE_TO_RIGHT, B_TRANSITION_FULLSCREEN_WAVE,
};
static const u8 sBattleTransitionTable_Trainer[][2] =
{
B_TRANSITION_SLIDING_POKEBALLS, B_TRANSITION_BLACK_DOODLES,
B_TRANSITION_HORIZONTAL_CORRUGATE, B_TRANSITION_BIG_POKEBALL,
B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES,
B_TRANSITION_DISTORTED_WAVE, B_TRANSITION_FULLSCREEN_WAVE,
};
static const struct TrainerBattleParameter sOrdinaryBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
static const struct TrainerBattleParameter sContinueScriptBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
static const struct TrainerBattleParameter sDoubleBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
static const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
static const struct TrainerBattleParameter sTutorialBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&gUnknown_20386CC, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
static const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[] =
{
{&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
{&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerEventObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
{&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
{&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT},
{&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
extern const u8 sBattleTransitionTable_Wild[][2];
extern const u8 sBattleTransitionTable_Trainer[][2];
extern const struct TrainerBattleParameter sOrdinaryBattleParams[];
extern const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[];
extern const struct TrainerBattleParameter sDoubleBattleParams[];
extern const struct TrainerBattleParameter sContinueScriptBattleParams[];
extern const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[];
extern const struct TrainerBattleParameter gUnknown_83C6A20[];
#define tState data[0] #define tState data[0]
#define tTransition data[1] #define tTransition data[1]
void Task_BattleStart(u8 taskId) static void Task_BattleStart(u8 taskId)
{ {
s16 *data = gTasks[taskId].data; s16 *data = gTasks[taskId].data;
@@ -121,7 +206,7 @@ void Task_BattleStart(u8 taskId)
} }
} }
void CreateBattleStartTask(u8 transition, u16 song) // song == 0 means default music for current map static void CreateBattleStartTask(u8 transition, u16 song) // song == 0 means default music for current map
{ {
u8 taskId = CreateTask(Task_BattleStart, 1); u8 taskId = CreateTask(Task_BattleStart, 1);
@@ -129,7 +214,7 @@ void CreateBattleStartTask(u8 transition, u16 song) // song == 0 means default m
PlayMapChosenOrBattleBGM(song); PlayMapChosenOrBattleBGM(song);
} }
bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum) static bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum)
{ {
if (mapGroup == MAP_GROUP(POKEMON_TOWER_1F) if (mapGroup == MAP_GROUP(POKEMON_TOWER_1F)
&& ((u16)(mapNum - MAP_NUM(POKEMON_TOWER_1F)) <= 6) && ((u16)(mapNum - MAP_NUM(POKEMON_TOWER_1F)) <= 6)
@@ -142,14 +227,14 @@ bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum)
void BattleSetup_StartWildBattle(void) void BattleSetup_StartWildBattle(void)
{ {
if (GetSafariZoneFlag()) if (GetSafariZoneFlag())
BattleSetup_StartSafariBattle(); DoSafariBattle();
else if (CheckSilphScopeInPokemonTower(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum)) else if (CheckSilphScopeInPokemonTower(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
BattleSetup_StartGhostBattle(); DoGhostBattle();
else else
BattleSetup_StandardWildBattle(); DoStandardWildBattle();
} }
void BattleSetup_StandardWildBattle(void) static void DoStandardWildBattle(void)
{ {
ScriptContext2_Enable(); ScriptContext2_Enable();
FreezeEventObjects(); FreezeEventObjects();
@@ -173,7 +258,7 @@ void BattleSetup_StartRoamerBattle(void)
IncrementGameStat(GAME_STAT_WILD_BATTLES); IncrementGameStat(GAME_STAT_WILD_BATTLES);
} }
void BattleSetup_StartSafariBattle(void) static void DoSafariBattle(void)
{ {
ScriptContext2_Enable(); ScriptContext2_Enable();
FreezeEventObjects(); FreezeEventObjects();
@@ -183,7 +268,7 @@ void BattleSetup_StartSafariBattle(void)
CreateBattleStartTask(GetWildBattleTransition(), 0); CreateBattleStartTask(GetWildBattleTransition(), 0);
} }
void BattleSetup_StartGhostBattle(void) static void DoGhostBattle(void)
{ {
ScriptContext2_Enable(); ScriptContext2_Enable();
FreezeEventObjects(); FreezeEventObjects();
@@ -196,7 +281,7 @@ void BattleSetup_StartGhostBattle(void)
IncrementGameStat(GAME_STAT_WILD_BATTLES); IncrementGameStat(GAME_STAT_WILD_BATTLES);
} }
void DoTrainerBattle(void) static void DoTrainerBattle(void)
{ {
CreateBattleStartTask(GetTrainerBattleTransition(), 0); CreateBattleStartTask(GetTrainerBattleTransition(), 0);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES); IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
@@ -306,14 +391,14 @@ void sub_807FABC(void)
} }
// not used // not used
void sub_807FAF8(void) static void sub_807FAF8(void)
{ {
LoadPlayerParty(); LoadPlayerParty();
CB2_EndWildBattle(); CB2_EndWildBattle();
} }
//not used // not used
void sub_807FB08(void) static void sub_807FB08(void)
{ {
ScriptContext2_Enable(); ScriptContext2_Enable();
FreezeEventObjects(); FreezeEventObjects();
@@ -324,7 +409,7 @@ void sub_807FB08(void)
CreateBattleStartTask(GetWildBattleTransition(), 0); CreateBattleStartTask(GetWildBattleTransition(), 0);
} }
void CB2_EndWildBattle(void) static void CB2_EndWildBattle(void)
{ {
CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
ResetOamRange(0, 128); ResetOamRange(0, 128);
@@ -339,7 +424,7 @@ void CB2_EndWildBattle(void)
} }
} }
void CB2_EndScriptedWildBattle(void) static void CB2_EndScriptedWildBattle(void)
{ {
CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
ResetOamRange(0, 128); ResetOamRange(0, 128);
@@ -349,7 +434,7 @@ void CB2_EndScriptedWildBattle(void)
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
} }
void CB2_EndMarowakBattle(void) static void CB2_EndMarowakBattle(void)
{ {
CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE); CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
ResetOamRange(0, 128); ResetOamRange(0, 128);
@@ -418,7 +503,7 @@ u8 BattleSetup_GetTerrainId(void)
return BATTLE_TERRAIN_PLAIN; return BATTLE_TERRAIN_PLAIN;
} }
u8 GetBattleTransitionTypeByMap(void) static u8 GetBattleTransitionTypeByMap(void)
{ {
u16 tileBehavior; u16 tileBehavior;
s16 x, y; s16 x, y;
@@ -442,7 +527,7 @@ u8 GetBattleTransitionTypeByMap(void)
return B_TRANSITION_BIG_POKEBALL; return B_TRANSITION_BIG_POKEBALL;
} }
u16 GetSumOfPlayerPartyLevel(u8 numMons) static u16 GetSumOfPlayerPartyLevel(u8 numMons)
{ {
u8 sum = 0; u8 sum = 0;
s32 i; s32 i;
@@ -461,7 +546,7 @@ u16 GetSumOfPlayerPartyLevel(u8 numMons)
return sum; return sum;
} }
u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons)
{ {
u8 i; u8 i;
u8 sum; u8 sum;
@@ -512,7 +597,7 @@ u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons)
return sum; return sum;
} }
u8 GetWildBattleTransition(void) static u8 GetWildBattleTransition(void)
{ {
u8 transitionType = GetBattleTransitionTypeByMap(); u8 transitionType = GetBattleTransitionTypeByMap();
u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL); u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
@@ -524,7 +609,7 @@ u8 GetWildBattleTransition(void)
return sBattleTransitionTable_Wild[transitionType][1]; return sBattleTransitionTable_Wild[transitionType][1];
} }
u8 GetTrainerBattleTransition(void) static u8 GetTrainerBattleTransition(void)
{ {
u8 minPartyCount; u8 minPartyCount;
u8 transitionType; u8 transitionType;
@@ -571,27 +656,27 @@ u8 sub_8080060(void)
return 3; return 3;
} }
u32 TrainerBattleLoadArg32(const u8 *ptr) static u32 TrainerBattleLoadArg32(const u8 *ptr)
{ {
return T1_READ_32(ptr); return T1_READ_32(ptr);
} }
u16 TrainerBattleLoadArg16(const u8 *ptr) static u16 TrainerBattleLoadArg16(const u8 *ptr)
{ {
return T1_READ_16(ptr); return T1_READ_16(ptr);
} }
u8 TrainerBattleLoadArg8(const u8 *ptr) static u8 TrainerBattleLoadArg8(const u8 *ptr)
{ {
return T1_READ_8(ptr); return T1_READ_8(ptr);
} }
u16 GetTrainerAFlag(void) static u16 GetTrainerAFlag(void)
{ {
return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_A; return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_A;
} }
bool32 IsPlayerDefeated(u32 battleOutcome) static bool32 IsPlayerDefeated(u32 battleOutcome)
{ {
switch (battleOutcome) switch (battleOutcome)
{ {
@@ -609,14 +694,14 @@ bool32 IsPlayerDefeated(u32 battleOutcome)
} }
} }
void InitTrainerBattleVariables(void) static void InitTrainerBattleVariables(void)
{ {
sTrainerBattleMode = 0; sTrainerBattleMode = 0;
gTrainerBattleOpponent_A = 0; gTrainerBattleOpponent_A = 0;
sTrainerEventObjectLocalId = 0; sTrainerEventObjectLocalId = 0;
sTrainerAIntroSpeech = NULL; sTrainerAIntroSpeech = NULL;
sTrainerADefeatSpeech = NULL; sTrainerADefeatSpeech = NULL;
sTrainerBDefeatSpeech = NULL; sTrainerVictorySpeech = NULL;
sTrainerCannotBattleSpeech = NULL; sTrainerCannotBattleSpeech = NULL;
sTrainerBattleEndScript = NULL; sTrainerBattleEndScript = NULL;
sTrainerABattleScriptRetAddr = NULL; sTrainerABattleScriptRetAddr = NULL;
@@ -638,12 +723,12 @@ static inline void SetU32(void *ptr, u32 value)
*(u32 *)(ptr) = value; *(u32 *)(ptr) = value;
} }
static inline void SetPtr(const void *ptr, const void* value) static inline void SetPtr(const void *ptr, const void *value)
{ {
*(const void **)(ptr) = value; *(const void **)(ptr) = value;
} }
void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data) static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data)
{ {
while (1) while (1)
{ {
@@ -678,7 +763,7 @@ void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8
} }
} }
void SetMapVarsToTrainer(void) static void SetMapVarsToTrainer(void)
{ {
if (sTrainerEventObjectLocalId != 0) if (sTrainerEventObjectLocalId != 0)
{ {
@@ -723,7 +808,7 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A); gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
return EventScript_TryDoRematchBattle; return EventScript_TryDoRematchBattle;
case TRAINER_BATTLE_TUTORIAL: case TRAINER_BATTLE_TUTORIAL:
TrainerBattleLoadArgs(gUnknown_83C6A20, data); TrainerBattleLoadArgs(sTutorialBattleParams, data);
return EventScript_DoTrainerBattle; return EventScript_DoTrainerBattle;
default: default:
TrainerBattleLoadArgs(sOrdinaryBattleParams, data); TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
@@ -776,7 +861,7 @@ void SetBattledTrainerFlag(void)
} }
// not used // not used
void SetBattledTrainerFlag2(void) static void SetBattledTrainerFlag2(void)
{ {
FlagSet(GetTrainerAFlag()); FlagSet(GetTrainerAFlag());
} }
@@ -807,7 +892,7 @@ void BattleSetup_StartTrainerBattle(void)
ScriptContext1_Stop(); ScriptContext1_Stop();
} }
void CB2_EndTrainerBattle(void) static void CB2_EndTrainerBattle(void)
{ {
if (sTrainerBattleMode == TRAINER_BATTLE_TUTORIAL) if (sTrainerBattleMode == TRAINER_BATTLE_TUTORIAL)
{ {
@@ -855,7 +940,7 @@ void CB2_EndTrainerBattle(void)
} }
} }
void CB2_EndRematchBattle(void) static void CB2_EndRematchBattle(void)
{ {
if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE)
{ {
@@ -941,7 +1026,7 @@ void SetUpTrainerEncounterMusic(void)
} }
} }
const u8 *ReturnEmptyStringIfNull(const u8 *string) static const u8 *ReturnEmptyStringIfNull(const u8 *string)
{ {
if (string == NULL) if (string == NULL)
return gString_Dummy; return gString_Dummy;
@@ -949,7 +1034,7 @@ const u8 *ReturnEmptyStringIfNull(const u8 *string)
return string; return string;
} }
const u8 *GetIntroSpeechOfApproachingTrainer(void) static const u8 *GetIntroSpeechOfApproachingTrainer(void)
{ {
return ReturnEmptyStringIfNull(sTrainerAIntroSpeech); return ReturnEmptyStringIfNull(sTrainerAIntroSpeech);
} }
@@ -962,13 +1047,13 @@ const u8 *GetTrainerALoseText(void)
return gStringVar4; return gStringVar4;
} }
const u8 *GetTrainerBLoseText(void) const u8 *GetTrainerWonSpeech(void)
{ {
StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(sTrainerBDefeatSpeech)); StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(sTrainerVictorySpeech));
return gStringVar4; return gStringVar4;
} }
const u8 *GetTrainerCantBattleSpeech(void) static const u8 *GetTrainerCantBattleSpeech(void)
{ {
return ReturnEmptyStringIfNull(sTrainerCannotBattleSpeech); return ReturnEmptyStringIfNull(sTrainerCannotBattleSpeech);
} }