diff --git a/BizHawk.Client.Common/movie/Movie.cs b/BizHawk.Client.Common/movie/Movie.cs index 41b9128ee9..7ebda35be7 100644 --- a/BizHawk.Client.Common/movie/Movie.cs +++ b/BizHawk.Client.Common/movie/Movie.cs @@ -716,11 +716,18 @@ namespace BizHawk.Client.Common } if (_log.Length < stateFrame) { - errorMessage = "The savestate is from frame " - + log.Length.ToString() - + " which is greater than the current movie length of " - + _log.Length.ToString(); - return LoadStateResult.FutureEventError; + if (IsFinished) + { + return LoadStateResult.Pass; + } + else + { + errorMessage = "The savestate is from frame " + + log.Length.ToString() + + " which is greater than the current movie length of " + + _log.Length.ToString(); + return LoadStateResult.FutureEventError; + } } for (int i = 0; i < stateFrame; i++) { diff --git a/BizHawk.Client.Common/movie/MovieSession.cs b/BizHawk.Client.Common/movie/MovieSession.cs index c8ac47d949..16375bfb85 100644 --- a/BizHawk.Client.Common/movie/MovieSession.cs +++ b/BizHawk.Client.Common/movie/MovieSession.cs @@ -385,14 +385,14 @@ namespace BizHawk.Client.Common { if (Global.ReadOnly) { - var result = Movie.CheckTimeLines(reader, onlyGuid: !Global.ReadOnly, ignoreGuidMismatch: false, errorMessage: out ErrorMSG); + var result = Movie.CheckTimeLines(reader, onlyGuid: false, ignoreGuidMismatch: false, errorMessage: out ErrorMSG); if (result != Movie.LoadStateResult.Pass) { if (result == Movie.LoadStateResult.GuidMismatch) { if (HandleGuidError()) { - var newresult = Movie.CheckTimeLines(reader, onlyGuid: !Global.ReadOnly, ignoreGuidMismatch: true, errorMessage: out ErrorMSG); + var newresult = Movie.CheckTimeLines(reader, onlyGuid: true, ignoreGuidMismatch: true, errorMessage: out ErrorMSG); if (newresult == Movie.LoadStateResult.Pass) { Movie.SwitchToPlay();