From 5c9a604ae5fff0c4aa22757642d15dd0e0bd523b Mon Sep 17 00:00:00 2001 From: adelikat Date: Sat, 14 Dec 2013 20:32:00 +0000 Subject: [PATCH] TAStudio - when loading a movie, set to playback mode, implement auto-switching to record mode at the end of a movie --- BizHawk.Client.Common/movie/MovieRecord.cs | 9 +++++++-- BizHawk.Client.Common/movie/TasMovie.cs | 12 +++++++++++- BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs | 1 - 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/BizHawk.Client.Common/movie/MovieRecord.cs b/BizHawk.Client.Common/movie/MovieRecord.cs index 19a1dd081f..5e0529a802 100644 --- a/BizHawk.Client.Common/movie/MovieRecord.cs +++ b/BizHawk.Client.Common/movie/MovieRecord.cs @@ -17,8 +17,7 @@ namespace BizHawk.Client.Common SetInput(buttons); if (captureState) { - Lagged = Global.Emulator.IsLagFrame; - _state = Global.Emulator.SaveStateBinary(); + CaptureSate(); } } @@ -49,6 +48,12 @@ namespace BizHawk.Client.Common _boolButtons = buttons; } + public void CaptureSate() + { + Lagged = Global.Emulator.IsLagFrame; + _state = Global.Emulator.SaveStateBinary(); + } + public void ClearInput() { InputChanged(_boolButtons); diff --git a/BizHawk.Client.Common/movie/TasMovie.cs b/BizHawk.Client.Common/movie/TasMovie.cs index 222215a0da..7f6eddb8cc 100644 --- a/BizHawk.Client.Common/movie/TasMovie.cs +++ b/BizHawk.Client.Common/movie/TasMovie.cs @@ -146,6 +146,10 @@ namespace BizHawk.Client.Common { if (frame >= 0) { + if (!_records[frame].HasState) + { + _records[frame].CaptureSate(); + } return _mg.GenerateMnemonicString(_records[frame].Buttons); } else @@ -155,7 +159,11 @@ namespace BizHawk.Client.Common } else { - _mode = Moviemode.Finished; // TODO: never do this in a TasMovie! + _mode = Moviemode.Record; + + var buttons = _mg.ParseMnemonicString(_mg.EmptyMnemonic); + + _records.Add(new MovieRecord(buttons, true)); return String.Empty; } } @@ -363,6 +371,8 @@ namespace BizHawk.Client.Common catch (EndOfStreamException) { } }); } + + _mode = Moviemode.Play; return true; } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 18ac32baf1..332beb9e08 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -167,7 +167,6 @@ namespace BizHawk.Client.EmuHawk else { EngageTasStudio(); - } _tas.ActivePlayers = new List { "Player 1" }; // TODO