N64 - hook up input for 4 controllers and autofire, still needs to be hooked to the core, and also needs to be added to controller config dialog

This commit is contained in:
adelikat 2013-05-02 01:54:44 +00:00
parent dbd25f17d4
commit c6634273d7
4 changed files with 214 additions and 4 deletions

View File

@ -54,7 +54,11 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64
Name = "Nintento 64 Controller",
BoolButtons =
{
"DPad R", "DPad L", "DPad D", "DPad U", "Start", "Z", "B", "A", "C Right", "C Left", "C Down", "C Up", "R", "L"
"P1 DPad R", "P1 DPad L", "P1 DPad D", "P1 DPad U", "P1 Start", "P1 Z", "P1 B", "P1 A", "P1 C Right", "P1 C Left", "P1 C Down", "P1 C Up", "P1 R", "P1 L",
"P2 DPad R", "P2 DPad L", "P2 DPad D", "P2 DPad U", "P2 Start", "P2 Z", "P2 B", "P2 A", "P2 C Right", "P2 C Left", "P2 C Down", "P2 C Up", "P2 R", "P2 L",
"P3 DPad R", "P3 DPad L", "P3 DPad D", "P3 DPad U", "P3 Start", "P3 Z", "P3 B", "P3 A", "P3 C Right", "P3 C Left", "P3 C Down", "P3 C Up", "P3 R", "P3 L",
"P4 DPad R", "P4 DPad L", "P4 DPad D", "P4 DPad U", "P4 Start", "P4 Z", "P4 B", "P4 A", "P4 C Right", "P4 C Left", "P4 C Down", "P4 C Up", "P4 R", "P4 L",
"Reset", "Power"
}
};

View File

@ -71,6 +71,16 @@ namespace BizHawk.MultiClient
SNESAutoController[2] = new SNESControllerTemplate(false);
SNESAutoController[3] = new SNESControllerTemplate(false);
N64Controller[0] = new N64ButtonsTemplate(true);
N64Controller[1] = new N64ButtonsTemplate(false);
N64Controller[2] = new N64ButtonsTemplate(false);
N64Controller[3] = new N64ButtonsTemplate(false);
N64AutoController[0] = new N64ButtonsTemplate(false);
N64AutoController[1] = new N64ButtonsTemplate(false);
N64AutoController[2] = new N64ButtonsTemplate(false);
N64AutoController[3] = new N64ButtonsTemplate(false);
N64ConsoleButtons = new N64ConsoleButtonsTemplate(true);
ColecoController[0] = new ColecoVisionControllerTemplate(true);
ColecoController[1] = new ColecoVisionControllerTemplate(false);
ColecoAutoController[0] = new ColecoVisionControllerTemplate(false);
@ -796,6 +806,10 @@ namespace BizHawk.MultiClient
public bool SNESUseRingBuffer = true;
public bool SNESAlwaysDoubleSize = false;
public N64ButtonsTemplate[] N64Controller = new N64ButtonsTemplate[4];
public N64ButtonsTemplate[] N64AutoController = new N64ButtonsTemplate[4];
public N64ConsoleButtonsTemplate N64ConsoleButtons = new N64ConsoleButtonsTemplate();
//TI 83 settings
public TI83ControllerTemplate[] TI83Controller = new TI83ControllerTemplate[1];
@ -1379,6 +1393,63 @@ namespace BizHawk.MultiClient
}
}
public class N64ButtonsTemplate : iControllerConfigObject
{
public string DPadU = "UpArrow, X1 DpadUp, X1 LStickUp";
public string DPadD = "DownArrow, X1 DpadDown, X1 LStickDown";
public string DPadL = "LeftArrow, X1 DpadLeft, X1 LStickLeft";
public string DPadR = "RightArrow, X1 DpadRight, X1 LStickRight";
public string Start = "V, X1 Start";
public string Z = "Z, X1 A";
public string B = "X, X1 X";
public string A = "C";
public string CUp = "NumberPad8, J1 RotationZ-";
public string CDown = "NumberPad2, J1 RoationZ+";
public string CLeft = "NumberPad4, J1 Z-";
public string CRight = "NumberPad6, J1 Z+";
public string L = "D";
public string R = "F";
public bool Enabled = false;
public N64ButtonsTemplate() { }
public N64ButtonsTemplate(bool defaults)
{
if (defaults)
{
SetDefaults();
}
}
public void SetDefaults()
{
Enabled = true;
}
}
public class N64ConsoleButtonsTemplate : iControllerConfigObject
{
public string Power = "";
public string Reset = "";
public bool Enabled = false;
public N64ConsoleButtonsTemplate() { }
public N64ConsoleButtonsTemplate(bool defaults)
{
if (defaults)
{
SetDefaults();
}
}
public void SetDefaults()
{
Enabled = true;
Power = "";
Reset = "";
}
}
public class ColecoVisionControllerTemplate : iControllerConfigObject
{
public string Up = "";

View File

@ -73,6 +73,9 @@ namespace BizHawk.MultiClient
public static Controller Commodore64Controls;
public static AutofireController AutofireCommodore64Controls;
public static Controller N64Controls;
public static AutofireController AutofireN64Controls;
public static readonly Dictionary<string, Dictionary<string, string>> BUTTONS = new Dictionary<string, Dictionary<string, string>>
{
{

View File

@ -1501,6 +1501,137 @@ namespace BizHawk.MultiClient
autofireC64Controls.BindMulti("P2 Button", Global.Config.C64AutoJoysticks[1].Button);
Global.AutofireCommodore64Controls = autofireC64Controls;
var N64Controls = new Controller(N64.N64ControllerDefinition);
N64Controls.BindMulti("Power", Global.Config.N64ConsoleButtons.Power);
N64Controls.BindMulti("Reset", Global.Config.N64ConsoleButtons.Reset);
N64Controls.BindMulti("P1 Up", Global.Config.N64Controller[0].DPadU);
N64Controls.BindMulti("P1 Left", Global.Config.N64Controller[0].DPadD);
N64Controls.BindMulti("P1 Right", Global.Config.N64Controller[0].DPadL);
N64Controls.BindMulti("P1 Down", Global.Config.N64Controller[0].DPadR);
N64Controls.BindMulti("P1 Start", Global.Config.N64Controller[0].Start);
N64Controls.BindMulti("P1 Z", Global.Config.N64Controller[0].Z);
N64Controls.BindMulti("P1 B", Global.Config.N64Controller[0].B);
N64Controls.BindMulti("P1 A", Global.Config.N64Controller[0].A);
N64Controls.BindMulti("P1 C Up", Global.Config.N64Controller[0].CUp);
N64Controls.BindMulti("P1 C Down", Global.Config.N64Controller[0].CDown);
N64Controls.BindMulti("P1 C Left", Global.Config.N64Controller[0].CLeft);
N64Controls.BindMulti("P1 C Right", Global.Config.N64Controller[0].CRight);
N64Controls.BindMulti("P1 L", Global.Config.N64Controller[0].L);
N64Controls.BindMulti("P1 R", Global.Config.N64Controller[0].R);
N64Controls.BindMulti("P2 Up", Global.Config.N64Controller[1].DPadU);
N64Controls.BindMulti("P2 Left", Global.Config.N64Controller[1].DPadD);
N64Controls.BindMulti("P2 Right", Global.Config.N64Controller[1].DPadL);
N64Controls.BindMulti("P2 Down", Global.Config.N64Controller[1].DPadR);
N64Controls.BindMulti("P2 Start", Global.Config.N64Controller[1].Start);
N64Controls.BindMulti("P2 Z", Global.Config.N64Controller[1].Z);
N64Controls.BindMulti("P2 B", Global.Config.N64Controller[1].B);
N64Controls.BindMulti("P2 A", Global.Config.N64Controller[1].A);
N64Controls.BindMulti("P2 C Up", Global.Config.N64Controller[1].CUp);
N64Controls.BindMulti("P2 C Down", Global.Config.N64Controller[1].CDown);
N64Controls.BindMulti("P2 C Left", Global.Config.N64Controller[1].CLeft);
N64Controls.BindMulti("P2 C Right", Global.Config.N64Controller[1].CRight);
N64Controls.BindMulti("P2 L", Global.Config.N64Controller[1].L);
N64Controls.BindMulti("P2 R", Global.Config.N64Controller[1].R);
N64Controls.BindMulti("P3 Up", Global.Config.N64Controller[2].DPadU);
N64Controls.BindMulti("P3 Left", Global.Config.N64Controller[2].DPadD);
N64Controls.BindMulti("P3 Right", Global.Config.N64Controller[2].DPadL);
N64Controls.BindMulti("P3 Down", Global.Config.N64Controller[2].DPadR);
N64Controls.BindMulti("P3 Start", Global.Config.N64Controller[2].Start);
N64Controls.BindMulti("P3 Z", Global.Config.N64Controller[2].Z);
N64Controls.BindMulti("P3 B", Global.Config.N64Controller[2].B);
N64Controls.BindMulti("P3 A", Global.Config.N64Controller[2].A);
N64Controls.BindMulti("P3 C Up", Global.Config.N64Controller[2].CUp);
N64Controls.BindMulti("P3 C Down", Global.Config.N64Controller[2].CDown);
N64Controls.BindMulti("P3 C Left", Global.Config.N64Controller[2].CLeft);
N64Controls.BindMulti("P3 C Right", Global.Config.N64Controller[2].CRight);
N64Controls.BindMulti("P3 L", Global.Config.N64Controller[2].L);
N64Controls.BindMulti("P3 R", Global.Config.N64Controller[2].R);
N64Controls.BindMulti("P4 Up", Global.Config.N64Controller[3].DPadU);
N64Controls.BindMulti("P4 Left", Global.Config.N64Controller[3].DPadD);
N64Controls.BindMulti("P4 Right", Global.Config.N64Controller[3].DPadL);
N64Controls.BindMulti("P4 Down", Global.Config.N64Controller[3].DPadR);
N64Controls.BindMulti("P4 Start", Global.Config.N64Controller[3].Start);
N64Controls.BindMulti("P4 Z", Global.Config.N64Controller[3].Z);
N64Controls.BindMulti("P4 B", Global.Config.N64Controller[3].B);
N64Controls.BindMulti("P4 A", Global.Config.N64Controller[3].A);
N64Controls.BindMulti("P4 C Up", Global.Config.N64Controller[3].CUp);
N64Controls.BindMulti("P4 C Down", Global.Config.N64Controller[3].CDown);
N64Controls.BindMulti("P4 C Left", Global.Config.N64Controller[3].CLeft);
N64Controls.BindMulti("P4 C Right", Global.Config.N64Controller[3].CRight);
N64Controls.BindMulti("P4 L", Global.Config.N64Controller[3].L);
N64Controls.BindMulti("P4 R", Global.Config.N64Controller[3].R);
Global.N64Controls = N64Controls;
var N64AControls = new AutofireController(N64.N64ControllerDefinition);
N64AControls.BindMulti("P1 Up", Global.Config.N64AutoController[0].DPadU);
N64AControls.BindMulti("P1 Left", Global.Config.N64AutoController[0].DPadD);
N64AControls.BindMulti("P1 Right", Global.Config.N64AutoController[0].DPadL);
N64AControls.BindMulti("P1 Down", Global.Config.N64AutoController[0].DPadR);
N64AControls.BindMulti("P1 Start", Global.Config.N64AutoController[0].Start);
N64AControls.BindMulti("P1 Z", Global.Config.N64AutoController[0].Z);
N64AControls.BindMulti("P1 B", Global.Config.N64AutoController[0].B);
N64AControls.BindMulti("P1 A", Global.Config.N64AutoController[0].A);
N64AControls.BindMulti("P1 C Up", Global.Config.N64AutoController[0].CUp);
N64AControls.BindMulti("P1 C Down", Global.Config.N64AutoController[0].CDown);
N64AControls.BindMulti("P1 C Left", Global.Config.N64AutoController[0].CLeft);
N64AControls.BindMulti("P1 C Right", Global.Config.N64AutoController[0].CRight);
N64AControls.BindMulti("P1 L", Global.Config.N64AutoController[0].L);
N64AControls.BindMulti("P1 R", Global.Config.N64AutoController[0].R);
N64AControls.BindMulti("P2 Up", Global.Config.N64AutoController[1].DPadU);
N64AControls.BindMulti("P2 Left", Global.Config.N64AutoController[1].DPadD);
N64AControls.BindMulti("P2 Right", Global.Config.N64AutoController[1].DPadL);
N64AControls.BindMulti("P2 Down", Global.Config.N64AutoController[1].DPadR);
N64AControls.BindMulti("P2 Start", Global.Config.N64AutoController[1].Start);
N64AControls.BindMulti("P2 Z", Global.Config.N64AutoController[1].Z);
N64AControls.BindMulti("P2 B", Global.Config.N64AutoController[1].B);
N64AControls.BindMulti("P2 A", Global.Config.N64AutoController[1].A);
N64AControls.BindMulti("P2 C Up", Global.Config.N64AutoController[1].CUp);
N64AControls.BindMulti("P2 C Down", Global.Config.N64AutoController[1].CDown);
N64AControls.BindMulti("P2 C Left", Global.Config.N64AutoController[1].CLeft);
N64AControls.BindMulti("P2 C Right", Global.Config.N64AutoController[1].CRight);
N64AControls.BindMulti("P2 L", Global.Config.N64AutoController[1].L);
N64AControls.BindMulti("P2 R", Global.Config.N64AutoController[1].R);
N64AControls.BindMulti("P3 Up", Global.Config.N64AutoController[2].DPadU);
N64AControls.BindMulti("P3 Left", Global.Config.N64AutoController[2].DPadD);
N64AControls.BindMulti("P3 Right", Global.Config.N64AutoController[2].DPadL);
N64AControls.BindMulti("P3 Down", Global.Config.N64AutoController[2].DPadR);
N64AControls.BindMulti("P3 Start", Global.Config.N64AutoController[2].Start);
N64AControls.BindMulti("P3 Z", Global.Config.N64AutoController[2].Z);
N64AControls.BindMulti("P3 B", Global.Config.N64AutoController[2].B);
N64AControls.BindMulti("P3 A", Global.Config.N64AutoController[2].A);
N64AControls.BindMulti("P3 C Up", Global.Config.N64AutoController[2].CUp);
N64AControls.BindMulti("P3 C Down", Global.Config.N64AutoController[2].CDown);
N64AControls.BindMulti("P3 C Left", Global.Config.N64AutoController[2].CLeft);
N64AControls.BindMulti("P3 C Right", Global.Config.N64AutoController[2].CRight);
N64AControls.BindMulti("P3 L", Global.Config.N64AutoController[2].L);
N64AControls.BindMulti("P3 R", Global.Config.N64AutoController[2].R);
N64AControls.BindMulti("P4 Up", Global.Config.N64AutoController[3].DPadU);
N64AControls.BindMulti("P4 Left", Global.Config.N64AutoController[3].DPadD);
N64AControls.BindMulti("P4 Right", Global.Config.N64AutoController[3].DPadL);
N64AControls.BindMulti("P4 Down", Global.Config.N64AutoController[3].DPadR);
N64AControls.BindMulti("P4 Start", Global.Config.N64AutoController[3].Start);
N64AControls.BindMulti("P4 Z", Global.Config.N64AutoController[3].Z);
N64AControls.BindMulti("P4 B", Global.Config.N64AutoController[3].B);
N64AControls.BindMulti("P4 A", Global.Config.N64AutoController[3].A);
N64AControls.BindMulti("P4 C Up", Global.Config.N64AutoController[3].CUp);
N64AControls.BindMulti("P4 C Down", Global.Config.N64AutoController[3].CDown);
N64AControls.BindMulti("P4 C Left", Global.Config.N64AutoController[3].CLeft);
N64AControls.BindMulti("P4 C Right", Global.Config.N64AutoController[3].CRight);
N64AControls.BindMulti("P4 L", Global.Config.N64AutoController[3].L);
N64AControls.BindMulti("P4 R", Global.Config.N64AutoController[3].R);
Global.AutofireN64Controls = N64AControls;
}
private static void FormDragEnter(object sender, DragEventArgs e)
@ -1700,8 +1831,6 @@ namespace BizHawk.MultiClient
case "Coleco":
colecoToolStripMenuItem.Visible = true;
break;
default:
break;
}
}
@ -1725,7 +1854,6 @@ namespace BizHawk.MultiClient
void NESSpeicalMenuControls()
{
// ugly and hacky
nESSpeicalToolStripMenuItem.Visible = false;
nESSpeicalToolStripMenuItem.DropDownItems.Clear();
@ -1804,6 +1932,10 @@ namespace BizHawk.MultiClient
Global.ActiveController = Global.ColecoControls;
Global.AutoFireController = Global.AutofireColecoControls;
break;
case "N64":
Global.ActiveController = Global.N64Controls;
Global.AutoFireController = Global.AutofireN64Controls;
break;
case "SAT":
Global.ActiveController = Global.SaturnControls;
Global.AutoFireController = Global.AutofireSaturnControls;