The reset in replay code didn't work
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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,6 +165,7 @@ void RtlReset(bool preserve_sram) {
|
|||||||
|
|
||||||
RtlSynchronizeWholeState();
|
RtlSynchronizeWholeState();
|
||||||
|
|
||||||
|
if ((mode & 2) == 0)
|
||||||
StateRecorder_Init(&state_recorder);
|
StateRecorder_Init(&state_recorder);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user