diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/save.c | 11 | ||||
-rw-r--r-- | src/save_failed_screen.c | 93 |
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; |