TAStudio: Fix some bugs in new from menues

This commit is contained in:
alyosha-tas 2019-01-19 13:30:42 -06:00
parent 9696a75839
commit 2bddf3663e
3 changed files with 47 additions and 11 deletions

View File

@ -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))
{

View File

@ -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;

View File

@ -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");
}
}
}