From 6fed231edecdba29a4c90588ed71d1a4c3eddc8f Mon Sep 17 00:00:00 2001 From: n-a-c-h <> Date: Mon, 9 May 2005 23:14:02 +0000 Subject: [PATCH] Rewind pause not a dummy. --- zsnes/src/cpu/execute.asm | 2 ++ zsnes/src/zstate.c | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/zsnes/src/cpu/execute.asm b/zsnes/src/cpu/execute.asm index 857e70d9..2a5ac969 100644 --- a/zsnes/src/cpu/execute.asm +++ b/zsnes/src/cpu/execute.asm @@ -101,6 +101,7 @@ NEWSYM ProcessRewind mov edi,[tempedi] mov ebp,[tempebp] mov edx,[tempedx] + .notokay ret @@ -1485,6 +1486,7 @@ NEWSYM cpuover pushad call copyvid ;Update screen popad + call ProcessRewind jmp .nonewgfx .noemupause diff --git a/zsnes/src/zstate.c b/zsnes/src/zstate.c index 64ddf56f..3355de3f 100755 --- a/zsnes/src/zstate.c +++ b/zsnes/src/zstate.c @@ -199,6 +199,8 @@ static void memcpyrinc(unsigned char **src, void *dest, size_t len) extern unsigned int RewindTimer; extern unsigned char RewindStates; +extern unsigned char EMUPause, PauseRewind; + unsigned char *StateBackup = 0; unsigned char AllocatedRewindStates, LatestRewindPos, EarliestRewindPos; bool RewindPosPassed; @@ -249,9 +251,20 @@ void RestoreCVFrame() RewindBufferPos = StateBackup + LatestRewindPos*rewind_state_size; //printf("Restoring rewind in slot #%u\n", LatestRewindPos); + + if (MovieProcessing == 2) + { + zmv_rewind_load(LatestRewindPos, false); + } + else + { + if (MovieProcessing == 1) + { + zmv_rewind_load(LatestRewindPos, true); + } + EMUPause = PauseRewind; + } - if (MovieProcessing == 1) { zmv_rewind_load(LatestRewindPos, true); } - else if (MovieProcessing == 2) { zmv_rewind_load(LatestRewindPos, false); } copy_state_data(RewindBufferPos, memcpyrinc, csm_load_rewind); //Clear Cache Check