Frontier, finish ranking hall

This commit is contained in:
DizzyEggg
2018-10-28 21:11:53 +01:00
parent 98d8dbfd8a
commit 3a9eeef844
13 changed files with 417 additions and 1090 deletions

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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…\nDONT TURN OFF THE POWER.");
const u8 gText_BlenderMaxSpeedRecord[] = _("BERRY BLENDER\nMAXIMUM SPEED RECORD!");
const u8 gText_234Players[] = _("2 PLAYERS\n3 PLAYERS\n4 PLAYERS");