From bbc84471d88d6631e96a0a06e7539c5be8ac2636 Mon Sep 17 00:00:00 2001 From: adelikat Date: Wed, 27 Aug 2014 20:43:45 +0000 Subject: [PATCH] TasStateManager - capture every other frame for now --- .../movie/tasproj/TasStateManager.cs | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs index 763e43548b..fbba8a0e87 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs @@ -65,26 +65,40 @@ namespace BizHawk.Client.Common /// /// Requests that the current emulator state be captured + /// Unless force is true, the state may or may not be captured depending on the logic employed by "greenzone" management /// - public void Capture() + public void Capture(bool force = false) { - var frame = Global.Emulator.Frame; - var state = (byte[])Global.Emulator.SaveStateBinary().Clone(); - - if (States.ContainsKey(frame)) + bool shouldCapture = false; + if (force) { - States[frame] = state; + shouldCapture = force; } else { - if (Used + state.Length >= Settings.Cap) - { - Used -= States.ElementAt(0).Value.Length; - States.RemoveAt(0); - } + shouldCapture = Global.Emulator.Frame % 2 > 0; + } - States.Add(frame, state); - Used += state.Length; + if (shouldCapture) + { + var frame = Global.Emulator.Frame; + var state = (byte[])Global.Emulator.SaveStateBinary().Clone(); + + if (States.ContainsKey(frame)) + { + States[frame] = state; + } + else + { + if (Used + state.Length >= Settings.Cap) + { + Used -= States.ElementAt(0).Value.Length; + States.RemoveAt(0); + } + + States.Add(frame, state); + Used += state.Length; + } } }