From 240b89082bb8aaa7d65dc90e2bfdf430ed82b509 Mon Sep 17 00:00:00 2001 From: adelikat Date: Tue, 24 Feb 2015 21:56:01 +0000 Subject: [PATCH] Tastudio - fix capturing during the movie playback frame loop, used some duct tape for now, need a better solution --- BizHawk.Client.Common/movie/MovieSession.cs | 6 ++++++ BizHawk.Client.Common/movie/tasproj/TasMovie.cs | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/BizHawk.Client.Common/movie/MovieSession.cs b/BizHawk.Client.Common/movie/MovieSession.cs index 14e7a1999a..73636f99a5 100644 --- a/BizHawk.Client.Common/movie/MovieSession.cs +++ b/BizHawk.Client.Common/movie/MovieSession.cs @@ -135,6 +135,12 @@ namespace BizHawk.Client.Common public void LatchInputFromLog() { var input = Movie.GetInputState(Global.Emulator.Frame); + + if (Movie is TasMovie) // Hack city, GetInputState can't run this code because all sorts of places call it, we only want to do this during this playback loop + { + (Movie as TasMovie).GreenzoneCurrentFrame(); + } + MovieControllerAdapter.LatchFromSource(input); if (MultiTrack.IsActive) { diff --git a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index ed00cd525a..95fca35fbb 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -307,6 +307,16 @@ namespace BizHawk.Client.Common return base.GetInputState(frame); } + public void GreenzoneCurrentFrame() + { + LagLog[Global.Emulator.Frame] = Global.Emulator.AsInputPollable().IsLagFrame; + + if (!StateManager.HasState(Global.Emulator.Frame)) + { + StateManager.Capture(); + } + } + public void ClearLagLog() { LagLog.Clear();