From 9bf2f7817a9b53a1e52b3dfefbc6222bbadf38a1 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Sat, 16 Nov 2024 20:06:31 -0600 Subject: [PATCH] This should fix saves --- include/sf64save.h | 4 ++-- src/engine/fox_save.c | 8 +++++--- src/overlays/ovl_menu/fox_option.c | 6 +++++- src/sys/sys_joybus.c | 16 ++++------------ 4 files changed, 16 insertions(+), 18 deletions(-) diff --git a/include/sf64save.h b/include/sf64save.h index 2f80a517..b57f17d5 100644 --- a/include/sf64save.h +++ b/include/sf64save.h @@ -63,8 +63,8 @@ typedef struct { s32 Save_Write(void); s32 Save_Read(void); -void Save_ReadData(void); -void Save_WriteData(void); +bool Save_ReadData(void); +bool Save_WriteData(void); s32 Save_WriteEeprom(SaveFile*); s32 Save_ReadEeprom(SaveFile*); diff --git a/src/engine/fox_save.c b/src/engine/fox_save.c index f459a93a..8b23e8d5 100644 --- a/src/engine/fox_save.c +++ b/src/engine/fox_save.c @@ -44,15 +44,17 @@ s32 Save_Write(void) { gSaveFile.save.checksum = Save_Checksum(&gSaveFile.save); gSaveFile.backup = gSaveFile.save; gSaveIOBuffer = gSaveFile; - Save_WriteData(); - return 0; + return Save_WriteData(); } s32 Save_Read(void) { OSMesg* sp24; s32 i; - Save_ReadData(); + if(!Save_ReadData()){ + return 0; + } + gSaveFile = gSaveIOBuffer; if (gSaveFile.save.checksum == Save_Checksum(&gSaveFile.save)) { diff --git a/src/overlays/ovl_menu/fox_option.c b/src/overlays/ovl_menu/fox_option.c index aa7b5827..558302b9 100644 --- a/src/overlays/ovl_menu/fox_option.c +++ b/src/overlays/ovl_menu/fox_option.c @@ -1875,8 +1875,12 @@ void Option_Data_Update(void) { if (temp_fv0 == 0.0f) { D_menu_801B91CC = 3; - + #ifdef AVOID_UB + gSaveFile.save = gDefaultSave; + gSaveFile.backup = gDefaultSave; + #else gSaveFile = *(SaveFile*) &gDefaultSave; + #endif Save_Write(); diff --git a/src/sys/sys_joybus.c b/src/sys/sys_joybus.c index cd613a39..415d630b 100644 --- a/src/sys/sys_joybus.c +++ b/src/sys/sys_joybus.c @@ -98,20 +98,12 @@ void Controller_ReadData(void) { osSendMesg(&gControllerMesgQueue, OS_MESG_32(SI_CONT_READ_DONE), OS_MESG_PRI_NORMAL); } -void Save_ReadData(void) { - if ((gStartNMI == 0) && (Save_ReadEeprom(&gSaveIOBuffer) == 0)) { - osSendMesg(&gSaveMesgQueue, OS_MESG_32(SI_SAVE_SUCCESS), OS_MESG_PRI_NORMAL); - return; - } - osSendMesg(&gSaveMesgQueue, OS_MESG_32(SI_SAVE_FAILED), OS_MESG_PRI_NORMAL); +bool Save_ReadData(void) { + return Save_ReadEeprom(&gSaveIOBuffer) == 0; } -void Save_WriteData(void) { - if ((gStartNMI == 0) && (Save_WriteEeprom(&gSaveIOBuffer) == 0)) { - osSendMesg(&gSaveMesgQueue, OS_MESG_32(SI_SAVE_SUCCESS), OS_MESG_PRI_NORMAL); - return; - } - osSendMesg(&gSaveMesgQueue, OS_MESG_32(SI_SAVE_FAILED), OS_MESG_PRI_NORMAL); +bool Save_WriteData(void) { + return Save_WriteEeprom(&gSaveIOBuffer) == 0; } void Controller_Rumble(void) {