diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs index 5e31d04c33..eadce03a53 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs @@ -169,7 +169,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo new ControllerDefinition { Name = "NES Controls", - BoolButtons = { "A","B","Select","Start","Left","Up","Down","Right", "Reset" } + BoolButtons = { "P1 A","P1 B","P1 Select","P1 Start","P1 Left","P1 Up","P1 Down","P1 Right", "Reset", + "P2 A", "P2 B", "P2 Select", "P2 Start", "P2 Up", "P2 Down", "P2 Left", "P2 Right"} }; public ControllerDefinition ControllerDefinition { get { return NESController; } } @@ -203,7 +204,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo void Strobe() { value = 0; - foreach (string str in new string[] { "Right", "Left", "Down", "Up", "Start", "Select", "B", "A" }) + foreach (string str in new string[] { "P" + (player + 1).ToString() + " Right", "P" + (player + 1).ToString() + " Left", + "P" + (player + 1).ToString() + " Down", "P" + (player + 1).ToString() + " Up", "P" + (player + 1).ToString() + " Start", + "P" + (player + 1).ToString() + " Select", "P" + (player + 1).ToString() + " B", "P" + (player + 1).ToString() + " A" }) { value <<= 1; value |= nes.Controller.IsPressed(str) ? 1 : 0; diff --git a/BizHawk.MultiClient/Input/ControllerBinding.cs b/BizHawk.MultiClient/Input/ControllerBinding.cs index 09321a116a..6ab3fe8cae 100644 --- a/BizHawk.MultiClient/Input/ControllerBinding.cs +++ b/BizHawk.MultiClient/Input/ControllerBinding.cs @@ -51,7 +51,7 @@ namespace BizHawk.MultiClient return; string[] controlbindings = controlString.Split(','); foreach (string control in controlbindings) - bindings[button].Add(control.Trim()); + bindings[button].Add(control.Trim()); } public ControllerDefinition Type @@ -106,13 +106,22 @@ namespace BizHawk.MultiClient public bool IsPressedActually(string button) { - bool sticky = stickyButtons[button]; + try + { + bool sticky = stickyButtons[button]; - foreach (var control in bindings[button]) - if (Input.IsPressed(control)) - return sticky ? false : true; + foreach (var control in bindings[button]) + if (Input.IsPressed(control)) + return sticky ? false : true; - return sticky ? true : false; + return sticky ? true : false; + } + catch + { + int x = 0; + x++; + } + return true; } public float GetFloat(string name) @@ -202,17 +211,20 @@ namespace BizHawk.MultiClient if (type.Name == "NES Controls") { - input.Append(IsPressed("Reset") ? "r" : "."); - input.Append("|"); - input.Append(IsPressed("Right") ? "R" : "."); - input.Append(IsPressed("Left") ? "L" : "."); - input.Append(IsPressed("Down") ? "D" : "."); - input.Append(IsPressed("Up") ? "U" : "."); - input.Append(IsPressed("Start") ? "S" : "."); - input.Append(IsPressed("Select") ? "s" : "."); - input.Append(IsPressed("B") ? "B" : "."); - input.Append(IsPressed("A") ? "A" : "."); - input.Append("|"); + input.Append(IsPressed("Reset") ? "r" : "."); + input.Append("|"); + for (int player = 1; player <= 2; player++) + { + input.Append(IsPressed("P" + player.ToString() + " Right") ? "R" : "."); + input.Append(IsPressed("P" + player.ToString() + " Left") ? "L" : "."); + input.Append(IsPressed("P" + player.ToString() + " Down") ? "D" : "."); + input.Append(IsPressed("P" + player.ToString() + " Up") ? "U" : "."); + input.Append(IsPressed("P" + player.ToString() + " Start") ? "S" : "."); + input.Append(IsPressed("P" + player.ToString() + " Select") ? "s" : "."); + input.Append(IsPressed("P" + player.ToString() + " B") ? "B" : "."); + input.Append(IsPressed("P" + player.ToString() + " A") ? "A" : "."); + input.Append("|"); + } return input.ToString(); } @@ -353,14 +365,24 @@ namespace BizHawk.MultiClient { if (mnemonic.Length < 10) return; //if (mnemonic[1] != '.' && mnemonic[1] != '0') programmaticallyPressedButtons.Add("Reset"); - if (mnemonic[3] != '.') programmaticallyPressedButtons.Add("Right"); - if (mnemonic[4] != '.') programmaticallyPressedButtons.Add("Left"); - if (mnemonic[5] != '.') programmaticallyPressedButtons.Add("Down"); - if (mnemonic[6] != '.') programmaticallyPressedButtons.Add("Up"); - if (mnemonic[7] != '.') programmaticallyPressedButtons.Add("Start"); - if (mnemonic[8] != '.') programmaticallyPressedButtons.Add("Select"); - if (mnemonic[9] != '.') programmaticallyPressedButtons.Add("B"); - if (mnemonic[10] != '.') programmaticallyPressedButtons.Add("A"); + if (mnemonic[3] != '.') programmaticallyPressedButtons.Add("P1 Right"); + if (mnemonic[4] != '.') programmaticallyPressedButtons.Add("P1 Left"); + if (mnemonic[5] != '.') programmaticallyPressedButtons.Add("P1 Down"); + if (mnemonic[6] != '.') programmaticallyPressedButtons.Add("P1 Up"); + if (mnemonic[7] != '.') programmaticallyPressedButtons.Add("P1 Start"); + if (mnemonic[8] != '.') programmaticallyPressedButtons.Add("P1 Select"); + if (mnemonic[9] != '.') programmaticallyPressedButtons.Add("P1 B"); + if (mnemonic[10] != '.') programmaticallyPressedButtons.Add("P1 A"); + + if (mnemonic.Length < 20) return; + if (mnemonic[12] != '.') programmaticallyPressedButtons.Add("P2 Right"); + if (mnemonic[13] != '.') programmaticallyPressedButtons.Add("P2 Left"); + if (mnemonic[14] != '.') programmaticallyPressedButtons.Add("P2 Down"); + if (mnemonic[15] != '.') programmaticallyPressedButtons.Add("P2 Up"); + if (mnemonic[16] != '.') programmaticallyPressedButtons.Add("P2 Start"); + if (mnemonic[17] != '.') programmaticallyPressedButtons.Add("P2 Select"); + if (mnemonic[18] != '.') programmaticallyPressedButtons.Add("P2 B"); + if (mnemonic[19] != '.') programmaticallyPressedButtons.Add("P2 A"); } if (type.Name == "TI83 Controls") diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index 064fb7bfb2..f45a13c20b 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -489,16 +489,16 @@ namespace BizHawk.MultiClient var nesControls = new Controller(NES.NESController); nesControls.BindMulti("Reset", Global.Config.NESReset); - for (int i = 0; i < 1 /*TODO*/; i++) + for (int i = 0; i < 2 /*TODO*/; i++) { - nesControls.BindMulti("Up", Global.Config.NESController[i].Up); - nesControls.BindMulti("Down", Global.Config.NESController[i].Down); - nesControls.BindMulti("Left", Global.Config.NESController[i].Left); - nesControls.BindMulti("Right", Global.Config.NESController[i].Right); - nesControls.BindMulti("A", Global.Config.NESController[i].A); - nesControls.BindMulti("B", Global.Config.NESController[i].B); - nesControls.BindMulti("Select", Global.Config.NESController[i].Select); - nesControls.BindMulti("Start", Global.Config.NESController[i].Start); + nesControls.BindMulti("P" + (i + 1) + " Up", Global.Config.NESController[i].Up); + nesControls.BindMulti("P" + (i + 1) + " Down", Global.Config.NESController[i].Down); + nesControls.BindMulti("P" + (i + 1) + " Left", Global.Config.NESController[i].Left); + nesControls.BindMulti("P" + (i + 1) + " Right", Global.Config.NESController[i].Right); + nesControls.BindMulti("P" + (i + 1) + " A", Global.Config.NESController[i].A); + nesControls.BindMulti("P" + (i + 1) + " B", Global.Config.NESController[i].B); + nesControls.BindMulti("P" + (i + 1) + " Select", Global.Config.NESController[i].Select); + nesControls.BindMulti("P" + (i + 1) + " Start", Global.Config.NESController[i].Start); } Global.NESControls = nesControls;