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);
break;
case kKeys_Reset:
RtlReset(true);
RtlReset(1);
break;
case kKeys_Pause: g_paused = !g_paused; break;
case kKeys_PauseDimmed:

View File

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

View File

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