summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/save.c11
-rw-r--r--src/save_failed_screen.c93
2 files changed, 54 insertions, 50 deletions
diff --git a/src/save.c b/src/save.c
index 1f527bbc0..2771b4ea5 100644
--- a/src/save.c
+++ b/src/save.c
@@ -5,6 +5,7 @@
#include "load_save.h"
#include "rom4.h"
#include "gba/flash_internal.h"
+#include "save_failed_screen.h"
extern struct SaveSection unk_2000000;
@@ -585,7 +586,7 @@ u8 sub_8125D44(u8 a1)
sub_8125C3C(a1);
if (!gUnknown_03005EA8)
return 1;
- fullscreen_save_activate(a1);
+ DoSaveFailedScreen(a1);
return 0xFF;
}
@@ -602,7 +603,7 @@ bool8 sub_8125DA8(void)
{
u8 v0 = sub_812550C(14, gSaveSectionLocations);
if (gUnknown_03005EA8)
- fullscreen_save_activate(0);
+ DoSaveFailedScreen(0);
if (v0 == 0xFF)
return 1;
else
@@ -613,7 +614,7 @@ u8 sub_8125DDC(void)
{
sub_812556C(14, gSaveSectionLocations);
if (gUnknown_03005EA8)
- fullscreen_save_activate(0);
+ DoSaveFailedScreen(0);
return 0;
}
@@ -621,7 +622,7 @@ u8 sub_8125E04(void)
{
sub_8125758(14, gSaveSectionLocations);
if (gUnknown_03005EA8)
- fullscreen_save_activate(0);
+ DoSaveFailedScreen(0);
return 0;
}
@@ -651,7 +652,7 @@ u8 sub_8125E6C(void)
retVal = 1;
}
if (gUnknown_03005EA8)
- fullscreen_save_activate(1);
+ DoSaveFailedScreen(1);
return retVal;
}
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index ae93f5b43..bc38c4629 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -52,29 +52,32 @@ extern const u8 gSaveFailedClockGfx[];
extern const u8 gSaveFailedClockPal[];
extern u8 gBirchBagGrassPal[];
-void sub_8146E50(void);
-void sub_8147048(void);
-void sub_8147154(void);
-void sub_81471A4(void);
-void sub_81471EC(void);
-void sub_8147218(void);
-bool8 sub_814737C(u32);
-
-void fullscreen_save_activate(u8 var)
+static void VBlankCB(void);
+static void CB2_SaveFailedScreen(void);
+static void CB2_WipeSave(void);
+static void CB2_GameplayCannotBeContinued(void);
+static void CB2_FadeAndReturnToTitleScreen(void);
+static void CB2_ReturnToTitleScreen(void);
+static void VBlankCB_UpdateClockGraphics(void);
+static bool8 VerifySectorWipe(u16 sector);
+static bool8 WipeSector(u16 sector);
+static bool8 WipeSectors(u32 sectorBits);
+
+void DoSaveFailedScreen(u8 var)
{
- SetMainCallback2(sub_8146E50);
+ SetMainCallback2(CB2_SaveFailedScreen);
gUnknown_0203933C = var;
gUnknown_0203933E.unk0 = 0;
}
-void sub_8146E3C(void)
+static void VBlankCB(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-void sub_8146E50(void)
+static void CB2_SaveFailedScreen(void)
{
u16 ime;
@@ -119,7 +122,7 @@ void sub_8146E50(void)
REG_IE |= INTR_FLAG_VBLANK;
REG_IME = ime;
REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
- SetVBlankCallback(sub_8146E3C);
+ SetVBlankCallback(VBlankCB);
REG_BG3CNT = 0x703;
REG_BG2CNT = 0x602;
REG_BG0CNT = 0x1f08;
@@ -129,29 +132,29 @@ void sub_8146E50(void)
case 1:
if (!UpdatePaletteFade())
{
- SetMainCallback2(sub_8147048);
- SetVBlankCallback(sub_8147218);
+ SetMainCallback2(CB2_WipeSave);
+ SetVBlankCallback(VBlankCB_UpdateClockGraphics);
}
break;
}
}
-void sub_8147048(void)
+static void CB2_WipeSave(void)
{
- u8 clockVal = 0;
+ u8 wipeTries = 0;
gUnknown_0203933E.unk0 = 1;
- while (gUnknown_03005EA8 && clockVal < 3) // _0814705C
+ while (gUnknown_03005EA8 && wipeTries < 3)
{
- if (sub_814737C(gUnknown_03005EA8))
+ if (WipeSectors(gUnknown_03005EA8))
{
MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19);
MenuPrint(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1);
- SetMainCallback2(sub_8147154);
+ SetMainCallback2(CB2_GameplayCannotBeContinued);
return;
}
-
+
MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19);
MenuPrint(gSystemText_CheckCompleteSaveAttempt, 2, MSG_WIN_TOP + 1);
sub_8125C3C(gUnknown_0203933C);
@@ -159,16 +162,16 @@ void sub_8147048(void)
if (gUnknown_03005EA8)
MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1);
- clockVal++;
+ wipeTries++;
}
- if (clockVal == 3) // _081470A6
+ if (wipeTries == 3)
{
MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19);
MenuPrint(gSystemText_BackupDamagedGameContinue, 2, MSG_WIN_TOP + 1);
- SetMainCallback2(sub_81471A4);
+ SetMainCallback2(CB2_FadeAndReturnToTitleScreen); // called again below
}
- else // _081470E4
+ else
{
MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19);
@@ -178,10 +181,10 @@ void sub_8147048(void)
MenuPrint(gSystemText_SaveCompletedPressA, 2, MSG_WIN_TOP + 1);
}
- SetMainCallback2(sub_81471A4); // seemingly called twice?
+ SetMainCallback2(CB2_FadeAndReturnToTitleScreen);
}
-void sub_8147154(void)
+static void CB2_GameplayCannotBeContinued(void)
{
gUnknown_0203933E.unk0 = 0;
@@ -189,12 +192,12 @@ void sub_8147154(void)
{
MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19);
MenuPrint(gSystemText_GameplayEnded, 2, MSG_WIN_TOP + 1);
- SetVBlankCallback(sub_8146E3C);
- SetMainCallback2(sub_81471A4);
+ SetVBlankCallback(VBlankCB);
+ SetMainCallback2(CB2_FadeAndReturnToTitleScreen);
}
}
-void sub_81471A4(void)
+static void CB2_FadeAndReturnToTitleScreen(void)
{
u8 zero;
@@ -203,12 +206,12 @@ void sub_81471A4(void)
if (gMain.newKeys & A_BUTTON)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, zero, 16, 0);
- SetVBlankCallback(sub_8146E3C);
- SetMainCallback2(sub_81471EC);
+ SetVBlankCallback(VBlankCB);
+ SetMainCallback2(CB2_ReturnToTitleScreen);
}
}
-void sub_81471EC(void)
+static void CB2_ReturnToTitleScreen(void)
{
if (!UpdatePaletteFade())
{
@@ -224,7 +227,7 @@ void sub_81471EC(void)
}
}
-void sub_8147218(void)
+static void VBlankCB_UpdateClockGraphics(void)
{
unsigned int n = (gMain.vblankCounter2 >> 3) & 7;
@@ -248,12 +251,12 @@ void sub_8147218(void)
gUnknown_0203933E.unk2--;
}
-bool8 sub_81472E4(u16 var)
+static bool8 VerifySectorWipe(u16 sector)
{
u32 *ptr = (u32 *)unk_2000000;
u16 i;
- ReadFlash(var, 0, (u8 *)ptr, 4096);
+ ReadFlash(sector, 0, (u8 *)ptr, 4096);
for (i = 0; i < 0x400; i++, ptr++)
if (*ptr)
@@ -262,31 +265,31 @@ bool8 sub_81472E4(u16 var)
return FALSE;
}
-bool8 sub_8147324(u16 sector)
+static bool8 WipeSector(u16 sector)
{
u16 i, j;
- bool8 success = TRUE;
+ bool8 failed = TRUE;
- for (i = 0; success && i < 130; i++)
+ for (i = 0; failed && i < 130; i++)
{
for (j = 0; j < 0x1000; j++)
ProgramFlashByte(sector, j, 0);
- success = sub_81472E4(sector);
+ failed = VerifySectorWipe(sector);
}
- return success;
+ return failed;
}
-bool8 sub_814737C(u32 var)
+static bool8 WipeSectors(u32 sectorBits)
{
u16 i;
for (i = 0; i < 0x20; i++)
- if (var & (1 << i) && !sub_8147324(i))
- var &= ~(1 << i);
+ if ((sectorBits & (1 << i)) && !WipeSector(i))
+ sectorBits &= ~(1 << i);
- if (var == 0)
+ if (sectorBits == 0)
return FALSE;
else
return TRUE;