From aa45c05a3ea052c76c3837dd5e9c89b958bd02f9 Mon Sep 17 00:00:00 2001 From: PokeCodec <67983839+PokeCodec@users.noreply.github.com> Date: Wed, 9 Sep 2020 11:21:16 -0400 Subject: Match Battle Tower --- src/battle_tower.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'src/battle_tower.c') diff --git a/src/battle_tower.c b/src/battle_tower.c index 0333c4397..e0ff3fe26 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1447,7 +1447,7 @@ u8 GetFrontierOpponentClass(u16 trainerId) } else if (trainerId == TRAINER_FRONTIER_BRAIN) { - trainerClass = GetFrontierBrainTrainerClass(); + return GetFrontierBrainTrainerClass(); // This sticks out like a sore thumb, but this is the only other way that matches. Maybe it SHOULD be assigned to ret, or all early returns. I don't know. } else if (trainerId == TRAINER_STEVEN_PARTNER) { @@ -1466,9 +1466,6 @@ u8 GetFrontierOpponentClass(u16 trainerId) else { trainerClass = gFacilityClassToTrainerClass[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass]; - #ifndef NONMATCHING - asm(""); - #endif } } else @@ -1480,9 +1477,6 @@ u8 GetFrontierOpponentClass(u16 trainerId) else { trainerClass = gFacilityClassToTrainerClass[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass]; - #ifndef NONMATCHING - asm(""); - #endif } } -- cgit v1.2.3 From 7dc95a0103af08c95c9093b6efa6c77af77a2538 Mon Sep 17 00:00:00 2001 From: aaaaaa123456789 Date: Sun, 13 Sep 2020 04:22:50 -0300 Subject: Undo PokeCodec's PRs This commit undoes most of PokeCodec's PRs after the debate in chat. Some harmless or completely superseded PRs have been left alone, as there is not much benefit in attempting to undo them. Reverts #1104, #1108, #1115, #1118, #1119, #1124, #1126, #1127, #1132, #1136, #1137, #1139, #1140, #1144, #1148, #1149, #1150, #1153, #1155, #1177, #1179, #1180, #1181, #1182 and #1183. --- src/battle_tower.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/battle_tower.c') diff --git a/src/battle_tower.c b/src/battle_tower.c index e0ff3fe26..0333c4397 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1447,7 +1447,7 @@ u8 GetFrontierOpponentClass(u16 trainerId) } else if (trainerId == TRAINER_FRONTIER_BRAIN) { - return GetFrontierBrainTrainerClass(); // This sticks out like a sore thumb, but this is the only other way that matches. Maybe it SHOULD be assigned to ret, or all early returns. I don't know. + trainerClass = GetFrontierBrainTrainerClass(); } else if (trainerId == TRAINER_STEVEN_PARTNER) { @@ -1466,6 +1466,9 @@ u8 GetFrontierOpponentClass(u16 trainerId) else { trainerClass = gFacilityClassToTrainerClass[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass]; + #ifndef NONMATCHING + asm(""); + #endif } } else @@ -1477,6 +1480,9 @@ u8 GetFrontierOpponentClass(u16 trainerId) else { trainerClass = gFacilityClassToTrainerClass[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass]; + #ifndef NONMATCHING + asm(""); + #endif } } -- cgit v1.2.3 From 52598983250fd8ad7b66ff2b9d77046859f169c8 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 1 Oct 2020 17:20:38 -0400 Subject: Replace POKEMON_SLOTS_NUMBER --- src/battle_tower.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/battle_tower.c') diff --git a/src/battle_tower.c b/src/battle_tower.c index e0ff3fe26..9852a0eac 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -35,7 +35,6 @@ #include "constants/trainers.h" #include "constants/event_objects.h" #include "constants/moves.h" -#include "constants/species.h" #include "constants/easy_chat.h" #include "constants/tv.h" -- cgit v1.2.3 From 52ebc4252e0752ab3b918d4637c4c2672f033610 Mon Sep 17 00:00:00 2001 From: kageru Date: Wed, 7 Oct 2020 23:03:46 +0200 Subject: Document gUnknown_03006298 --- src/battle_tower.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) (limited to 'src/battle_tower.c') diff --git a/src/battle_tower.c b/src/battle_tower.c index 9852a0eac..046362105 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -46,7 +46,7 @@ EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL; EWRAM_DATA const struct FacilityMon *gFacilityTrainerMons = NULL; // IWRAM common -u16 gUnknown_03006298[MAX_FRONTIER_PARTY_SIZE]; +u16 gFrontierTempParty[MAX_FRONTIER_PARTY_SIZE]; // This file's functions. static void InitTowerChallenge(void); @@ -1856,7 +1856,7 @@ static void FillFactoryFrontierTrainerParty(u16 trainerId, u8 firstMonId) otID = T1_READ_32(gSaveBlock2Ptr->playerTrainerId); for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - u16 monId = gUnknown_03006298[i]; + u16 monId = gFrontierTempParty[i]; CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monId].species, level, @@ -1884,7 +1884,7 @@ static void FillFactoryTentTrainerParty(u16 trainerId, u8 firstMonId) for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { - u16 monId = gUnknown_03006298[i]; + u16 monId = gFrontierTempParty[i]; CreateMonWithEVSpreadNatureOTID(&gEnemyParty[firstMonId + i], gFacilityTrainerMons[monId].species, level, @@ -2224,11 +2224,11 @@ static void GetApprenticeMultiPartnerParty(u16 trainerId) } } - gUnknown_03006298[0] = validSpecies[Random() % count]; + gFrontierTempParty[0] = validSpecies[Random() % count]; do { - gUnknown_03006298[1] = validSpecies[Random() % count]; - } while (gUnknown_03006298[0] == gUnknown_03006298[1]); + gFrontierTempParty[1] = validSpecies[Random() % count]; + } while (gFrontierTempParty[0] == gFrontierTempParty[1]); } static void GetRecordMixFriendMultiPartnerParty(u16 trainerId) @@ -2252,11 +2252,11 @@ static void GetRecordMixFriendMultiPartnerParty(u16 trainerId) } } - gUnknown_03006298[2] = validSpecies[Random() % count]; + gFrontierTempParty[2] = validSpecies[Random() % count]; do { - gUnknown_03006298[3] = validSpecies[Random() % count]; - } while (gUnknown_03006298[2] == gUnknown_03006298[3]); + gFrontierTempParty[3] = validSpecies[Random() % count]; + } while (gFrontierTempParty[2] == gFrontierTempParty[3]); } static void LoadMultiPartnerCandidatesData(void) @@ -2420,15 +2420,15 @@ static void sub_81646BC(u16 trainerId, u16 monId) } else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) { - move = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gUnknown_03006298[gSpecialVar_0x8005 + 1]].moves[0]; - species = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gUnknown_03006298[gSpecialVar_0x8005 + 1]].species; + move = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gFrontierTempParty[gSpecialVar_0x8005 + 1]].moves[0]; + species = gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[gFrontierTempParty[gSpecialVar_0x8005 + 1]].species; } else { s32 i; - move = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gUnknown_03006298[gSpecialVar_0x8005 - 1]].moves[0]; - species = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gUnknown_03006298[gSpecialVar_0x8005 - 1]].species; + move = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gFrontierTempParty[gSpecialVar_0x8005 - 1]].moves[0]; + species = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].party[gFrontierTempParty[gSpecialVar_0x8005 - 1]].species; for (i = 0; i < PLAYER_NAME_LENGTH; i++) gStringVar3[i] = gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].playerName[i]; gStringVar3[i] = EOS; @@ -2497,13 +2497,13 @@ static void ShowPartnerCandidateMessage(void) } else if (trainerId < TRAINER_RECORD_MIXING_APPRENTICE) { - gSaveBlock2Ptr->frontier.trainerIds[18] = gUnknown_03006298[2]; - gSaveBlock2Ptr->frontier.trainerIds[19] = gUnknown_03006298[3]; + gSaveBlock2Ptr->frontier.trainerIds[18] = gFrontierTempParty[2]; + gSaveBlock2Ptr->frontier.trainerIds[19] = gFrontierTempParty[3]; } else { - gSaveBlock2Ptr->frontier.trainerIds[18] = gUnknown_03006298[0]; - gSaveBlock2Ptr->frontier.trainerIds[19] = gUnknown_03006298[1]; + gSaveBlock2Ptr->frontier.trainerIds[18] = gFrontierTempParty[0]; + gSaveBlock2Ptr->frontier.trainerIds[19] = gFrontierTempParty[1]; } for (k = 0; k < 14; k++) { -- cgit v1.2.3 From 4c10f3f4651d6ac523eaabf34c20614b3cf03df8 Mon Sep 17 00:00:00 2001 From: Kurausukun Date: Sun, 25 Oct 2020 23:55:38 -0400 Subject: port GetFrontierOpponentClass fakematch fix --- src/battle_tower.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'src/battle_tower.c') diff --git a/src/battle_tower.c b/src/battle_tower.c index 0333c4397..9d632b444 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1447,7 +1447,7 @@ u8 GetFrontierOpponentClass(u16 trainerId) } else if (trainerId == TRAINER_FRONTIER_BRAIN) { - trainerClass = GetFrontierBrainTrainerClass(); + return GetFrontierBrainTrainerClass(); } else if (trainerId == TRAINER_STEVEN_PARTNER) { @@ -1466,9 +1466,6 @@ u8 GetFrontierOpponentClass(u16 trainerId) else { trainerClass = gFacilityClassToTrainerClass[gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].facilityClass]; - #ifndef NONMATCHING - asm(""); - #endif } } else @@ -1480,9 +1477,6 @@ u8 GetFrontierOpponentClass(u16 trainerId) else { trainerClass = gFacilityClassToTrainerClass[gApprentices[gSaveBlock2Ptr->apprentices[trainerId - TRAINER_RECORD_MIXING_APPRENTICE].id].facilityClass]; - #ifndef NONMATCHING - asm(""); - #endif } } -- cgit v1.2.3 From 6f91f7e0e341ec410f0d231625cdb7aea1cb0359 Mon Sep 17 00:00:00 2001 From: kageru Date: Tue, 17 Nov 2020 17:21:34 +0100 Subject: Use more constants in Battle Tower code --- src/battle_tower.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'src/battle_tower.c') diff --git a/src/battle_tower.c b/src/battle_tower.c index b7d03a5bc..6fc0cd5be 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -999,7 +999,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void) return FALSE; winStreak = GetCurrentBattleTowerWinStreak(lvlMode, battleMode); - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]); u32 recordHasData = 0; @@ -1010,7 +1010,7 @@ static bool8 ChooseSpecialBattleTowerTrainer(void) checksum += record[j]; } validMons = 0; - for (j = 0; j < 4; j++) + for (j = 0; j < MAX_FRONTIER_PARTY_SIZE; j++) { if (gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species != 0 && gSaveBlock2Ptr->frontier.towerRecords[i].party[j].level <= GetFrontierEnemyMonLevel(lvlMode)) @@ -1324,7 +1324,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) struct EmeraldBattleTowerRecord *newRecord = newRecordEm; // Needed to match. // Find a record slot of the same player and replace it. - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { k = 0; for (j = 0; j < TRAINER_ID_LENGTH; j++) @@ -1350,19 +1350,19 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) if (k == PLAYER_NAME_LENGTH) break; } - if (i < 5) + if (i < BATTLE_TOWER_RECORD_COUNT) { gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord; return; } // Find an empty record slot. - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { if (gSaveBlock2Ptr->frontier.towerRecords[i].winStreak == 0) break; } - if (i < 5) + if (i < BATTLE_TOWER_RECORD_COUNT) { gSaveBlock2Ptr->frontier.towerRecords[i] = *newRecord; return; @@ -1373,7 +1373,7 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) slotIds[0] = 0; slotsCount++; - for (i = 1; i < 5; i++) + for (i = 1; i < BATTLE_TOWER_RECORD_COUNT; i++) { for (j = 0; j < slotsCount; j++) { @@ -2240,7 +2240,7 @@ static void GetRecordMixFriendMultiPartnerParty(u16 trainerId) u16 species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL); count = 0; - for (i = 0; i < 4; i++) + for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) { if (gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species1 && gSaveBlock2Ptr->frontier.towerRecords[trainerId - TRAINER_RECORD_MIXING_FRIEND].party[i].species != species2 @@ -2362,7 +2362,7 @@ static void LoadMultiPartnerCandidatesData(void) } r10 = 0; - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { u32 *record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]); u32 recordHasData = 0; @@ -2379,7 +2379,7 @@ static void LoadMultiPartnerCandidatesData(void) && gSaveBlock2Ptr->frontier.towerRecords[i].checksum == checksum) { k = 0; - for (j = 0; j < 4; j++) + for (j = 0; j < MAX_FRONTIER_PARTY_SIZE; j++) { if (species1 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species && species2 != gSaveBlock2Ptr->frontier.towerRecords[i].party[j].species @@ -2682,7 +2682,7 @@ static void ValidateBattleTowerRecordChecksums(void) if (gSaveBlock2Ptr->frontier.towerPlayer.checksum != checksum) ClearBattleTowerRecord(&gSaveBlock2Ptr->frontier.towerPlayer); - for (i = 0; i < 5; i++) + for (i = 0; i < BATTLE_TOWER_RECORD_COUNT; i++) { record = (u32*)(&gSaveBlock2Ptr->frontier.towerRecords[i]); checksum = 0; -- cgit v1.2.3 From 81d95b9325ed2526ce638744408f453a8169abb4 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Sat, 12 Dec 2020 23:28:01 -0500 Subject: Use BUGFIX for some inline fixes --- src/battle_tower.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'src/battle_tower.c') diff --git a/src/battle_tower.c b/src/battle_tower.c index 6fc0cd5be..d7123f3d2 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -1336,10 +1336,15 @@ void PutNewBattleTowerRecord(struct EmeraldBattleTowerRecord *newRecordEm) { for (k = 0; k < PLAYER_NAME_LENGTH; k++) { - // BUG: Wrong variable used, 'j' instead of 'k'. + #ifdef BUGFIX + if (gSaveBlock2Ptr->frontier.towerRecords[i].name[k] != newRecord->name[k]) + break; + if (newRecord->name[k] == EOS) + #else if (gSaveBlock2Ptr->frontier.towerRecords[i].name[j] != newRecord->name[j]) break; if (newRecord->name[j] == EOS) + #endif { k = PLAYER_NAME_LENGTH; break; @@ -2956,7 +2961,12 @@ static void FillPartnerParty(u16 trainerId) sStevenMons[i].species, sStevenMons[i].level, sStevenMons[i].fixedIV, - TRUE, i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures. + TRUE, + #ifdef BUGFIX + j, + #else + i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures. + #endif OT_ID_PRESET, STEVEN_OTID); for (j = 0; j < PARTY_SIZE; j++) SetMonData(&gPlayerParty[MULTI_PARTY_SIZE + i], MON_DATA_HP_EV + j, &sStevenMons[i].evs[j]); @@ -3062,9 +3072,12 @@ bool32 RubyBattleTowerRecordToEmerald(struct RSBattleTowerRecord *src, struct Em { dst->lvlMode = src->lvlMode; dst->winStreak = src->winStreak; - // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries. - // Fix by using ARRAY_COUNT(sRubyFacilityClassToEmerald) + // UB: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries. + #ifdef UBFIX + for (i = 0; i < ARRAY_COUNT(sRubyFacilityClassToEmerald); i++) + #else for (i = 0; i < FACILITY_CLASSES_COUNT; i++) + #endif { if (sRubyFacilityClassToEmerald[i][0] == src->facilityClass) break; @@ -3112,9 +3125,12 @@ bool32 EmeraldBattleTowerRecordToRuby(struct EmeraldBattleTowerRecord *src, stru { dst->lvlMode = src->lvlMode; dst->winStreak = src->winStreak; - // BUG: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries. - // Fix by using ARRAY_COUNT(sRubyFacilityClassToEmerald) instead + // UB: Reading outside the array. sRubyFacilityClassToEmerald has less than FACILITY_CLASSES_COUNT entries. + #ifdef UBFIX + for (i = 0; i < ARRAY_COUNT(sRubyFacilityClassToEmerald); i++) + #else for (i = 0; i < FACILITY_CLASSES_COUNT; i++) + #endif { if (sRubyFacilityClassToEmerald[i][1] == src->facilityClass) break; -- cgit v1.2.3 From 769ddf22c266c2bf41d3353c5972bca8fa49c085 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Thu, 24 Dec 2020 16:18:47 -0500 Subject: Label remaining subs in battle_tower.c --- src/battle_tower.c | 62 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 27 deletions(-) (limited to 'src/battle_tower.c') diff --git a/src/battle_tower.c b/src/battle_tower.c index d7123f3d2..ee75feeb4 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -57,12 +57,12 @@ static void SetTowerBattleWon(void); static void AwardBattleTowerRibbons(void); static void SaveTowerChallenge(void); static void GetOpponentIntroSpeech(void); -static void nullsub_61(void); -static void nullsub_116(void); +static void BattleTowerNop1(void); +static void BattleTowerNop2(void); static void LoadMultiPartnerCandidatesData(void); static void ShowPartnerCandidateMessage(void); static void LoadLinkMultiOpponentsData(void); -static void sub_8164DCC(void); +static void TowerTryCloseLink(void); static void SetMultiPartnerGfx(void); static void SetTowerInterviewData(void); static void ValidateBattleTowerRecordChecksums(void); @@ -811,12 +811,12 @@ static void (* const sBattleTowerFuncs[])(void) = [BATTLE_TOWER_FUNC_GIVE_RIBBONS] = AwardBattleTowerRibbons, [BATTLE_TOWER_FUNC_SAVE] = SaveTowerChallenge, [BATTLE_TOWER_FUNC_GET_OPPONENT_INTRO] = GetOpponentIntroSpeech, - [BATTLE_TOWER_FUNC_NOP] = nullsub_61, - [BATTLE_TOWER_FUNC_NOP2] = nullsub_116, + [BATTLE_TOWER_FUNC_NOP] = BattleTowerNop1, + [BATTLE_TOWER_FUNC_NOP2] = BattleTowerNop2, [BATTLE_TOWER_FUNC_LOAD_PARTNERS] = LoadMultiPartnerCandidatesData, [BATTLE_TOWER_FUNC_PARTNER_MSG] = ShowPartnerCandidateMessage, [BATTLE_TOWER_FUNC_LOAD_LINK_OPPONENTS] = LoadLinkMultiOpponentsData, - [BATTLE_TOWER_FUNC_13] = sub_8164DCC, + [BATTLE_TOWER_FUNC_TRY_CLOSE_LINK] = TowerTryCloseLink, [BATTLE_TOWER_FUNC_SET_PARTNER_GFX] = SetMultiPartnerGfx, [BATTLE_TOWER_FUNC_SET_INTERVIEW_DATA] = SetTowerInterviewData, }; @@ -1547,7 +1547,7 @@ void GetFrontierTrainerName(u8 *dst, u16 trainerId) { if (gBattleTypeFlags & BATTLE_TYPE_RECORDED) { - sub_8186468(dst); + GetRecordedBattleRecordMixFriendName(dst); return; } else @@ -2059,7 +2059,7 @@ void DoSpecialTrainerBattle(void) if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN) FillFrontierTrainerParty(DOME_BATTLE_PARTY_SIZE); CreateTask(Task_StartBattleAfterTransition, 1); - sub_806E694(0); + CreateTask_PlayMapChosenOrBattleBGM(0); BattleTransition_StartOnField(GetSpecialBattleTransition(3)); break; case SPECIAL_BATTLE_PALACE: @@ -2139,7 +2139,7 @@ static void SaveCurrentWinStreak(void) gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] = winStreak; } -static void sub_8163EE4(void) +static void SaveBattleTowerRecord(void) { s32 i; u8 lvlMode, battleMode, class; @@ -2178,7 +2178,7 @@ static void sub_8163EE4(void) for (i = 0; i < MAX_FRONTIER_PARTY_SIZE; i++) { if (gSaveBlock2Ptr->frontier.selectedPartyMons[i] != 0) - sub_80686FC(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], &playerRecord->party[i]); + ConvertPokemonToBattleTowerPokemon(&gPlayerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], &playerRecord->party[i]); } playerRecord->language = gGameLanguage; @@ -2193,7 +2193,7 @@ static void SaveTowerChallenge(void) s32 challengeNum = (signed)(gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode] / 7); if (gSpecialVar_0x8005 == 0 && (challengeNum > 1 || gSaveBlock2Ptr->frontier.curChallengeBattleNum != 0)) - sub_8163EE4(); + SaveBattleTowerRecord(); gSaveBlock2Ptr->frontier.challengeStatus = gSpecialVar_0x8005; VarSet(VAR_TEMP_0, 0); @@ -2201,12 +2201,12 @@ static void SaveTowerChallenge(void) SaveGameFrontier(); } -static void nullsub_61(void) +static void BattleTowerNop1(void) { } -static void nullsub_116(void) +static void BattleTowerNop2(void) { } @@ -2410,7 +2410,7 @@ static void LoadMultiPartnerCandidatesData(void) } } -static void sub_81646BC(u16 trainerId, u16 monId) +static void GetPotentialPartnerMoveAndSpecies(u16 trainerId, u16 monId) { u16 move = 0; u16 species = 0; @@ -2445,6 +2445,14 @@ static void sub_81646BC(u16 trainerId, u16 monId) StringCopy(gStringVar2, gSpeciesNames[species]); } +// For multi battles in the Battle Tower, the player may choose a partner by talking to them +// These partners can be an NPC or a former/record-mixed Apprentice +// When talked to, their response consists of: +// PARTNER_MSGID_INTRO - A greeting +// PARTNER_MSGID_MON1 - Naming one pokemon on their team, and a move it has +// PARTNER_MSGID_MON2_ASK - Naming a second pokemon on their team, a move it has, and asking if they'd like to be their partner +// PARTNER_MSGID_ACCEPT - If the player agrees to be their partner +// PARTNER_MSGID_REJECT - If the player declines to be their partner static void ShowPartnerCandidateMessage(void) { s32 i, j, partnerId; @@ -2487,11 +2495,11 @@ static void ShowPartnerCandidateMessage(void) break; case PARTNER_MSGID_MON1: monId = gSaveBlock2Ptr->frontier.trainerIds[8 + k * 2]; - sub_81646BC(trainerId, monId); + GetPotentialPartnerMoveAndSpecies(trainerId, monId); break; case PARTNER_MSGID_MON2_ASK: monId = gSaveBlock2Ptr->frontier.trainerIds[9 + k * 2]; - sub_81646BC(trainerId, monId); + GetPotentialPartnerMoveAndSpecies(trainerId, monId); break; case PARTNER_MSGID_ACCEPT: gPartnerTrainerId = trainerId; @@ -2643,7 +2651,7 @@ static void LoadLinkMultiOpponentsData(void) } } -static void sub_8164DCC(void) +static void TowerTryCloseLink(void) { if (gWirelessCommType != 0) SetCloseLinkCallback(); @@ -2838,7 +2846,7 @@ static void FillEReaderTrainerWithPlayerData(void) } for (i = 0; i < 3; i++) - sub_80686FC(&gPlayerParty[i], &ereaderTrainer->party[i]); + ConvertPokemonToBattleTowerPokemon(&gPlayerParty[i], &ereaderTrainer->party[i]); SetEReaderTrainerChecksum(ereaderTrainer); } @@ -3292,16 +3300,16 @@ static u8 GetFrontierTrainerFixedIvs(u16 trainerId) return fixedIv; } -static u16 sub_8165D40(void) +static u16 GetBattleTentTrainerId(void) { u32 facility = VarGet(VAR_FRONTIER_FACILITY); - if (facility == FRONTIER_FACILITY_PALACE) - return Random() % 30; - else if (facility == FRONTIER_FACILITY_ARENA) - return Random() % 30; - else if (facility == FRONTIER_FACILITY_FACTORY) - return Random() % 30; + if (facility == FRONTIER_FACILITY_PALACE) // Verdanturf Tent; uses Palace mechanics + return Random() % NUM_BATTLE_TENT_TRAINERS; + else if (facility == FRONTIER_FACILITY_ARENA) // Fallarbor Tent; uses Arena mechanics + return Random() % NUM_BATTLE_TENT_TRAINERS; + else if (facility == FRONTIER_FACILITY_FACTORY) // Slateport Tent; uses Factory mechanics + return Random() % NUM_BATTLE_TENT_TRAINERS; else if (facility == FRONTIER_FACILITY_TOWER) return 0; else @@ -3348,7 +3356,7 @@ static void SetNextBattleTentOpponent(void) do { - trainerId = sub_8165D40(); + trainerId = GetBattleTentTrainerId(); for (i = 0; i < gSaveBlock2Ptr->frontier.curChallengeBattleNum; i++) { if (gSaveBlock2Ptr->frontier.trainerIds[i] == trainerId) @@ -3511,7 +3519,7 @@ bool32 ValidateBattleTowerRecord(u8 recordId) // unused } } -void sub_8166188(void) +void TrySetLinkBattleTowerEnemyPartyLevel(void) { if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) { -- cgit v1.2.3