tastudio: actually use initial state from anchored movies.

don't seek to whatever frame such a movie was created from.
This commit is contained in:
feos 2015-12-08 23:38:00 +03:00
parent 9d491d9415
commit 8a6ddfbf3f
3 changed files with 12 additions and 5 deletions

View File

@ -138,6 +138,10 @@ namespace BizHawk.Client.Common
{
get
{
if (frame == 0) {
return new KeyValuePair<int, byte[]>(0, InitialState);
}
if (States.ContainsKey(frame))
{
StateAccessed(frame);

View File

@ -1097,7 +1097,7 @@ namespace BizHawk.Client.EmuHawk
index, (byte[])StatableEmulator.SaveStateBinary().Clone());
GlobalWin.MainForm.PauseEmulator();
LoadFile(new FileInfo(newProject.Filename));
LoadFile(new FileInfo(newProject.Filename), true);
}
}
@ -1112,7 +1112,7 @@ namespace BizHawk.Client.EmuHawk
SaveRamEmulator.CloneSaveRam());
GlobalWin.MainForm.PauseEmulator();
LoadFile(new FileInfo(newProject.Filename));
LoadFile(new FileInfo(newProject.Filename), true);
}
}

View File

@ -421,7 +421,7 @@ namespace BizHawk.Client.EmuHawk
Settings.RecentTas.Add(Global.MovieSession.Movie.Filename);
}
private bool LoadFile(FileInfo file)
private bool LoadFile(FileInfo file, bool startsFromSavestate = false)
{
if (!file.Exists)
{
@ -429,7 +429,7 @@ namespace BizHawk.Client.EmuHawk
return false;
}
TasMovie newMovie = new TasMovie(false, _saveBackgroundWorker);
TasMovie newMovie = new TasMovie(startsFromSavestate, _saveBackgroundWorker);
newMovie.TasStateManager.InvalidateCallback = GreenzoneInvalidated;
newMovie.Filename = file.FullName;
@ -440,7 +440,10 @@ namespace BizHawk.Client.EmuHawk
if (TasView.AllColumns.Count() == 0)
SetUpColumns();
GoToFrame(CurrentTasMovie.Session.CurrentFrame);
if (startsFromSavestate)
GoToFrame(0);
else
GoToFrame(CurrentTasMovie.Session.CurrentFrame);
CurrentTasMovie.CurrentBranch = CurrentTasMovie.Session.CurrentBranch;
// clear all selections