From dc02ac08caa84456e8b280a3347ac8907b5249ff Mon Sep 17 00:00:00 2001 From: emmauss Date: Tue, 20 Nov 2018 02:01:36 +0200 Subject: Support other switch controller types (#487) * Make controllers modular, support changing controller type * return readable events * signal hid events * fix style --- Ryujinx.HLE/Input/HidProController.cs | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Ryujinx.HLE/Input/HidProController.cs (limited to 'Ryujinx.HLE/Input/HidProController.cs') diff --git a/Ryujinx.HLE/Input/HidProController.cs b/Ryujinx.HLE/Input/HidProController.cs new file mode 100644 index 00000000..40c79fed --- /dev/null +++ b/Ryujinx.HLE/Input/HidProController.cs @@ -0,0 +1,44 @@ +namespace Ryujinx.HLE.Input +{ + public class HidProController : HidControllerBase + { + bool Wired = false; + + public HidProController(Switch Device) : base(HidControllerType.ProController, Device) + { + Wired = true; + } + + public override void Connect(HidControllerId ControllerId) + { + base.Connect(ControllerId); + + HidControllerColorDesc SingleColorDesc = + HidControllerColorDesc.ColorDesc_ColorsNonexistent; + + HidControllerColorDesc SplitColorDesc = 0; + + NpadColor SingleColorBody = NpadColor.Black; + NpadColor SingleColorButtons = NpadColor.Black; + + Device.Memory.WriteInt32(Offset + 0x08, (int)SingleColorDesc); + Device.Memory.WriteInt32(Offset + 0x0c, (int)SingleColorBody); + Device.Memory.WriteInt32(Offset + 0x10, (int)SingleColorButtons); + Device.Memory.WriteInt32(Offset + 0x14, (int)SplitColorDesc); + + Connected = true; + } + + public override void SendInput( + HidControllerButtons Buttons, + HidJoystickPosition LeftStick, + HidJoystickPosition RightStick) + { + long ControllerOffset = WriteInput(Buttons, LeftStick, RightStick, HidControllerLayouts.Pro_Controller); + + Device.Memory.WriteInt64(ControllerOffset + 0x28, + (Connected ? (uint)HidControllerConnState.Controller_State_Connected : 0) | + (Wired ? (uint)HidControllerConnState.Controller_State_Wired : 0)); + } + } +} -- cgit v1.2.3