diff --git a/README.md b/README.md index 8353db858..3f5f7d57a 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ https://openal.org/downloads/OpenAL11CoreSDK.zip - R = Right Shoulder Button - ZR = Right Trigger - For more information on how to configure these buttons see [CONFIG.md](CONFIG.md) - - Multiple Players are supported. See [CONFIG.md](CONFIG.md) for more details. + - Multiple Players are partially supported. See [CONFIG.md](CONFIG.md) for more details. - Config File: `Ryujinx.conf` should be present in executable folder. For more information [you can go here](CONFIG.md). diff --git a/Ryujinx/Ryujinx.conf b/Ryujinx/Ryujinx.conf index 1c9b79f0d..e2740f1bc 100644 --- a/Ryujinx/Ryujinx.conf +++ b/Ryujinx/Ryujinx.conf @@ -33,10 +33,14 @@ GamePad_Enable = true #GamePad_X = X Game Pad Configuration (eg. GamePad_0 is the zeroth Controller Configuration) #Handheld Devices can not be mixed with any other players (Player 1, Player 2, etc.) -#This can stay at None unless you specifically want to emulate Handheld controllers. -Handheld_Device = None +#Set this to GamePad_0 if you want to use a Controller +Handheld_Device = Keyboard -Player1_Device = Keyboard +#The Player Devices don't work in all games (eg. Super Mario Odyssey) but do in some (eg. Sonic Mania) +#If you want to use these, set Handheld_Device to none, then configure Player1_Device to be one of the Valid Mappings +#(eg. GamePad_0 if you have a Controller, or Keyboard) +#Then configure any of the other players to be a Valid Mapping aswell if you want to play Co-Op +Player1_Device = None Player2_Device = None Player3_Device = None Player4_Device = None diff --git a/Ryujinx/Ui/GLScreen.cs b/Ryujinx/Ui/GLScreen.cs index f9ead8ce9..948da1463 100644 --- a/Ryujinx/Ui/GLScreen.cs +++ b/Ryujinx/Ui/GLScreen.cs @@ -263,6 +263,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_HANDHELD, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.Handheld < 0) @@ -273,6 +279,12 @@ namespace Ryujinx 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; } } @@ -288,6 +300,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_PLAYER_1, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.Player1 < 0) @@ -298,6 +316,12 @@ namespace Ryujinx 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; } } @@ -313,6 +337,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_PLAYER_2, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.Player2 < 0) @@ -323,6 +353,12 @@ namespace Ryujinx 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; } } @@ -338,6 +374,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_PLAYER_3, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.Player3 < 0) @@ -348,6 +390,12 @@ namespace Ryujinx 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; } } @@ -363,6 +411,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_PLAYER_4, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.Player4 < 0) @@ -373,6 +427,12 @@ namespace Ryujinx 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; } } @@ -388,6 +448,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_PLAYER_5, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.Player5 < 0) @@ -398,6 +464,12 @@ namespace Ryujinx 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; } } @@ -413,6 +485,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_PLAYER_6, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.Player6 < 0) @@ -423,6 +501,12 @@ namespace Ryujinx 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; } } @@ -438,6 +522,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_PLAYER_7, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.Player7 < 0) @@ -448,6 +538,12 @@ namespace Ryujinx 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; } } @@ -463,6 +559,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_PLAYER_8, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.Player8 < 0) @@ -473,6 +575,12 @@ namespace Ryujinx 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; } @@ -487,6 +595,12 @@ namespace Ryujinx CurrentButtonsKeyboard, LeftJoystickKeyboard, RightJoystickKeyboard); + Ns.Hid.SetJoyconButton( + HidControllerId.CONTROLLER_UNKNOWN, + HidControllerLayouts.Main, + CurrentButtonsKeyboard, + LeftJoystickKeyboard, + RightJoystickKeyboard); break; default: if (HidEmulatedDevices.Devices.PlayerUnknown < 0) @@ -497,17 +611,16 @@ namespace Ryujinx 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; } } } - - /*Ns.Hid.SetJoyconButton( - HidControllerId.CONTROLLER_PLAYER_1, - HidControllerLayouts.Joined, - CurrentButton, - LeftJoystick, - RightJoystick);*/ } private new void RenderFrame()