From 2bddf3663e0b48dc53c01fb55dd61eaa733292c5 Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Sat, 19 Jan 2019 13:30:42 -0600 Subject: [PATCH] TAStudio: Fix some bugs in new from menues --- .../conversions/MovieConversionExtensions.cs | 24 +++++++++++++++++-- .../movie/tasproj/TasStateManager.cs | 12 +++++++++- .../tools/TAStudio/TAStudio.MenuItems.cs | 22 ++++++++++------- 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs b/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs index 0cd32aa7ef..99716f7617 100644 --- a/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs +++ b/BizHawk.Client.Common/movie/conversions/MovieConversionExtensions.cs @@ -126,7 +126,17 @@ namespace BizHawk.Client.Common.MovieConversionExtensions public static TasMovie ConvertToSavestateAnchoredMovie(this TasMovie old, int frame, byte[] savestate) { - string newFilename = old.Filename + "." + TasMovie.Extension; + string newFilename = old.Filename; + + if (old.Filename.Contains("tasproj")) + { + newFilename = newFilename.Remove(newFilename.Length - 7, 7); + newFilename = newFilename + "nfn." + TasMovie.Extension; + } + else + { + newFilename = old.Filename + "." + TasMovie.Extension; + } if (File.Exists(newFilename)) { @@ -201,7 +211,17 @@ namespace BizHawk.Client.Common.MovieConversionExtensions public static TasMovie ConvertToSaveRamAnchoredMovie(this TasMovie old, byte[] saveRam) { - string newFilename = old.Filename + "." + TasMovie.Extension; + string newFilename = old.Filename; + + if (old.Filename.Contains("tasproj")) + { + newFilename = newFilename.Remove(newFilename.Length - 7, 7); + newFilename = newFilename + "nfsr." + TasMovie.Extension; + } + else + { + newFilename = old.Filename + "." + TasMovie.Extension; + } if (File.Exists(newFilename)) { diff --git a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs index 3b2920814c..671fb95c05 100644 --- a/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs +++ b/BizHawk.Client.Common/movie/tasproj/TasStateManager.cs @@ -384,7 +384,17 @@ namespace BizHawk.Client.Common { if (_states.Any()) { - StateManagerState power = _states.Values.First(s => s.Frame == 0); + var temp_state = _states.Values; + StateManagerState power = null; + if (temp_state[0].Frame==0) + { + power = _states.Values.First(s => s.Frame == 0); + } + else + { + power = _states.Values[0]; + } + _states.Clear(); SetState(0, power.State); Used = (ulong)power.State.Length; diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs index f2eb9db437..9097bb66f4 100644 --- a/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs +++ b/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs @@ -1453,14 +1453,20 @@ namespace BizHawk.Client.EmuHawk { if (AskSaveChanges()) { - int index = TasView.SelectedRows.First(); - GoToFrame(index); - - TasMovie newProject = CurrentTasMovie.ConvertToSaveRamAnchoredMovie( - SaveRamEmulator.CloneSaveRam()); - - Mainform.PauseEmulator(); - LoadFile(new FileInfo(newProject.Filename), true); + if (SaveRamEmulator.CloneSaveRam() != null) + { + int index = 0; + if (TasView.SelectedRows.Count() > 0) { index = TasView.SelectedRows.First(); } + GoToFrame(index); + TasMovie newProject = CurrentTasMovie.ConvertToSaveRamAnchoredMovie( + SaveRamEmulator.CloneSaveRam()); + Mainform.PauseEmulator(); + LoadFile(new FileInfo(newProject.Filename), true); + } + else + { + throw new Exception("No SaveRam"); + } } }