Merge pull request #591 from mwpenny/save-fix

Do not save partial savefile on first boot (fixes #583)
This commit is contained in:
lambertjamesd 2024-01-07 13:53:42 -07:00 committed by GitHub
commit b0c02a33f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -77,6 +77,12 @@ int savefileSramLoad(void* sramAddr, void* ramAddr, int size) {
return 1;
}
static void savefileUpdateSlot(int slotIndex, unsigned char testChamber, unsigned char subjectNumber, unsigned char slotOrder) {
gSaveData.saveSlotMetadata[slotIndex].testChamber = testChamber;
gSaveData.saveSlotMetadata[slotIndex].testSubjectNumber = subjectNumber;
gSaveData.saveSlotMetadata[slotIndex].saveSlotOrder = slotOrder;
}
void savefileNew() {
zeroMemory(&gSaveData, sizeof(gSaveData));
gSaveData.header.header = SAVEFILE_HEADER;
@ -85,7 +91,7 @@ void savefileNew() {
gSaveData.header.flags = 0;
for (int i = 0; i < MAX_SAVE_SLOTS; ++i) {
savefileDeleteGame(i);
savefileUpdateSlot(i, NO_TEST_CHAMBER, 0xFF, 0xFF);
}
controllerSetDefaultSource();
@ -162,9 +168,7 @@ void savefileDeleteGame(int slotIndex) {
}
}
gSaveData.saveSlotMetadata[slotIndex].testChamber = NO_TEST_CHAMBER;
gSaveData.saveSlotMetadata[slotIndex].testSubjectNumber = 0xFF;
gSaveData.saveSlotMetadata[slotIndex].saveSlotOrder = 0xFF;
savefileUpdateSlot(slotIndex, NO_TEST_CHAMBER, 0xFF, 0xFF);
savefileSave();
}
@ -184,9 +188,7 @@ void savefileSaveGame(Checkpoint checkpoint, u16* screenshot, int testChamberDis
}
}
gSaveData.saveSlotMetadata[slotIndex].testChamber = testChamberDisplayNumber;
gSaveData.saveSlotMetadata[slotIndex].testSubjectNumber = subjectNumber;
gSaveData.saveSlotMetadata[slotIndex].saveSlotOrder = 0;
savefileUpdateSlot(slotIndex, testChamberDisplayNumber, subjectNumber, 0);
savefileSave();
}