The reset in replay code didn't work

This commit is contained in:
Snesrev
2023-03-06 23:07:49 +01:00
parent 3cd1dda0c0
commit 02c0a272d1
3 changed files with 7 additions and 6 deletions

View File

@@ -623,7 +623,7 @@ static void HandleCommand(uint32 j, bool pressed) {
SDL_ShowCursor(g_cursor); SDL_ShowCursor(g_cursor);
break; break;
case kKeys_Reset: case kKeys_Reset:
RtlReset(true); RtlReset(1);
break; break;
case kKeys_Pause: g_paused = !g_paused; break; case kKeys_Pause: g_paused = !g_paused; break;
case kKeys_PauseDimmed: case kKeys_PauseDimmed:

View File

@@ -151,10 +151,10 @@ void ReadFromFile(FILE *f, void *data, size_t n) {
Die("fread failed\n"); Die("fread failed\n");
} }
void RtlReset(bool preserve_sram) { void RtlReset(int mode) {
snes_frame_counter = 0; snes_frame_counter = 0;
snes_reset(g_snes, true); snes_reset(g_snes, true);
if (!preserve_sram) if (!(mode & 1))
memset(g_sram, 0, 0x2000); memset(g_sram, 0, 0x2000);
coroutine_state_0 = 1; coroutine_state_0 = 1;
@@ -165,7 +165,8 @@ void RtlReset(bool preserve_sram) {
RtlSynchronizeWholeState(); RtlSynchronizeWholeState();
StateRecorder_Init(&state_recorder); if ((mode & 2) == 0)
StateRecorder_Init(&state_recorder);
} }
int GetFileSize(FILE *f) { int GetFileSize(FILE *f) {
@@ -216,7 +217,7 @@ void StateRecorder_Load(StateRecorder *sr, FILE *f, bool replay_mode) {
LoadSnesState(&loadFunc, &state); LoadSnesState(&loadFunc, &state);
assert(state.p == state.pend); assert(state.p == state.pend);
} else { } else {
RtlReset(false); RtlReset(2);
if (sr->base_snapshot.size == 8192) if (sr->base_snapshot.size == 8192)
memcpy(g_sram, sr->base_snapshot.data, 8192); memcpy(g_sram, sr->base_snapshot.data, 8192);
is_reset = true; is_reset = true;

View File

@@ -154,7 +154,7 @@ uint8 ReadReg(uint16 reg);
typedef void RunFrameFunc(uint16 input, int run_what); typedef void RunFrameFunc(uint16 input, int run_what);
typedef void SyncAllFunc(); typedef void SyncAllFunc();
void RtlReset(bool preserve_sram); void RtlReset(int mode);
void RtlSetupEmuCallbacks(uint8 *emu_ram, RunFrameFunc *func, SyncAllFunc *sync_all); void RtlSetupEmuCallbacks(uint8 *emu_ram, RunFrameFunc *func, SyncAllFunc *sync_all);
void RtlClearKeyLog(); void RtlClearKeyLog();
void RtlStopReplay(); void RtlStopReplay();