Scrub Input hotkey, when held in movie playback mode, it will remove the input for that frame
This commit is contained in:
parent
8baaae1110
commit
41be32ce21
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -464,6 +464,7 @@ namespace BizHawk.MultiClient
|
|||
{
|
||||
MnemonicsGenerator mg = new MnemonicsGenerator();
|
||||
Log.SetFrameAt(frame, mg.GetEmptyMnemonic());
|
||||
changes = true;
|
||||
}
|
||||
|
||||
public void AppendFrame(string record)
|
||||
|
|
Loading…
Reference in New Issue