Scrub Input hotkey, when held in movie playback mode, it will remove the input for that frame

This commit is contained in:
adelikat 2013-03-09 23:37:37 +00:00
parent 8baaae1110
commit 41be32ce21
6 changed files with 64 additions and 20 deletions

View File

@ -690,6 +690,7 @@ namespace BizHawk.MultiClient
public string SaveMovieBinding = "";
public string OpenVirtualPadBinding = "";
public string MoviePlaybackPokeModeBinding = "";
public string ClearFrameBinding = "";
// NES Sound settings
public bool NESEnableSquare1 = true;
public bool NESEnableSquare2 = true;

View File

@ -12,6 +12,15 @@ namespace BizHawk.MultiClient
{
public bool ReadOnly = true; //Global Movie Read only setting
public void ClearFrame()
{
if (Global.MovieSession.Movie.IsPlaying)
{
Global.MovieSession.Movie.ClearFrame(Global.Emulator.Frame);
Global.OSD.AddMessage("Scrubbed input at frame " + Global.Emulator.Frame.ToString());
}
}
public void StartNewMovie(Movie m, bool record)
{
//If a movie is already loaded, save it before starting a new movie
@ -282,7 +291,12 @@ namespace BizHawk.MultiClient
{
Global.MovieSession.Movie.CaptureState();
Global.MovieSession.LatchInputFromLog();
if (TAStudio1.IsHandleCreated && !TAStudio1.IsDisposed || Global.Config.MoviePlaybackPokeMode)
if (Global.ClientControls["ClearFrame"])
{
Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter);
ClearFrame();
}
else if (TAStudio1.IsHandleCreated && !TAStudio1.IsDisposed || Global.Config.MoviePlaybackPokeMode)
{
Global.MovieSession.LatchInputFromPlayer(Global.MovieInputSourceAdapter);
Global.MovieSession.Movie.PokeFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint);

View File

@ -689,7 +689,7 @@ namespace BizHawk.MultiClient
"Play Movie", "Record Movie", "Stop Movie", "Play Beginning", "Volume Up", "Volume Down", "Toggle MultiTrack", "Record All", "Record None", "Increment Player",
"Soft Reset", "Decrement Player", "Record AVI/WAV", "Stop AVI/WAV", "Toggle Menu", "Increase Speed", "Decrease Speed", "Toggle Background Input",
"Autohold", "Clear Autohold", "SNES Toggle BG 1", "SNES Toggle BG 2", "SNES Toggle BG 3", "SNES Toggle BG 4", "SNES Toggle OBJ 1", "SNES Toggle OBJ 2", "SNES Toggle OBJ 3",
"SNES Toggle OBJ 4", "Reboot Core", "Save Movie", "Virtual Pad", "AutoholdAutofire", "MoviePokeToggle" }
"SNES Toggle OBJ 4", "Reboot Core", "Save Movie", "Virtual Pad", "AutoholdAutofire", "MoviePokeToggle", "ClearFrame" }
};
private void InitControls()
@ -792,6 +792,7 @@ namespace BizHawk.MultiClient
controls.BindMulti("AutoholdAutofire", Global.Config.AutoholdAutofireBinding);
controls.BindMulti("Clear Autohold", Global.Config.AutoholdClear);
controls.BindMulti("MoviePokeToggle", Global.Config.MoviePlaybackPokeModeBinding);
controls.BindMulti("ClearFrame", Global.Config.ClearFrameBinding);
Global.ClientControls = controls;

View File

@ -166,6 +166,7 @@
this.IDW_SS3 = new BizHawk.MultiClient.InputWidget();
this.IDW_SS2 = new BizHawk.MultiClient.InputWidget();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.MoviePokeToggleLabel = new System.Windows.Forms.Label();
this.IDW_TOGGLEREADONLY = new BizHawk.MultiClient.InputWidget();
this.IDW_PLAYBEGINNING = new BizHawk.MultiClient.InputWidget();
this.label67 = new System.Windows.Forms.Label();
@ -188,6 +189,7 @@
this.IDW_SELECTNONE = new BizHawk.MultiClient.InputWidget();
this.IDW_MTSELECTALL = new BizHawk.MultiClient.InputWidget();
this.IDW_SaveMovie = new BizHawk.MultiClient.InputWidget();
this.IDW_MoviePokeToggle = new BizHawk.MultiClient.InputWidget();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.VirtualPadsLabel = new System.Windows.Forms.Label();
this.IDW_OpenVirtualPad = new BizHawk.MultiClient.InputWidget();
@ -228,8 +230,8 @@
this.IDB_CANCEL = new System.Windows.Forms.Button();
this.label38 = new System.Windows.Forms.Label();
this.AutoTabCheckBox = new System.Windows.Forms.CheckBox();
this.MoviePokeToggleLabel = new System.Windows.Forms.Label();
this.IDW_MoviePokeToggle = new BizHawk.MultiClient.InputWidget();
this.IDW_ClearFrame = new BizHawk.MultiClient.InputWidget();
this.ClearFrameLabel = new System.Windows.Forms.Label();
this.hotkeyTabs.SuspendLayout();
this.tabPage1.SuspendLayout();
this.tabPage2.SuspendLayout();
@ -1637,7 +1639,6 @@
//
// tabPage3
//
this.tabPage3.Controls.Add(this.MoviePokeToggleLabel);
this.tabPage3.Controls.Add(this.IDW_TOGGLEREADONLY);
this.tabPage3.Controls.Add(this.IDW_PLAYBEGINNING);
this.tabPage3.Controls.Add(this.label67);
@ -1661,6 +1662,9 @@
this.tabPage3.Controls.Add(this.IDW_MTSELECTALL);
this.tabPage3.Controls.Add(this.IDW_SaveMovie);
this.tabPage3.Controls.Add(this.IDW_MoviePokeToggle);
this.tabPage3.Controls.Add(this.ClearFrameLabel);
this.tabPage3.Controls.Add(this.IDW_ClearFrame);
this.tabPage3.Controls.Add(this.MoviePokeToggleLabel);
this.tabPage3.Location = new System.Drawing.Point(4, 28);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Padding = new System.Windows.Forms.Padding(3);
@ -1669,6 +1673,15 @@
this.tabPage3.Text = "Movie";
this.tabPage3.UseVisualStyleBackColor = true;
//
// MoviePokeToggleLabel
//
this.MoviePokeToggleLabel.AutoSize = true;
this.MoviePokeToggleLabel.Location = new System.Drawing.Point(225, 139);
this.MoviePokeToggleLabel.Name = "MoviePokeToggleLabel";
this.MoviePokeToggleLabel.Size = new System.Drawing.Size(64, 13);
this.MoviePokeToggleLabel.TabIndex = 120;
this.MoviePokeToggleLabel.Text = "Movie Poke";
//
// IDW_TOGGLEREADONLY
//
this.IDW_TOGGLEREADONLY.AcceptsTab = true;
@ -1878,6 +1891,16 @@
this.IDW_SaveMovie.Size = new System.Drawing.Size(100, 20);
this.IDW_SaveMovie.TabIndex = 118;
//
// IDW_MoviePokeToggle
//
this.IDW_MoviePokeToggle.AcceptsTab = true;
this.IDW_MoviePokeToggle.BackColor = System.Drawing.SystemColors.Window;
this.IDW_MoviePokeToggle.Conflicted = false;
this.IDW_MoviePokeToggle.Location = new System.Drawing.Point(324, 136);
this.IDW_MoviePokeToggle.Name = "IDW_MoviePokeToggle";
this.IDW_MoviePokeToggle.Size = new System.Drawing.Size(100, 20);
this.IDW_MoviePokeToggle.TabIndex = 121;
//
// tabPage4
//
this.tabPage4.Controls.Add(this.VirtualPadsLabel);
@ -2295,24 +2318,24 @@
this.AutoTabCheckBox.UseVisualStyleBackColor = true;
this.AutoTabCheckBox.CheckedChanged += new System.EventHandler(this.AutoTabCheckBox_CheckedChanged);
//
// MoviePokeToggleLabel
// IDW_ClearFrame
//
this.MoviePokeToggleLabel.AutoSize = true;
this.MoviePokeToggleLabel.Location = new System.Drawing.Point(225, 143);
this.MoviePokeToggleLabel.Name = "MoviePokeToggleLabel";
this.MoviePokeToggleLabel.Size = new System.Drawing.Size(64, 13);
this.MoviePokeToggleLabel.TabIndex = 120;
this.MoviePokeToggleLabel.Text = "Movie Poke";
this.IDW_ClearFrame.AcceptsTab = true;
this.IDW_ClearFrame.BackColor = System.Drawing.SystemColors.Window;
this.IDW_ClearFrame.Conflicted = false;
this.IDW_ClearFrame.Location = new System.Drawing.Point(324, 162);
this.IDW_ClearFrame.Name = "IDW_ClearFrame";
this.IDW_ClearFrame.Size = new System.Drawing.Size(100, 20);
this.IDW_ClearFrame.TabIndex = 120;
//
// IDW_MoviePokeToggle
// ClearFrameLabel
//
this.IDW_MoviePokeToggle.AcceptsTab = true;
this.IDW_MoviePokeToggle.BackColor = System.Drawing.SystemColors.Window;
this.IDW_MoviePokeToggle.Conflicted = false;
this.IDW_MoviePokeToggle.Location = new System.Drawing.Point(324, 139);
this.IDW_MoviePokeToggle.Name = "IDW_MoviePokeToggle";
this.IDW_MoviePokeToggle.Size = new System.Drawing.Size(100, 20);
this.IDW_MoviePokeToggle.TabIndex = 121;
this.ClearFrameLabel.AutoSize = true;
this.ClearFrameLabel.Location = new System.Drawing.Point(225, 165);
this.ClearFrameLabel.Name = "ClearFrameLabel";
this.ClearFrameLabel.Size = new System.Drawing.Size(63, 13);
this.ClearFrameLabel.TabIndex = 121;
this.ClearFrameLabel.Text = "Scrub Input";
//
// HotkeyWindow
//
@ -2554,5 +2577,7 @@
private InputWidget IDW_AutoholdAutofire;
private System.Windows.Forms.Label MoviePokeToggleLabel;
private InputWidget IDW_MoviePokeToggle;
private System.Windows.Forms.Label ClearFrameLabel;
private InputWidget IDW_ClearFrame;
}
}

View File

@ -116,6 +116,7 @@ namespace BizHawk.MultiClient
IDW_SaveMovie.SetBindings(Global.Config.SaveMovieBinding);
IDW_OpenVirtualPad.SetBindings(Global.Config.OpenVirtualPadBinding);
IDW_MoviePokeToggle.SetBindings(Global.Config.MoviePlaybackPokeModeBinding);
IDW_ClearFrame.SetBindings(Global.Config.ClearFrameBinding);
}
private void button2_Click(object sender, EventArgs e)
{
@ -241,6 +242,7 @@ namespace BizHawk.MultiClient
Global.Config.OpenVirtualPadBinding = IDW_OpenVirtualPad.Text;
Global.Config.MoviePlaybackPokeModeBinding = IDW_MoviePokeToggle.Text;
Global.Config.ClearFrameBinding = IDW_ClearFrame.Text;
Global.OSD.AddMessage("Hotkey settings saved");
this.DialogResult = DialogResult.OK;

View File

@ -464,6 +464,7 @@ namespace BizHawk.MultiClient
{
MnemonicsGenerator mg = new MnemonicsGenerator();
Log.SetFrameAt(frame, mg.GetEmptyMnemonic());
changes = true;
}
public void AppendFrame(string record)