diff options
Diffstat (limited to 'src/save.c')
-rw-r--r-- | src/save.c | 73 |
1 files changed, 23 insertions, 50 deletions
diff --git a/src/save.c b/src/save.c index c6b82bc0a..49db679f8 100644 --- a/src/save.c +++ b/src/save.c @@ -1,30 +1,11 @@ #include "global.h" +#include "save.h" +#include "asm.h" +#include "gba/gba.h" +#include "load_save.h" +#include "rom4.h" #include "gba/flash_internal.h" - -struct SaveSectionLocation -{ - void *data; - u16 size; -}; - -struct SaveSection -{ - u8 data[0xFF4]; - u16 id; - u16 checksum; - u32 unknown; - u32 counter; -}; - -struct UnkSaveSection -{ - u8 data[0xFF4]; - u32 unknown; -}; - -extern u32 sub_8053108(u8); -extern void sav12_xor_increment(u8); -extern u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n); +#include "save_failed_screen.h" extern struct SaveSection unk_2000000; @@ -46,14 +27,6 @@ extern struct SaveSectionLocation gSaveSectionLocations[]; extern struct SaveSectionLocation gHallOfFameSaveSectionLocations[]; extern u8 gUnknown_08401E24[]; -u8 sub_81252D8(u16, struct SaveSectionLocation *); -u8 sub_8125440(u8, u8 *); -u8 sub_81255B8(u16, struct SaveSectionLocation *); -u8 sub_81258BC(u16, struct SaveSectionLocation *); -u8 sub_8125BF8(u8, struct SaveSection *); -u8 sub_8125974(struct SaveSectionLocation *); -u16 sub_8125C10(void *, u16); - void ClearSaveData(void) { u16 i; @@ -551,7 +524,7 @@ u8 sub_8125B88(u8 a1, u8 *data, u16 size) u8 sub_8125BF8(u8 sector, struct SaveSection *section) { - ReadFlash(sector, 0, section, 0x1000); + ReadFlash(sector, 0, section->data, 0x1000); return 1; } @@ -575,31 +548,31 @@ u8 sub_8125C3C(u8 a1) for (i = 28; i < 32; i++) EraseFlashSector(i); case 3: - if (sub_8053108(10) < 999) - sav12_xor_increment(10); + if (GetGameStat(10) < 999) + IncrementGameStat(10); for (i = 0; i < 2; i++) sub_81253C8(28 + i, gHallOfFameSaveSectionLocations[i].data, gHallOfFameSaveSectionLocations[i].size); - save_serialize_game(); + SaveSerializedGame(); save_write_to_flash(0xFFFF, gSaveSectionLocations); break; case 0: default: - save_serialize_game(); + SaveSerializedGame(); save_write_to_flash(0xFFFF, gSaveSectionLocations); break; case 1: - save_serialize_game(); + SaveSerializedGame(); for (i = 0; i < 5; i++) save_write_to_flash(i, gSaveSectionLocations); break; case 2: - save_serialize_game(); + SaveSerializedGame(); save_write_to_flash(0, gSaveSectionLocations); break; case 4: for (i = 28; i < 32; i++) EraseFlashSector(i); - save_serialize_game(); + SaveSerializedGame(); save_write_to_flash(0xFFFF, gSaveSectionLocations); break; } @@ -613,7 +586,7 @@ u8 sub_8125D44(u8 a1) sub_8125C3C(a1); if (!gUnknown_03005EA8) return 1; - fullscreen_save_activate(a1); + DoSaveFailedScreen(a1); return 0xFF; } @@ -621,7 +594,7 @@ u8 sub_8125D80(void) { if (gUnknown_3004820 != 1) return 1; - save_serialize_game(); + SaveSerializedGame(); sub_812546C(gSaveSectionLocations); return 0; } @@ -630,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 @@ -641,7 +614,7 @@ u8 sub_8125DDC(void) { sub_812556C(14, gSaveSectionLocations); if (gUnknown_03005EA8) - fullscreen_save_activate(0); + DoSaveFailedScreen(0); return 0; } @@ -649,7 +622,7 @@ u8 sub_8125E04(void) { sub_8125758(14, gSaveSectionLocations); if (gUnknown_03005EA8) - fullscreen_save_activate(0); + DoSaveFailedScreen(0); return 0; } @@ -658,7 +631,7 @@ u8 sub_8125E2C(void) if (gUnknown_3004820 != 1) return 1; - save_serialize_game(); + SaveSerializedGame(); sub_81254C8(gSaveSectionLocations); sub_812556C(gUnknown_03005EB4 + 1, gSaveSectionLocations); return 0; @@ -679,7 +652,7 @@ u8 sub_8125E6C(void) retVal = 1; } if (gUnknown_03005EA8) - fullscreen_save_activate(1); + DoSaveFailedScreen(1); return retVal; } @@ -698,7 +671,7 @@ u8 sub_8125EC8(u8 a1) case 0: default: result = sub_812587C(0xFFFF, gSaveSectionLocations); - save_deserialize_game(); + LoadSerializedGame(); gSaveFileStatus = result; gUnknown_03005EBC = 0; break; @@ -720,7 +693,7 @@ bool8 unref_sub_8125F4C(struct UnkSaveSection *a1) for (i = 0; i < 0x1000; i++) raw[i] = 0; - ReadFlash(gUnknown_08401E24[0], 0, a1, 4096); + ReadFlash(gUnknown_08401E24[0], 0, a1->data, 4096); if (a1->unknown != 0x8012025) return FALSE; |