Document battle_tower.c

This commit is contained in:
PikalaxALT
2019-11-09 14:53:30 -05:00
parent 55bede6ca2
commit 807fe60b22
5 changed files with 81 additions and 74 deletions
+2 -2
View File
@@ -1686,7 +1686,7 @@ _080D8038:
ands r0, r1 ands r0, r1
cmp r0, 0 cmp r0, 0
beq _080D8058 beq _080D8058
bl sub_80E60E4 bl GetBattleTowerTrainerClassNameId
lsls r0, 24 lsls r0, 24
lsrs r0, 24 lsrs r0, 24
movs r1, 0xD movs r1, 0xD
@@ -1781,7 +1781,7 @@ _080D80F0:
cmp r0, 0 cmp r0, 0
beq _080D810C beq _080D810C
mov r0, sp mov r0, sp
bl get_trainer_name bl GetBattleTowerTrainerName
b _080D8382 b _080D8382
.align 2, 0 .align 2, 0
_080D8108: .4byte gBattleTypeFlags _080D8108: .4byte gBattleTypeFlags
+1 -1
View File
@@ -239,7 +239,7 @@ gSpecials:: @ 815FD60
def_special nullsub_75 def_special nullsub_75
def_special nullsub_75 def_special nullsub_75
def_special Special_GetLeadMonFriendship def_special Special_GetLeadMonFriendship
def_special sub_80E5970 def_special ScrSpecial_BattleTowerMapScript2
def_special ChooseNextBattleTowerTrainer def_special ChooseNextBattleTowerTrainer
def_special CheckPartyBattleTowerBanlist def_special CheckPartyBattleTowerBanlist
def_special PrintBattleTowerTrainerGreeting def_special PrintBattleTowerTrainerGreeting
+1 -1
View File
@@ -432,7 +432,7 @@ struct BattleStruct
u16 changedItems[MAX_BATTLERS_COUNT]; u16 changedItems[MAX_BATTLERS_COUNT];
u8 intimidateBattler; u8 intimidateBattler;
u8 switchInItemsCounter; u8 switchInItemsCounter;
u8 arenaTurnCounter; // not used in FR? u8 field_DA; // not used in FR?
u8 turnSideTracker; u8 turnSideTracker;
u8 fillerDC[0xDF-0xDC]; u8 fillerDC[0xDF-0xDC];
u8 givenExpMons; u8 givenExpMons;
+7
View File
@@ -72,4 +72,11 @@
#define BATTLE_TOWER_ITEM_LUCKY_PUNCH 61 #define BATTLE_TOWER_ITEM_LUCKY_PUNCH 61
#define BATTLE_TOWER_ITEM_GANLON_BERRY 62 #define BATTLE_TOWER_ITEM_GANLON_BERRY 62
#define BTSPECIAL_TEST 0
#define BTSPECIAL_RESULT_SAVE_SCUM 1
#define BTSPECIAL_RESULT_WON7 2
#define BTSPECIAL_RESULT_LOST 3
#define BTSPECIAL_RESULT_QUICKSAVE 4
#define BTSPECIAL_RESULT_INACTIVE 5
#endif //GUARD_CONSTANTS_BATTLE_TOWER_H #endif //GUARD_CONSTANTS_BATTLE_TOWER_H
+70 -70
View File
@@ -26,25 +26,26 @@
#include "constants/vars.h" #include "constants/vars.h"
#include "constants/map_objects.h" #include "constants/map_objects.h"
EWRAM_DATA u16 gUnknown_203AAB8 = 0; static EWRAM_DATA u16 sSpecialVar_0x8004_Copy = 0;
#define TakeBravoTrainerBattleTowerOffTheAir() #define TakeBravoTrainerBattleTowerOffTheAir()
#define ewram160FB (*((u8 *)&gBattleStruct->field_DA))
void ResetBattleTowerStreak(u8 levelType); static void ResetBattleTowerStreak(u8 levelType);
void sub_80E5E5C(u8 trainerClass); static void SetBattleTowerTrainerGfxId(u8 trainerClass);
void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid); static void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid);
void SaveCurrentWinStreak(void); static void SaveCurrentWinStreak(void);
void ValidateBattleTowerRecordChecksums(void); static void ValidateBattleTowerRecordChecksums(void);
void SetBattleTowerRecordChecksum(struct BattleTowerRecord * record); static void SetBattleTowerRecordChecksum(struct BattleTowerRecord * record);
void ClearBattleTowerRecord(struct BattleTowerRecord * record); static void ClearBattleTowerRecord(struct BattleTowerRecord * record);
void sub_80E712C(void); static void PopulateBravoTrainerBattleTowerLostData(void);
u16 GetCurrentBattleTowerWinStreak(u8 levelType); static u16 GetCurrentBattleTowerWinStreak(u8 levelType);
void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer * eReaderTrainer); static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer * eReaderTrainer);
void PrintEReaderTrainerFarewellMessage(void); static void PrintEReaderTrainerFarewellMessage(void);
#include "data/battle_tower/trainers.h" #include "data/battle_tower/trainers.h"
const u16 sBattleTowerHeldItems[] = { static const u16 sBattleTowerHeldItems[] = {
ITEM_NONE, ITEM_NONE,
ITEM_KINGS_ROCK, ITEM_KINGS_ROCK,
ITEM_SITRUS_BERRY, ITEM_SITRUS_BERRY,
@@ -113,22 +114,22 @@ const u16 sBattleTowerHeldItems[] = {
#include "data/battle_tower/level_50_mons.h" #include "data/battle_tower/level_50_mons.h"
#include "data/battle_tower/level_100_mons.h" #include "data/battle_tower/level_100_mons.h"
const u8 sMaleTrainerClasses[] = static const u8 sMaleTrainerClasses[] =
{ {
}; };
const u8 sFemaleTrainerClasses[] = static const u8 sFemaleTrainerClasses[] =
{ {
}; };
const u8 sMaleTrainerGfx[] = static const u8 sMaleTrainerGfx[] =
{ {
}; };
const u8 sFemaleTrainerGfx[] = static const u8 sFemaleTrainerGfx[] =
{ {
}; };
@@ -147,7 +148,7 @@ const u16 gBattleTowerBannedSpecies[] = {
0xFFFF 0xFFFF
}; };
const u16 sShortStreakPrizes[] = { static const u16 sShortStreakPrizes[] = {
ITEM_HP_UP, ITEM_HP_UP,
ITEM_PROTEIN, ITEM_PROTEIN,
ITEM_IRON, ITEM_IRON,
@@ -156,7 +157,7 @@ const u16 sShortStreakPrizes[] = {
ITEM_ZINC ITEM_ZINC
}; };
const u16 sLongStreakPrizes[] = { static const u16 sLongStreakPrizes[] = {
ITEM_BRIGHT_POWDER, ITEM_BRIGHT_POWDER,
ITEM_WHITE_HERB, ITEM_WHITE_HERB,
ITEM_QUICK_CLAW, ITEM_QUICK_CLAW,
@@ -168,7 +169,7 @@ const u16 sLongStreakPrizes[] = {
ITEM_CHOICE_BAND ITEM_CHOICE_BAND
}; };
void sub_80E5970(void) void ScrSpecial_BattleTowerMapScript2(void)
{ {
u8 count = 0; u8 count = 0;
s32 levelType; s32 levelType;
@@ -185,40 +186,40 @@ void sub_80E5970(void)
break; break;
case 1: case 1:
ResetBattleTowerStreak(levelType); ResetBattleTowerStreak(levelType);
VarSet(VAR_0x4000, 1); VarSet(VAR_0x4000, BTSPECIAL_RESULT_SAVE_SCUM);
count++; count++;
break; break;
case 3: case 3:
break; break;
case 4: case 4:
VarSet(VAR_0x4000, 2); VarSet(VAR_0x4000, BTSPECIAL_RESULT_WON7);
count++; count++;
break; break;
case 5: case 5:
VarSet(VAR_0x4000, 3); VarSet(VAR_0x4000, BTSPECIAL_RESULT_LOST);
count++; count++;
break; break;
case 6: case 6:
break; break;
case 2: case 2:
VarSet(VAR_0x4000, 4); VarSet(VAR_0x4000, BTSPECIAL_RESULT_QUICKSAVE);
count++; count++;
break; break;
} }
} }
if (gSaveBlock2Ptr->battleTower.var_4AE[0] == 3 && gSaveBlock2Ptr->battleTower.var_4AE[1] == 3) if (gSaveBlock2Ptr->battleTower.var_4AE[0] == 3 && gSaveBlock2Ptr->battleTower.var_4AE[1] == 3)
VarSet(VAR_0x4000, 5); VarSet(VAR_0x4000, BTSPECIAL_RESULT_INACTIVE);
ValidateBattleTowerRecordChecksums(); ValidateBattleTowerRecordChecksums();
} }
void ResetBattleTowerStreak(u8 levelType) static void ResetBattleTowerStreak(u8 levelType)
{ {
gSaveBlock2Ptr->battleTower.var_4AE[levelType] = 0; gSaveBlock2Ptr->battleTower.var_4AE[levelType] = 0;
gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] = 1; gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] = 1;
gSaveBlock2Ptr->battleTower.curStreakChallengesNum[levelType] = 1; gSaveBlock2Ptr->battleTower.curStreakChallengesNum[levelType] = 1;
} }
bool8 sub_80E5A70(u8 levelType, u16 winStreak) static bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak)
{ {
u8 trainerTeamLevel; u8 trainerTeamLevel;
u8 monLevel; u8 monLevel;
@@ -259,7 +260,7 @@ bool8 sub_80E5A70(u8 levelType, u16 winStreak)
return (numValid == 3); return (numValid == 3);
} }
bool8 sub_80E5B14(void) static bool8 ChooseSpecialBattleTowerTrainer(void)
{ {
s32 recordIndex, i; s32 recordIndex, i;
u8 battleTowerLevelType; u8 battleTowerLevelType;
@@ -272,7 +273,7 @@ bool8 sub_80E5B14(void)
battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType; battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
if (sub_80E5A70(battleTowerLevelType, winStreak)) if (ShouldBattleEReaderTrainer(battleTowerLevelType, winStreak))
{ {
gSaveBlock2Ptr->battleTower.battleTowerTrainerId = BATTLE_TOWER_EREADER_TRAINER_ID; gSaveBlock2Ptr->battleTower.battleTowerTrainerId = BATTLE_TOWER_EREADER_TRAINER_ID;
retVal = TRUE; retVal = TRUE;
@@ -323,9 +324,9 @@ void ChooseNextBattleTowerTrainer(void)
bool8 levelType; bool8 levelType;
levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType; levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
if (sub_80E5B14()) if (ChooseSpecialBattleTowerTrainer())
{ {
sub_80E5E5C(gSaveBlock2Ptr->battleTower.battleTowerTrainerId); SetBattleTowerTrainerGfxId(gSaveBlock2Ptr->battleTower.battleTowerTrainerId);
gSaveBlock2Ptr->battleTower.battledTrainerIds[gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1] = gSaveBlock2Ptr->battleTower.battleTowerTrainerId; gSaveBlock2Ptr->battleTower.battledTrainerIds[gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1] = gSaveBlock2Ptr->battleTower.battleTowerTrainerId;
return; return;
} }
@@ -372,23 +373,24 @@ void ChooseNextBattleTowerTrainer(void)
gSaveBlock2Ptr->battleTower.battleTowerTrainerId = trainerId; gSaveBlock2Ptr->battleTower.battleTowerTrainerId = trainerId;
} }
sub_80E5E5C(gSaveBlock2Ptr->battleTower.battleTowerTrainerId); SetBattleTowerTrainerGfxId(gSaveBlock2Ptr->battleTower.battleTowerTrainerId);
// Don't bother saving this trainer, since it's the last one in the challenge. // Don't bother saving this trainer, since it's the last one in the challenge.
if (gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] < 7) if (gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] < 7)
gSaveBlock2Ptr->battleTower.battledTrainerIds[gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1] = gSaveBlock2Ptr->battleTower.battleTowerTrainerId; gSaveBlock2Ptr->battleTower.battledTrainerIds[gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] - 1] = gSaveBlock2Ptr->battleTower.battleTowerTrainerId;
} }
void sub_80E5E5C(u8 trainerClass) static void SetBattleTowerTrainerGfxId(u8 trainerClass)
{ {
VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_YOUNGSTER); VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_YOUNGSTER);
} }
void SetEReaderTrainerGfxId(void) void SetEReaderTrainerGfxId(void)
{ {
sub_80E5E5C(BATTLE_TOWER_EREADER_TRAINER_ID); SetBattleTowerTrainerGfxId(BATTLE_TOWER_EREADER_TRAINER_ID);
} }
void sub_80E5E7C(struct BattleTowerRecord * record0) // Unreferenced; formerly used by Record Mixing in R/S
static void UpdateOrInsertReceivedBattleTowerRecord(struct BattleTowerRecord * record0)
{ {
s32 i; s32 i;
s32 j; s32 j;
@@ -488,7 +490,7 @@ u8 GetBattleTowerTrainerFrontSpriteId(void)
} }
} }
u8 sub_80E60E4(void) u8 GetBattleTowerTrainerClassNameId(void)
{ {
if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
{ {
@@ -504,7 +506,7 @@ u8 sub_80E60E4(void)
} }
} }
void get_trainer_name(u8 *dest) void GetBattleTowerTrainerName(u8 *dest)
{ {
s32 i; s32 i;
if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
@@ -526,7 +528,7 @@ void get_trainer_name(u8 *dest)
} }
#ifdef NONMATCHING // r6/r7 swap #ifdef NONMATCHING // r6/r7 swap
void FillBattleTowerTrainerParty(void) static void FillBattleTowerTrainerParty(void)
{ {
s32 partyIndex; s32 partyIndex;
s32 i; s32 i;
@@ -700,7 +702,7 @@ void FillBattleTowerTrainerParty(void)
} }
#else #else
NAKED NAKED
void FillBattleTowerTrainerParty(void) static void FillBattleTowerTrainerParty(void)
{ {
asm_unified("\tpush {r4-r7,lr}\n" asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n" "\tmov r7, r10\n"
@@ -1077,7 +1079,7 @@ void FillBattleTowerTrainerParty(void)
} }
#endif //NONMATCHING #endif //NONMATCHING
u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count) static u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count)
{ {
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
{ {
@@ -1103,7 +1105,7 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count)
return count; return count;
} }
void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid) static void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid)
{ {
s32 i; s32 i;
u32 counter = 0; u32 counter = 0;
@@ -1191,7 +1193,7 @@ void CheckPartyBattleTowerBanlist(void)
} }
} }
void PrintBattleTowerTrainerMessage(const u16 *greeting) static void PrintBattleTowerTrainerMessage(const u16 *greeting)
{ {
s32 i; s32 i;
if (EC_DoesEasyChatStringFitOnLine(greeting, 3, 2, 18)) if (EC_DoesEasyChatStringFitOnLine(greeting, 3, 2, 18))
@@ -1220,12 +1222,12 @@ void PrintBattleTowerTrainerGreeting(void)
PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting); PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting);
} }
void sub_80E6854(void) static void CB2_FinishEReaderBattle(void)
{ {
s32 i; s32 i;
u16 heldItem; u16 heldItem;
switch (gUnknown_203AAB8) switch (sSpecialVar_0x8004_Copy)
{ {
case 0: case 0:
break; break;
@@ -1244,11 +1246,11 @@ void sub_80E6854(void)
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
} }
void sub_80E68C4(u8 taskId) static void Task_WaitBT(u8 taskId)
{ {
if (BT_IsDone() == TRUE) if (BT_IsDone() == TRUE)
{ {
gMain.savedCallback = sub_80E6854; gMain.savedCallback = CB2_FinishEReaderBattle;
CleanupOverworldWindowsAndTilemaps(); CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_InitBattle); SetMainCallback2(CB2_InitBattle);
DestroyTask(taskId); DestroyTask(taskId);
@@ -1262,8 +1264,8 @@ void StartSpecialBattle(void)
u16 heldItem; u16 heldItem;
u8 transition; u8 transition;
gUnknown_203AAB8 = gSpecialVar_0x8004; sSpecialVar_0x8004_Copy = gSpecialVar_0x8004;
switch (gUnknown_203AAB8) switch (sSpecialVar_0x8004_Copy)
{ {
case 0: // battle tower battle case 0: // battle tower battle
gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER); gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER);
@@ -1271,7 +1273,7 @@ void StartSpecialBattle(void)
FillBattleTowerTrainerParty(); FillBattleTowerTrainerParty();
CreateTask(sub_80E68C4, 1); CreateTask(Task_WaitBT, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
transition = BattleSetup_GetBattleTowerBattleTransition(); transition = BattleSetup_GetBattleTowerBattleTransition();
BT_StartOnField(transition); BT_StartOnField(transition);
@@ -1283,7 +1285,7 @@ void StartSpecialBattle(void)
SetMonData(&gSaveBlock1Ptr->playerParty[i], MON_DATA_HELD_ITEM, &heldItem); SetMonData(&gSaveBlock1Ptr->playerParty[i], MON_DATA_HELD_ITEM, &heldItem);
} }
CreateTask(sub_80E68C4, 1); CreateTask(Task_WaitBT, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
transition = BattleSetup_GetBattleTowerBattleTransition(); transition = BattleSetup_GetBattleTowerBattleTransition();
BT_StartOnField(transition); BT_StartOnField(transition);
@@ -1297,7 +1299,7 @@ void StartSpecialBattle(void)
gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER); gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER);
gTrainerBattleOpponent_A = 0; gTrainerBattleOpponent_A = 0;
CreateTask(sub_80E68C4, 1); CreateTask(Task_WaitBT, 1);
PlayMapChosenOrBattleBGM(0); PlayMapChosenOrBattleBGM(0);
transition = BattleSetup_GetBattleTowerBattleTransition(); transition = BattleSetup_GetBattleTowerBattleTransition();
BT_StartOnField(transition); BT_StartOnField(transition);
@@ -1313,9 +1315,7 @@ void SetBattleTowerProperty(void)
switch (gSpecialVar_0x8004) switch (gSpecialVar_0x8004)
{ {
case 0: case 0:
// Weird cast required to match ewram160FB = gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType];
// Leftover from RS macro?
*((u8 *)&gBattleStruct->arenaTurnCounter) = gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType];
gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005; gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005;
break; break;
case 1: case 1:
@@ -1364,7 +1364,7 @@ void SetBattleTowerProperty(void)
ResetBattleTowerStreak(battleTowerLevelType); ResetBattleTowerStreak(battleTowerLevelType);
break; break;
case 12: case 12:
gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = *((u8 *)&gBattleStruct->arenaTurnCounter); gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = ewram160FB;
break; break;
case 13: case 13:
gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
@@ -1413,7 +1413,7 @@ void BattleTowerUtil(void)
ResetBattleTowerStreak(battleTowerLevelType); ResetBattleTowerStreak(battleTowerLevelType);
break; break;
case 12: case 12:
gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = *((u8 *)&gBattleStruct->arenaTurnCounter); gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = ewram160FB;
break; break;
case 13: case 13:
gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
@@ -1434,7 +1434,7 @@ void SetBattleTowerParty(void)
ReducePlayerPartyToThree(); ReducePlayerPartyToThree();
} }
void SaveCurrentWinStreak(void) static void SaveCurrentWinStreak(void)
{ {
u8 levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType; u8 levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType;
u16 streak = GetCurrentBattleTowerWinStreak(levelType); u16 streak = GetCurrentBattleTowerWinStreak(levelType);
@@ -1464,7 +1464,7 @@ void SaveCurrentWinStreak(void)
} }
} }
void sub_80E6EE0(void) static void SetPlayerBattleTowerRecord(void)
{ {
s32 i; s32 i;
u8 trainerClass; u8 trainerClass;
@@ -1508,17 +1508,17 @@ void SaveBattleTowerProgress(void)
{ {
if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] > 1 if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] > 1
|| gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType] > 1) || gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType] > 1)
sub_80E6EE0(); SetPlayerBattleTowerRecord();
} }
sub_80E712C(); PopulateBravoTrainerBattleTowerLostData();
gSaveBlock2Ptr->battleTower.battleOutcome = gBattleOutcome; gSaveBlock2Ptr->battleTower.battleOutcome = gBattleOutcome;
if (gSpecialVar_0x8004 != 3) if (gSpecialVar_0x8004 != 3)
gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004; gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004;
VarSet(VAR_0x4000, 0); VarSet(VAR_0x4000, BTSPECIAL_TEST);
gSaveBlock2Ptr->battleTower.unk_554 = 1; gSaveBlock2Ptr->battleTower.unk_554 = 1;
TrySavingData(SAVE_EREADER); TrySavingData(SAVE_EREADER);
} }
@@ -1528,7 +1528,7 @@ void BattleTower_SoftReset(void)
DoSoftReset(); DoSoftReset();
} }
void ValidateBattleTowerRecordChecksums(void) static void ValidateBattleTowerRecordChecksums(void)
{ {
u32 i; u32 i;
s32 recordIndex; s32 recordIndex;
@@ -1555,7 +1555,7 @@ void ValidateBattleTowerRecordChecksums(void)
} }
} }
void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record) static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record)
{ {
u32 i; u32 i;
@@ -1564,7 +1564,7 @@ void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record)
record->checksum += ((u32 *)record)[i]; record->checksum += ((u32 *)record)[i];
} }
void ClearBattleTowerRecord(struct BattleTowerRecord *record) static void ClearBattleTowerRecord(struct BattleTowerRecord *record)
{ {
u32 i; u32 i;
@@ -1572,11 +1572,11 @@ void ClearBattleTowerRecord(struct BattleTowerRecord *record)
((u32 *)record)[i] = 0; ((u32 *)record)[i] = 0;
} }
void sub_80E712C(void) static void PopulateBravoTrainerBattleTowerLostData(void)
{ {
s32 i; s32 i;
get_trainer_name(gSaveBlock2Ptr->battleTower.defeatedByTrainerName); GetBattleTowerTrainerName(gSaveBlock2Ptr->battleTower.defeatedByTrainerName);
gSaveBlock2Ptr->battleTower.defeatedBySpecies = gBattleMons[1].species; gSaveBlock2Ptr->battleTower.defeatedBySpecies = gBattleMons[1].species;
gSaveBlock2Ptr->battleTower.firstMonSpecies = gBattleMons[0].species; gSaveBlock2Ptr->battleTower.firstMonSpecies = gBattleMons[0].species;
@@ -1584,7 +1584,7 @@ void sub_80E712C(void)
gSaveBlock2Ptr->battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i]; gSaveBlock2Ptr->battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i];
} }
u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType) static u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType)
{ {
u16 winStreak = ((gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] - 1) * 7 - 1) u16 winStreak = ((gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] - 1) * 7 - 1)
+ gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType]; + gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType];
@@ -1656,7 +1656,7 @@ void AwardBattleTowerRibbons(void)
// This is a leftover debugging function that is used to populate the E-Reader // This is a leftover debugging function that is used to populate the E-Reader
// trainer with the player's current data. // trainer with the player's current data.
void Debug_FillEReaderTrainerWithPlayerData(void) static void Debug_FillEReaderTrainerWithPlayerData(void)
{ {
struct BattleTowerEReaderTrainer *ereaderTrainer; struct BattleTowerEReaderTrainer *ereaderTrainer;
s32 i; s32 i;
@@ -1746,7 +1746,7 @@ void ValidateEReaderTrainer(void)
} }
} }
void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer) static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer)
{ {
s32 i; s32 i;
@@ -1768,7 +1768,7 @@ void PrintEReaderTrainerGreeting(void)
PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting); PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting);
} }
void PrintEReaderTrainerFarewellMessage(void) static void PrintEReaderTrainerFarewellMessage(void)
{ {
if (gBattleOutcome == B_OUTCOME_DREW) if (gBattleOutcome == B_OUTCOME_DREW)
gStringVar4[0] = EOS; gStringVar4[0] = EOS;