From dcd315d4368594ff152bd4808b26b9b538ab8b98 Mon Sep 17 00:00:00 2001 From: n-a-c-h <> Date: Fri, 13 May 2005 15:34:40 +0000 Subject: [PATCH] Welcome in the new team player. --- zsnes/src/zstate.c | 48 +++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/zsnes/src/zstate.c b/zsnes/src/zstate.c index dddb884e..4b0194ca 100755 --- a/zsnes/src/zstate.c +++ b/zsnes/src/zstate.c @@ -219,6 +219,21 @@ void ClearCacheCheck() memset(vidmemch8, 1, sizeof(vidmemch8)); } +//Code to handle special frames for pausing, and desync checking +unsigned char *SpecialPauseBackup = 0; +void *doMemAlloc(size_t); + +void BackupPauseFrame() +{ + copy_state_data(SpecialPauseBackup, memcpyinc, csm_save_rewind); +} + +void RestorePauseFrame() +{ + copy_state_data(SpecialPauseBackup, memcpyrinc, csm_load_rewind); + ClearCacheCheck(); +} + #define ActualRewindFrames (RewindFrames * (romispal ? 10 : 12)) void BackupCVFrame() @@ -269,7 +284,11 @@ void RestoreCVFrame() { zmv_rewind_load(LatestRewindPos, true); } - EMUPause = PauseRewind; + + if ((EMUPause = PauseRewind)) //Yes this if supposed to have a single equal + { + BackupPauseFrame(); + } } copy_state_data(RewindBufferPos, memcpyrinc, csm_load_rewind); @@ -280,21 +299,6 @@ void RestoreCVFrame() } -//Code to handle special frames for pausing, and desync checking -unsigned char *SpecialPauseBackup = 0; -void *doMemAlloc(size_t); - -void BackupPauseFrame() -{ - copy_state_data(SpecialPauseBackup, memcpyinc, csm_save_rewind); -} - -void RestorePauseFrame() -{ - copy_state_data(SpecialPauseBackup, memcpyrinc, csm_load_rewind); - ClearCacheCheck(); -} - void SetupRewindBuffer() { //For special rewind case to help out pauses @@ -842,7 +846,11 @@ void stateloader (unsigned char *statename, unsigned char keycheck, unsigned cha { Msgptr = "RR STATE LOADED."; MessageOn = MsgCount; - EMUPause = PauseLoad; + + if ((EMUPause = PauseLoad)) //Yes this if supposed to have a single equal + { + BackupPauseFrame(); + } } return; case 2: @@ -864,7 +872,11 @@ void stateloader (unsigned char *statename, unsigned char keycheck, unsigned cha if (zst_load(fhandle, 0)) { Msgptr = txtloadmsg; // 'STATE X LOADED.' - EMUPause = PauseLoad; + + if ((EMUPause = PauseLoad)) //Yes this if supposed to have a single equal + { + BackupPauseFrame(); + } } else {