diff --git a/BizHawk.MultiClient/config/InputConfig.cs b/BizHawk.MultiClient/config/InputConfig.cs index 355767fdd5..6800ac7ebc 100644 --- a/BizHawk.MultiClient/config/InputConfig.cs +++ b/BizHawk.MultiClient/config/InputConfig.cs @@ -21,10 +21,6 @@ namespace BizHawk.MultiClient const string ControllerStr = "Configure Controllers - "; public static string[] GenesisControlList = new string[] { "Up", "Down", "Left", "Right", "A", "B", "C", "Start", }; public static string[] NESControlList = new string[] { "Up", "Down", "Left", "Right", "A", "B", "Select", "Start" }; - public static string[] TI83ControlList = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "ON", - "ENTER", "Up", "Down", "Left", "Right", "+", "-", "Multiply", "Divide", "CLEAR", "^", "-", "(", ")", "TAN", "VARS", - "COS", "PRGM", "STAT", "Matrix", "X", "STO->", "LN", "LOG", "^2", "^-1", "MATH", "ALPHA", "GRAPH", "TRACE", "ZOOM", "WINDOW", - "Y", "2nd", "MODE", "Del", ",", "SIN" }; // TODO: display shift / alpha names too, Also order these like on the calculator public static readonly Dictionary CONTROLS = new Dictionary() { {"Genesis 3-Button", new string[8] { "Up", "Down", "Left", "Right", "A", "B", "C", "Start", } }, @@ -39,6 +35,14 @@ namespace BizHawk.MultiClient "TRACE", "ZOOM", "WINDOW", "Y", "2nd", "MODE", "Del", ",", "SIN" } } }; + + public static readonly string[] TI83CONTROLS = new string[50] { + "_0", "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9", "DOT", "ON", "ENTER", "UP", "DOWN", "LEFT", "RIGHT", + "PLUS", "MINUS", "MULTIPLY", "DIVIDE", "CLEAR", "EXP", "DASH", "PARAOPEN", "PARACLOSE", "TAN", "VARS", "COS", + "PRGM", "STAT", "MATRIX", "X", "STO", "LN", "LOG", "SQUARED", "NEG1", "MATH", "ALPHA", "GRAPH", "TRACE", "ZOOM", + "WINDOW", "Y", "SECOND", "MODE", "DEL", "COMMA", "SIN" + }; + public static readonly Dictionary PADS = new Dictionary() { {"NES", 4}, {"PC Engine / SuperGrafx", 5}, {"SMS / GG / SG-1000", 2}, {"TI-83", 1} @@ -260,280 +264,6 @@ namespace BizHawk.MultiClient } } - private void DoTI83() - { - Label TempLabel; - InputWidget TempTextBox; - this.Text = ControllerStr + "TI-83"; - ControllerImage.Image = BizHawk.MultiClient.Properties.Resources.TI83CalculatorCrop; - int jpad = this.ControllComboBox.SelectedIndex; - string[] ButtonMappings = new string[TI83ControlList.Length]; - ButtonMappings[0] = Global.Config.TI83Controller[jpad]._0; - ButtonMappings[1] = Global.Config.TI83Controller[jpad]._1; - ButtonMappings[2] = Global.Config.TI83Controller[jpad]._2; - ButtonMappings[3] = Global.Config.TI83Controller[jpad]._3; - ButtonMappings[4] = Global.Config.TI83Controller[jpad]._4; - ButtonMappings[5] = Global.Config.TI83Controller[jpad]._5; - ButtonMappings[6] = Global.Config.TI83Controller[jpad]._6; - ButtonMappings[7] = Global.Config.TI83Controller[jpad]._7; - ButtonMappings[8] = Global.Config.TI83Controller[jpad]._8; - ButtonMappings[9] = Global.Config.TI83Controller[jpad]._9; - ButtonMappings[10] = Global.Config.TI83Controller[jpad].DOT; - ButtonMappings[11] = Global.Config.TI83Controller[jpad].ON; - ButtonMappings[12] = Global.Config.TI83Controller[jpad].ENTER; - ButtonMappings[13] = Global.Config.TI83Controller[jpad].UP; - ButtonMappings[14] = Global.Config.TI83Controller[jpad].DOWN; - ButtonMappings[15] = Global.Config.TI83Controller[jpad].LEFT; - ButtonMappings[16] = Global.Config.TI83Controller[jpad].RIGHT; - ButtonMappings[17] = Global.Config.TI83Controller[jpad].PLUS; - ButtonMappings[18] = Global.Config.TI83Controller[jpad].MINUS; - ButtonMappings[19] = Global.Config.TI83Controller[jpad].MULTIPLY; - ButtonMappings[20] = Global.Config.TI83Controller[jpad].DIVIDE; - ButtonMappings[21] = Global.Config.TI83Controller[jpad].CLEAR; - ButtonMappings[22] = Global.Config.TI83Controller[jpad].EXP; - ButtonMappings[23] = Global.Config.TI83Controller[jpad].DASH; - ButtonMappings[24] = Global.Config.TI83Controller[jpad].PARACLOSE; - ButtonMappings[25] = Global.Config.TI83Controller[jpad].PARAOPEN; - ButtonMappings[26] = Global.Config.TI83Controller[jpad].TAN; - ButtonMappings[27] = Global.Config.TI83Controller[jpad].VARS; - ButtonMappings[28] = Global.Config.TI83Controller[jpad].COS; - ButtonMappings[29] = Global.Config.TI83Controller[jpad].PRGM; - ButtonMappings[30] = Global.Config.TI83Controller[jpad].STAT; - ButtonMappings[31] = Global.Config.TI83Controller[jpad].MATRIX; - ButtonMappings[32] = Global.Config.TI83Controller[jpad].X; - ButtonMappings[33] = Global.Config.TI83Controller[jpad].STO; - ButtonMappings[34] = Global.Config.TI83Controller[jpad].LN; - ButtonMappings[35] = Global.Config.TI83Controller[jpad].LOG; - ButtonMappings[36] = Global.Config.TI83Controller[jpad].SQUARED; - ButtonMappings[37] = Global.Config.TI83Controller[jpad].NEG1; - ButtonMappings[38] = Global.Config.TI83Controller[jpad].MATH; - ButtonMappings[39] = Global.Config.TI83Controller[jpad].ALPHA; - ButtonMappings[40] = Global.Config.TI83Controller[jpad].GRAPH; - ButtonMappings[41] = Global.Config.TI83Controller[jpad].TRACE; - ButtonMappings[42] = Global.Config.TI83Controller[jpad].ZOOM; - ButtonMappings[43] = Global.Config.TI83Controller[jpad].WINDOW; - ButtonMappings[44] = Global.Config.TI83Controller[jpad].Y; - ButtonMappings[45] = Global.Config.TI83Controller[jpad].SECOND; - ButtonMappings[46] = Global.Config.TI83Controller[jpad].MODE; - ButtonMappings[47] = Global.Config.TI83Controller[jpad].DEL; - ButtonMappings[48] = Global.Config.TI83Controller[jpad].COMMA; - ButtonMappings[49] = Global.Config.TI83Controller[jpad].SIN; - IDX_CONTROLLERENABLED.Checked = Global.Config.TI83Controller[jpad].Enabled; - Changed = true; - Labels.Clear(); - TextBoxes.Clear(); - - //NOTE: Uses a hard coded 50 buttons (but it isn't likely that a TI-83 will magically get more buttons - for (int i = 0; i < 17; i++) - { - TempLabel = new Label(); - TempLabel.Text = TI83ControlList[i]; - TempLabel.Location = new Point(8, 20 + (i * 24)); - Labels.Add(TempLabel); - TempTextBox = new InputWidget(); - TempTextBox.Location = new Point(48, 20 + (i * 24)); - TextBoxes.Add(TempTextBox); - TempTextBox.SetBindings(ButtonMappings[i]); - ButtonsGroupBox.Controls.Add(TempTextBox); - ButtonsGroupBox.Controls.Add(TempLabel); - } - int c = 0; - for (int i = 17; i < 34; i++) - { - TempLabel = new Label(); - TempLabel.Text = TI83ControlList[i]; - TempLabel.Location = new Point(150, 20 + (c * 24)); - Labels.Add(TempLabel); - TempTextBox = new InputWidget(); - TempTextBox.Location = new Point(190, 20 + (c * 24)); - TextBoxes.Add(TempTextBox); - TempTextBox.SetBindings(ButtonMappings[i]); - ButtonsGroupBox.Controls.Add(TempTextBox); - ButtonsGroupBox.Controls.Add(TempLabel); - c++; - } - c = 0; - for (int i = 34; i < 50; i++) - { - TempLabel = new Label(); - TempLabel.Text = TI83ControlList[i]; - TempLabel.Location = new Point(292, 20 + (c * 24)); - Labels.Add(TempLabel); - TempTextBox = new InputWidget(); - TempTextBox.Location = new Point(348, 20 + (c * 24)); - TextBoxes.Add(TempTextBox); - TempTextBox.SetBindings(ButtonMappings[i]); - ButtonsGroupBox.Controls.Add(TempTextBox); - ButtonsGroupBox.Controls.Add(TempLabel); - c++; - } - Changed = true; - } - - private void UpdateTI83() - { - ButtonsGroupBox.Controls.Clear(); - InputWidget TempBox; - Label TempLabel; - TempBox = TextBoxes[0] as InputWidget; - Global.Config.TI83Controller[0]._0 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._0); - TempBox.Dispose(); - TempBox = TextBoxes[1] as InputWidget; - Global.Config.TI83Controller[0]._1 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._1); - TempBox.Dispose(); - TempBox = TextBoxes[2] as InputWidget; - Global.Config.TI83Controller[0]._2 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._2); - TempBox.Dispose(); - TempBox = TextBoxes[3] as InputWidget; - Global.Config.TI83Controller[0]._3 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._3); - TempBox.Dispose(); - TempBox = TextBoxes[4] as InputWidget; - Global.Config.TI83Controller[0]._4 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._4); - TempBox.Dispose(); - TempBox = TextBoxes[5] as InputWidget; - Global.Config.TI83Controller[0]._5 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._5); - TempBox.Dispose(); - TempBox = TextBoxes[6] as InputWidget; - Global.Config.TI83Controller[0]._6 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._6); - TempBox.Dispose(); - TempBox = TextBoxes[7] as InputWidget; - Global.Config.TI83Controller[0]._7 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._7); - TempBox.Dispose(); - TempBox = TextBoxes[8] as InputWidget; - Global.Config.TI83Controller[0]._8 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._8); - TempBox.Dispose(); - TempBox = TextBoxes[9] as InputWidget; - Global.Config.TI83Controller[0]._9 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0]._9); - TempBox.Dispose(); - TempBox = TextBoxes[10] as InputWidget; - Global.Config.TI83Controller[0].DOT = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].DOT); - TempBox.Dispose(); - TempBox = TextBoxes[11] as InputWidget; - Global.Config.TI83Controller[0].ON = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].ON); - TempBox.Dispose(); - TempBox = TextBoxes[12] as InputWidget; - Global.Config.TI83Controller[0].ENTER = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].ENTER); - TempBox.Dispose(); - TempBox = TextBoxes[13] as InputWidget; - Global.Config.TI83Controller[0].UP = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].UP); - TempBox.Dispose(); - TempBox = TextBoxes[14] as InputWidget; - Global.Config.TI83Controller[0].DOWN = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].DOWN); - TempBox.Dispose(); - TempBox = TextBoxes[15] as InputWidget; - Global.Config.TI83Controller[0].LEFT = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].LEFT); - TempBox.Dispose(); - TempBox = TextBoxes[16] as InputWidget; - Global.Config.TI83Controller[0].RIGHT = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].RIGHT); - TempBox.Dispose(); - TempBox = TextBoxes[17] as InputWidget; - Global.Config.TI83Controller[0].PLUS = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].PLUS); - TempBox.Dispose(); - TempBox = TextBoxes[18] as InputWidget; - Global.Config.TI83Controller[0].MINUS = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].MINUS); - TempBox.Dispose(); - TempBox = TextBoxes[19] as InputWidget; - Global.Config.TI83Controller[0].MULTIPLY = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].MULTIPLY); - TempBox.Dispose(); - TempBox = TextBoxes[20] as InputWidget; - Global.Config.TI83Controller[0].DIVIDE = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].DIVIDE); - TempBox.Dispose(); - TempBox = TextBoxes[21] as InputWidget; - Global.Config.TI83Controller[0].CLEAR = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].CLEAR); - TempBox.Dispose(); - TempBox = TextBoxes[22] as InputWidget; - Global.Config.TI83Controller[0].EXP = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].EXP); - TempBox.Dispose(); - TempBox = TextBoxes[23] as InputWidget; - Global.Config.TI83Controller[0].DASH = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].DASH); - TempBox.Dispose(); - TempBox = TextBoxes[24] as InputWidget; - Global.Config.TI83Controller[0].PARACLOSE = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].PARACLOSE); - TempBox.Dispose(); - TempBox = TextBoxes[25] as InputWidget; - Global.Config.TI83Controller[0].PARAOPEN = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].PARAOPEN); - TempBox.Dispose(); - TempBox = TextBoxes[26] as InputWidget; - Global.Config.TI83Controller[0].TAN = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].TAN); - TempBox.Dispose(); - TempBox = TextBoxes[27] as InputWidget; - Global.Config.TI83Controller[0].VARS = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].VARS); - TempBox.Dispose(); - TempBox = TextBoxes[28] as InputWidget; - Global.Config.TI83Controller[0].COS = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].COS); - TempBox.Dispose(); - TempBox = TextBoxes[29] as InputWidget; - Global.Config.TI83Controller[0].PRGM = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].PRGM); - TempBox.Dispose(); - TempBox = TextBoxes[30] as InputWidget; - Global.Config.TI83Controller[0].STAT = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].STAT); - TempBox.Dispose(); - TempBox = TextBoxes[31] as InputWidget; - Global.Config.TI83Controller[0].MATRIX = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].MATRIX); - TempBox.Dispose(); - TempBox = TextBoxes[32] as InputWidget; - Global.Config.TI83Controller[0].X = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].X); - TempBox.Dispose(); - TempBox = TextBoxes[33] as InputWidget; - Global.Config.TI83Controller[0].STO = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].STO); - TempBox.Dispose(); - TempBox = TextBoxes[34] as InputWidget; - Global.Config.TI83Controller[0].LN = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].LN); - TempBox.Dispose(); - TempBox = TextBoxes[35] as InputWidget; - Global.Config.TI83Controller[0].LOG = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].LOG); - TempBox.Dispose(); - TempBox = TextBoxes[36] as InputWidget; - Global.Config.TI83Controller[0].SQUARED = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].SQUARED); - TempBox.Dispose(); - TempBox = TextBoxes[37] as InputWidget; - Global.Config.TI83Controller[0].NEG1 = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].NEG1); - TempBox.Dispose(); - TempBox = TextBoxes[38] as InputWidget; - Global.Config.TI83Controller[0].MATH = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].MATH); - TempBox.Dispose(); - TempBox = TextBoxes[39] as InputWidget; - Global.Config.TI83Controller[0].ALPHA = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].ALPHA); - TempBox.Dispose(); - TempBox = TextBoxes[40] as InputWidget; - Global.Config.TI83Controller[0].GRAPH = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].GRAPH); - TempBox.Dispose(); - TempBox = TextBoxes[41] as InputWidget; - Global.Config.TI83Controller[0].TRACE = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].TRACE); - TempBox.Dispose(); - TempBox = TextBoxes[42] as InputWidget; - Global.Config.TI83Controller[0].ZOOM = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].ZOOM); - TempBox.Dispose(); - TempBox = TextBoxes[43] as InputWidget; - Global.Config.TI83Controller[0].WINDOW = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].WINDOW); - TempBox.Dispose(); - TempBox = TextBoxes[44] as InputWidget; - Global.Config.TI83Controller[0].Y = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].Y); - TempBox.Dispose(); - TempBox = TextBoxes[45] as InputWidget; - Global.Config.TI83Controller[0].SECOND = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].SECOND); - TempBox.Dispose(); - TempBox = TextBoxes[46] as InputWidget; - Global.Config.TI83Controller[0].MODE = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].MODE); - TempBox.Dispose(); - TempBox = TextBoxes[47] as InputWidget; - Global.Config.TI83Controller[0].DEL = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].DEL); - TempBox.Dispose(); - TempBox = TextBoxes[48] as InputWidget; - Global.Config.TI83Controller[0].COMMA = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].COMMA); - TempBox.Dispose(); - TempBox = TextBoxes[49] as InputWidget; - Global.Config.TI83Controller[0].SIN = AppendButtonMapping(TempBox.Text, Global.Config.TI83Controller[0].SIN); - TempBox.Dispose(); - - for (int i = 0; i < TI83ControlList.Length; i++) - { - TempLabel = Labels[i] as Label; - TempLabel.Dispose(); - } - IDX_CONTROLLERENABLED.Enabled = true; - } - private void DoGameBoy() { Label TempLabel; @@ -662,14 +392,18 @@ namespace BizHawk.MultiClient } Labels.Clear(); TextBoxes.Clear(); + int row = 0; + int col = 0; for (int button = 0; button < CONTROLS[platform].Length; button++) { TempLabel = new Label(); TempLabel.Text = CONTROLS[platform][button]; - TempLabel.Location = new Point(8, 20 + (button * 24)); + int xoffset = (col * 156); + int yoffset = (row * 24); + TempLabel.Location = new Point(8 + xoffset, 20 + yoffset); Labels.Add(TempLabel); TempTextBox = new InputWidget(); - TempTextBox.Location = new Point(48, 20 + (button * 24)); + TempTextBox.Location = new Point(64 + xoffset, 20 + yoffset); TextBoxes.Add(TempTextBox); object field = null; string fieldName = CONTROLS[platform][button]; @@ -703,13 +437,19 @@ namespace BizHawk.MultiClient case "TI-83": { TI83ControllerTemplate obj = (TI83ControllerTemplate)controller[jpad]; - field = obj.GetType().GetField(fieldName).GetValue(obj); + field = obj.GetType().GetField(TI83CONTROLS[button]).GetValue(obj); break; } } TempTextBox.SetBindings((string)field); ButtonsGroupBox.Controls.Add(TempTextBox); ButtonsGroupBox.Controls.Add(TempLabel); + row++; + if (row > 16) + { + row = 0; + col++; + } } Changed = true; } @@ -734,6 +474,9 @@ namespace BizHawk.MultiClient controller = Global.Config.SMSController; autoController = Global.Config.SMSAutoController; break; + case "TI-83": + controller = Global.Config.TI83Controller; + break; default: return; } @@ -754,6 +497,9 @@ namespace BizHawk.MultiClient case "SMS / GG / SG-1000": ((SMSControllerTemplate)mainController[prev]).Enabled = IDX_CONTROLLERENABLED.Checked; break; + case "TI-83": + ((TI83ControllerTemplate)mainController[prev]).Enabled = IDX_CONTROLLERENABLED.Checked; + break; } for (int button = 0; button < CONTROLS[platform].Length; button++) { @@ -793,6 +539,14 @@ namespace BizHawk.MultiClient Global.Config.SmsReset = AppendButtonMapping(TempBox.Text, Global.Config.SmsReset); break; } + case "TI-83": + { + TI83ControllerTemplate obj = (TI83ControllerTemplate)controller[prev]; + FieldInfo buttonField = obj.GetType().GetField(TI83CONTROLS[button]); + field = buttonField.GetValue(obj); + buttonField.SetValue(obj, AppendButtonMapping(TempBox.Text, (string)field)); + break; + } } TempBox.Dispose(); Label TempLabel = Labels[button] as Label; @@ -873,8 +627,8 @@ namespace BizHawk.MultiClient break; case "TI-83": joypads = 1; - if (this.Width < 690) - this.Width = 690; + if (this.Width < 700) + this.Width = 700; if (this.Height < 580) this.Height = 580; break; @@ -915,6 +669,7 @@ namespace BizHawk.MultiClient case "NES": case "PC Engine / SuperGrafx": case "SMS / GG / SG-1000": + case "TI-83": Do(SystemComboBox.SelectedItem.ToString()); break; case "Gameboy": @@ -923,9 +678,6 @@ namespace BizHawk.MultiClient case "Sega Genesis": DoGen(); break; - case "TI-83": - DoTI83(); - break; case "Atari": DoAtari(); break; @@ -940,6 +692,7 @@ namespace BizHawk.MultiClient case "NES": case "PC Engine / SuperGrafx": case "SMS / GG / SG-1000": + case "TI-83": Update(CurSelectController, CurSelectConsole); break; case "Gameboy": @@ -948,9 +701,6 @@ namespace BizHawk.MultiClient case "Sega Genesis": //UpdateGenesis(); break; - case "TI-83": - UpdateTI83(); - break; case "Atari": UpdateAtari(CurSelectController); break;