diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-11-09 14:53:30 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-11-09 14:53:30 -0500 |
commit | 807fe60b22bf3cd3deadd2bb40898f3a2727218b (patch) | |
tree | 9e934318c607eee8179f04ab057e38e7f820f097 /src | |
parent | 55bede6ca279483a0e4b9b51ebe152d4be135b93 (diff) |
Document battle_tower.c
Diffstat (limited to 'src')
-rw-r--r-- | src/battle_tower.c | 142 |
1 files changed, 71 insertions, 71 deletions
diff --git a/src/battle_tower.c b/src/battle_tower.c index 421d9cf3b..56eaf93de 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -26,25 +26,26 @@ #include "constants/vars.h" #include "constants/map_objects.h" -EWRAM_DATA u16 gUnknown_203AAB8 = 0; +static EWRAM_DATA u16 sSpecialVar_0x8004_Copy = 0; #define TakeBravoTrainerBattleTowerOffTheAir() - -void ResetBattleTowerStreak(u8 levelType); -void sub_80E5E5C(u8 trainerClass); -void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid); -void SaveCurrentWinStreak(void); -void ValidateBattleTowerRecordChecksums(void); -void SetBattleTowerRecordChecksum(struct BattleTowerRecord * record); -void ClearBattleTowerRecord(struct BattleTowerRecord * record); -void sub_80E712C(void); -u16 GetCurrentBattleTowerWinStreak(u8 levelType); -void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer * eReaderTrainer); -void PrintEReaderTrainerFarewellMessage(void); +#define ewram160FB (*((u8 *)&gBattleStruct->field_DA)) + +static void ResetBattleTowerStreak(u8 levelType); +static void SetBattleTowerTrainerGfxId(u8 trainerClass); +static void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowerLevelType, u8 monLevel, u16 *validPartySpecies, u16 *validPartyHeldItems, u8 *numValid); +static void SaveCurrentWinStreak(void); +static void ValidateBattleTowerRecordChecksums(void); +static void SetBattleTowerRecordChecksum(struct BattleTowerRecord * record); +static void ClearBattleTowerRecord(struct BattleTowerRecord * record); +static void PopulateBravoTrainerBattleTowerLostData(void); +static u16 GetCurrentBattleTowerWinStreak(u8 levelType); +static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer * eReaderTrainer); +static void PrintEReaderTrainerFarewellMessage(void); #include "data/battle_tower/trainers.h" -const u16 sBattleTowerHeldItems[] = { +static const u16 sBattleTowerHeldItems[] = { ITEM_NONE, ITEM_KINGS_ROCK, ITEM_SITRUS_BERRY, @@ -113,22 +114,22 @@ const u16 sBattleTowerHeldItems[] = { #include "data/battle_tower/level_50_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 }; -const u16 sShortStreakPrizes[] = { +static const u16 sShortStreakPrizes[] = { ITEM_HP_UP, ITEM_PROTEIN, ITEM_IRON, @@ -156,7 +157,7 @@ const u16 sShortStreakPrizes[] = { ITEM_ZINC }; -const u16 sLongStreakPrizes[] = { +static const u16 sLongStreakPrizes[] = { ITEM_BRIGHT_POWDER, ITEM_WHITE_HERB, ITEM_QUICK_CLAW, @@ -168,7 +169,7 @@ const u16 sLongStreakPrizes[] = { ITEM_CHOICE_BAND }; -void sub_80E5970(void) +void ScrSpecial_BattleTowerMapScript2(void) { u8 count = 0; s32 levelType; @@ -185,40 +186,40 @@ void sub_80E5970(void) break; case 1: ResetBattleTowerStreak(levelType); - VarSet(VAR_0x4000, 1); + VarSet(VAR_0x4000, BTSPECIAL_RESULT_SAVE_SCUM); count++; break; case 3: break; case 4: - VarSet(VAR_0x4000, 2); + VarSet(VAR_0x4000, BTSPECIAL_RESULT_WON7); count++; break; case 5: - VarSet(VAR_0x4000, 3); + VarSet(VAR_0x4000, BTSPECIAL_RESULT_LOST); count++; break; case 6: break; case 2: - VarSet(VAR_0x4000, 4); + VarSet(VAR_0x4000, BTSPECIAL_RESULT_QUICKSAVE); count++; break; } } if (gSaveBlock2Ptr->battleTower.var_4AE[0] == 3 && gSaveBlock2Ptr->battleTower.var_4AE[1] == 3) - VarSet(VAR_0x4000, 5); + VarSet(VAR_0x4000, BTSPECIAL_RESULT_INACTIVE); ValidateBattleTowerRecordChecksums(); } -void ResetBattleTowerStreak(u8 levelType) +static void ResetBattleTowerStreak(u8 levelType) { gSaveBlock2Ptr->battleTower.var_4AE[levelType] = 0; gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] = 1; gSaveBlock2Ptr->battleTower.curStreakChallengesNum[levelType] = 1; } -bool8 sub_80E5A70(u8 levelType, u16 winStreak) +static bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak) { u8 trainerTeamLevel; u8 monLevel; @@ -259,7 +260,7 @@ bool8 sub_80E5A70(u8 levelType, u16 winStreak) return (numValid == 3); } -bool8 sub_80E5B14(void) +static bool8 ChooseSpecialBattleTowerTrainer(void) { s32 recordIndex, i; u8 battleTowerLevelType; @@ -272,7 +273,7 @@ bool8 sub_80E5B14(void) battleTowerLevelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType; winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); - if (sub_80E5A70(battleTowerLevelType, winStreak)) + if (ShouldBattleEReaderTrainer(battleTowerLevelType, winStreak)) { gSaveBlock2Ptr->battleTower.battleTowerTrainerId = BATTLE_TOWER_EREADER_TRAINER_ID; retVal = TRUE; @@ -323,9 +324,9 @@ void ChooseNextBattleTowerTrainer(void) bool8 levelType; 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; return; } @@ -372,23 +373,24 @@ void ChooseNextBattleTowerTrainer(void) 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. if (gSaveBlock2Ptr->battleTower.curChallengeBattleNum[levelType] < 7) 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); } 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 j; @@ -488,7 +490,7 @@ u8 GetBattleTowerTrainerFrontSpriteId(void) } } -u8 sub_80E60E4(void) +u8 GetBattleTowerTrainerClassNameId(void) { 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; if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID) @@ -526,7 +528,7 @@ void get_trainer_name(u8 *dest) } #ifdef NONMATCHING // r6/r7 swap -void FillBattleTowerTrainerParty(void) +static void FillBattleTowerTrainerParty(void) { s32 partyIndex; s32 i; @@ -700,7 +702,7 @@ void FillBattleTowerTrainerParty(void) } #else NAKED -void FillBattleTowerTrainerParty(void) +static void FillBattleTowerTrainerParty(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -1077,7 +1079,7 @@ void FillBattleTowerTrainerParty(void) } #endif //NONMATCHING -u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count) +static u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count) { if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) { @@ -1103,7 +1105,7 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 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; u32 counter = 0; @@ -1191,7 +1193,7 @@ void CheckPartyBattleTowerBanlist(void) } } -void PrintBattleTowerTrainerMessage(const u16 *greeting) +static void PrintBattleTowerTrainerMessage(const u16 *greeting) { s32 i; 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); } -void sub_80E6854(void) +static void CB2_FinishEReaderBattle(void) { s32 i; u16 heldItem; - switch (gUnknown_203AAB8) + switch (sSpecialVar_0x8004_Copy) { case 0: break; @@ -1244,11 +1246,11 @@ void sub_80E6854(void) SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } -void sub_80E68C4(u8 taskId) +static void Task_WaitBT(u8 taskId) { if (BT_IsDone() == TRUE) { - gMain.savedCallback = sub_80E6854; + gMain.savedCallback = CB2_FinishEReaderBattle; CleanupOverworldWindowsAndTilemaps(); SetMainCallback2(CB2_InitBattle); DestroyTask(taskId); @@ -1262,8 +1264,8 @@ void StartSpecialBattle(void) u16 heldItem; u8 transition; - gUnknown_203AAB8 = gSpecialVar_0x8004; - switch (gUnknown_203AAB8) + sSpecialVar_0x8004_Copy = gSpecialVar_0x8004; + switch (sSpecialVar_0x8004_Copy) { case 0: // battle tower battle gBattleTypeFlags = (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_TRAINER); @@ -1271,7 +1273,7 @@ void StartSpecialBattle(void) FillBattleTowerTrainerParty(); - CreateTask(sub_80E68C4, 1); + CreateTask(Task_WaitBT, 1); PlayMapChosenOrBattleBGM(0); transition = BattleSetup_GetBattleTowerBattleTransition(); BT_StartOnField(transition); @@ -1283,7 +1285,7 @@ void StartSpecialBattle(void) SetMonData(&gSaveBlock1Ptr->playerParty[i], MON_DATA_HELD_ITEM, &heldItem); } - CreateTask(sub_80E68C4, 1); + CreateTask(Task_WaitBT, 1); PlayMapChosenOrBattleBGM(0); transition = BattleSetup_GetBattleTowerBattleTransition(); BT_StartOnField(transition); @@ -1297,7 +1299,7 @@ void StartSpecialBattle(void) gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER); gTrainerBattleOpponent_A = 0; - CreateTask(sub_80E68C4, 1); + CreateTask(Task_WaitBT, 1); PlayMapChosenOrBattleBGM(0); transition = BattleSetup_GetBattleTowerBattleTransition(); BT_StartOnField(transition); @@ -1313,9 +1315,7 @@ void SetBattleTowerProperty(void) switch (gSpecialVar_0x8004) { case 0: - // Weird cast required to match - // Leftover from RS macro? - *((u8 *)&gBattleStruct->arenaTurnCounter) = gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType]; + ewram160FB = gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType]; gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8005; break; case 1: @@ -1364,7 +1364,7 @@ void SetBattleTowerProperty(void) ResetBattleTowerStreak(battleTowerLevelType); break; case 12: - gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = *((u8 *)&gBattleStruct->arenaTurnCounter); + gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = ewram160FB; break; case 13: gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); @@ -1413,7 +1413,7 @@ void BattleTowerUtil(void) ResetBattleTowerStreak(battleTowerLevelType); break; case 12: - gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = *((u8 *)&gBattleStruct->arenaTurnCounter); + gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = ewram160FB; break; case 13: gSaveBlock2Ptr->battleTower.currentWinStreaks[battleTowerLevelType] = GetCurrentBattleTowerWinStreak(battleTowerLevelType); @@ -1434,7 +1434,7 @@ void SetBattleTowerParty(void) ReducePlayerPartyToThree(); } -void SaveCurrentWinStreak(void) +static void SaveCurrentWinStreak(void) { u8 levelType = gSaveBlock2Ptr->battleTower.battleTowerLevelType; u16 streak = GetCurrentBattleTowerWinStreak(levelType); @@ -1464,7 +1464,7 @@ void SaveCurrentWinStreak(void) } } -void sub_80E6EE0(void) +static void SetPlayerBattleTowerRecord(void) { s32 i; u8 trainerClass; @@ -1508,17 +1508,17 @@ void SaveBattleTowerProgress(void) { if (gSaveBlock2Ptr->battleTower.curStreakChallengesNum[battleTowerLevelType] > 1 || gSaveBlock2Ptr->battleTower.curChallengeBattleNum[battleTowerLevelType] > 1) - sub_80E6EE0(); + SetPlayerBattleTowerRecord(); } - sub_80E712C(); + PopulateBravoTrainerBattleTowerLostData(); gSaveBlock2Ptr->battleTower.battleOutcome = gBattleOutcome; if (gSpecialVar_0x8004 != 3) gSaveBlock2Ptr->battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004; - VarSet(VAR_0x4000, 0); + VarSet(VAR_0x4000, BTSPECIAL_TEST); gSaveBlock2Ptr->battleTower.unk_554 = 1; TrySavingData(SAVE_EREADER); } @@ -1528,7 +1528,7 @@ void BattleTower_SoftReset(void) DoSoftReset(); } -void ValidateBattleTowerRecordChecksums(void) +static void ValidateBattleTowerRecordChecksums(void) { u32 i; s32 recordIndex; @@ -1555,7 +1555,7 @@ void ValidateBattleTowerRecordChecksums(void) } } -void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record) +static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record) { u32 i; @@ -1564,7 +1564,7 @@ void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record) record->checksum += ((u32 *)record)[i]; } -void ClearBattleTowerRecord(struct BattleTowerRecord *record) +static void ClearBattleTowerRecord(struct BattleTowerRecord *record) { u32 i; @@ -1572,11 +1572,11 @@ void ClearBattleTowerRecord(struct BattleTowerRecord *record) ((u32 *)record)[i] = 0; } -void sub_80E712C(void) +static void PopulateBravoTrainerBattleTowerLostData(void) { s32 i; - get_trainer_name(gSaveBlock2Ptr->battleTower.defeatedByTrainerName); + GetBattleTowerTrainerName(gSaveBlock2Ptr->battleTower.defeatedByTrainerName); gSaveBlock2Ptr->battleTower.defeatedBySpecies = gBattleMons[1].species; gSaveBlock2Ptr->battleTower.firstMonSpecies = gBattleMons[0].species; @@ -1584,7 +1584,7 @@ void sub_80E712C(void) 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) + 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 // trainer with the player's current data. -void Debug_FillEReaderTrainerWithPlayerData(void) +static void Debug_FillEReaderTrainerWithPlayerData(void) { struct BattleTowerEReaderTrainer *ereaderTrainer; s32 i; @@ -1746,7 +1746,7 @@ void ValidateEReaderTrainer(void) } } -void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer) +static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer) { s32 i; @@ -1768,7 +1768,7 @@ void PrintEReaderTrainerGreeting(void) PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting); } -void PrintEReaderTrainerFarewellMessage(void) +static void PrintEReaderTrainerFarewellMessage(void) { if (gBattleOutcome == B_OUTCOME_DREW) gStringVar4[0] = EOS; |