Movies - Added "Full Movie Loadstates" option, when checked it will do VBA-style movie loadstates where the entire state-movie is put into the movie, and then the movie is truncated on the next emulated frame rather than immediately
This commit is contained in:
parent
0eeacb57ce
commit
d308f76d2c
|
@ -579,6 +579,7 @@ namespace BizHawk.MultiClient
|
|||
public string DefaultAuthor = "default user";
|
||||
public bool UseDefaultAuthor = true;
|
||||
public bool DisplaySubtitles = true;
|
||||
public bool VBAStyleMovieLoadState = false;
|
||||
|
||||
//Play Movie Dialog
|
||||
public bool PlayMovie_IncludeSubdir = true;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1269,6 +1269,15 @@ namespace BizHawk.MultiClient
|
|||
|
||||
private void movieToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
|
||||
{
|
||||
if (Global.MovieSession.MultiTrack.IsActive)
|
||||
{
|
||||
fullMovieLoadstatesToolStripMenuItem.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
fullMovieLoadstatesToolStripMenuItem.Enabled = true;
|
||||
}
|
||||
|
||||
if (Global.MovieSession.Movie.IsActive)
|
||||
{
|
||||
stopMovieToolStripMenuItem.Enabled = true;
|
||||
|
@ -1292,6 +1301,7 @@ namespace BizHawk.MultiClient
|
|||
stopMovieToolStripMenuItem.ShortcutKeyDisplayString = Global.Config.StopMovieBinding;
|
||||
playFromBeginningToolStripMenuItem.ShortcutKeyDisplayString = Global.Config.PlayBeginningBinding;
|
||||
saveMovieToolStripMenuItem.ShortcutKeyDisplayString = Global.Config.SaveMovieBinding;
|
||||
fullMovieLoadstatesToolStripMenuItem.Checked = Global.Config.VBAStyleMovieLoadState;
|
||||
}
|
||||
|
||||
private void saveConfigToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
|
|
|
@ -2755,16 +2755,26 @@ namespace BizHawk.MultiClient
|
|||
{
|
||||
if (Global.MovieSession.Movie.IsActive)
|
||||
{
|
||||
Global.MovieSession.MultiTrack.IsActive = !Global.MovieSession.MultiTrack.IsActive;
|
||||
if (Global.MovieSession.MultiTrack.IsActive)
|
||||
|
||||
if (Global.Config.VBAStyleMovieLoadState)
|
||||
{
|
||||
Global.OSD.AddMessage("MultiTrack Enabled");
|
||||
Global.OSD.MT = "Recording None";
|
||||
Global.OSD.AddMessage("Multi-track can not be used in Full Movie Loadstates mode");
|
||||
}
|
||||
else
|
||||
Global.OSD.AddMessage("MultiTrack Disabled");
|
||||
Global.MovieSession.MultiTrack.RecordAll = false;
|
||||
Global.MovieSession.MultiTrack.CurrentPlayer = 0;
|
||||
{
|
||||
Global.MovieSession.MultiTrack.IsActive = !Global.MovieSession.MultiTrack.IsActive;
|
||||
if (Global.MovieSession.MultiTrack.IsActive)
|
||||
{
|
||||
Global.OSD.AddMessage("MultiTrack Enabled");
|
||||
Global.OSD.MT = "Recording None";
|
||||
}
|
||||
else
|
||||
{
|
||||
Global.OSD.AddMessage("MultiTrack Disabled");
|
||||
}
|
||||
Global.MovieSession.MultiTrack.RecordAll = false;
|
||||
Global.MovieSession.MultiTrack.CurrentPlayer = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -5059,6 +5069,9 @@ namespace BizHawk.MultiClient
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private void fullMovieLoadstatesToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Global.Config.VBAStyleMovieLoadState ^= true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,10 +68,7 @@ namespace BizHawk.MultiClient
|
|||
|
||||
public int Rerecords
|
||||
{
|
||||
get
|
||||
{
|
||||
return rerecords;
|
||||
}
|
||||
get { return rerecords; }
|
||||
set
|
||||
{
|
||||
rerecords = value;
|
||||
|
@ -81,26 +78,17 @@ namespace BizHawk.MultiClient
|
|||
|
||||
public string SysID
|
||||
{
|
||||
get
|
||||
{
|
||||
return Header.GetHeaderLine(MovieHeader.PLATFORM);
|
||||
}
|
||||
get { return Header.GetHeaderLine(MovieHeader.PLATFORM); }
|
||||
}
|
||||
|
||||
public string GUID
|
||||
{
|
||||
get
|
||||
{
|
||||
return Header.GetHeaderLine(MovieHeader.GUID);
|
||||
}
|
||||
get { return Header.GetHeaderLine(MovieHeader.GUID); }
|
||||
}
|
||||
|
||||
public string GameName
|
||||
{
|
||||
get
|
||||
{
|
||||
return Header.GetHeaderLine(MovieHeader.GAMENAME);
|
||||
}
|
||||
get { return Header.GetHeaderLine(MovieHeader.GAMENAME); }
|
||||
}
|
||||
|
||||
public int Frames
|
||||
|
@ -127,10 +115,7 @@ namespace BizHawk.MultiClient
|
|||
|
||||
public bool StartsFromSavestate
|
||||
{
|
||||
get
|
||||
{
|
||||
return startsfromsavestate;
|
||||
}
|
||||
get { return startsfromsavestate; }
|
||||
set
|
||||
{
|
||||
startsfromsavestate = value;
|
||||
|
@ -147,26 +132,17 @@ namespace BizHawk.MultiClient
|
|||
|
||||
public int StateFirstIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return Log.StateFirstIndex;
|
||||
}
|
||||
get { return Log.StateFirstIndex; }
|
||||
}
|
||||
|
||||
public int StateLastIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
return Log.StateLastIndex;
|
||||
}
|
||||
get { return Log.StateLastIndex; }
|
||||
}
|
||||
|
||||
public bool StateCapturing
|
||||
{
|
||||
get
|
||||
{
|
||||
return statecapturing;
|
||||
}
|
||||
get { return statecapturing; }
|
||||
set
|
||||
{
|
||||
statecapturing = value;
|
||||
|
@ -525,6 +501,7 @@ namespace BizHawk.MultiClient
|
|||
public void TruncateMovie(int frame)
|
||||
{
|
||||
Log.TruncateMovie(frame);
|
||||
Log.TruncateStates(frame);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -602,14 +579,17 @@ namespace BizHawk.MultiClient
|
|||
|
||||
public void CommitFrame(int frameNum, IController source)
|
||||
{
|
||||
//if (Global.Emulator.Frame < Log.Length())
|
||||
//{
|
||||
// Log.Truncate(Global.Emulator.Frame);
|
||||
//}
|
||||
|
||||
//Note: Truncation here instead of loadstate will make VBA style loadstates
|
||||
//(Where an entire movie is loaded then truncated on the next frame
|
||||
//this allows users to restore a movie with any savestate from that "timeline"
|
||||
if (Global.Config.VBAStyleMovieLoadState)
|
||||
{
|
||||
if (Global.Emulator.Frame < Log.Length)
|
||||
{
|
||||
Log.TruncateMovie(Global.Emulator.Frame);
|
||||
Log .TruncateStates(Global.Emulator.Frame);
|
||||
}
|
||||
}
|
||||
|
||||
MnemonicsGenerator mg = new MnemonicsGenerator();
|
||||
mg.SetSource(source);
|
||||
|
@ -709,13 +689,19 @@ namespace BizHawk.MultiClient
|
|||
}
|
||||
if (stateFrame > 0 && stateFrame < Log.Length)
|
||||
{
|
||||
Log.TruncateStates(stateFrame);
|
||||
Log.TruncateMovie(stateFrame);
|
||||
if (!Global.Config.VBAStyleMovieLoadState)
|
||||
{
|
||||
Log.TruncateStates(stateFrame);
|
||||
Log.TruncateMovie(stateFrame);
|
||||
}
|
||||
}
|
||||
else if (stateFrame > Log.Length) //Post movie savestate
|
||||
{
|
||||
Log.TruncateStates(Log.Length);
|
||||
Log.TruncateMovie(Log.Length);
|
||||
if (!Global.Config.VBAStyleMovieLoadState)
|
||||
{
|
||||
Log.TruncateStates(Log.Length);
|
||||
Log.TruncateMovie(Log.Length);
|
||||
}
|
||||
Mode = MOVIEMODE.FINISHED;
|
||||
}
|
||||
if (IsCountingRerecords)
|
||||
|
|
Loading…
Reference in New Issue