diff --git a/src/main.c b/src/main.c index db3d418..95050c2 100644 --- a/src/main.c +++ b/src/main.c @@ -623,7 +623,7 @@ static void HandleCommand(uint32 j, bool pressed) { SDL_ShowCursor(g_cursor); break; case kKeys_Reset: - //RtlReset(true); + RtlReset(true); break; case kKeys_Pause: g_paused = !g_paused; break; case kKeys_PauseDimmed: diff --git a/src/sm_rtl.c b/src/sm_rtl.c index 6bbbff4..50c7de7 100644 --- a/src/sm_rtl.c +++ b/src/sm_rtl.c @@ -96,6 +96,8 @@ typedef struct StateRecorder { static StateRecorder state_recorder; void StateRecorder_Init(StateRecorder *sr) { + ByteArray_Destroy(&sr->log); + ByteArray_Destroy(&sr->base_snapshot); memset(sr, 0, sizeof(*sr)); } @@ -161,9 +163,9 @@ void RtlReset(bool preserve_sram) { RtlRestoreMusicAfterLoad_Locked(true); RtlApuUnlock(); - - RtlSynchronizeWholeState(); + + StateRecorder_Init(&state_recorder); } int GetFileSize(FILE *f) { @@ -398,7 +400,6 @@ bool RtlRunFrame(int inputs) { StateRecorder_Record(&state_recorder, inputs); } - g_rtl_runframe(inputs, 0); snes_frame_counter++; diff --git a/src/sm_rtl.h b/src/sm_rtl.h index 70e7ebc..061a946 100644 --- a/src/sm_rtl.h +++ b/src/sm_rtl.h @@ -154,6 +154,7 @@ uint8 ReadReg(uint16 reg); typedef void RunFrameFunc(uint16 input, int run_what); typedef void SyncAllFunc(); +void RtlReset(bool preserve_sram); void RtlSetupEmuCallbacks(uint8 *emu_ram, RunFrameFunc *func, SyncAllFunc *sync_all); void RtlClearKeyLog(); void RtlStopReplay();