diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 7e9a797140..222a8a8d27 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -887,13 +887,17 @@ namespace BizHawk.Client.EmuHawk public IRewinder Rewinder { get; private set; } public void CreateRewinder() + { + RecreateRewinder(); + AddOnScreenMessage(Rewinder?.Active == true ? "Rewind started" : "Rewind disabled"); + } + + void RecreateRewinder() { Rewinder?.Dispose(); Rewinder = Emulator.HasSavestates() && Config.Rewind.Enabled ? new Zwinder(Emulator.AsStatable(), Config.Rewind) : null; - - AddOnScreenMessage(Rewinder?.Active == true ? "Rewind started" : "Rewind disabled"); } private FirmwareManager FirmwareManager => GlobalWin.FirmwareManager; @@ -3984,9 +3988,11 @@ namespace BizHawk.Client.EmuHawk UpdateToolsLoadstate(); InputManager.AutoFireController.ClearStarts(); + //we don't want to analyze how to intermix movies, rewinding, and states + //so purge rewind history when loading a state while doing a movie if (!IsRewindSlave && MovieSession.Movie.IsActive()) { - DisableRewind(); + RecreateRewinder(); } if (!suppressOSD)