diff --git a/bsnes/sfc/system/system.cpp b/bsnes/sfc/system/system.cpp index 27897f50..6a6f1992 100644 --- a/bsnes/sfc/system/system.cpp +++ b/bsnes/sfc/system/system.cpp @@ -15,6 +15,12 @@ auto System::run() -> void { } auto System::runToSave() -> void { + // Enable coprocessor delayed sync if it is off - this is extremely important + // for coprocessor games, as many will not sync correctly for states when the + // option is off. + bool delay_sync_prev = configuration.hacks.coprocessor.delayedSync; + configuration.hacks.coprocessor.delayedSync = true; + auto method = configuration.system.serialization.method; //these games will periodically deadlock when using "Fast" synchronization @@ -30,6 +36,9 @@ auto System::runToSave() -> void { scheduler.mode = Scheduler::Mode::Run; scheduler.active = cpu.thread; + + // Restore coprocessor delayed sync to whatever it was previous to the state save operation + configuration.hacks.coprocessor.delayedSync = delay_sync_prev; } auto System::runToSaveFast() -> void {