Address Feedback

This commit is contained in:
John Clemis 2018-08-18 15:40:26 -05:00
parent bf521b50ff
commit e8dccaa7e2
5 changed files with 102 additions and 512 deletions

View file

@ -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<HidControllerId, HidEmulatedDevices.HostDevice> 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);
}
}
}

View file

@ -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<HidControllerId, HostDevice> Devices;
}
}

View file

@ -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<HidControllerId, HidEmulatedDevices.HostDevice>
{
//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<JoyConController> JoyConControllerList = new List<JoyConController>();
//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;
}
}

View file

@ -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<HidControllerId, HidEmulatedDevices.HostDevice> 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()

View file

@ -22,6 +22,8 @@ namespace Ryujinx
Config.Read(Device);
Device.Hid.InitializeJoycons();
Device.Log.Updated += ConsoleLog.PrintLog;
if (args.Length == 1)