Frontier, finish ranking hall
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "battle_frontier_2.h"
|
||||
#include "frontier_util.h"
|
||||
#include "event_data.h"
|
||||
#include "battle_setup.h"
|
||||
#include "overworld.h"
|
||||
@@ -22,10 +22,14 @@
|
||||
#include "pokedex.h"
|
||||
#include "recorded_battle.h"
|
||||
#include "data2.h"
|
||||
#include "record_mixing.h"
|
||||
#include "strings.h"
|
||||
#include "malloc.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/game_stat.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
extern u8 gUnknown_0203CEF8[];
|
||||
|
||||
@@ -34,22 +38,42 @@ extern const u16 gUnknown_08611BFC[][2];
|
||||
extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
|
||||
extern const struct WindowTemplate gUnknown_08611C74;
|
||||
extern const struct WindowTemplate gUnknown_08611C7C;
|
||||
extern const struct WindowTemplate gUnknown_08611C84;
|
||||
extern const u8 gUnknown_086118B4[29][7][4];
|
||||
extern const u16 gUnknown_08611C9A[];
|
||||
extern const u8 *const gUnknown_08611D08[];
|
||||
extern const u8 *const gUnknown_08611CB0[][2];
|
||||
extern const u8 *const gUnknown_08611D00[];
|
||||
|
||||
extern void sub_81B8558(void);
|
||||
|
||||
// This file's functions.
|
||||
u8 sub_81A3B30(u8 facility);
|
||||
void ShowTowerResultsWindow(u8);
|
||||
void ShowDomeResultsWindow(u8);
|
||||
void ShowPalaceResultsWindow(u8);
|
||||
void ShowPikeResultsWindow(void);
|
||||
void ShowFactoryResultsWindow(u8);
|
||||
void ShowArenaResultsWindow(void);
|
||||
void ShowPyramidResultsWindow(void);
|
||||
void ShowLinkContestResultsWindow(void);
|
||||
static void ShowTowerResultsWindow(u8);
|
||||
static void ShowDomeResultsWindow(u8);
|
||||
static void ShowPalaceResultsWindow(u8);
|
||||
static void ShowPikeResultsWindow(void);
|
||||
static void ShowFactoryResultsWindow(u8);
|
||||
static void ShowArenaResultsWindow(void);
|
||||
static void ShowPyramidResultsWindow(void);
|
||||
static void ShowLinkContestResultsWindow(void);
|
||||
u8 sub_81A3610(void);
|
||||
void sub_81A51A8(u8);
|
||||
void sub_81A5030(u8);
|
||||
|
||||
// const rom data
|
||||
const u8 gUnknown_08611550[][4] =
|
||||
{
|
||||
[FRONTIER_FACILITY_TOWER] = {0x23, 0x46, 0x23, 0x01},
|
||||
[FRONTIER_FACILITY_DOME] = {0x04, 0x09, 0x05, 0x00},
|
||||
[FRONTIER_FACILITY_PALACE] = {0x15, 0x2a, 0x15, 0x01},
|
||||
[FRONTIER_FACILITY_ARENA] = {0x1c, 0x38, 0x1c, 0x01},
|
||||
[FRONTIER_FACILITY_FACTORY] = {0x15, 0x2a, 0x15, 0x01},
|
||||
[FRONTIER_FACILITY_PIKE] = {0x1c, 0x8c, 0x38, 0x01},
|
||||
[FRONTIER_FACILITY_PYRAMID] = {0x15, 0x46, 0x23, 0x00},
|
||||
};
|
||||
|
||||
// code
|
||||
void sub_81A1780(void)
|
||||
{
|
||||
gUnknown_08611C18[gSpecialVar_0x8004]();
|
||||
@@ -214,7 +238,7 @@ void sub_81A1B98(void)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_81A1C24(u32 flags)
|
||||
static bool8 sub_81A1C24(u32 flags)
|
||||
{
|
||||
if (gSaveBlock2Ptr->frontier.field_CDC & flags)
|
||||
return TRUE;
|
||||
@@ -222,14 +246,14 @@ bool8 sub_81A1C24(u32 flags)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_81A1C4C(const u8 *str, s32 y)
|
||||
static void sub_81A1C4C(const u8 *str, s32 y)
|
||||
{
|
||||
s32 x = GetStringCenterAlignXOffset(1, str, 0xE0);
|
||||
y = (y * 8) + 1;
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x, y, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
|
||||
void PrintHyphens(s32 y)
|
||||
static void PrintHyphens(s32 y)
|
||||
{
|
||||
s32 i;
|
||||
u8 text[37];
|
||||
@@ -242,47 +266,8 @@ void PrintHyphens(s32 y)
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, text, 4, y, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
|
||||
extern const u8 gText_WinStreak[];
|
||||
extern const u8 gText_Record[];
|
||||
extern const u8 gText_Current[];
|
||||
extern const u8 gText_RoomsCleared[];
|
||||
extern const u8 gText_Prev[];
|
||||
extern const u8 gText_SingleBattleRoomResults[];
|
||||
extern const u8 gText_DoubleBattleRoomResults[];
|
||||
extern const u8 gText_MultiBattleRoomResults[];
|
||||
extern const u8 gText_LinkMultiBattleRoomResults[];
|
||||
extern const u8 gText_Lv502[];
|
||||
extern const u8 gText_OpenLv[];
|
||||
extern const u8 gText_RentalSwap[];
|
||||
extern const u8 gText_ClearStreak[];
|
||||
extern const u8 gText_Total[];
|
||||
extern const u8 gText_Championships[];
|
||||
extern const u8 gText_SingleBattleTourneyResults[];
|
||||
extern const u8 gText_DoubleBattleTourneyResults[];
|
||||
extern const u8 gText_SingleBattleHallResults[];
|
||||
extern const u8 gText_DoubleBattleHallResults[];
|
||||
extern const u8 gText_BattleChoiceResults[];
|
||||
extern const u8 gText_TimesCleared[];
|
||||
extern const u8 gText_KOsInARow[];
|
||||
extern const u8 gText_SetKOTourneyResults[];
|
||||
extern const u8 gText_TimesVar1[];
|
||||
extern const u8 gText_BattleSwapSingleResults[];
|
||||
extern const u8 gText_BattleSwapDoubleResults[];
|
||||
extern const u8 gText_FloorsCleared[];
|
||||
extern const u8 gText_BattleQuestResults[];
|
||||
extern const u8 gText_LinkContestResults[];
|
||||
extern const u8 gText_4th[];
|
||||
extern const u8 gText_3rd[];
|
||||
extern const u8 gText_2nd[];
|
||||
extern const u8 gText_1st[];
|
||||
extern const u8 gText_Cool[];
|
||||
extern const u8 gText_Beauty[];
|
||||
extern const u8 gText_Cute[];
|
||||
extern const u8 gText_Smart[];
|
||||
extern const u8 gText_Tough[];
|
||||
|
||||
// Battle Tower.
|
||||
void TowerPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
// Battle Tower records.
|
||||
static void TowerPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||
if (num > 9999)
|
||||
@@ -292,13 +277,13 @@ void TowerPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
|
||||
void TowerPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void TowerPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
u16 num = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[battleMode][lvlMode];
|
||||
TowerPrintStreak(gText_Record, num, x1, x2, y);
|
||||
}
|
||||
|
||||
u16 TowerGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
static u16 TowerGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
{
|
||||
u16 winStreak = gSaveBlock2Ptr->frontier.towerWinStreaks[battleMode][lvlMode];
|
||||
if (winStreak > 9999)
|
||||
@@ -307,7 +292,7 @@ u16 TowerGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
return winStreak;
|
||||
}
|
||||
|
||||
void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
bool8 isCurrent;
|
||||
u16 winStreak = TowerGetWinStreak(battleMode, lvlMode);
|
||||
@@ -346,7 +331,7 @@ void TowerPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y
|
||||
TowerPrintStreak(gText_Prev, winStreak, x1, x2, y);
|
||||
}
|
||||
|
||||
void ShowTowerResultsWindow(u8 battleMode)
|
||||
static void ShowTowerResultsWindow(u8 battleMode)
|
||||
{
|
||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||
@@ -372,8 +357,8 @@ void ShowTowerResultsWindow(u8 battleMode)
|
||||
CopyWindowToVram(gRecordsWindowId, 3);
|
||||
}
|
||||
|
||||
// Battle Dome.
|
||||
u16 DomeGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
// Battle Dome records.
|
||||
static u16 DomeGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
{
|
||||
u16 winStreak = gSaveBlock2Ptr->frontier.domeWinStreaks[battleMode][lvlMode];
|
||||
if (winStreak > 9999)
|
||||
@@ -382,7 +367,7 @@ u16 DomeGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
return winStreak;
|
||||
}
|
||||
|
||||
void PrintTwoStrings(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
|
||||
static void PrintTwoStrings(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL);
|
||||
ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||
@@ -390,7 +375,7 @@ void PrintTwoStrings(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
|
||||
void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
bool8 isCurrent;
|
||||
u16 winStreak = DomeGetWinStreak(battleMode, lvlMode);
|
||||
@@ -417,7 +402,7 @@ void DomePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
PrintTwoStrings(gText_Prev, gText_ClearStreak, winStreak, x1, x2, y);
|
||||
}
|
||||
|
||||
void ShowDomeResultsWindow(u8 battleMode)
|
||||
static void ShowDomeResultsWindow(u8 battleMode)
|
||||
{
|
||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||
@@ -441,8 +426,8 @@ void ShowDomeResultsWindow(u8 battleMode)
|
||||
CopyWindowToVram(gRecordsWindowId, 3);
|
||||
}
|
||||
|
||||
// Battle Palace.
|
||||
void PalacePrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
// Battle Palace records.
|
||||
static void PalacePrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||
if (num > 9999)
|
||||
@@ -452,13 +437,13 @@ void PalacePrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
|
||||
void PalacePrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void PalacePrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
u16 num = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[battleMode][lvlMode];
|
||||
PalacePrintStreak(gText_Record, num, x1, x2, y);
|
||||
}
|
||||
|
||||
u16 PalaceGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
static u16 PalaceGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
{
|
||||
u16 winStreak = gSaveBlock2Ptr->frontier.palaceWinStreaks[battleMode][lvlMode];
|
||||
if (winStreak > 9999)
|
||||
@@ -467,7 +452,7 @@ u16 PalaceGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
return winStreak;
|
||||
}
|
||||
|
||||
void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
bool8 isCurrent;
|
||||
u16 winStreak = PalaceGetWinStreak(battleMode, lvlMode);
|
||||
@@ -493,7 +478,7 @@ void PalacePrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8
|
||||
PalacePrintStreak(gText_Prev, winStreak, x1, x2, y);
|
||||
}
|
||||
|
||||
void ShowPalaceResultsWindow(u8 battleMode)
|
||||
static void ShowPalaceResultsWindow(u8 battleMode)
|
||||
{
|
||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||
@@ -515,8 +500,8 @@ void ShowPalaceResultsWindow(u8 battleMode)
|
||||
CopyWindowToVram(gRecordsWindowId, 3);
|
||||
}
|
||||
|
||||
// Battle Pike.
|
||||
u16 PikeGetWinStreak(u8 lvlMode)
|
||||
// Battle Pike records.
|
||||
static u16 PikeGetWinStreak(u8 lvlMode)
|
||||
{
|
||||
u16 winStreak = gSaveBlock2Ptr->frontier.pikeWinStreaks[lvlMode];
|
||||
if (winStreak > 9999)
|
||||
@@ -525,7 +510,7 @@ u16 PikeGetWinStreak(u8 lvlMode)
|
||||
return winStreak;
|
||||
}
|
||||
|
||||
void PikePrintCleared(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
|
||||
static void PikePrintCleared(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str1, x1, y, TEXT_SPEED_FF, NULL);
|
||||
ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||
@@ -533,7 +518,7 @@ void PikePrintCleared(const u8 *str1, const u8 *str2, u16 num, u8 x1, u8 x2, u8
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
|
||||
void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
bool8 isCurrent;
|
||||
u16 winStreak = PikeGetWinStreak(lvlMode);
|
||||
@@ -549,7 +534,7 @@ void PikePrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
PrintTwoStrings(gText_Prev, gText_RoomsCleared, winStreak, x1, x2, y);
|
||||
}
|
||||
|
||||
void ShowPikeResultsWindow(void)
|
||||
static void ShowPikeResultsWindow(void)
|
||||
{
|
||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||
@@ -569,8 +554,8 @@ void ShowPikeResultsWindow(void)
|
||||
CopyWindowToVram(gRecordsWindowId, 3);
|
||||
}
|
||||
|
||||
// Battle Arena.
|
||||
void ArenaPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
// Battle Arena records.
|
||||
static void ArenaPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||
if (num > 9999)
|
||||
@@ -580,13 +565,13 @@ void ArenaPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
|
||||
void ArenaPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void ArenaPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
u16 num = gSaveBlock2Ptr->frontier.arenaRecordStreaks[lvlMode];
|
||||
ArenaPrintStreak(gText_Record, num, x1, x2, y);
|
||||
}
|
||||
|
||||
u16 ArenaGetWinStreak(u8 lvlMode)
|
||||
static u16 ArenaGetWinStreak(u8 lvlMode)
|
||||
{
|
||||
u16 winStreak = gSaveBlock2Ptr->frontier.arenaWinStreaks[lvlMode];
|
||||
if (winStreak > 9999)
|
||||
@@ -595,7 +580,7 @@ u16 ArenaGetWinStreak(u8 lvlMode)
|
||||
return winStreak;
|
||||
}
|
||||
|
||||
void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
bool8 isCurrent;
|
||||
u16 winStreak = ArenaGetWinStreak(lvlMode);
|
||||
@@ -611,7 +596,7 @@ void ArenaPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
ArenaPrintStreak(gText_Prev, winStreak, x1, x2, y);
|
||||
}
|
||||
|
||||
void ShowArenaResultsWindow(void)
|
||||
static void ShowArenaResultsWindow(void)
|
||||
{
|
||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||
@@ -629,8 +614,8 @@ void ShowArenaResultsWindow(void)
|
||||
CopyWindowToVram(gRecordsWindowId, 3);
|
||||
}
|
||||
|
||||
// Battle Factory.
|
||||
void FactoryPrintStreak(const u8 *str, u16 num1, u16 num2, u8 x1, u8 x2, u8 x3, u8 y)
|
||||
// Battle Factory records.
|
||||
static void FactoryPrintStreak(const u8 *str, u16 num1, u16 num2, u8 x1, u8 x2, u8 x3, u8 y)
|
||||
{
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||
if (num1 > 9999)
|
||||
@@ -644,14 +629,14 @@ void FactoryPrintStreak(const u8 *str, u16 num1, u16 num2, u8 x1, u8 x2, u8 x3,
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x3, y, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
|
||||
void FactoryPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
|
||||
static void FactoryPrintRecordStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
|
||||
{
|
||||
u16 num1 = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[battleMode][lvlMode];
|
||||
u16 num2 = gSaveBlock2Ptr->frontier.factoryRecordRentsCount[battleMode][lvlMode];
|
||||
FactoryPrintStreak(gText_Record, num1, num2, x1, x2, x3, y);
|
||||
}
|
||||
|
||||
u16 FactoryGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
static u16 FactoryGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
{
|
||||
u16 winStreak = gSaveBlock2Ptr->frontier.factoryWinStreaks[battleMode][lvlMode];
|
||||
if (winStreak > 9999)
|
||||
@@ -660,7 +645,7 @@ u16 FactoryGetWinStreak(u8 battleMode, u8 lvlMode)
|
||||
return winStreak;
|
||||
}
|
||||
|
||||
u16 FactoryGetRentsCount(u8 battleMode, u8 lvlMode)
|
||||
static u16 FactoryGetRentsCount(u8 battleMode, u8 lvlMode)
|
||||
{
|
||||
u16 rents = gSaveBlock2Ptr->frontier.factoryRentsCount[battleMode][lvlMode];
|
||||
if (rents > 9999)
|
||||
@@ -669,7 +654,7 @@ u16 FactoryGetRentsCount(u8 battleMode, u8 lvlMode)
|
||||
return rents;
|
||||
}
|
||||
|
||||
void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
|
||||
static void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8 x3, u8 y)
|
||||
{
|
||||
bool8 isCurrent;
|
||||
u16 winStreak = FactoryGetWinStreak(battleMode, lvlMode);
|
||||
@@ -697,7 +682,7 @@ void FactoryPrintPrevOrCurrentStreak(u8 battleMode, u8 lvlMode, u8 x1, u8 x2, u8
|
||||
FactoryPrintStreak(gText_Prev, winStreak, rents, x1, x2, x3, y);
|
||||
}
|
||||
|
||||
void ShowFactoryResultsWindow(u8 battleMode)
|
||||
static void ShowFactoryResultsWindow(u8 battleMode)
|
||||
{
|
||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||
@@ -720,8 +705,8 @@ void ShowFactoryResultsWindow(u8 battleMode)
|
||||
CopyWindowToVram(gRecordsWindowId, 3);
|
||||
}
|
||||
|
||||
// Battle Pyramid.
|
||||
void PyramidPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
// Battle Pyramid records.
|
||||
static void PyramidPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, str, x1, y, TEXT_SPEED_FF, NULL);
|
||||
if (num > 9999)
|
||||
@@ -731,13 +716,13 @@ void PyramidPrintStreak(const u8 *str, u16 num, u8 x1, u8 x2, u8 y)
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, x2, y, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
|
||||
void PyramidPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void PyramidPrintRecordStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
u16 num = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[lvlMode];
|
||||
PyramidPrintStreak(gText_Record, num, x1, x2, y);
|
||||
}
|
||||
|
||||
u16 PyramidGetWinStreak(u8 lvlMode)
|
||||
static u16 PyramidGetWinStreak(u8 lvlMode)
|
||||
{
|
||||
u16 winStreak = gSaveBlock2Ptr->frontier.pyramidWinStreaks[lvlMode];
|
||||
if (winStreak > 9999)
|
||||
@@ -746,7 +731,7 @@ u16 PyramidGetWinStreak(u8 lvlMode)
|
||||
return winStreak;
|
||||
}
|
||||
|
||||
void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
static void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
{
|
||||
bool8 isCurrent;
|
||||
u16 winStreak = PyramidGetWinStreak(lvlMode);
|
||||
@@ -762,7 +747,7 @@ void PyramidPrintPrevOrCurrentStreak(u8 lvlMode, u8 x1, u8 x2, u8 y)
|
||||
PyramidPrintStreak(gText_Prev, winStreak, x1, x2, y);
|
||||
}
|
||||
|
||||
void ShowPyramidResultsWindow(void)
|
||||
static void ShowPyramidResultsWindow(void)
|
||||
{
|
||||
gRecordsWindowId = AddWindow(&gUnknown_08611C74);
|
||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||
@@ -780,8 +765,8 @@ void ShowPyramidResultsWindow(void)
|
||||
CopyWindowToVram(gRecordsWindowId, 3);
|
||||
}
|
||||
|
||||
// Link contest. Why is it in this file?
|
||||
void ShowLinkContestResultsWindow(void)
|
||||
// Link contest records. Why is it in this file?
|
||||
static void ShowLinkContestResultsWindow(void)
|
||||
{
|
||||
const u8 *str;
|
||||
s32 i, j;
|
||||
@@ -957,8 +942,6 @@ void sub_81A35EC(void)
|
||||
gSpecialVar_Result = sub_81A3610();
|
||||
}
|
||||
|
||||
extern const u8 gUnknown_08611550[][4];
|
||||
|
||||
u8 sub_81A3610(void)
|
||||
{
|
||||
s32 ret = 0;
|
||||
@@ -1151,8 +1134,6 @@ u8 sub_81A3B30(u8 facility)
|
||||
+ FlagGet(FLAG_SYS_TOWER_GOLD + facility * 2);
|
||||
}
|
||||
|
||||
extern const u8 gUnknown_086118B4[29][7][4];
|
||||
|
||||
void sub_81A3B64(void)
|
||||
{
|
||||
s32 challengeNum = 0;
|
||||
@@ -1235,15 +1216,7 @@ void sub_81A3DA0(void)
|
||||
gSpecialVar_Result = FALSE;
|
||||
}
|
||||
|
||||
extern const u8 gText_SpaceAndSpace[];
|
||||
extern const u8 gText_CommaSpace[];
|
||||
extern const u8 gText_NewLine[];
|
||||
extern const u8 gText_ScrollTextUp[];
|
||||
extern const u8 gText_Space2[];
|
||||
extern const u8 gText_Are[];
|
||||
extern const u8 gText_Are2[];
|
||||
|
||||
u8 sub_81A3DD0(u16 species, u8 arg1, s32 arg2)
|
||||
static u8 sub_81A3DD0(u16 species, u8 arg1, s32 arg2)
|
||||
{
|
||||
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
|
||||
{
|
||||
@@ -1282,9 +1255,7 @@ u8 sub_81A3DD0(u16 species, u8 arg1, s32 arg2)
|
||||
return arg1;
|
||||
}
|
||||
|
||||
extern const u16 gUnknown_08611C9A[];
|
||||
|
||||
void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count)
|
||||
static void AppendIfValid(u16 species, u16 heldItem, u16 hp, u8 lvlMode, u8 monLevel, u16 *speciesArray, u16 *itemsArray, u8 *count)
|
||||
{
|
||||
s32 i = 0;
|
||||
|
||||
@@ -1494,3 +1465,194 @@ void sub_81A443C(void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81A447C(void)
|
||||
{
|
||||
u8 i, j, k;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
u16 monId = gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1;
|
||||
if (monId < PARTY_SIZE)
|
||||
{
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
for (k = 0; k < 4; k++)
|
||||
{
|
||||
if (GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1], MON_DATA_MOVE1 + k, NULL)
|
||||
== GetMonData(&gPlayerParty[i], MON_DATA_MOVE1 + j, NULL))
|
||||
break;
|
||||
}
|
||||
if (k == 4)
|
||||
SetMonMoveSlot(&gPlayerParty[i], MOVE_SKETCH, j);
|
||||
}
|
||||
gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->frontier.selectedPartyMons[i] - 1] = gPlayerParty[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_81A457C(void)
|
||||
{
|
||||
sub_81A5030(VarGet(VAR_FRONTIER_FACILITY));
|
||||
}
|
||||
|
||||
// Battle Frontier Ranking Hall records.
|
||||
static void Print1PRecord(s32 position, s32 x, s32 y, struct RankingHall1P *hallRecord, s32 hallFacilityId)
|
||||
{
|
||||
u8 text[32];
|
||||
u16 winStreak;
|
||||
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_123Dot[position], x * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||
hallRecord->name[PLAYER_NAME_LENGTH] = EOS;
|
||||
if (hallRecord->winStreak)
|
||||
{
|
||||
TVShowConvertInternationalString(text, hallRecord->name, hallRecord->language);
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 2) * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||
winStreak = hallRecord->winStreak;
|
||||
if (winStreak > 9999)
|
||||
winStreak = 9999;
|
||||
ConvertIntToDecimalStringN(gStringVar2, winStreak, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||
StringExpandPlaceholders(gStringVar4, gUnknown_08611D08[hallFacilityId]);
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, gUnknown_08611D08[hallFacilityId], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void Print2PRecord(s32 position, s32 x, s32 y, struct RankingHall2P *hallRecord)
|
||||
{
|
||||
u8 text[32];
|
||||
u16 winStreak;
|
||||
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gText_123Dot[position], x * 8, (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||
if (hallRecord->winStreak)
|
||||
{
|
||||
hallRecord->name1[PLAYER_NAME_LENGTH] = EOS;
|
||||
hallRecord->name2[PLAYER_NAME_LENGTH] = EOS;
|
||||
TVShowConvertInternationalString(text, hallRecord->name1, hallRecord->language);
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 2) * 8, (8 * (y + 5 * position - 1)) + 1, TEXT_SPEED_FF, NULL);
|
||||
if (IsStringJapanese(hallRecord->name2))
|
||||
TVShowConvertInternationalString(text, hallRecord->name2, LANGUAGE_JAPANESE);
|
||||
else
|
||||
StringCopy(text, hallRecord->name2);
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, text, (x + 4) * 8, (8 * (y + 5 * position + 1)) + 1, TEXT_SPEED_FF, NULL);
|
||||
|
||||
winStreak = hallRecord->winStreak;
|
||||
if (winStreak > 9999)
|
||||
winStreak = 9999;
|
||||
ConvertIntToDecimalStringN(gStringVar2, winStreak, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||
StringExpandPlaceholders(gStringVar4, gUnknown_08611D08[9]);
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, GetStringRightAlignXOffset(1, gUnknown_08611D08[9], 0xC8), (8 * (y + 5 * position)) + 1, TEXT_SPEED_FF, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void Fill1PRecords(struct RankingHall1P *dst, s32 hallFacilityId, s32 lvlMode)
|
||||
{
|
||||
s32 i, j;
|
||||
struct RankingHall1P record1P[4];
|
||||
struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords));
|
||||
GetPlayerHallRecords(playerHallRecords);
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
record1P[i] = gSaveBlock2Ptr->hallRecords1P[hallFacilityId][lvlMode][i];
|
||||
|
||||
record1P[3] = playerHallRecords->onePlayer[hallFacilityId][lvlMode];
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
s32 highestWinStreak = 0;
|
||||
s32 highestId = 0;
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
if (record1P[j].winStreak > highestWinStreak)
|
||||
{
|
||||
highestId = j;
|
||||
highestWinStreak = record1P[j].winStreak;
|
||||
}
|
||||
}
|
||||
if (record1P[3].winStreak >= highestWinStreak)
|
||||
highestId = 3;
|
||||
|
||||
dst[i] = record1P[highestId];
|
||||
record1P[highestId].winStreak = 0;
|
||||
}
|
||||
|
||||
free(playerHallRecords);
|
||||
}
|
||||
|
||||
static void Fill2PRecords(struct RankingHall2P *dst, s32 lvlMode)
|
||||
{
|
||||
s32 i, j;
|
||||
struct RankingHall2P record2P[4];
|
||||
struct PlayerHallRecords *playerHallRecords = calloc(1, sizeof(struct PlayerHallRecords));
|
||||
GetPlayerHallRecords(playerHallRecords);
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
record2P[i] = gSaveBlock2Ptr->hallRecords2P[lvlMode][i];
|
||||
|
||||
record2P[3] = playerHallRecords->twoPlayers[lvlMode];
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
s32 highestWinStreak = 0;
|
||||
s32 highestId = 0;
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
if (record2P[j].winStreak > highestWinStreak)
|
||||
{
|
||||
highestId = j;
|
||||
highestWinStreak = record2P[j].winStreak;
|
||||
}
|
||||
}
|
||||
if (record2P[3].winStreak >= highestWinStreak)
|
||||
highestId = 3;
|
||||
|
||||
dst[i] = record2P[highestId];
|
||||
record2P[highestId].winStreak = 0;
|
||||
}
|
||||
|
||||
free(playerHallRecords);
|
||||
}
|
||||
|
||||
static void PrintHallRecords(s32 hallFacilityId, s32 lvlMode)
|
||||
{
|
||||
s32 i;
|
||||
s32 x;
|
||||
struct RankingHall1P records1P[3];
|
||||
struct RankingHall2P records2P[3];
|
||||
|
||||
StringCopy(gStringVar1, gUnknown_08611CB0[hallFacilityId][0]);
|
||||
StringExpandPlaceholders(gStringVar4, gUnknown_08611CB0[hallFacilityId][1]);
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gStringVar4, 0, 1, TEXT_SPEED_FF, NULL);
|
||||
x = GetStringRightAlignXOffset(1, gUnknown_08611D00[lvlMode], 0xD0);
|
||||
AddTextPrinterParameterized(gRecordsWindowId, 1, gUnknown_08611D00[lvlMode], x, 1, TEXT_SPEED_FF, NULL);
|
||||
if (hallFacilityId == HALL_FACILITIES_COUNT)
|
||||
{
|
||||
gSaveBlock2Ptr->frontier.field_EE1[0][PLAYER_NAME_LENGTH] = EOS;
|
||||
gSaveBlock2Ptr->frontier.field_EE1[1][PLAYER_NAME_LENGTH] = EOS;
|
||||
Fill2PRecords(records2P, lvlMode);
|
||||
for (i = 0; i < 3; i++)
|
||||
Print2PRecord(i, 1, 4, &records2P[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Fill1PRecords(records1P, hallFacilityId, lvlMode);
|
||||
for (i = 0; i < 3; i++)
|
||||
Print1PRecord(i, 1, 4, &records1P[i], hallFacilityId);
|
||||
}
|
||||
}
|
||||
|
||||
void ShowRankingHallRecordsWindow(void)
|
||||
{
|
||||
gRecordsWindowId = AddWindow(&gUnknown_08611C84);
|
||||
NewMenuHelpers_DrawStdWindowFrame(gRecordsWindowId, FALSE);
|
||||
FillWindowPixelBuffer(gRecordsWindowId, 0x11);
|
||||
PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_50);
|
||||
PutWindowTilemap(gRecordsWindowId);
|
||||
CopyWindowToVram(gRecordsWindowId, 3);
|
||||
}
|
||||
|
||||
void ScrollRankingHallRecordsWindow(void)
|
||||
{
|
||||
FillWindowPixelBuffer(gRecordsWindowId, 0x11);
|
||||
PrintHallRecords(gSpecialVar_0x8005, FRONTIER_LVL_OPEN);
|
||||
CopyWindowToVram(gRecordsWindowId, 2);
|
||||
}
|
||||
@@ -33,31 +33,17 @@
|
||||
#include "new_game.h"
|
||||
#include "daycare.h"
|
||||
#include "international_string_util.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
|
||||
extern void ReceiveSecretBasesData(struct SecretBaseRecord *, size_t, u8);
|
||||
extern void ReceiveEasyChatPairsData(struct EasyChatPair *, size_t, u8);
|
||||
|
||||
// Static type declarations
|
||||
|
||||
struct UnknownRecMixingStruct
|
||||
struct RecordMixingHallRecords
|
||||
{
|
||||
u32 field_0;
|
||||
u16 field_4;
|
||||
u8 field_6[9];
|
||||
};
|
||||
|
||||
struct UnknownRecMixingStruct2
|
||||
{
|
||||
u32 field_0;
|
||||
u16 field_4;
|
||||
u16 field_6;
|
||||
u16 field_8;
|
||||
u8 field_A[16];
|
||||
};
|
||||
|
||||
struct UnknownRecMixingStruct3
|
||||
{
|
||||
u8 field_0[0x810];
|
||||
struct RankingHall1P hallRecords1P[HALL_FACILITIES_COUNT][2][6];
|
||||
struct RankingHall2P hallRecords2P[2][6];
|
||||
};
|
||||
|
||||
struct PlayerRecordsRS
|
||||
@@ -85,7 +71,7 @@ struct PlayerRecordsEmerald
|
||||
/* 0x1210 */ u16 giftItem;
|
||||
/* 0x1214 */ LilycoveLady lilycoveLady;
|
||||
/* 0x1254 */ struct Apprentice apprentice[2];
|
||||
/* 0x12dc */ struct UnkRecordMixingStruct2 unk_12dc;
|
||||
/* 0x12dc */ struct PlayerHallRecords hallRecords;
|
||||
/* 0x1434 */ u8 field_1434[0x10];
|
||||
}; // 0x1444
|
||||
|
||||
@@ -106,7 +92,7 @@ static IWRAM_DATA struct EasyChatPair *sEasyChatPairsSave;
|
||||
static IWRAM_DATA struct RecordMixingDayCareMail *gUnknown_03001148;
|
||||
static IWRAM_DATA void *sBattleTowerSave;
|
||||
static IWRAM_DATA LilycoveLady *sLilycoveLadySave;
|
||||
static IWRAM_DATA void *gUnknown_03001154; // gSaveBlock2Ptr->field_0DC;
|
||||
static IWRAM_DATA void *sApprenticesSave;
|
||||
static IWRAM_DATA void *sBattleTowerSave_Duplicate;
|
||||
static IWRAM_DATA u32 sRecordStructSize;
|
||||
static IWRAM_DATA u8 gUnknown_03001160;
|
||||
@@ -137,7 +123,7 @@ static void ReceiveGiftItem(u16 *item, u8 which);
|
||||
static void sub_80E7FF8(u8 taskId);
|
||||
static void sub_80E8110(struct Apprentice *arg0, struct Apprentice *arg1);
|
||||
static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2);
|
||||
static void sub_80E89AC(struct UnkRecordMixingStruct2 *arg0, size_t arg1, u32 arg2);
|
||||
static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2);
|
||||
static void sub_80E89F8(struct RecordMixingDayCareMail *dst);
|
||||
static void SanitizeDayCareMailForRuby(struct RecordMixingDayCareMail *src);
|
||||
static void SanitizeEmeraldBattleTowerRecord(struct EmeraldBattleTowerRecord *arg0);
|
||||
@@ -200,7 +186,7 @@ static void SetSrcLookupPointers(void)
|
||||
gUnknown_03001148 = &gUnknown_02039F9C;
|
||||
sBattleTowerSave = &gSaveBlock2Ptr->frontier.towerPlayer;
|
||||
sLilycoveLadySave = &gSaveBlock1Ptr->lilycoveLady;
|
||||
gUnknown_03001154 = gSaveBlock2Ptr->apprentices;
|
||||
sApprenticesSave = gSaveBlock2Ptr->apprentices;
|
||||
sBattleTowerSave_Duplicate = &gSaveBlock2Ptr->frontier.towerPlayer;
|
||||
}
|
||||
|
||||
@@ -266,8 +252,8 @@ static void PrepareExchangePacket(void)
|
||||
if (GetMultiplayerId() == 0)
|
||||
sSentRecord->emerald.giftItem = GetRecordMixingGift();
|
||||
|
||||
sub_80E8110(sSentRecord->emerald.apprentice, gUnknown_03001154);
|
||||
sub_80E8260(&sSentRecord->emerald.unk_12dc);
|
||||
sub_80E8110(sSentRecord->emerald.apprentice, sApprenticesSave);
|
||||
GetPlayerHallRecords(&sSentRecord->emerald.hallRecords);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -300,7 +286,7 @@ static void ReceiveExchangePacket(u32 which)
|
||||
ReceiveGiftItem(&sReceivedRecords->emerald.giftItem, which);
|
||||
ReceiveLilycoveLadyData(&sReceivedRecords->emerald.lilycoveLady, sizeof(struct PlayerRecordsEmerald), which);
|
||||
ReceiveApprenticeData(sReceivedRecords->emerald.apprentice, sizeof(struct PlayerRecordsEmerald), (u8) which);
|
||||
sub_80E89AC(&sReceivedRecords->emerald.unk_12dc, sizeof(struct PlayerRecordsEmerald), (u8) which);
|
||||
ReceiveRankingHallRecords(&sReceivedRecords->emerald.hallRecords, sizeof(struct PlayerRecordsEmerald), (u8) which);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1608,42 +1594,42 @@ static void sub_80E8110(struct Apprentice *dst, struct Apprentice *src)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80E8260(struct UnkRecordMixingStruct2 *dst)
|
||||
void GetPlayerHallRecords(struct PlayerHallRecords *dst)
|
||||
{
|
||||
s32 i, j;
|
||||
|
||||
for (i = 0; i < 9; i++)
|
||||
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
|
||||
{
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
CopyUnalignedWord(dst->field_0[i][j].playerId, gSaveBlock2Ptr->playerTrainerId);
|
||||
dst->field_0[i][j].language = GAME_LANGUAGE;
|
||||
StringCopy(dst->field_0[i][j].playerName, gSaveBlock2Ptr->playerName);
|
||||
CopyUnalignedWord(dst->onePlayer[i][j].id, gSaveBlock2Ptr->playerTrainerId);
|
||||
dst->onePlayer[i][j].language = GAME_LANGUAGE;
|
||||
StringCopy(dst->onePlayer[i][j].name, gSaveBlock2Ptr->playerName);
|
||||
}
|
||||
}
|
||||
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
dst->field_120[j].language = GAME_LANGUAGE;
|
||||
CopyUnalignedWord(dst->field_120[j].playerId1, gSaveBlock2Ptr->playerTrainerId);
|
||||
CopyUnalignedWord(dst->field_120[j].playerId2, gSaveBlock2Ptr->frontier.field_EF1[j]);
|
||||
StringCopy(dst->field_120[j].playerName1, gSaveBlock2Ptr->playerName);
|
||||
StringCopy(dst->field_120[j].playerName2, gSaveBlock2Ptr->frontier.field_EE1[j]);
|
||||
dst->twoPlayers[j].language = GAME_LANGUAGE;
|
||||
CopyUnalignedWord(dst->twoPlayers[j].id1, gSaveBlock2Ptr->playerTrainerId);
|
||||
CopyUnalignedWord(dst->twoPlayers[j].id2, gSaveBlock2Ptr->frontier.field_EF1[j]);
|
||||
StringCopy(dst->twoPlayers[j].name1, gSaveBlock2Ptr->playerName);
|
||||
StringCopy(dst->twoPlayers[j].name2, gSaveBlock2Ptr->frontier.field_EE1[j]);
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
dst->field_0[0][i].field_4 = gSaveBlock2Ptr->frontier.field_CF0[i];
|
||||
dst->field_0[1][i].field_4 = gSaveBlock2Ptr->frontier.field_CF4[i];
|
||||
dst->field_0[2][i].field_4 = gSaveBlock2Ptr->frontier.field_CF8[i];
|
||||
dst->field_0[3][i].field_4 = gSaveBlock2Ptr->frontier.field_D14[0][i];
|
||||
dst->field_0[4][i].field_4 = gSaveBlock2Ptr->frontier.field_DD0[0][i];
|
||||
dst->field_0[5][i].field_4 = gSaveBlock2Ptr->frontier.field_DDE[i];
|
||||
dst->field_0[6][i].field_4 = gSaveBlock2Ptr->frontier.field_DEA[i];
|
||||
dst->field_0[7][i].field_4 = gSaveBlock2Ptr->frontier.field_E08[i];
|
||||
dst->field_0[8][i].field_4 = gSaveBlock2Ptr->frontier.field_E1E[i];
|
||||
dst->onePlayer[0][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
|
||||
dst->onePlayer[1][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_DOUBLES][i];
|
||||
dst->onePlayer[2][i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_MULTIS][i];
|
||||
dst->onePlayer[3][i].winStreak = gSaveBlock2Ptr->frontier.domeRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
|
||||
dst->onePlayer[4][i].winStreak = gSaveBlock2Ptr->frontier.palaceRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
|
||||
dst->onePlayer[5][i].winStreak = gSaveBlock2Ptr->frontier.arenaRecordStreaks[i];
|
||||
dst->onePlayer[6][i].winStreak = gSaveBlock2Ptr->frontier.factoryRecordWinStreaks[FRONTIER_MODE_SINGLES][i];
|
||||
dst->onePlayer[7][i].winStreak = gSaveBlock2Ptr->frontier.pikeRecordStreaks[i];
|
||||
dst->onePlayer[8][i].winStreak = gSaveBlock2Ptr->frontier.pyramidRecordStreaks[i];
|
||||
|
||||
dst->field_120[i].field_8 = gSaveBlock2Ptr->frontier.field_CFC[i];
|
||||
dst->twoPlayers[i].winStreak = gSaveBlock2Ptr->frontier.towerRecordWinStreaks[FRONTIER_MODE_LINK_MULTIS][i];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1702,7 +1688,7 @@ static void ReceiveApprenticeData(struct Apprentice *arg0, size_t arg1, u32 arg2
|
||||
}
|
||||
|
||||
NAKED
|
||||
static void sub_80E8578(struct UnknownRecMixingStruct3 *arg0, struct UnkRecordMixingStruct2 *arg1, size_t arg2, u32 arg3, u32 arg4)
|
||||
static void sub_80E8578(struct RecordMixingHallRecords *arg0, struct PlayerHallRecords *arg1, size_t arg2, u32 arg3, u32 arg4)
|
||||
{
|
||||
asm_unified(" push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
@@ -2106,133 +2092,75 @@ _080E8864:\n\
|
||||
");
|
||||
}
|
||||
|
||||
static void sub_80E8880(struct UnknownRecMixingStruct *arg0, struct UnknownRecMixingStruct *arg1)
|
||||
static void sub_80E8880(struct RankingHall1P *arg0, struct RankingHall1P *arg1)
|
||||
{
|
||||
s32 i, j;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
s32 r2 = 0;
|
||||
s32 r4 = -1;
|
||||
s32 highestWinStreak = 0;
|
||||
s32 highestId = -1;
|
||||
for (j = 0; j < 6; j++)
|
||||
{
|
||||
if (arg1[j].field_4 > r2)
|
||||
if (arg1[j].winStreak > highestWinStreak)
|
||||
{
|
||||
r4 = j;
|
||||
r2 = arg1[j].field_4;
|
||||
highestId = j;
|
||||
highestWinStreak = arg1[j].winStreak;
|
||||
}
|
||||
}
|
||||
|
||||
if (r4 >= 0)
|
||||
if (highestId >= 0)
|
||||
{
|
||||
arg0[i] = arg1[r4];
|
||||
arg1[r4].field_4 = 0;
|
||||
arg0[i] = arg1[highestId];
|
||||
arg1[highestId].winStreak = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80E88CC(struct UnknownRecMixingStruct2 *arg0, struct UnknownRecMixingStruct2 *arg1)
|
||||
static void sub_80E88CC(struct RankingHall2P *arg0, struct RankingHall2P *arg1)
|
||||
{
|
||||
s32 i, j;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
s32 r2 = 0;
|
||||
s32 r4 = -1;
|
||||
s32 highestWinStreak = 0;
|
||||
s32 highestId = -1;
|
||||
for (j = 0; j < 6; j++)
|
||||
{
|
||||
if (arg1[j].field_8 > r2)
|
||||
if (arg1[j].winStreak > highestWinStreak)
|
||||
{
|
||||
r4 = j;
|
||||
r2 = arg1[j].field_8;
|
||||
highestId = j;
|
||||
highestWinStreak = arg1[j].winStreak;
|
||||
}
|
||||
}
|
||||
|
||||
if (r4 >= 0)
|
||||
if (highestId >= 0)
|
||||
{
|
||||
arg0[i] = arg1[r4];
|
||||
arg1[r4].field_8 = 0;
|
||||
arg0[i] = arg1[highestId];
|
||||
arg1[highestId].winStreak = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NAKED
|
||||
static void sub_80E8924(struct UnknownRecMixingStruct3 *arg0)
|
||||
static void sub_80E8924(struct RecordMixingHallRecords *arg0)
|
||||
{
|
||||
asm_unified("push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
mov r6, r9\n\
|
||||
mov r5, r8\n\
|
||||
push {r5-r7}\n\
|
||||
mov r9, r0\n\
|
||||
movs r0, 0\n\
|
||||
ldr r1, =gSaveBlock2Ptr\n\
|
||||
mov r10, r1\n\
|
||||
_080E8936:\n\
|
||||
lsls r1, r0, 1\n\
|
||||
adds r2, r0, 0x1\n\
|
||||
mov r8, r2\n\
|
||||
adds r1, r0\n\
|
||||
lsls r0, r1, 5\n\
|
||||
movs r2, 0x87\n\
|
||||
lsls r2, 2\n\
|
||||
adds r7, r0, r2\n\
|
||||
lsls r1, 6\n\
|
||||
mov r0, r9\n\
|
||||
adds r4, r0, r1\n\
|
||||
movs r6, 0\n\
|
||||
movs r5, 0x1\n\
|
||||
_080E8950:\n\
|
||||
mov r1, r10\n\
|
||||
ldr r0, [r1]\n\
|
||||
adds r0, r7\n\
|
||||
adds r0, r6\n\
|
||||
adds r1, r4, 0\n\
|
||||
bl sub_80E8880\n\
|
||||
adds r4, 0x60\n\
|
||||
adds r6, 0x30\n\
|
||||
subs r5, 0x1\n\
|
||||
cmp r5, 0\n\
|
||||
bge _080E8950\n\
|
||||
mov r0, r8\n\
|
||||
cmp r0, 0x8\n\
|
||||
ble _080E8936\n\
|
||||
movs r5, 0\n\
|
||||
ldr r4, =gSaveBlock2Ptr\n\
|
||||
_080E8972:\n\
|
||||
movs r0, 0x54\n\
|
||||
adds r1, r5, 0\n\
|
||||
muls r1, r0\n\
|
||||
ldr r2, =0x0000057c\n\
|
||||
adds r1, r2\n\
|
||||
ldr r0, [r4]\n\
|
||||
adds r0, r1\n\
|
||||
movs r1, 0xA8\n\
|
||||
muls r1, r5\n\
|
||||
movs r2, 0xD8\n\
|
||||
lsls r2, 3\n\
|
||||
adds r1, r2\n\
|
||||
add r1, r9\n\
|
||||
bl sub_80E88CC\n\
|
||||
adds r5, 0x1\n\
|
||||
cmp r5, 0x1\n\
|
||||
ble _080E8972\n\
|
||||
pop {r3-r5}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
mov r10, r5\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool");
|
||||
s32 i, j;
|
||||
|
||||
for (i = 0; i < HALL_FACILITIES_COUNT; i++)
|
||||
{
|
||||
for (j = 0; j < 2; j++)
|
||||
sub_80E8880(gSaveBlock2Ptr->hallRecords1P[i][j], arg0->hallRecords1P[i][j]);
|
||||
}
|
||||
for (j = 0; j < 2; j++)
|
||||
sub_80E88CC(gSaveBlock2Ptr->hallRecords2P[j], arg0->hallRecords2P[j]);
|
||||
}
|
||||
|
||||
static void sub_80E89AC(struct UnkRecordMixingStruct2 *arg0, size_t arg1, u32 arg2)
|
||||
static void ReceiveRankingHallRecords(struct PlayerHallRecords *hallRecords, size_t arg1, u32 arg2)
|
||||
{
|
||||
u8 linkPlayerCount = GetLinkPlayerCount();
|
||||
struct UnknownRecMixingStruct3 *largeStructPtr = AllocZeroed(sizeof(struct UnknownRecMixingStruct3));
|
||||
struct RecordMixingHallRecords *largeStructPtr = AllocZeroed(sizeof(struct RecordMixingHallRecords));
|
||||
|
||||
sub_80E8578(largeStructPtr, arg0, arg1, arg2, linkPlayerCount);
|
||||
sub_80E8578(largeStructPtr, hallRecords, arg1, arg2, linkPlayerCount);
|
||||
sub_80E8924(largeStructPtr);
|
||||
|
||||
Free(largeStructPtr);
|
||||
|
||||
@@ -1569,9 +1569,7 @@ asm(".align 2");
|
||||
const u8 gUnknown_085EE410[] = _("Floors cleared: {STR_VAR_2}");
|
||||
|
||||
asm(".align 2");
|
||||
const u8 gText_1Dot[] = _("1.");
|
||||
const u8 gUnknown_085EE427[] = _("2.");
|
||||
const u8 gUnknown_085EE42A[] = _("3.");
|
||||
const u8 gText_123Dot[][3] = {_("1."), _("2."), _("3.")};
|
||||
const u8 gText_SavingDontTurnOff2[] = _("SAVING…\nDON’T TURN OFF THE POWER.");
|
||||
const u8 gText_BlenderMaxSpeedRecord[] = _("BERRY BLENDER\nMAXIMUM SPEED RECORD!");
|
||||
const u8 gText_234Players[] = _("2 PLAYERS\n3 PLAYERS\n4 PLAYERS");
|
||||
|
||||
Reference in New Issue
Block a user