diff --git a/BizHawk.MultiClient/MainForm.Movie.cs b/BizHawk.MultiClient/MainForm.Movie.cs index bdf873460f..e8f1c42e66 100644 --- a/BizHawk.MultiClient/MainForm.Movie.cs +++ b/BizHawk.MultiClient/MainForm.Movie.cs @@ -121,16 +121,20 @@ namespace BizHawk.MultiClient { //Note, some of the situations in these IF's may be identical and could be combined but I intentionally separated it out for clarity if (Global.MovieSession.Movie.Mode == MOVIEMODE.INACTIVE) + { return true; + } - if (Global.MovieSession.Movie.Mode == MOVIEMODE.RECORD) + else if (Global.MovieSession.Movie.Mode == MOVIEMODE.RECORD) { if (ReadOnly) { if (!Global.MovieSession.Movie.CheckTimeLines(path, false)) + { return false; //Timeline/GUID error + } else { Global.MovieSession.Movie.WriteMovie(); @@ -141,22 +145,29 @@ namespace BizHawk.MultiClient else { if (!Global.MovieSession.Movie.CheckTimeLines(path, true)) + { return false; //GUID Error + } Global.MovieSession.Movie.LoadLogFromSavestateText(path); } } + else if (Global.MovieSession.Movie.Mode == MOVIEMODE.PLAY) { if (ReadOnly) { if (!Global.MovieSession.Movie.CheckTimeLines(path, false)) + { return false; //Timeline/GUID error + } //Frame loop automatically handles the rewinding effect based on Global.Emulator.Frame so nothing else is needed here } else { if (!Global.MovieSession.Movie.CheckTimeLines(path, true)) + { return false; //GUID Error + } Global.MovieSession.Movie.ResumeRecording(); SetMainformMovieInfo(); Global.MovieSession.Movie.LoadLogFromSavestateText(path); @@ -168,9 +179,13 @@ namespace BizHawk.MultiClient { { if (!Global.MovieSession.Movie.CheckTimeLines(path, false)) + { return false; //Timeline/GUID error - if (Global.MovieSession.Movie.Mode == MOVIEMODE.FINISHED) + } + else if (Global.MovieSession.Movie.Mode == MOVIEMODE.FINISHED) //TimeLine check can change a movie to finished, hence the check here (not a good design) + { Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter); + } else { Global.MovieSession.Movie.StartPlayback(); @@ -182,9 +197,13 @@ namespace BizHawk.MultiClient { { if (!Global.MovieSession.Movie.CheckTimeLines(path, true)) + { return false; //GUID Error - if (Global.MovieSession.Movie.Mode == MOVIEMODE.FINISHED) + } + else if (Global.MovieSession.Movie.Mode == MOVIEMODE.FINISHED) + { Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter); + } else { Global.MovieSession.Movie.StartNewRecording(); diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index b79bca675f..36678c0456 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -1944,7 +1944,7 @@ namespace BizHawk.MultiClient if (-1 != StopOnFrame && StopOnFrame == Global.Emulator.Frame + 1) { - if(StopOnFrame == Global.MovieSession.Movie.LogLength()) + if (StopOnFrame == Global.MovieSession.Movie.LogLength()) { Global.MovieSession.Movie.SetMovieFinished(); } @@ -1953,7 +1953,7 @@ namespace BizHawk.MultiClient PauseEmulator(); StopOnFrame = -1; } - if(true == RestoreReadWriteOnStop) + if (RestoreReadWriteOnStop == true) { Global.MovieSession.Movie.Mode = MOVIEMODE.RECORD; RestoreReadWriteOnStop = false; diff --git a/BizHawk.MultiClient/movie/Movie.cs b/BizHawk.MultiClient/movie/Movie.cs index 716c06c7bd..04b8e91faf 100644 --- a/BizHawk.MultiClient/movie/Movie.cs +++ b/BizHawk.MultiClient/movie/Movie.cs @@ -529,7 +529,8 @@ namespace BizHawk.MultiClient } if (stateFrame > 0 && stateFrame < Log.MovieLength()) { - Log.TruncateStates(Global.Emulator.Frame); + Log.TruncateStates(stateFrame); + Log.TruncateMovie(stateFrame); } IncrementRerecords(); reader.Close();