diff --git a/BizHawk.Client.EmuHawk/MainForm.Movie.cs b/BizHawk.Client.EmuHawk/MainForm.Movie.cs index 60bad79f6b..9aefa1f35e 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Movie.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Movie.cs @@ -12,10 +12,10 @@ namespace BizHawk.Client.EmuHawk { partial class MainForm { - public void StartNewMovie(IMovie movie, bool record) + public void StartNewMovie(IMovie movie, bool record, bool fromTastudio = false) //TasStudio flag is a hack for now { //If a movie is already loaded, save it before starting a new movie - if (Global.MovieSession.Movie.IsActive) + if (!fromTastudio && Global.MovieSession.Movie.IsActive) { Global.MovieSession.Movie.Save(); } @@ -37,7 +37,11 @@ namespace BizHawk.Client.EmuHawk LoadRom(GlobalWin.MainForm.CurrentlyOpenRom, true, !record); - Global.Config.RecentMovies.Add(movie.Filename); + if (!fromTastudio) + { + Global.Config.RecentMovies.Add(movie.Filename); + } + if (Global.MovieSession.Movie.Header.StartsFromSavestate) { LoadStateFile(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename)); @@ -55,7 +59,12 @@ namespace BizHawk.Client.EmuHawk } SetMainformMovieInfo(); - GlobalWin.Tools.Restart(); + + if (!fromTastudio) + { + GlobalWin.Tools.Restart(); + } + GlobalWin.Tools.Restart(); GlobalWin.DisplayManager.NeedsToPaint = true; } @@ -133,7 +142,7 @@ namespace BizHawk.Client.EmuHawk } //On movie load, these need to be set based on the contents of the movie file - private void SetSyncDependentSettings() + public void SetSyncDependentSettings() { switch (Global.Emulator.SystemId) { diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index e24fe3868d..0069e9a6a1 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -3561,7 +3561,14 @@ namespace BizHawk.Client.EmuHawk Global.Emulator = new NullEmulator(Global.CoreComm); Global.ActiveController = Global.NullControls; Global.AutoFireController = Global.AutofireNullControls; - Global.MovieSession.Movie.Stop(); + + // adelikat: TODO: Ugly hack! But I don't know a way around this yet. + if (!(Global.MovieSession.Movie is TasMovie)) + { + Global.MovieSession.Movie.Stop(); + } + + RebootStatusBarIcon.Visible = false; } diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index 308f04eeeb..a345de89ba 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -135,12 +135,9 @@ namespace BizHawk.Client.EmuHawk } } - GlobalWin.OSD.AddMessage("TAStudio engaged"); EngageTasStudio(); - LoadConfigSettings(); - - _tas.ActivePlayers = new List { "Player 1", "Player 2" }; + _tas.ActivePlayers = new List { "Player 1" }; SetUpColumns(); } @@ -148,9 +145,20 @@ namespace BizHawk.Client.EmuHawk { GlobalWin.OSD.AddMessage("TAStudio engaged"); Global.MovieSession.Movie = new TasMovie(); + _tas = Global.MovieSession.Movie as TasMovie; _tas.StartNewRecording(); _tas.OnChanged += OnMovieChanged; + + try + { + GlobalWin.MainForm.StartNewMovie(_tas, true, true); + + } + catch (Exception e) + { + MessageBox.Show(e.Message); + } } private void StartNewSession() @@ -164,12 +172,6 @@ namespace BizHawk.Client.EmuHawk } } - private void OnMovieChanged(object sender, MovieRecord.InputEventArgs e) - { - //TODO: move logic needs to go here - TASView.ItemCount = _tas.InputLogLength; - } - private void SetUpColumns() { TASView.Columns.Clear(); @@ -347,6 +349,12 @@ namespace BizHawk.Client.EmuHawk #region TASView Events + private void OnMovieChanged(object sender, MovieRecord.InputEventArgs e) + { + //TODO: move logic needs to go here + TASView.ItemCount = _tas.InputLogLength; + } + private void TASView_MouseDown(object sender, MouseEventArgs e) { if (TASView.PointedCell.Row.HasValue && !String.IsNullOrEmpty(TASView.PointedCell.Column))