From 89043976855e2578f1099d79e569359e8f3e75f1 Mon Sep 17 00:00:00 2001 From: Otozinclus <58051309+Otozinclus@users.noreply.github.com> Date: Wed, 22 Jan 2025 21:55:53 +0100 Subject: [PATCH 01/16] Change controller LED color This changes the controller LED color. Now I need to add the option to change it in the settings --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 12bfab4bb..2736a3a26 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -86,6 +86,11 @@ namespace Ryujinx.Input.SDL2 Features = GetFeaturesFlag(); _triggerThreshold = 0.0f; + //if (SDL_GameControllerHasLED(_gamepadHandle)) + { + _setControllerLedColor("000000"); + } + // Enable motion tracking if (Features.HasFlag(GamepadFeaturesFlag.Motion)) { @@ -101,6 +106,16 @@ namespace Ryujinx.Input.SDL2 } } + private void _setControllerLedColor(string hex) + { + ulong LEDcolor = Convert.ToUInt64(hex, 16); + byte red = (byte)((LEDcolor >> 16) % 256); + byte green = (byte)((LEDcolor >> 8) % 256); + byte blue = (byte)(LEDcolor % 256); + + SDL_GameControllerSetLED(_gamepadHandle, red, green, blue); + } + private GamepadFeaturesFlag GetFeaturesFlag() { GamepadFeaturesFlag result = GamepadFeaturesFlag.None; From e861204078e85a36c6e59b7cc6e3cc266faf560a Mon Sep 17 00:00:00 2001 From: Evan Husted Date: Wed, 22 Jan 2025 16:04:57 -0600 Subject: [PATCH 02/16] fix formatting & styling --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 2736a3a26..0c95d0b7c 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -88,7 +88,7 @@ namespace Ryujinx.Input.SDL2 //if (SDL_GameControllerHasLED(_gamepadHandle)) { - _setControllerLedColor("000000"); + SetLedColor("000000"); } // Enable motion tracking @@ -106,7 +106,7 @@ namespace Ryujinx.Input.SDL2 } } - private void _setControllerLedColor(string hex) + public void SetLedColor(string hex) { ulong LEDcolor = Convert.ToUInt64(hex, 16); byte red = (byte)((LEDcolor >> 16) % 256); From 6c0526c59fbcab0de6ac21ec5f974d2fecf18f6b Mon Sep 17 00:00:00 2001 From: Otozinclus <58051309+Otozinclus@users.noreply.github.com> Date: Wed, 22 Jan 2025 23:18:41 +0100 Subject: [PATCH 03/16] Check if controller has a controllable LED --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 0c95d0b7c..d3c8e8fda 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -86,7 +86,7 @@ namespace Ryujinx.Input.SDL2 Features = GetFeaturesFlag(); _triggerThreshold = 0.0f; - //if (SDL_GameControllerHasLED(_gamepadHandle)) + if (SDL_GameControllerHasLED(_gamepadHandle) == SDL_bool.SDL_TRUE) { SetLedColor("000000"); } From 861531f431d0c233ab6c303f298107b60343941b Mon Sep 17 00:00:00 2001 From: mika Date: Thu, 23 Jan 2025 00:06:24 +0100 Subject: [PATCH 04/16] just testing if git is working --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index d3c8e8fda..cd887a5f3 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -88,7 +88,7 @@ namespace Ryujinx.Input.SDL2 if (SDL_GameControllerHasLED(_gamepadHandle) == SDL_bool.SDL_TRUE) { - SetLedColor("000000"); + SetLedColor("FFE4B5"); } // Enable motion tracking From c21aa86a7ba1a553de330d7b3681a33cd746e6cf Mon Sep 17 00:00:00 2001 From: mika Date: Thu, 23 Jan 2025 00:09:07 +0100 Subject: [PATCH 05/16] just testing if git works --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index cd887a5f3..1c634229c 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -88,7 +88,7 @@ namespace Ryujinx.Input.SDL2 if (SDL_GameControllerHasLED(_gamepadHandle) == SDL_bool.SDL_TRUE) { - SetLedColor("FFE4B5"); + SetLedColor("FFE3B5"); } // Enable motion tracking From eff11f52a8f0864fe9eca6a54f74c4eadcfa3973 Mon Sep 17 00:00:00 2001 From: Otozinclus <58051309+Otozinclus@users.noreply.github.com> Date: Wed, 22 Jan 2025 21:55:53 +0100 Subject: [PATCH 06/16] Change controller LED color This changes the controller LED color. Now I need to add the option to change it in the settings --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index ed22c3661..16d1e070f 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -87,6 +87,11 @@ namespace Ryujinx.Input.SDL2 Features = GetFeaturesFlag(); _triggerThreshold = 0.0f; + //if (SDL_GameControllerHasLED(_gamepadHandle)) + { + _setControllerLedColor("000000"); + } + // Enable motion tracking if (Features.HasFlag(GamepadFeaturesFlag.Motion)) { @@ -102,6 +107,16 @@ namespace Ryujinx.Input.SDL2 } } + private void _setControllerLedColor(string hex) + { + ulong LEDcolor = Convert.ToUInt64(hex, 16); + byte red = (byte)((LEDcolor >> 16) % 256); + byte green = (byte)((LEDcolor >> 8) % 256); + byte blue = (byte)(LEDcolor % 256); + + SDL_GameControllerSetLED(_gamepadHandle, red, green, blue); + } + private GamepadFeaturesFlag GetFeaturesFlag() { GamepadFeaturesFlag result = GamepadFeaturesFlag.None; From f4c3a2e4873e7c44234be418fd2b745edee1e8e1 Mon Sep 17 00:00:00 2001 From: Evan Husted Date: Wed, 22 Jan 2025 16:04:57 -0600 Subject: [PATCH 07/16] fix formatting & styling --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 16d1e070f..45f626543 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -89,7 +89,7 @@ namespace Ryujinx.Input.SDL2 //if (SDL_GameControllerHasLED(_gamepadHandle)) { - _setControllerLedColor("000000"); + SetLedColor("000000"); } // Enable motion tracking @@ -107,7 +107,7 @@ namespace Ryujinx.Input.SDL2 } } - private void _setControllerLedColor(string hex) + public void SetLedColor(string hex) { ulong LEDcolor = Convert.ToUInt64(hex, 16); byte red = (byte)((LEDcolor >> 16) % 256); From 488b09f97452d1acd9bb95bb65b549760037c0fc Mon Sep 17 00:00:00 2001 From: Otozinclus <58051309+Otozinclus@users.noreply.github.com> Date: Wed, 22 Jan 2025 23:18:41 +0100 Subject: [PATCH 08/16] Check if controller has a controllable LED --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 45f626543..a5b427f59 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -87,7 +87,7 @@ namespace Ryujinx.Input.SDL2 Features = GetFeaturesFlag(); _triggerThreshold = 0.0f; - //if (SDL_GameControllerHasLED(_gamepadHandle)) + if (SDL_GameControllerHasLED(_gamepadHandle) == SDL_bool.SDL_TRUE) { SetLedColor("000000"); } From bdaaddb591219fe6dc622a6a0992e0ab40672742 Mon Sep 17 00:00:00 2001 From: mika Date: Thu, 23 Jan 2025 00:06:24 +0100 Subject: [PATCH 09/16] just testing if git is working --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index a5b427f59..427c859c1 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -89,7 +89,7 @@ namespace Ryujinx.Input.SDL2 if (SDL_GameControllerHasLED(_gamepadHandle) == SDL_bool.SDL_TRUE) { - SetLedColor("000000"); + SetLedColor("FFE4B5"); } // Enable motion tracking From e9455652597e7974ed736c052e27ed2542a52b38 Mon Sep 17 00:00:00 2001 From: mika Date: Thu, 23 Jan 2025 00:09:07 +0100 Subject: [PATCH 10/16] just testing if git works --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 427c859c1..3e712a389 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -89,7 +89,7 @@ namespace Ryujinx.Input.SDL2 if (SDL_GameControllerHasLED(_gamepadHandle) == SDL_bool.SDL_TRUE) { - SetLedColor("FFE4B5"); + SetLedColor("FFE3B5"); } // Enable motion tracking From 2c4236f7332b0469c34704136c111457e4a28106 Mon Sep 17 00:00:00 2001 From: mika Date: Thu, 23 Jan 2025 03:39:33 +0100 Subject: [PATCH 11/16] test --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 3e712a389..039567228 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -87,9 +87,9 @@ namespace Ryujinx.Input.SDL2 Features = GetFeaturesFlag(); _triggerThreshold = 0.0f; - if (SDL_GameControllerHasLED(_gamepadHandle) == SDL_bool.SDL_TRUE) + if (Features.HasFlag(GamepadFeaturesFlag.Led)) { - SetLedColor("FFE3B5"); + SetLedColor(); } // Enable motion tracking @@ -107,12 +107,13 @@ namespace Ryujinx.Input.SDL2 } } - public void SetLedColor(string hex) + public void SetLedColor() { - ulong LEDcolor = Convert.ToUInt64(hex, 16); - byte red = (byte)((LEDcolor >> 16) % 256); - byte green = (byte)((LEDcolor >> 8) % 256); - byte blue = (byte)(LEDcolor % 256); + //IAMTOOTIREDWILLCONTINUETOMORROWSORRY + uint rawColor = 100; + byte red = (byte)(rawColor >> 16); + byte green = (byte)(rawColor >> 8); + byte blue = (byte)(rawColor % 256); SDL_GameControllerSetLED(_gamepadHandle, red, green, blue); } From 740e35872db4abc398640272041e1827a6a24000 Mon Sep 17 00:00:00 2001 From: mika Date: Thu, 23 Jan 2025 03:40:45 +0100 Subject: [PATCH 12/16] test --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 039567228..7cd3d4b4b 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -110,7 +110,7 @@ namespace Ryujinx.Input.SDL2 public void SetLedColor() { //IAMTOOTIREDWILLCONTINUETOMORROWSORRY - uint rawColor = 100; + uint rawColor = 111; byte red = (byte)(rawColor >> 16); byte green = (byte)(rawColor >> 8); byte blue = (byte)(rawColor % 256); From 9aa834c268d67075cb41479441dbccc38e58a542 Mon Sep 17 00:00:00 2001 From: mika Date: Thu, 23 Jan 2025 05:02:11 +0100 Subject: [PATCH 13/16] maybe this works --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index e9f23d80a..82004729f 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -1,6 +1,7 @@ using Ryujinx.Common.Configuration.Hid; using Ryujinx.Common.Configuration.Hid.Controller; using Ryujinx.Common.Logging; +using Ryujinx.HLE.HOS.Services.Hid; using SDL2; using System; using System.Collections.Generic; @@ -87,7 +88,7 @@ namespace Ryujinx.Input.SDL2 Features = GetFeaturesFlag(); _triggerThreshold = 0.0f; - if (Features.HasFlag(GamepadFeaturesFlag.Led)) + //if (Features.HasFlag(GamepadFeaturesFlag.Led)) { SetLedColor(); } @@ -110,7 +111,8 @@ namespace Ryujinx.Input.SDL2 public void SetLedColor() { //IAMTOOTIREDWILLCONTINUETOMORROWSORRY - uint rawColor = 110; + //uint rawColor = 0; + uint rawColor = _configuration.Led.LedColor; byte red = (byte)(rawColor >> 16); byte green = (byte)(rawColor >> 8); byte blue = (byte)(rawColor % 256); From 96e9e3611d9ef25dc6cad2f4202163ec69b36b87 Mon Sep 17 00:00:00 2001 From: mika Date: Thu, 23 Jan 2025 05:29:18 +0100 Subject: [PATCH 14/16] move logic around --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 82004729f..641ccebe9 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -78,6 +78,8 @@ namespace Ryujinx.Input.SDL2 private float _triggerThreshold; + private uint _rawColor; + public SDL2Gamepad(nint gamepadHandle, string driverId) { _gamepadHandle = gamepadHandle; @@ -110,12 +112,11 @@ namespace Ryujinx.Input.SDL2 public void SetLedColor() { - //IAMTOOTIREDWILLCONTINUETOMORROWSORRY //uint rawColor = 0; - uint rawColor = _configuration.Led.LedColor; - byte red = (byte)(rawColor >> 16); - byte green = (byte)(rawColor >> 8); - byte blue = (byte)(rawColor % 256); + //_rawColor = _configuration.Led.LedColor; + byte red = (byte)(_rawColor >> 16); + byte green = (byte)(_rawColor >> 8); + byte blue = (byte)(_rawColor % 256); SDL_GameControllerSetLED(_gamepadHandle, red, green, blue); } @@ -238,6 +239,9 @@ namespace Ryujinx.Input.SDL2 { _configuration = (StandardControllerInputConfig)configuration; + _rawColor = _configuration.Led.LedColor; + SetLedColor(); + _buttonsUserMapping.Clear(); // First update sticks From 898153ae13770c0513cf1c4273389673c5481113 Mon Sep 17 00:00:00 2001 From: Evan Husted Date: Wed, 22 Jan 2025 22:35:09 -0600 Subject: [PATCH 15/16] Update SDL2Gamepad.cs --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 641ccebe9..8f208481b 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -78,8 +78,6 @@ namespace Ryujinx.Input.SDL2 private float _triggerThreshold; - private uint _rawColor; - public SDL2Gamepad(nint gamepadHandle, string driverId) { _gamepadHandle = gamepadHandle; @@ -89,11 +87,6 @@ namespace Ryujinx.Input.SDL2 Id = driverId; Features = GetFeaturesFlag(); _triggerThreshold = 0.0f; - - //if (Features.HasFlag(GamepadFeaturesFlag.Led)) - { - SetLedColor(); - } // Enable motion tracking if (Features.HasFlag(GamepadFeaturesFlag.Motion)) @@ -112,8 +105,9 @@ namespace Ryujinx.Input.SDL2 public void SetLedColor() { - //uint rawColor = 0; - //_rawColor = _configuration.Led.LedColor; + if (!HasConfiguration) return; + + uint _rawColor = _configuration.Led.LedColor; byte red = (byte)(_rawColor >> 16); byte green = (byte)(_rawColor >> 8); byte blue = (byte)(_rawColor % 256); @@ -239,8 +233,8 @@ namespace Ryujinx.Input.SDL2 { _configuration = (StandardControllerInputConfig)configuration; - _rawColor = _configuration.Led.LedColor; - SetLedColor(); + if (Features.HasFlag(GamepadFeaturesFlag.Led)) + SetLedColor(); _buttonsUserMapping.Clear(); From 5276991517a5ab3863db7285488ee92afc369414 Mon Sep 17 00:00:00 2001 From: Evan Husted Date: Wed, 22 Jan 2025 22:37:03 -0600 Subject: [PATCH 16/16] Update SDL2Gamepad.cs --- src/Ryujinx.Input.SDL2/SDL2Gamepad.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs index 8f208481b..48636b99b 100644 --- a/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs +++ b/src/Ryujinx.Input.SDL2/SDL2Gamepad.cs @@ -106,6 +106,7 @@ namespace Ryujinx.Input.SDL2 public void SetLedColor() { if (!HasConfiguration) return; + if (!_configuration.Led.EnableLed) return; uint _rawColor = _configuration.Led.LedColor; byte red = (byte)(_rawColor >> 16);