diff --git a/BizHawk.Client.Common/movie/MovieSession.cs b/BizHawk.Client.Common/movie/MovieSession.cs index 0f4a2e0e89a..2eee27d1c92 100644 --- a/BizHawk.Client.Common/movie/MovieSession.cs +++ b/BizHawk.Client.Common/movie/MovieSession.cs @@ -248,46 +248,58 @@ public void HandleMovieOnFrameLoop() { LatchInputFromLog(); - // Movie may go into finished mode as a result from latching - if (!Movie.IsFinished) + if (Movie.IsRecording) // The movie end situation can cause the switch to record mode, in that case we need to capture some input for this frame { - if (Global.ClientControls["Scrub Input"]) - { - LatchInputFromPlayer(Global.MovieInputSourceAdapter); - ClearFrame(); - } - else if (Global.Config.MoviePlaybackPokeMode) + HandleFrameLoopForRecordMode(); + } + else + { + // Movie may go into finished mode as a result from latching + if (!Movie.IsFinished) { - LatchInputFromPlayer(Global.MovieInputSourceAdapter); - var lg = Movie.LogGeneratorInstance(); - lg.SetSource(Global.MovieOutputHardpoint); - if (!lg.IsEmpty) + if (Global.ClientControls["Scrub Input"]) { LatchInputFromPlayer(Global.MovieInputSourceAdapter); - Movie.PokeFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint); + ClearFrame(); } - else + else if (Global.Config.MoviePlaybackPokeMode) { - LatchInputFromLog(); + LatchInputFromPlayer(Global.MovieInputSourceAdapter); + var lg = Movie.LogGeneratorInstance(); + lg.SetSource(Global.MovieOutputHardpoint); + if (!lg.IsEmpty) + { + LatchInputFromPlayer(Global.MovieInputSourceAdapter); + Movie.PokeFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint); + } + else + { + LatchInputFromLog(); + } } } } } else if (Movie.IsRecording) { - if (MultiTrack.IsActive) - { - LatchMultitrackPlayerInput(Global.MovieInputSourceAdapter, Global.MultitrackRewiringAdapter); - } - else - { - LatchInputFromPlayer(Global.MovieInputSourceAdapter); - } + HandleFrameLoopForRecordMode(); + } + } - // the movie session makes sure that the correct input has been read and merged to its MovieControllerAdapter; - // this has been wired to Global.MovieOutputHardpoint in RewireInputChain - Movie.RecordFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint); + private void HandleFrameLoopForRecordMode() + { + if (MultiTrack.IsActive) + { + LatchMultitrackPlayerInput(Global.MovieInputSourceAdapter, Global.MultitrackRewiringAdapter); } + else + { + LatchInputFromPlayer(Global.MovieInputSourceAdapter); + } + + // the movie session makes sure that the correct input has been read and merged to its MovieControllerAdapter; + // this has been wired to Global.MovieOutputHardpoint in RewireInputChain + Movie.RecordFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint); } public bool HandleMovieLoadState(string path) diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index d2e759c2e59..efa2bbfad7f 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -1260,20 +1260,20 @@ private void SetWindowText() else { str = str + Global.SystemInfo.DisplayName; - } - if (VersionInfo.DeveloperBuild) - { - str += " (interim)"; - } + if (VersionInfo.DeveloperBuild) + { + str += " (interim)"; + } - if (Global.MovieSession.Movie.IsActive) - { - str = str + " - " + Global.Game.Name + " - " + Path.GetFileName(Global.MovieSession.Movie.Filename); - } - else - { - str = str + " - " + Global.Game.Name; + if (Global.MovieSession.Movie.IsActive) + { + str = str + " - " + Global.Game.Name + " - " + Path.GetFileName(Global.MovieSession.Movie.Filename); + } + else + { + str = str + " - " + Global.Game.Name; + } } Text = str; diff --git a/BizHawk.Client.EmuHawk/config/ProfileConfig.Designer.cs b/BizHawk.Client.EmuHawk/config/ProfileConfig.Designer.cs index 10bc9afee19..0d7baea95e4 100644 --- a/BizHawk.Client.EmuHawk/config/ProfileConfig.Designer.cs +++ b/BizHawk.Client.EmuHawk/config/ProfileConfig.Designer.cs @@ -122,10 +122,11 @@ private void InitializeComponent() this.ProfileDialogHelpTexBox.Location = new System.Drawing.Point(184, 12); this.ProfileDialogHelpTexBox.Name = "ProfileDialogHelpTexBox"; this.ProfileDialogHelpTexBox.ReadOnly = true; - this.ProfileDialogHelpTexBox.Size = new System.Drawing.Size(198, 126); + this.ProfileDialogHelpTexBox.Size = new System.Drawing.Size(198, 154); this.ProfileDialogHelpTexBox.TabIndex = 8; this.ProfileDialogHelpTexBox.Text = "Options:\nCasual Gaming - All about performance!\n\nTool-Assisted Speedruns - Maximu" + - "m Accuracy!\n\nLongplays - Stability is the key!"; + "m Accuracy!\n\nN64 Tool-assisted Speedruns - Maximum Accuracy for N64 Recording!\n\n" + + "Longplays - Stability is the key!"; // // label1 // diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs index 76169b82d4e..976244d81e4 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.ListView.cs @@ -274,7 +274,16 @@ private void TasView_MouseDown(object sender, MouseEventArgs e) TasView.Refresh(); _startBoolDrawColumn = buttonName; - _boolPaintState = _currentTasMovie.BoolIsPressed(frame, buttonName); + + if (frame < _currentTasMovie.InputLogLength) + { + _boolPaintState = _currentTasMovie.BoolIsPressed(frame, buttonName); + } + else + { + Global.ClickyVirtualPadController.IsPressed(buttonName); + } + } else { diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index b5424aee314..94988ac5cf6 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -157,7 +157,14 @@ public void LoadProject(string path) } WantsToControlStopMovie = false; - GlobalWin.MainForm.StartNewMovie(movie, record: false); + + var shouldRecord = false; + if (Global.MovieSession.Movie.InputLogLength == 0) // An unusual but possible edge case + { + shouldRecord = true; + } + + GlobalWin.MainForm.StartNewMovie(movie, record: shouldRecord); WantsToControlStopMovie = true; _currentTasMovie = Global.MovieSession.Movie as TasMovie; Global.Config.RecentTas.Add(path); diff --git a/VersionInfo.cs b/VersionInfo.cs index 4f7d6c197d0..290e5ec390f 100644 --- a/VersionInfo.cs +++ b/VersionInfo.cs @@ -1,7 +1,7 @@ static class VersionInfo { - public const string MAINVERSION = "1.8.2"; - public static string RELEASEDATE = "August 31, 2014"; + public const string MAINVERSION = "1.8.3"; + public static string RELEASEDATE = "September 20, 2014"; public static bool DeveloperBuild = false; public static string GetEmuVersion()