summaryrefslogtreecommitdiff
path: root/src/save.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/save.c')
-rw-r--r--src/save.c73
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;