diff --git a/BizHawk.MultiClient/Config.cs b/BizHawk.MultiClient/Config.cs index d2fa113d7c..45aac71eb8 100644 --- a/BizHawk.MultiClient/Config.cs +++ b/BizHawk.MultiClient/Config.cs @@ -23,9 +23,16 @@ NESAutoController[2] = new NESControllerTemplate(false); NESAutoController[3] = new NESControllerTemplate(false); - SMSAutoController[0] = new SMSControllerTemplate(true); + SMSAutoController[0] = new SMSControllerTemplate(false); SMSAutoController[1] = new SMSControllerTemplate(false); - + + PCEAutoController[0] = new PCEControllerTemplate(false); + PCEAutoController[1] = new PCEControllerTemplate(false); + PCEAutoController[2] = new PCEControllerTemplate(false); + PCEAutoController[3] = new PCEControllerTemplate(false); + PCEAutoController[4] = new PCEControllerTemplate(false); + + GameBoyAutoController = new NESControllerTemplate(true); } // Directories @@ -404,6 +411,7 @@ // PCEngine Settings public PCEControllerTemplate[] PCEController = new PCEControllerTemplate[5]; + public PCEControllerTemplate[] PCEAutoController = new PCEControllerTemplate[5]; // Genesis Settings public string GenP1Up = "UpArrow, J1 Up"; @@ -417,6 +425,7 @@ //GameBoy Settings public NESControllerTemplate GameBoyController = new NESControllerTemplate(true); + public NESControllerTemplate GameBoyAutoController = new NESControllerTemplate(); //NES settings public string NESReset = "Backspace"; @@ -428,6 +437,7 @@ //GB settings public GBControllerTemplate GBController = new GBControllerTemplate(); + public GBControllerTemplate GBAutoController = new GBControllerTemplate(); } public class SMSControllerTemplate diff --git a/BizHawk.MultiClient/Global.cs b/BizHawk.MultiClient/Global.cs index 17f9614fa2..453bff1cda 100644 --- a/BizHawk.MultiClient/Global.cs +++ b/BizHawk.MultiClient/Global.cs @@ -26,6 +26,9 @@ namespace BizHawk.MultiClient public static Controller AutofireNESControls; public static Controller AutofireSMSControls; + public static Controller AutofirePCEControls; + public static Controller AutofireGBControls; + public static Controller AutofireGenControls; //the movie will be spliced inbetween these if it is present public static CopyControllerAdapter MovieInputSourceAdapter = new CopyControllerAdapter(); diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index e471df912f..1d253cfe02 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -533,6 +533,22 @@ namespace BizHawk.MultiClient } Global.PCEControls = pceControls; + var apceControls = new Controller(PCEngine.PCEngineController); + apceControls.Autofire = true; + for (int i = 0; i < 5; i++) + { + apceControls.BindMulti("P" + (i + 1) + " Up", Global.Config.PCEAutoController[i].Up); + apceControls.BindMulti("P" + (i + 1) + " Down", Global.Config.PCEAutoController[i].Down); + apceControls.BindMulti("P" + (i + 1) + " Left", Global.Config.PCEAutoController[i].Left); + apceControls.BindMulti("P" + (i + 1) + " Right", Global.Config.PCEAutoController[i].Right); + + apceControls.BindMulti("P" + (i + 1) + " B2", Global.Config.PCEAutoController[i].II); + apceControls.BindMulti("P" + (i + 1) + " B1", Global.Config.PCEAutoController[i].I); + apceControls.BindMulti("P" + (i + 1) + " Select", Global.Config.PCEAutoController[i].Select); + apceControls.BindMulti("P" + (i + 1) + " Run", Global.Config.PCEAutoController[i].Run); + } + Global.AutofirePCEControls = apceControls; + var nesControls = new Controller(NES.NESController); for (int i = 0; i < 2 /*TODO*/; i++) @@ -575,6 +591,18 @@ namespace BizHawk.MultiClient gbControls.BindMulti("Start", Global.Config.GBController.Start); Global.GBControls = gbControls; + var agbControls = new Controller(Gameboy.GbController); + agbControls.Autofire = true; + agbControls.BindMulti("Up", Global.Config.GBAutoController.Up); + agbControls.BindMulti("Down", Global.Config.GBAutoController.Down); + agbControls.BindMulti("Left", Global.Config.GBAutoController.Left); + agbControls.BindMulti("Right", Global.Config.GBAutoController.Right); + agbControls.BindMulti("A", Global.Config.GBAutoController.A); + agbControls.BindMulti("B", Global.Config.GBAutoController.B); + agbControls.BindMulti("Select", Global.Config.GBAutoController.Select); + agbControls.BindMulti("Start", Global.Config.GBAutoController.Start); + Global.AutofireGBControls = agbControls; + var genControls = new Controller(Genesis.GenesisController); genControls.BindMulti("P1 Up", Global.Config.GenP1Up); @@ -796,15 +824,19 @@ namespace BizHawk.MultiClient break; case "GG": Global.ActiveController = Global.SMSControls; + Global.AutoFireController = Global.AutofireSMSControls; break; case "PCE": Global.ActiveController = Global.PCEControls; + Global.AutoFireController = Global.AutofirePCEControls; break; case "SGX": Global.ActiveController = Global.PCEControls; + Global.AutoFireController = Global.AutofirePCEControls; break; case "GEN": Global.ActiveController = Global.GenControls; + Global.AutoFireController = Global.AutofireGenControls; break; case "TI83": Global.ActiveController = Global.TI83Controls; diff --git a/BizHawk.MultiClient/config/InputConfig.cs b/BizHawk.MultiClient/config/InputConfig.cs index 7e2864ebe2..452f617254 100644 --- a/BizHawk.MultiClient/config/InputConfig.cs +++ b/BizHawk.MultiClient/config/InputConfig.cs @@ -191,15 +191,32 @@ namespace BizHawk.MultiClient ControllerImage.Image = BizHawk.MultiClient.Properties.Resources.PCEngineController; int jpad = this.ControllComboBox.SelectedIndex; string[] ButtonMappings = new string[PCEControlList.Length]; - ButtonMappings[0] = Global.Config.PCEController[jpad].Up; - ButtonMappings[1] = Global.Config.PCEController[jpad].Down; - ButtonMappings[2] = Global.Config.PCEController[jpad].Left; - ButtonMappings[3] = Global.Config.PCEController[jpad].Right; - ButtonMappings[4] = Global.Config.PCEController[jpad].I; - ButtonMappings[5] = Global.Config.PCEController[jpad].II; - ButtonMappings[6] = Global.Config.PCEController[jpad].Run; - ButtonMappings[7] = Global.Config.PCEController[jpad].Select; - IDX_CONTROLLERENABLED.Checked = Global.Config.PCEController[jpad].Enabled; + + if (jpad < 5) + { + ButtonMappings[0] = Global.Config.PCEController[jpad].Up; + ButtonMappings[1] = Global.Config.PCEController[jpad].Down; + ButtonMappings[2] = Global.Config.PCEController[jpad].Left; + ButtonMappings[3] = Global.Config.PCEController[jpad].Right; + ButtonMappings[4] = Global.Config.PCEController[jpad].I; + ButtonMappings[5] = Global.Config.PCEController[jpad].II; + ButtonMappings[6] = Global.Config.PCEController[jpad].Run; + ButtonMappings[7] = Global.Config.PCEController[jpad].Select; + IDX_CONTROLLERENABLED.Checked = Global.Config.PCEController[jpad].Enabled; + } + else + { + ButtonMappings[0] = Global.Config.PCEAutoController[jpad - 5].Up; + ButtonMappings[1] = Global.Config.PCEAutoController[jpad - 5].Down; + ButtonMappings[2] = Global.Config.PCEAutoController[jpad - 5].Left; + ButtonMappings[3] = Global.Config.PCEAutoController[jpad - 5].Right; + ButtonMappings[4] = Global.Config.PCEAutoController[jpad - 5].I; + ButtonMappings[5] = Global.Config.PCEAutoController[jpad - 5].II; + ButtonMappings[6] = Global.Config.PCEAutoController[jpad - 5].Run; + ButtonMappings[7] = Global.Config.PCEAutoController[jpad - 5].Select; + IDX_CONTROLLERENABLED.Checked = Global.Config.PCEAutoController[jpad - 5].Enabled; + } + Labels.Clear(); TextBoxes.Clear(); for (int i = 0; i < PCEControlList.Length; i++) @@ -222,31 +239,64 @@ namespace BizHawk.MultiClient ButtonsGroupBox.Controls.Clear(); InputWidget TempBox; Label TempLabel; - TempBox = TextBoxes[0] as InputWidget; - Global.Config.PCEController[prev].Up = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Up); - TempBox.Dispose(); - TempBox = TextBoxes[1] as InputWidget; - Global.Config.PCEController[prev].Down = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Down); - TempBox.Dispose(); - TempBox = TextBoxes[2] as InputWidget; - Global.Config.PCEController[prev].Left = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Left); - TempBox.Dispose(); - TempBox = TextBoxes[3] as InputWidget; - Global.Config.PCEController[prev].Right = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Right); - TempBox.Dispose(); - TempBox = TextBoxes[4] as InputWidget; - Global.Config.PCEController[prev].I = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].I); - TempBox.Dispose(); - TempBox = TextBoxes[5] as InputWidget; - Global.Config.PCEController[prev].II = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].II); - TempBox.Dispose(); - TempBox = TextBoxes[6] as InputWidget; - Global.Config.PCEController[prev].Run = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Run); - TempBox.Dispose(); - TempBox = TextBoxes[7] as InputWidget; - Global.Config.PCEController[prev].Select = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Select); - TempBox.Dispose(); - Global.Config.PCEController[prev].Enabled = IDX_CONTROLLERENABLED.Checked; + + if (prev < 5) + { + TempBox = TextBoxes[0] as InputWidget; + Global.Config.PCEController[prev].Up = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Up); + TempBox.Dispose(); + TempBox = TextBoxes[1] as InputWidget; + Global.Config.PCEController[prev].Down = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Down); + TempBox.Dispose(); + TempBox = TextBoxes[2] as InputWidget; + Global.Config.PCEController[prev].Left = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Left); + TempBox.Dispose(); + TempBox = TextBoxes[3] as InputWidget; + Global.Config.PCEController[prev].Right = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Right); + TempBox.Dispose(); + TempBox = TextBoxes[4] as InputWidget; + Global.Config.PCEController[prev].I = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].I); + TempBox.Dispose(); + TempBox = TextBoxes[5] as InputWidget; + Global.Config.PCEController[prev].II = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].II); + TempBox.Dispose(); + TempBox = TextBoxes[6] as InputWidget; + Global.Config.PCEController[prev].Run = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Run); + TempBox.Dispose(); + TempBox = TextBoxes[7] as InputWidget; + Global.Config.PCEController[prev].Select = AppendButtonMapping(TempBox.Text, Global.Config.PCEController[prev].Select); + TempBox.Dispose(); + Global.Config.PCEController[prev].Enabled = IDX_CONTROLLERENABLED.Checked; + } + else + { + TempBox = TextBoxes[0] as InputWidget; + Global.Config.PCEAutoController[prev - 5].Up = AppendButtonMapping(TempBox.Text, Global.Config.PCEAutoController[prev - 5].Up); + TempBox.Dispose(); + TempBox = TextBoxes[1] as InputWidget; + Global.Config.PCEAutoController[prev - 5].Down = AppendButtonMapping(TempBox.Text, Global.Config.PCEAutoController[prev - 5].Down); + TempBox.Dispose(); + TempBox = TextBoxes[2] as InputWidget; + Global.Config.PCEAutoController[prev - 5].Left = AppendButtonMapping(TempBox.Text, Global.Config.PCEAutoController[prev - 5].Left); + TempBox.Dispose(); + TempBox = TextBoxes[3] as InputWidget; + Global.Config.PCEAutoController[prev - 5].Right = AppendButtonMapping(TempBox.Text, Global.Config.PCEAutoController[prev - 5].Right); + TempBox.Dispose(); + TempBox = TextBoxes[4] as InputWidget; + Global.Config.PCEAutoController[prev - 5].I = AppendButtonMapping(TempBox.Text, Global.Config.PCEAutoController[prev - 5].I); + TempBox.Dispose(); + TempBox = TextBoxes[5] as InputWidget; + Global.Config.PCEAutoController[prev - 5].II = AppendButtonMapping(TempBox.Text, Global.Config.PCEAutoController[prev - 5].II); + TempBox.Dispose(); + TempBox = TextBoxes[6] as InputWidget; + Global.Config.PCEAutoController[prev - 5].Run = AppendButtonMapping(TempBox.Text, Global.Config.PCEAutoController[prev - 5].Run); + TempBox.Dispose(); + TempBox = TextBoxes[7] as InputWidget; + Global.Config.PCEAutoController[prev - 5].Select = AppendButtonMapping(TempBox.Text, Global.Config.PCEAutoController[prev - 5].Select); + TempBox.Dispose(); + Global.Config.PCEAutoController[prev - 5].Enabled = IDX_CONTROLLERENABLED.Checked; + } + for (int i = 0; i < PCEControlList.Length; i++) { TempLabel = Labels[i] as Label;