Support other switch controller types (#487)
* Make controllers modular, support changing controller type * return readable events * signal hid events * fix style
This commit is contained in:
parent
0c36835f6d
commit
dc02ac08ca
24 changed files with 574 additions and 409 deletions
44
Ryujinx.HLE/Input/HidProController.cs
Normal file
44
Ryujinx.HLE/Input/HidProController.cs
Normal file
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue