From 59a9e4ba59b0daf29972bc6ce4248bc1f50455c4 Mon Sep 17 00:00:00 2001 From: Mauricio Fernandes Date: Sat, 13 Jun 2026 23:28:45 -0300 Subject: [PATCH] Fix stuck down guitar input --- Nintroller/Controllers/Guitar.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Nintroller/Controllers/Guitar.cs b/Nintroller/Controllers/Guitar.cs index ee06a2d..566b06b 100644 --- a/Nintroller/Controllers/Guitar.cs +++ b/Nintroller/Controllers/Guitar.cs @@ -93,6 +93,7 @@ public Guitar(Wiimote wm) CALIB_Whammy_Max = 0; CALIB_Enable_TouchStrip = false; + CALIB_JoyCenterInitialized = false; oldTouchStripValue = GTR_TOUCH_STRIP_None; @@ -122,6 +123,7 @@ public bool Select } public bool CALIB_Enable_TouchStrip; + private bool CALIB_JoyCenterInitialized; public float CALIB_Tilt_Neutral; public float CALIB_Tilt_TiltedREEEE; @@ -247,6 +249,15 @@ public void Update(byte[] data) Joy.rawX = (byte)(data[offset] & 0x3F); Joy.rawY = (byte)(data[offset + 1] & 0x03F); + if (!CALIB_JoyCenterInitialized) + { + // Guitar stick neutral varies enough across hardware that the hardcoded + // classic-controller center can register a false held direction. + Joy.centerX = Joy.rawX; + Joy.centerY = Joy.rawY; + CALIB_JoyCenterInitialized = true; + } + if (Joy.rawX > Joy.maxX) Joy.maxX = Joy.rawX; else if (Joy.rawX < Joy.minX) @@ -600,6 +611,7 @@ public void SetCalibration(Calibrations.CalibrationPreset preset) Joy.Calibrate(Calibrations.Defaults.GuitarDefault.Joy); + CALIB_JoyCenterInitialized = false; //SetCalibration(Calibrations.Defaults.ClassicControllerProDefault); } @@ -661,6 +673,8 @@ public void SetCalibration(string calibrationString) } } } + + CALIB_JoyCenterInitialized = true; } } }