From e8dccaa7e2d113ae9810e76ac96f05b0e385ad70 Mon Sep 17 00:00:00 2001 From: John Clemis Date: Sat, 18 Aug 2018 15:40:26 -0500 Subject: [PATCH] Address Feedback --- Ryujinx.HLE/Hid/Hid.cs | 136 ++------- Ryujinx.HLE/Hid/HidEmulatedDevices.cs | 25 +- Ryujinx/Config.cs | 59 ++-- Ryujinx/Ui/GLScreen.cs | 392 ++------------------------ Ryujinx/Ui/Program.cs | 2 + 5 files changed, 102 insertions(+), 512 deletions(-) diff --git a/Ryujinx.HLE/Hid/Hid.cs b/Ryujinx.HLE/Hid/Hid.cs index c0f53086c..460d4f1d1 100644 --- a/Ryujinx.HLE/Hid/Hid.cs +++ b/Ryujinx.HLE/Hid/Hid.cs @@ -1,11 +1,6 @@ -using ChocolArm64.Memory; -using Ryujinx.HLE.Logging; -using Ryujinx.HLE.OsHle; -using Ryujinx.HLE.OsHle.Handles; -using Ryujinx; -using Ryujinx.HLE.OsHle; using Ryujinx.HLE.HOS; using System; +using System.Collections.Generic; namespace Ryujinx.HLE.Input { @@ -66,9 +61,14 @@ namespace Ryujinx.HLE.Input private const int HidEntryCount = 17; + private const JoyConColor BodyColorLeft = JoyConColor.Body_Neon_Red; + private const JoyConColor ButtonColorLeft = JoyConColor.Buttons_Neon_Red; + private const JoyConColor BodyColorRight = JoyConColor.Body_Neon_Blue; + private const JoyConColor ButtonColorRight = JoyConColor.Buttons_Neon_Blue; + private Switch Device; - private long HidPosition; + private readonly long HidPosition; public Hid(Switch Device, long HidPosition) { @@ -76,120 +76,22 @@ namespace Ryujinx.HLE.Input this.HidPosition = HidPosition; Device.Memory.FillWithZeros(HidPosition, Horizon.HidSize); - - Init(); } - private void Init() + public void InitializeJoycons() { - if (HidEmulatedDevices.Devices.Handheld != -2) + foreach (KeyValuePair entry in HidEmulatedDevices.Devices) { - InitializeJoyconPair( - HidControllerId.CONTROLLER_HANDHELD, - HidControllerType.ControllerType_Handheld, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); - } - - if (HidEmulatedDevices.Devices.Player1 != -2) - { - InitializeJoyconPair( - HidControllerId.CONTROLLER_PLAYER_1, - HidControllerType.ControllerType_JoyconPair, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); - } - - if (HidEmulatedDevices.Devices.Player2 != -2) - { - InitializeJoyconPair( - HidControllerId.CONTROLLER_PLAYER_2, - HidControllerType.ControllerType_JoyconPair, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); - } - - if (HidEmulatedDevices.Devices.Player3 != -2) - { - InitializeJoyconPair( - HidControllerId.CONTROLLER_PLAYER_3, - HidControllerType.ControllerType_JoyconPair, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); - } - - if (HidEmulatedDevices.Devices.Player4 != -2) - { - InitializeJoyconPair( - HidControllerId.CONTROLLER_PLAYER_4, - HidControllerType.ControllerType_JoyconPair, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); - } - - if (HidEmulatedDevices.Devices.Player5 != -2) - { - InitializeJoyconPair( - HidControllerId.CONTROLLER_PLAYER_5, - HidControllerType.ControllerType_JoyconPair, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); - } - - if (HidEmulatedDevices.Devices.Player6 != -2) - { - InitializeJoyconPair( - HidControllerId.CONTROLLER_PLAYER_6, - HidControllerType.ControllerType_JoyconPair, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); - } - - if (HidEmulatedDevices.Devices.Player7 != -2) - { - InitializeJoyconPair( - HidControllerId.CONTROLLER_PLAYER_7, - HidControllerType.ControllerType_JoyconPair, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); - } - - if (HidEmulatedDevices.Devices.Player8 != -2) - { - InitializeJoyconPair( - HidControllerId.CONTROLLER_PLAYER_8, - HidControllerType.ControllerType_JoyconPair, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); - } - - if (HidEmulatedDevices.Devices.PlayerUnknown != -2) - { - InitializeJoyconPair( - HidControllerId.CONTROLLER_UNKNOWN, - HidControllerType.ControllerType_JoyconPair, - JoyConColor.Body_Neon_Red, - JoyConColor.Buttons_Neon_Red, - JoyConColor.Body_Neon_Blue, - JoyConColor.Buttons_Neon_Blue); + if (entry.Value != HidEmulatedDevices.HostDevice.None) + { + InitializeJoyconPair( + entry.Key, + (entry.Key == HidControllerId.CONTROLLER_HANDHELD) ? HidControllerType.ControllerType_Handheld : HidControllerType.ControllerType_JoyconPair, + BodyColorLeft, + ButtonColorLeft, + BodyColorRight, + ButtonColorRight); + } } } diff --git a/Ryujinx.HLE/Hid/HidEmulatedDevices.cs b/Ryujinx.HLE/Hid/HidEmulatedDevices.cs index a3e67cf43..594b6bfc8 100644 --- a/Ryujinx.HLE/Hid/HidEmulatedDevices.cs +++ b/Ryujinx.HLE/Hid/HidEmulatedDevices.cs @@ -6,20 +6,21 @@ namespace Ryujinx.HLE.Input { public class HidEmulatedDevices { - public struct EmulatedDevices + public enum HostDevice { - public int Handheld; - public int Player1; - public int Player2; - public int Player3; - public int Player4; - public int Player5; - public int Player6; - public int Player7; - public int Player8; - public int PlayerUnknown; + None, + Keyboard, + GamePad_0, + GamePad_1, + GamePad_2, + GamePad_3, + GamePad_4, + GamePad_5, + GamePad_6, + GamePad_7, + GamePad_8, }; - public static EmulatedDevices Devices; + public static Dictionary Devices; } } diff --git a/Ryujinx/Config.cs b/Ryujinx/Config.cs index 20b8225e3..68c0b4ada 100644 --- a/Ryujinx/Config.cs +++ b/Ryujinx/Config.cs @@ -8,14 +8,15 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; +using System.Text.RegularExpressions; namespace Ryujinx { public static class Config { - public static JoyConKeyboard JoyConKeyboard { get; private set; } - public static JoyConController[] JoyConControllers { get; private set; } - public static bool GamePadEnable { get; private set; } + public static JoyConKeyboard JoyConKeyboard { get; private set; } + public static JoyConController[] JoyConControllers { get; private set; } + public static bool GamePadEnable { get; private set; } public static void Read(Switch Device) { @@ -39,17 +40,20 @@ namespace Ryujinx GamePadEnable = Boolean.Parse(Parser.Value("GamePad_Enable")); - //Device Mappings - HidEmulatedDevices.Devices.Handheld = ToEmulatedDevice(Parser.Value("Handheld_Device")); // -2: None, -1: Keyboard, Everything Else: GamePad Index - HidEmulatedDevices.Devices.Player1 = ToEmulatedDevice(Parser.Value("Player1_Device")); - HidEmulatedDevices.Devices.Player2 = ToEmulatedDevice(Parser.Value("Player2_Device")); - HidEmulatedDevices.Devices.Player3 = ToEmulatedDevice(Parser.Value("Player3_Device")); - HidEmulatedDevices.Devices.Player4 = ToEmulatedDevice(Parser.Value("Player4_Device")); - HidEmulatedDevices.Devices.Player5 = ToEmulatedDevice(Parser.Value("Player5_Device")); - HidEmulatedDevices.Devices.Player6 = ToEmulatedDevice(Parser.Value("Player6_Device")); - HidEmulatedDevices.Devices.Player7 = ToEmulatedDevice(Parser.Value("Player7_Device")); - HidEmulatedDevices.Devices.Player8 = ToEmulatedDevice(Parser.Value("Player8_Device")); - HidEmulatedDevices.Devices.PlayerUnknown = ToEmulatedDevice(Parser.Value("PlayerUnknown_Device")); + HidEmulatedDevices.Devices = new Dictionary + { + //Device Mappings + { HidControllerId.CONTROLLER_HANDHELD, ToHostDevice(Parser.Value("Handheld_Device")) }, + { HidControllerId.CONTROLLER_PLAYER_1, ToHostDevice(Parser.Value("Player1_Device")) }, + { HidControllerId.CONTROLLER_PLAYER_2, ToHostDevice(Parser.Value("Player2_Device")) }, + { HidControllerId.CONTROLLER_PLAYER_3, ToHostDevice(Parser.Value("Player3_Device")) }, + { HidControllerId.CONTROLLER_PLAYER_4, ToHostDevice(Parser.Value("Player4_Device")) }, + { HidControllerId.CONTROLLER_PLAYER_5, ToHostDevice(Parser.Value("Player5_Device")) }, + { HidControllerId.CONTROLLER_PLAYER_6, ToHostDevice(Parser.Value("Player6_Device")) }, + { HidControllerId.CONTROLLER_PLAYER_7, ToHostDevice(Parser.Value("Player7_Device")) }, + { HidControllerId.CONTROLLER_PLAYER_8, ToHostDevice(Parser.Value("Player8_Device")) }, + { HidControllerId.CONTROLLER_UNKNOWN, ToHostDevice(Parser.Value("PlayerUnknown_Device")) } + }; //When the classes are specified on the list, we only //enable the classes that are on the list. @@ -115,7 +119,7 @@ namespace Ryujinx List JoyConControllerList = new List(); //Populate the Controller List - for (int i = 0; i < 255; ++i) + for (int i = 0; i < 9; ++i) { if (Parser.Value(i + "_GamePad_Index") == null) break; @@ -187,18 +191,31 @@ namespace Ryujinx } } - // -2: None, -1: Keyboard, Everything Else: GamePad Index - private static int ToEmulatedDevice(string Key) + private static HidEmulatedDevices.HostDevice ToHostDevice(string Key) { switch (Key.ToUpper()) { - case "NONE": return -2; - case "KEYBOARD": return -1; + case "NONE": return HidEmulatedDevices.HostDevice.None; + case "KEYBOARD": return HidEmulatedDevices.HostDevice.Keyboard; } - if (Key.ToUpper().StartsWith("GAMEPAD_")) return Int32.Parse(Key.Substring(Key.Length - 1)); + if (Key.Split("GAMEPAD_").Length > 0 && Regex.IsMatch(""+Key[Key.Length-1], @"^\d+$")) + { + switch (Key[Key.Length - 1]) + { + case '0': return HidEmulatedDevices.HostDevice.GamePad_0; + case '1': return HidEmulatedDevices.HostDevice.GamePad_1; + case '2': return HidEmulatedDevices.HostDevice.GamePad_2; + case '3': return HidEmulatedDevices.HostDevice.GamePad_3; + case '4': return HidEmulatedDevices.HostDevice.GamePad_4; + case '5': return HidEmulatedDevices.HostDevice.GamePad_5; + case '6': return HidEmulatedDevices.HostDevice.GamePad_6; + case '7': return HidEmulatedDevices.HostDevice.GamePad_7; + case '8': return HidEmulatedDevices.HostDevice.GamePad_8; + } + } - return -2; + return HidEmulatedDevices.HostDevice.None; } } diff --git a/Ryujinx/Ui/GLScreen.cs b/Ryujinx/Ui/GLScreen.cs index 96295659a..b3e676d3b 100644 --- a/Ryujinx/Ui/GLScreen.cs +++ b/Ryujinx/Ui/GLScreen.cs @@ -5,6 +5,7 @@ using Ryujinx.Graphics.Gal; using Ryujinx.HLE; using Ryujinx.HLE.Input; using System; +using System.Collections.Generic; using System.Threading; using Stopwatch = System.Diagnostics.Stopwatch; @@ -251,375 +252,42 @@ namespace Ryujinx Device.Hid.SetTouchPoints(); } - if (HidEmulatedDevices.Devices.Handheld != -2) + foreach (KeyValuePair entry in HidEmulatedDevices.Devices) { - switch (HidEmulatedDevices.Devices.Handheld) + if (entry.Value != HidEmulatedDevices.HostDevice.None) { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_HANDHELD, - HidControllerLayouts.Handheld_Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_HANDHELD, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.Handheld < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.Handheld + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_HANDHELD, - HidControllerLayouts.Handheld_Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Handheld], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Handheld], - RightJoystickGamePad[HidEmulatedDevices.Devices.Handheld]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_HANDHELD, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Handheld], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Handheld], - RightJoystickGamePad[HidEmulatedDevices.Devices.Handheld]); - break; + Device.Hid.SetJoyconButton( + entry.Key, + (entry.Key == HidControllerId.CONTROLLER_HANDHELD) ? HidControllerLayouts.Handheld_Joined : HidControllerLayouts.Joined, + (entry.Value == HidEmulatedDevices.HostDevice.Keyboard) ? CurrentButtonsKeyboard : CurrentButtonsGamePad[GetGamePadIndexFromHostDevice(entry.Value)], + (entry.Value == HidEmulatedDevices.HostDevice.Keyboard) ? LeftJoystickKeyboard : LeftJoystickGamePad [GetGamePadIndexFromHostDevice(entry.Value)], + (entry.Value == HidEmulatedDevices.HostDevice.Keyboard) ? RightJoystickKeyboard : RightJoystickGamePad [GetGamePadIndexFromHostDevice(entry.Value)]); + Device.Hid.SetJoyconButton( + entry.Key, + HidControllerLayouts.Main, + (entry.Value == HidEmulatedDevices.HostDevice.Keyboard) ? CurrentButtonsKeyboard : CurrentButtonsGamePad[GetGamePadIndexFromHostDevice(entry.Value)], + (entry.Value == HidEmulatedDevices.HostDevice.Keyboard) ? LeftJoystickKeyboard : LeftJoystickGamePad [GetGamePadIndexFromHostDevice(entry.Value)], + (entry.Value == HidEmulatedDevices.HostDevice.Keyboard) ? RightJoystickKeyboard : RightJoystickGamePad [GetGamePadIndexFromHostDevice(entry.Value)]); } } - - if (HidEmulatedDevices.Devices.Player1 != -2) + } + + private int GetGamePadIndexFromHostDevice(HidEmulatedDevices.HostDevice hostDevice) + { + switch (hostDevice) { - switch (HidEmulatedDevices.Devices.Player1) - { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_1, - HidControllerLayouts.Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_1, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.Player1 < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.Player1 + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_1, - HidControllerLayouts.Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player1], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player1], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player1]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_1, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player1], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player1], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player1]); - break; - } + case HidEmulatedDevices.HostDevice.GamePad_0: return 0; + case HidEmulatedDevices.HostDevice.GamePad_1: return 1; + case HidEmulatedDevices.HostDevice.GamePad_2: return 2; + case HidEmulatedDevices.HostDevice.GamePad_3: return 3; + case HidEmulatedDevices.HostDevice.GamePad_4: return 4; + case HidEmulatedDevices.HostDevice.GamePad_5: return 5; + case HidEmulatedDevices.HostDevice.GamePad_6: return 6; + case HidEmulatedDevices.HostDevice.GamePad_7: return 7; + case HidEmulatedDevices.HostDevice.GamePad_8: return 8; } - if (HidEmulatedDevices.Devices.Player2 != -2) - { - switch (HidEmulatedDevices.Devices.Player2) - { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_2, - HidControllerLayouts.Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_2, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.Player2 < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.Player2 + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_2, - HidControllerLayouts.Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player2], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player2], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player2]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_2, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player2], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player2], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player2]); - break; - } - } - - if (HidEmulatedDevices.Devices.Player3 != -2) - { - switch (HidEmulatedDevices.Devices.Player3) - { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_3, - HidControllerLayouts.Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_3, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.Player3 < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.Player3 + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_3, - HidControllerLayouts.Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player3], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player3], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player3]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_3, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player3], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player3], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player3]); - break; - } - } - - if (HidEmulatedDevices.Devices.Player4 != -2) - { - switch (HidEmulatedDevices.Devices.Player4) - { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_4, - HidControllerLayouts.Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_4, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.Player4 < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.Player4 + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_4, - HidControllerLayouts.Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player4], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player4], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player4]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_4, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player4], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player4], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player4]); - break; - } - } - - if (HidEmulatedDevices.Devices.Player5 != -2) - { - switch (HidEmulatedDevices.Devices.Player5) - { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_5, - HidControllerLayouts.Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_5, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.Player5 < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.Player5 + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_5, - HidControllerLayouts.Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player5], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player5], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player5]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_5, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player5], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player5], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player5]); - break; - } - } - - if (HidEmulatedDevices.Devices.Player6 != -2) - { - switch (HidEmulatedDevices.Devices.Player6) - { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_6, - HidControllerLayouts.Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_6, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.Player6 < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.Player6 + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_6, - HidControllerLayouts.Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player6], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player6], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player6]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_6, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player6], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player6], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player6]); - break; - } - } - - if (HidEmulatedDevices.Devices.Player7 != -2) - { - switch (HidEmulatedDevices.Devices.Player7) - { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_7, - HidControllerLayouts.Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_7, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.Player7 < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.Player7 + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_7, - HidControllerLayouts.Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player7], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player7], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player7]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_7, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player7], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player7], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player7]); - break; - } - } - - if (HidEmulatedDevices.Devices.Player8 != -2) - { - switch (HidEmulatedDevices.Devices.Player8) - { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_8, - HidControllerLayouts.Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_8, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.Player8 < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.Player8 + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_8, - HidControllerLayouts.Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player8], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player8], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player8]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_8, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.Player8], - LeftJoystickGamePad[HidEmulatedDevices.Devices.Player8], - RightJoystickGamePad[HidEmulatedDevices.Devices.Player8]); - break; - } - - if (HidEmulatedDevices.Devices.PlayerUnknown != -2) - { - switch (HidEmulatedDevices.Devices.PlayerUnknown) - { - case -1: - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_UNKNOWN, - HidControllerLayouts.Joined, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_UNKNOWN, - HidControllerLayouts.Main, - CurrentButtonsKeyboard, - LeftJoystickKeyboard, - RightJoystickKeyboard); - break; - default: - if (HidEmulatedDevices.Devices.PlayerUnknown < 0) - throw new ArgumentException("Unknown Emulated Device Code: " + HidEmulatedDevices.Devices.PlayerUnknown + "."); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_UNKNOWN, - HidControllerLayouts.Joined, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.PlayerUnknown], - LeftJoystickGamePad[HidEmulatedDevices.Devices.PlayerUnknown], - RightJoystickGamePad[HidEmulatedDevices.Devices.PlayerUnknown]); - Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_UNKNOWN, - HidControllerLayouts.Main, - CurrentButtonsGamePad[HidEmulatedDevices.Devices.PlayerUnknown], - LeftJoystickGamePad[HidEmulatedDevices.Devices.PlayerUnknown], - RightJoystickGamePad[HidEmulatedDevices.Devices.PlayerUnknown]); - break; - } - } - } + return -1; } private new void RenderFrame() diff --git a/Ryujinx/Ui/Program.cs b/Ryujinx/Ui/Program.cs index 7acf73a55..07027b901 100644 --- a/Ryujinx/Ui/Program.cs +++ b/Ryujinx/Ui/Program.cs @@ -22,6 +22,8 @@ namespace Ryujinx Config.Read(Device); + Device.Hid.InitializeJoycons(); + Device.Log.Updated += ConsoleLog.PrintLog; if (args.Length == 1)