From a382af4e7f88bc431b3f7388fc1d3af415e54859 Mon Sep 17 00:00:00 2001 From: adelikat Date: Wed, 3 Jun 2020 17:49:10 -0500 Subject: [PATCH] disable multitrack recording for tasproj movies, the concept doesn't make sense, tastudio easily gives you multiplayer functionality by design. Delete some code that attempted to handle this scenario that likely didn't really work --- .../movie/MovieSession.cs | 4 + .../movie/tasproj/TasMovie.cs | 114 ++++++------------ 2 files changed, 42 insertions(+), 76 deletions(-) diff --git a/src/BizHawk.Client.Common/movie/MovieSession.cs b/src/BizHawk.Client.Common/movie/MovieSession.cs index 6024073aaa..b3e108fa21 100644 --- a/src/BizHawk.Client.Common/movie/MovieSession.cs +++ b/src/BizHawk.Client.Common/movie/MovieSession.cs @@ -318,6 +318,10 @@ namespace BizHawk.Client.Common { Output("Multi-track can not be used in Full Movie Loadstates mode"); } + else if (Movie is ITasMovie) + { + Output("Multi-track can not be used with tasproj movies"); + } else { MultiTrack.IsActive ^= true; diff --git a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs index a6b7e87453..05567934a9 100644 --- a/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs +++ b/src/BizHawk.Client.Common/movie/tasproj/TasMovie.cs @@ -182,93 +182,55 @@ namespace BizHawk.Client.Common var newLog = new List(); int? timelineBranchFrame = null; + // We are in record mode so replace the movie log with the one from the savestate - if (!Global.MovieSession.MultiTrack.IsActive) + if (Global.Config.Movies.EnableBackupMovies && MakeBackup && Log.Count != 0) { - if (Global.Config.Movies.EnableBackupMovies && MakeBackup && Log.Count != 0) - { - SaveBackup(); - MakeBackup = false; - } - - int counter = 0; - while (true) - { - var line = reader.ReadLine(); - if (string.IsNullOrEmpty(line)) - { - break; - } - - if (line.Contains("Frame ")) - { - var split = line.Split(' '); - try - { - stateFrame = int.Parse(split[1]); - } - catch - { - errorMessage = "Savestate Frame number failed to parse"; - return false; - } - } - else if (line.StartsWith("LogKey:")) - { - LogKey = line.Replace("LogKey:", ""); - } - else if (line[0] == '|') - { - newLog.Add(line); - if (!timelineBranchFrame.HasValue && counter < Log.Count && line != Log[counter]) - { - timelineBranchFrame = counter; - } - - counter++; - } - } - - Log.Clear(); - Log.AddRange(newLog); + SaveBackup(); + MakeBackup = false; } - else // Multitrack mode + + int counter = 0; + while (true) { - // TODO: consider TimelineBranchFrame here, my thinking is that there's never a scenario to invalidate state/lag data during multitrack - var i = 0; - while (true) + var line = reader.ReadLine(); + if (string.IsNullOrEmpty(line)) { - var line = reader.ReadLine(); - if (line == null) + break; + } + + if (line.Contains("Frame ")) + { + var split = line.Split(' '); + try { - break; + stateFrame = int.Parse(split[1]); + } + catch + { + errorMessage = "Savestate Frame number failed to parse"; + return false; + } + } + else if (line.StartsWith("LogKey:")) + { + LogKey = line.Replace("LogKey:", ""); + } + else if (line[0] == '|') + { + newLog.Add(line); + if (!timelineBranchFrame.HasValue && counter < Log.Count && line != Log[counter]) + { + timelineBranchFrame = counter; } - if (line.Contains("Frame ")) - { - var strs = line.Split(' '); - try - { - stateFrame = int.Parse(strs[1]); - } - catch - { - errorMessage = "Savestate Frame number failed to parse"; - return false; - } - } - else if (line.StartsWith("LogKey:")) - { - LogKey = line.Replace("LogKey:", ""); - } - else if (line.StartsWith("|")) - { - SetFrame(i, line); - i++; - } + counter++; } } + Log.Clear(); + Log.AddRange(newLog); + if (!stateFrame.HasValue) { errorMessage = "Savestate Frame number failed to parse";