Explorar el Código

Fix homebrew input (#528)

* fix homebrew input
emmauss hace 7 años
padre
commit
f1529b1bc2

+ 1 - 1
Ryujinx.HLE/Input/Hid.cs

@@ -39,7 +39,7 @@ namespace Ryujinx.HLE.Input
             PrimaryController.Connect(controllerId);
         }
 
-        private HidControllerButtons UpdateStickButtons(
+        public HidControllerButtons UpdateStickButtons(
             HidJoystickPosition leftStick,
             HidJoystickPosition rightStick)
         {

+ 6 - 0
Ryujinx.HLE/Input/HidNpadController.cs

@@ -81,6 +81,12 @@
             Device.Memory.WriteInt64(controllerOffset + 0x28,
               (Connected ? (uint)HidControllerConnState.ControllerStateConnected : 0) |
               (_currentLayout == HidControllerLayouts.HandheldJoined ? (uint)HidControllerConnState.ControllerStateWired : 0));
+
+            controllerOffset = WriteInput(buttons, leftStick, rightStick, HidControllerLayouts.Main);
+
+            Device.Memory.WriteInt64(controllerOffset + 0x28,
+              (Connected ? (uint)HidControllerConnState.ControllerStateWired : 0) |
+              (uint)HidControllerConnState.ControllerStateWired);
         }
     }
 }

+ 6 - 0
Ryujinx.HLE/Input/HidProController.cs

@@ -39,6 +39,12 @@
             Device.Memory.WriteInt64(controllerOffset + 0x28,
               (Connected ? (uint)HidControllerConnState.ControllerStateConnected : 0) |
               (_wired ? (uint)HidControllerConnState.ControllerStateWired : 0));
+
+            controllerOffset = WriteInput(buttons, leftStick, rightStick, HidControllerLayouts.Main);
+
+            Device.Memory.WriteInt64(controllerOffset + 0x28,
+              (Connected ? (uint)HidControllerConnState.ControllerStateWired : 0) |
+              (uint)HidControllerConnState.ControllerStateWired);
         }
     }
 }

+ 2 - 0
Ryujinx/Ui/GLScreen.cs

@@ -174,6 +174,8 @@ namespace Ryujinx
                 Dy = rightJoystickDy
             };
 
+            currentButton |= _device.Hid.UpdateStickButtons(leftJoystick, rightJoystick);
+
             bool hasTouch = false;
 
             //Get screen touch position from left mouse click