فهرست منبع

Fix homebrew input (#528)

* fix homebrew input
emmauss 7 سال پیش
والد
کامیت
f1529b1bc2
4فایلهای تغییر یافته به همراه15 افزوده شده و 1 حذف شده
  1. 1 1
      Ryujinx.HLE/Input/Hid.cs
  2. 6 0
      Ryujinx.HLE/Input/HidNpadController.cs
  3. 6 0
      Ryujinx.HLE/Input/HidProController.cs
  4. 2 0
      Ryujinx/Ui/GLScreen.cs

+ 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