From f3af2821bb601270605f070aee1d3c878cbb54e0 Mon Sep 17 00:00:00 2001 From: adelikat Date: Thu, 10 Jul 2014 20:48:43 +0000 Subject: [PATCH] TAStudio - populate greenzone during playback --- BizHawk.Client.Common/movie/bk2/Bk2Movie.cs | 2 +- BizHawk.Client.Common/movie/tasproj/TasMovie.cs | 10 ++++++++++ BizHawk.Client.Common/movie/tasproj/TasStateManager.cs | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs b/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs index 8944507942..18cae5fd22 100644 --- a/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs +++ b/BizHawk.Client.Common/movie/bk2/Bk2Movie.cs @@ -96,7 +96,7 @@ namespace BizHawk.Client.Common } } - public string GetInput(int frame) + public virtual string GetInput(int frame) { if (frame < FrameCount && frame >= 0) { diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index 88dc90513f..d55052d27f 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -123,5 +123,15 @@ namespace BizHawk.Client.Common var adapter = GetInputState(frame) as Bk2ControllerAdapter; return adapter.IsPressed(buttonName); } + + public override string GetInput(int frame) + { + if (Global.Emulator.Frame == frame && !StateManager.HasState(frame)) + { + StateManager.Capture(); + } + + return base.GetInput(frame); + } } } diff --git a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs index 4924a9954f..97ae2b4676 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs @@ -47,6 +47,11 @@ namespace BizHawk.Client.Common } } + public bool HasState(int frame) + { + return States.ContainsKey(frame); + } + /// /// Clears out all savestates after the given frame number ///