mirror of
https://github.com/pret/pokeruby.git
synced 2026-04-26 00:13:40 -05:00
name save_failed_screen.c functions
This commit is contained in:
parent
3af3ef6c2c
commit
c48b7b23a7
|
|
@ -450,9 +450,6 @@ void sub_813EDBC(/*TODO: arg types*/);
|
|||
// asm/mystery_event_menu.o
|
||||
void CB2_InitMysteryEventMenu(void);
|
||||
|
||||
// asm/save_failed_screen.o
|
||||
void fullscreen_save_activate(u8);
|
||||
|
||||
// asm/rom_81473B8.o
|
||||
bool8 sub_81474C8(void);
|
||||
void sub_8147514(void);
|
||||
|
|
|
|||
6
include/save_failed_screen.h
Normal file
6
include/save_failed_screen.h
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef GUARD_SAVE_FAILED_SCREEN_H
|
||||
#define GUARD_SAVE_FAILED_SCREEN_H
|
||||
|
||||
void DoSaveFailedScreen(u8);
|
||||
|
||||
#endif // GUARD_SAVE_FAILED_SCREEN_H
|
||||
11
src/save.c
11
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
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 fullscreen_save_activate(u8 var)
|
||||
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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user