summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_setup.c135
1 files changed, 70 insertions, 65 deletions
diff --git a/src/battle_setup.c b/src/battle_setup.c
index e8fb9f259..f23e6da5e 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -9,6 +9,8 @@
#include "rng.h"
#include "flag.h"
#include "var.h"
+#include "script.h"
+#include "field_message_box.h"
extern void prev_quest_postbuffer_cursor_backup_reset(void);
extern void overworld_poison_timer_set(void);
@@ -28,15 +30,22 @@ extern void sub_80821D8(void);
extern void sub_8082228(void);
extern void sub_808260C(void);
extern void sub_8082CB8(void);
-extern u8 * sub_80BCCE8(void);
-extern void ShowFieldMessage();
+extern u8 *sub_80BCCE8(void);
extern void CB2_ChooseStarter(void);
extern void sub_811AABC(u8);
extern u8 sub_811AAE8(void);
-extern u32 GetMonData(struct Pokemon *mon, s32 field);
extern u8 GetFieldObjectIdByLocalIdAndMap(u8, u8, u8);
-extern u32 sub_8082880(void);
+extern u8 *sub_8082880(void);
extern u8 sub_803FC58(u16);
+extern bool32 FieldPoisonEffectIsRunning(void);
+extern bool32 GetSafariZoneFlag(void);
+extern void player_bitmagic(void);
+
+u8 GetHigherOrLowerLevelTransitionForWild(void);
+u8 sub_8082080(void);
+bool32 battle_exit_is_player_defeat(u32 a1);
+u8 *sub_808281C(void);
+u16 sub_8082C4C(u16 a1);
extern u16 gScriptResult;
@@ -100,16 +109,16 @@ extern struct Trainer gTrainers[];
extern u16 gTrainerBattleMode;
extern u16 gTrainerBattleOpponent;
extern u16 gTrainerMapObjectLocalId;
-extern u32 gTrainerIntroSpeech;
-extern u32 gTrainerDefeatSpeech;
-extern u32 gTrainerVictorySpeech;
-extern u32 gTrainerCannotBattleSpeech;
-extern u32 gTrainerBattleScriptReturnAddress;
-extern u32 gTrainerBattleEndScript;
+extern u8 *gTrainerIntroSpeech;
+extern u8 *gTrainerDefeatSpeech;
+extern u8 *gTrainerVictorySpeech;
+extern u8 *gTrainerCannotBattleSpeech;
+extern u8 *gTrainerBattleScriptReturnAddress;
+extern u8 *gTrainerBattleEndScript;
-extern u32 gTrainerEyeTrainers[];
+extern struct TrainerEyeTrainer gTrainerEyeTrainers[];
-extern u32 gOtherText_CancelWithTerminator[];
+extern u8 gOtherText_CancelWithTerminator[];
extern u16 gUnknown_020239F8;
extern u16 gUnknown_0202E8DE;
@@ -127,11 +136,11 @@ extern u8 gUnknown_0819F8AE[];
extern u8 gUnknown_0819F80B[];
extern u8 gUnknown_081C6C02[];
-extern u8 gTrainerBattleSpecs_0[];
-extern u8 gTrainerBattleSpecs_1[];
-extern u8 gTrainerBattleSpecs_2[];
-extern u8 gTrainerBattleSpecs_3[];
-extern u8 gTrainerBattleSpecs_4[];
+extern struct TrainerBattleSpec gTrainerBattleSpecs_0[];
+extern struct TrainerBattleSpec gTrainerBattleSpecs_1[];
+extern struct TrainerBattleSpec gTrainerBattleSpecs_2[];
+extern struct TrainerBattleSpec gTrainerBattleSpecs_3[];
+extern struct TrainerBattleSpec gTrainerBattleSpecs_4[];
extern u8 gStringVar4[];
@@ -236,7 +245,7 @@ void task_add_01_battle_start_with_music_and_stats(void)
void sub_8081AFC(void)
{
- CreateMaleMon(&gEnemyParty, SPECIES_RALTS, 5);
+ CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5);
ScriptContext2_Enable();
gMain.field_8 = c2_exit_to_overworld_1_continue_scripts_restart_music;
gUnknown_020239F8 = 512;
@@ -304,8 +313,8 @@ void sub_8081C50(void)
void sub_8081C8C(void)
{
- CpuFill16(0, 0x5000000, 0x1000200);
- ResetOamRange(0, 0x80);
+ CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
+ ResetOamRange(0, 128);
if (battle_exit_is_player_defeat(gUnknown_02024D26) == TRUE)
{
@@ -320,8 +329,8 @@ void sub_8081C8C(void)
void sub_8081CEC(void)
{
- CpuFill16(0, 0x5000000, 0x1000200);
- ResetOamRange(0, 0x80);
+ CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
+ ResetOamRange(0, 128);
if (battle_exit_is_player_defeat(gUnknown_02024D26) == TRUE)
SetMainCallback2(c2_whiteout);
@@ -479,7 +488,7 @@ u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 partyCount)
u8 GetHigherOrLowerLevelTransitionForWild(void)
{
u8 flashVar = sub_8081E90();
- u8 level = GetMonData(&gEnemyParty, MON_DATA_LEVEL);
+ u8 level = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
if (level < (u8)GetSumOfPartyMonLevel(1)) // is wild mon level than the player's mon level?
return gBattleTransitionTable_Wild[flashVar][0];
@@ -532,7 +541,7 @@ u8 sub_8082080(void)
s8 sub_8082138(void)
{
- u8 monData = GetMonData(&gEnemyParty, MON_DATA_LEVEL);
+ u8 monData = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
if (monData < (u8)GetSumOfPartyMonLevel(1))
return 4;
@@ -604,12 +613,7 @@ u16 trainerflag_opponent(void)
bool32 battle_exit_is_player_defeat(u32 a1)
{
- a1--;
-
- if (a1 > 6)
- return FALSE;
-
- switch(a1)
+ switch (a1 - 1)
{
case 1:
case 2:
@@ -621,9 +625,11 @@ bool32 battle_exit_is_player_defeat(u32 a1)
case 6:
return FALSE;
}
+
+ return FALSE;
}
-u32 sub_80822BC(void)
+u8 **sub_80822BC(void)
{
u32 *pointer;
@@ -635,9 +641,8 @@ u32 sub_80822BC(void)
gTrainerVictorySpeech = 0;
gTrainerCannotBattleSpeech = 0;
gTrainerBattleScriptReturnAddress = 0;
- pointer = &gTrainerBattleEndScript;
gTrainerBattleEndScript = 0;
- return pointer;
+ return &gTrainerBattleEndScript;
}
void TrainerBattleLoadArgs(struct TrainerBattleSpec *specs, u8 *data)
@@ -725,7 +730,7 @@ u8 *TrainerBattleConfigure(u8 *a1)
}
}
-void TrainerWantsBattle(u8 ptr, int a2)
+void TrainerWantsBattle(u8 ptr, u8 *a2)
{
gSelectedMapObject = ptr;
gUnknown_0202E8DE = gMapObjects[ptr].localId;
@@ -734,7 +739,7 @@ void TrainerWantsBattle(u8 ptr, int a2)
ScriptContext2_Enable();
}
-u8 GetTrainerFlagFromScriptPointer(int a1)
+u8 GetTrainerFlagFromScriptPointer(u8 *a1)
{
u32 localFlag;
@@ -837,13 +842,12 @@ void sub_80826B0(void)
void sub_80826D8(void)
{
- sub_808281C();
- ShowFieldMessage();
+ ShowFieldMessage(sub_808281C());
}
-u32 sub_80826E8(void)
+u8 *sub_80826E8(void)
{
- u32 *result = gTrainerBattleScriptReturnAddress;
+ u8 *result = gTrainerBattleScriptReturnAddress;
if (!gTrainerBattleScriptReturnAddress)
return gUnknown_081C6C02;
@@ -851,9 +855,9 @@ u32 sub_80826E8(void)
return result;
}
-u32 sub_8082700(void)
+u8 *sub_8082700(void)
{
- u32 *result = gTrainerBattleEndScript;
+ u8 *result = gTrainerBattleEndScript;
if (!gTrainerBattleEndScript)
return gUnknown_081C6C02;
@@ -922,7 +926,7 @@ void sub_8082728(void) // sets the music to be played after a battle
}
}
-u32 ReturnEmptyStringIfNull(u32 *result)
+u8 *ReturnEmptyStringIfNull(u8 *result)
{
if (result)
return result;
@@ -930,43 +934,44 @@ u32 ReturnEmptyStringIfNull(u32 *result)
return gOtherText_CancelWithTerminator;
}
-u32 sub_808281C(void)
+u8 *sub_808281C(void)
{
return ReturnEmptyStringIfNull(gTrainerIntroSpeech);
}
u8 *sub_8082830(void)
{
- u32 *var;
+ u8 *str;
if (gTrainerBattleOpponent == 1024)
- var = sub_80BCCE8();
+ str = sub_80BCCE8();
else
- var = gTrainerDefeatSpeech;
+ str = gTrainerDefeatSpeech;
- StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(var));
+ StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(str));
return gStringVar4;
}
-u32 unref_sub_808286C(void)
+u8 *unref_sub_808286C(void)
{
return ReturnEmptyStringIfNull(gTrainerVictorySpeech);
}
-u32 sub_8082880(void)
+u8 *sub_8082880(void)
{
return ReturnEmptyStringIfNull(gTrainerCannotBattleSpeech);
}
-s32 sub_8082894(u16 *ptr, u16 var)
+s32 sub_8082894(struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
s32 i;
- for(i = 0; i <= 55; i++)
+ for (i = 0; i < 56; i++)
{
- if(ptr[i * 8] == var)
+ if (trainers[i].trainerNums[0] == trainerNum)
return i;
}
+
return -1;
}
@@ -974,13 +979,13 @@ s32 sub_80828B8(struct TrainerEyeTrainer *a, u16 b)
{
s32 i;
- for(i = 0; i < 56; i++)
+ for (i = 0; i < 56; i++)
{
s32 j;
- for(j = 0; j < 5 && a[i].trainerNums[j] != 0; j++)
+ for (j = 0; j < 5 && a[i].trainerNums[j] != 0; j++)
{
- if(a[i].trainerNums[j] == b)
+ if (a[i].trainerNums[j] == b)
return i;
}
}
@@ -1041,19 +1046,19 @@ s32 sub_80829E8(struct TrainerEyeTrainer *a1, u16 a2, u16 a3)
return 0;
}
-bool8 sub_8082A18(u16 *a1, u16 a2)
+bool8 sub_8082A18(struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
- s32 v2 = sub_8082894(a1, a2);
+ s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
- if (v2 != -1 && v2 < 100 && gSaveBlock1.trainerRematches[v2])
+ if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex])
return TRUE;
else
return FALSE;
}
-bool8 sub_8082A54(u16 *a1, u16 a2)
+bool8 sub_8082A54(struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
- s32 v2 = sub_80828B8(a1, a2);
+ s32 v2 = sub_80828B8(trainers, trainerNum);
if (v2 != -1 && v2 < 100 && gSaveBlock1.trainerRematches[v2])
return TRUE;
@@ -1083,19 +1088,19 @@ u16 sub_8082A90(struct TrainerEyeTrainer *trainers, u16 trainerNum)
return trainer->trainerNums[4];
}
-void sub_8082AE4(u16 *a1, u16 a2)
+void sub_8082AE4(struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
- s32 var = sub_80828B8(a1, a2);
+ s32 var = sub_80828B8(trainers, trainerNum);
if (var != -1)
gSaveBlock1.trainerRematches[var] = 0;
}
-bool8 sub_8082B10(struct TrainerEyeTrainer *a1, u16 a2)
+bool8 sub_8082B10(struct TrainerEyeTrainer *trainers, u16 trainerNum)
{
- s32 var = sub_8082894(a1, a2);
+ s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
- if (var != -1 && trainer_flag_check(a1[var].trainerNums[1]))
+ if (trainerEyeIndex != -1 && trainer_flag_check(trainers[trainerEyeIndex].trainerNums[1]))
return TRUE;
else
return FALSE;