From e121498c4ce2dd90525ec2a7f5e8b51b8e761dd9 Mon Sep 17 00:00:00 2001 From: "andres.delikat" Date: Sat, 30 Jul 2011 17:59:18 +0000 Subject: [PATCH] TAStudio - fix updating of nes control pad, add menu item "Update Pads on Movie Playback", different color for control pad button background when pressed --- BizHawk.MultiClient/Config.cs | 1 + BizHawk.MultiClient/MainForm.cs | 1 + .../tools/TAStudio.Designer.cs | 38 ++++++++--- BizHawk.MultiClient/tools/TAStudio.cs | 68 +++++++++++-------- .../tools/VirtualPadNESControl.cs | 8 ++- .../tools/VirtualPadSMSControl.cs | 12 ++++ 6 files changed, 89 insertions(+), 39 deletions(-) diff --git a/BizHawk.MultiClient/Config.cs b/BizHawk.MultiClient/Config.cs index 12071cd694..99898af042 100644 --- a/BizHawk.MultiClient/Config.cs +++ b/BizHawk.MultiClient/Config.cs @@ -281,6 +281,7 @@ public int TASWndy = -1; public int TASWidth = -1; public int TASHeight = -1; + public bool TASUpdatePads = true; // NES Game Genie Encoder/Decoder public bool NESGGAutoload = false; diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index ecb966a561..ad8c01f91e 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -947,6 +947,7 @@ namespace BizHawk.MultiClient NESNameTableViewer1.Restart(); NESDebug1.Restart(); TI83KeyPad1.Restart(); + TAStudio1.Restart(); if (Global.Config.LoadCheatFileByGame) { if (Cheats1.AttemptLoadCheatFile()) diff --git a/BizHawk.MultiClient/tools/TAStudio.Designer.cs b/BizHawk.MultiClient/tools/TAStudio.Designer.cs index 1883861482..2f9ae5dd1b 100644 --- a/BizHawk.MultiClient/tools/TAStudio.Designer.cs +++ b/BizHawk.MultiClient/tools/TAStudio.Designer.cs @@ -48,8 +48,8 @@ this.insertFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.saveWindowPositionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.autoloadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.restoreWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStrip1 = new ToolStripEx(); this.RewindToBeginning = new System.Windows.Forms.ToolStripButton(); this.RewindButton = new System.Windows.Forms.ToolStripButton(); @@ -68,6 +68,8 @@ this.TASView = new BizHawk.VirtualListView(); this.Frame = new System.Windows.Forms.ColumnHeader(); this.Log = new System.Windows.Forms.ColumnHeader(); + this.updatePadsOnMovePlaybackToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.menuStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.contextMenuStrip1.SuspendLayout(); @@ -201,6 +203,8 @@ this.settingsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.saveWindowPositionToolStripMenuItem, this.autoloadToolStripMenuItem, + this.updatePadsOnMovePlaybackToolStripMenuItem, + this.toolStripSeparator4, this.restoreWindowToolStripMenuItem}); this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; this.settingsToolStripMenuItem.Size = new System.Drawing.Size(58, 20); @@ -210,24 +214,24 @@ // saveWindowPositionToolStripMenuItem // this.saveWindowPositionToolStripMenuItem.Name = "saveWindowPositionToolStripMenuItem"; - this.saveWindowPositionToolStripMenuItem.Size = new System.Drawing.Size(203, 22); + this.saveWindowPositionToolStripMenuItem.Size = new System.Drawing.Size(235, 22); this.saveWindowPositionToolStripMenuItem.Text = "Save Window Position"; this.saveWindowPositionToolStripMenuItem.Click += new System.EventHandler(this.saveWindowPositionToolStripMenuItem_Click); // - // restoreWindowToolStripMenuItem - // - this.restoreWindowToolStripMenuItem.Name = "restoreWindowToolStripMenuItem"; - this.restoreWindowToolStripMenuItem.Size = new System.Drawing.Size(203, 22); - this.restoreWindowToolStripMenuItem.Text = "Restore Default Settings"; - this.restoreWindowToolStripMenuItem.Click += new System.EventHandler(this.restoreWindowToolStripMenuItem_Click); - // // autoloadToolStripMenuItem // this.autoloadToolStripMenuItem.Name = "autoloadToolStripMenuItem"; - this.autoloadToolStripMenuItem.Size = new System.Drawing.Size(203, 22); + this.autoloadToolStripMenuItem.Size = new System.Drawing.Size(235, 22); this.autoloadToolStripMenuItem.Text = "Autoload"; this.autoloadToolStripMenuItem.Click += new System.EventHandler(this.autoloadToolStripMenuItem_Click); // + // restoreWindowToolStripMenuItem + // + this.restoreWindowToolStripMenuItem.Name = "restoreWindowToolStripMenuItem"; + this.restoreWindowToolStripMenuItem.Size = new System.Drawing.Size(235, 22); + this.restoreWindowToolStripMenuItem.Text = "Restore Default Settings"; + this.restoreWindowToolStripMenuItem.Click += new System.EventHandler(this.restoreWindowToolStripMenuItem_Click); + // // toolStrip1 // this.toolStrip1.ClickThrough = true; @@ -395,6 +399,18 @@ this.Log.Text = "Log"; this.Log.Width = 201; // + // updatePadsOnMovePlaybackToolStripMenuItem + // + this.updatePadsOnMovePlaybackToolStripMenuItem.Name = "updatePadsOnMovePlaybackToolStripMenuItem"; + this.updatePadsOnMovePlaybackToolStripMenuItem.Size = new System.Drawing.Size(235, 22); + this.updatePadsOnMovePlaybackToolStripMenuItem.Text = "Update Pads on Move playback"; + this.updatePadsOnMovePlaybackToolStripMenuItem.Click += new System.EventHandler(this.updatePadsOnMovePlaybackToolStripMenuItem_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(232, 6); + // // TAStudio // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -460,5 +476,7 @@ private System.Windows.Forms.GroupBox ControllerBox; private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; private System.Windows.Forms.ToolStripButton StopButton; + private System.Windows.Forms.ToolStripMenuItem updatePadsOnMovePlaybackToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; } } \ No newline at end of file diff --git a/BizHawk.MultiClient/tools/TAStudio.cs b/BizHawk.MultiClient/tools/TAStudio.cs index 8083d8f595..f4b22c08c9 100644 --- a/BizHawk.MultiClient/tools/TAStudio.cs +++ b/BizHawk.MultiClient/tools/TAStudio.cs @@ -55,33 +55,33 @@ namespace BizHawk.MultiClient if (Global.MainForm.UserMovie.Mode == MOVIEMODE.PLAY) { string str = Global.MainForm.UserMovie.GetInputFrame(Global.Emulator.Frame); - - switch (Global.Emulator.SystemId) + if (Global.Config.TASUpdatePads) { - case "NES": - Pads[0].SetButtons(str.Substring(3, 8)); - Pads[1].SetButtons(str.Substring(12, 8)); - Pads[2].SetButtons(str[1].ToString()); - break; - case "SMS": - case "GG": - case "SG": - Pads[0].SetButtons(str.Substring(0, 6)); - Pads[1].SetButtons(str.Substring(7, 6)); - Pads[2].SetButtons(str.Substring(14, 2)); - break; - case "PCE": - case "SGX": - Pads[0].SetButtons(str.Substring(3, 8)); - Pads[1].SetButtons(str.Substring(12, 8)); - Pads[2].SetButtons(str.Substring(21, 8)); - Pads[3].SetButtons(str.Substring(30, 8)); - break; - default: - break; + switch (Global.Emulator.SystemId) + { + case "NES": + Pads[0].SetButtons(str.Substring(3, 8)); + Pads[1].SetButtons(str.Substring(12, 8)); + Pads[2].SetButtons(str[1].ToString()); + break; + case "SMS": + case "GG": + case "SG": + Pads[0].SetButtons(str.Substring(0, 6)); + Pads[1].SetButtons(str.Substring(7, 6)); + Pads[2].SetButtons(str.Substring(14, 2)); + break; + case "PCE": + case "SGX": + Pads[0].SetButtons(str.Substring(3, 8)); + Pads[1].SetButtons(str.Substring(12, 8)); + Pads[2].SetButtons(str.Substring(21, 8)); + Pads[3].SetButtons(str.Substring(30, 8)); + break; + default: + break; + } } - - } } @@ -119,7 +119,7 @@ namespace BizHawk.MultiClient TASView.ensureVisible(Global.Emulator.Frame); } - private void TAStudio_Load(object sender, EventArgs e) + public void LoadTAStudio() { //TODO: don't engage until new/open project // @@ -195,6 +195,11 @@ namespace BizHawk.MultiClient } } + private void TAStudio_Load(object sender, EventArgs e) + { + LoadTAStudio(); + } + private void LoadConfigSettings() { defaultWidth = Size.Width; //Save these first so that the user can restore to its original size @@ -229,9 +234,10 @@ namespace BizHawk.MultiClient public void Restart() { TASView.Clear(); - TASView.Update(); + ControllerBox.Controls.Clear(); ClearPads(); - DisplayList(); + Pads.Clear(); + LoadTAStudio(); } private void exitToolStripMenuItem_Click(object sender, EventArgs e) @@ -243,6 +249,7 @@ namespace BizHawk.MultiClient { saveWindowPositionToolStripMenuItem.Checked = Global.Config.TAStudioSaveWindowPosition; autoloadToolStripMenuItem.Checked = Global.Config.AutoloadTAStudio; + updatePadsOnMovePlaybackToolStripMenuItem.Checked = Global.Config.TASUpdatePads; } private void saveWindowPositionToolStripMenuItem_Click(object sender, EventArgs e) @@ -330,5 +337,10 @@ namespace BizHawk.MultiClient if (Global.MainForm.ReadOnly) return; } + + private void updatePadsOnMovePlaybackToolStripMenuItem_Click(object sender, EventArgs e) + { + Global.Config.TASUpdatePads ^= true; + } } } diff --git a/BizHawk.MultiClient/tools/VirtualPadNESControl.cs b/BizHawk.MultiClient/tools/VirtualPadNESControl.cs index 8f079a60fb..5b51d075fa 100644 --- a/BizHawk.MultiClient/tools/VirtualPadNESControl.cs +++ b/BizHawk.MultiClient/tools/VirtualPadNESControl.cs @@ -96,14 +96,20 @@ namespace BizHawk.MultiClient public override void SetButtons(string buttons) { if (buttons.Length < 1) return; - if (buttons[0] == '.') B2.Checked = false; else B2.Checked = true; + if (buttons[0] == '.' || buttons[0] == '0') B2.Checked = false; else B2.Checked = true; } private void Buttons_CheckedChanged(object sender, EventArgs e) { if (Global.Emulator.SystemId != "NES") return; else if (sender == B2) + { Global.StickyXORAdapter.SetSticky("Reset", B2.Checked); + if (B2.Checked == true) + B2.BackColor = Color.Pink; + else + B2.BackColor = SystemColors.Control; + } } public override void Clear() diff --git a/BizHawk.MultiClient/tools/VirtualPadSMSControl.cs b/BizHawk.MultiClient/tools/VirtualPadSMSControl.cs index 531324a3ef..ce30f9c087 100644 --- a/BizHawk.MultiClient/tools/VirtualPadSMSControl.cs +++ b/BizHawk.MultiClient/tools/VirtualPadSMSControl.cs @@ -104,9 +104,21 @@ namespace BizHawk.MultiClient { if (Global.Emulator.SystemId != "SMS") return; else if (sender == B1) + { Global.StickyXORAdapter.SetSticky("Pause", B1.Checked); + if (B1.Checked == true) + B1.BackColor = Color.Pink; + else + B1.BackColor = SystemColors.Control; + } else if (sender == B2) + { Global.StickyXORAdapter.SetSticky("Reset", B2.Checked); + if (B2.Checked == true) + B2.BackColor = Color.Pink; + else + B2.BackColor = SystemColors.Control; + } } public override void Clear()