diff --git a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 0a1f0db04a..76dec72e5e 100644 --- a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -192,10 +192,8 @@ namespace BizHawk.Client.Common LagLog[Emulator.Frame] = _inputPollable.IsLagFrame; - if (!TasStateManager.HasState(Emulator.Frame)) - { - TasStateManager.Capture(Emulator.Frame, Emulator.AsStatable(), Emulator.Frame == LastEditedFrame - 1); - } + // We will forbibly capture a state for the last edited frame (requested by #916 for case of "platforms with analog stick") + TasStateManager.Capture(Emulator.Frame, Emulator.AsStatable(), Emulator.Frame == LastEditedFrame - 1); } diff --git a/src/BizHawk.Client.Common/movie/tasproj/ZwinderStateManager.cs b/src/BizHawk.Client.Common/movie/tasproj/ZwinderStateManager.cs index bb2222c373..4b69d6bc0e 100644 --- a/src/BizHawk.Client.Common/movie/tasproj/ZwinderStateManager.cs +++ b/src/BizHawk.Client.Common/movie/tasproj/ZwinderStateManager.cs @@ -291,13 +291,10 @@ namespace BizHawk.Client.Common // We do not want to consider reserved states for a notion of Last // reserved states can include future states in the case of branch states - if (frame <= LastRing) + if ((frame <= LastRing && NeedsGap(frame)) || force) { - if (NeedsGap(frame)) - { - CaptureGap(frame, source); - } - + // We use the gap buffer for forced capture to avoid crowding the "current" buffer and thus reducing it's actual span of covered frames. + CaptureGap(frame, source); return; }