From 0a4a335e4a837d5df3eaf9b6818cedcaaa6192c0 Mon Sep 17 00:00:00 2001 From: gymnast86 Date: Fri, 4 Sep 2026 02:10:02 -0500 Subject: [PATCH] SaveService: Move save_slot_written call and onWritten notification (#2388) * move onWritten notification to before sidecar flush * call save_slot_written in dataWrite() instead of memCardDataSaveWait2 * move save_slot_written to memCardDataSaveWait --- src/d/d_menu_save.cpp | 10 ++++++---- src/dusk/mods/svc/save.cpp | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/d/d_menu_save.cpp b/src/d/d_menu_save.cpp index 48f3f953ea..a9c4e8f908 100644 --- a/src/d/d_menu_save.cpp +++ b/src/d/d_menu_save.cpp @@ -1452,6 +1452,12 @@ void dMenu_save_c::memCardDataSaveWait() { mCmdState = g_mDoMemCd_control.SaveSync(); if (mCmdState != 0) { +#if TARGET_PC + if (mCmdState == 1) { + dusk::mods::svc::save_slot_written( + mSelectedFile, mSaveBuffer + mSelectedFile * QUEST_LOG_SIZE); + } +#endif printf("save cmdState %d\n", mCmdState); mMenuProc = PROC_MEMCARD_DATA_SAVE_WAIT2; } @@ -1469,10 +1475,6 @@ void dMenu_save_c::memCardDataSaveWait2() { dComIfGs_setDataNum(mSelectedFile); dComIfGs_setNoFile(0); -#if TARGET_PC - dusk::mods::svc::save_slot_written(mSelectedFile, mSaveBuffer + mSelectedFile * QUEST_LOG_SIZE); -#endif - if (mUseType == TYPE_WHITE_EVENT || mUseType == TYPE_BLACK_EVENT) { headerTxtSet(0x530); // Saved. mWarning->closeInit(); diff --git a/src/dusk/mods/svc/save.cpp b/src/dusk/mods/svc/save.cpp index 209c0037fa..1b4e2047e7 100644 --- a/src/dusk/mods/svc/save.cpp +++ b/src/dusk/mods/svc/save.cpp @@ -193,6 +193,8 @@ void save_slot_written(uint32_t slot, const void* slotData) { if (slot >= kSlotCount) { return; } + s_currentSlot = static_cast(slot); + notify(slot, &SaveObserverRecord::onWritten, "save-written"); load_sidecar(); auto& store = s_slots[slot]; if (slotData != nullptr) { @@ -200,8 +202,6 @@ void save_slot_written(uint32_t slot, const void* slotData) { store.snapshotCrc = utils::crc32(slotData, kQuestLogSize); } flush_sidecar(); - s_currentSlot = static_cast(slot); - notify(slot, &SaveObserverRecord::onWritten, "save-written"); } void save_slot_copied(uint32_t fromSlot, uint32_t toSlot) {