hid: Implement KEY_RSTICK_* & KEY_LSTICK_* (#466)

* hid: Implement KEY_RSTICK_* & KEY_LSTICK_*

* Fix KEY_RSTICK_UP
This commit is contained in:
Thomas Guillemard 2018-10-27 20:36:49 +02:00 committed by Ac_K
parent 00d4f44bbb
commit 19152def95

View file

@ -114,6 +114,55 @@ namespace Ryujinx.HLE.Input
Device.Memory.WriteInt32(BaseControllerOffset + 0x24, (int)RightColorButtons);
}
private HidControllerButtons UpdateStickButtons(
HidJoystickPosition LeftStick,
HidJoystickPosition RightStick)
{
HidControllerButtons Result = 0;
if (RightStick.DX < 0)
{
Result |= HidControllerButtons.KEY_RSTICK_LEFT;
}
if (RightStick.DX > 0)
{
Result |= HidControllerButtons.KEY_RSTICK_RIGHT;
}
if (RightStick.DY < 0)
{
Result |= HidControllerButtons.KEY_RSTICK_DOWN;
}
if (RightStick.DY > 0)
{
Result |= HidControllerButtons.KEY_RSTICK_UP;
}
if (LeftStick.DX < 0)
{
Result |= HidControllerButtons.KEY_LSTICK_LEFT;
}
if (LeftStick.DX > 0)
{
Result |= HidControllerButtons.KEY_LSTICK_RIGHT;
}
if (LeftStick.DY < 0)
{
Result |= HidControllerButtons.KEY_LSTICK_DOWN;
}
if (LeftStick.DY > 0)
{
Result |= HidControllerButtons.KEY_LSTICK_UP;
}
return Result;
}
public void SetJoyconButton(
HidControllerId ControllerId,
HidControllerLayouts ControllerLayout,
@ -121,6 +170,8 @@ namespace Ryujinx.HLE.Input
HidJoystickPosition LeftStick,
HidJoystickPosition RightStick)
{
Buttons |= UpdateStickButtons(LeftStick, RightStick);
long ControllerOffset = HidPosition + HidControllersOffset;
ControllerOffset += (int)ControllerId * HidControllerSize;