diff --git a/Source/Core/Core/Src/OnFrame.cpp b/Source/Core/Core/Src/OnFrame.cpp index 189855c6b5..6a7b569d41 100644 --- a/Source/Core/Core/Src/OnFrame.cpp +++ b/Source/Core/Core/Src/OnFrame.cpp @@ -246,8 +246,10 @@ void RecordInput(SPADStatus *PadStatus, int controllerID) g_padState.DPadLeft = ((PadStatus->button & PAD_BUTTON_LEFT) != 0); g_padState.DPadRight = ((PadStatus->button & PAD_BUTTON_RIGHT) != 0); - g_padState.L = PadStatus->triggerLeft; - g_padState.R = PadStatus->triggerRight; + g_padState.L = ((PadStatus->button & PAD_TRIGGER_L) != 0); + g_padState.R = ((PadStatus->button & PAD_TRIGGER_R) != 0); + g_padState.TriggerL = PadStatus->triggerLeft; + g_padState.TriggerR = PadStatus->triggerRight; g_padState.AnalogStickX = PadStatus->stickX; g_padState.AnalogStickY = PadStatus->stickY; @@ -413,13 +415,14 @@ void PlayController(SPADStatus *PadStatus, int controllerID) if(g_padState.DPadRight) PadStatus->button |= PAD_BUTTON_RIGHT; - PadStatus->triggerLeft = g_padState.L; - if(PadStatus->triggerLeft > 230) + if(g_padState.L) PadStatus->button |= PAD_TRIGGER_L; - PadStatus->triggerRight = g_padState.R; - if(PadStatus->triggerRight > 230) + if(g_padState.R) PadStatus->button |= PAD_TRIGGER_R; + PadStatus->triggerLeft = g_padState.TriggerL; + PadStatus->triggerRight = g_padState.TriggerR; + PadStatus->stickX = g_padState.AnalogStickX; PadStatus->stickY = g_padState.AnalogStickY; diff --git a/Source/Core/Core/Src/OnFrame.h b/Source/Core/Core/Src/OnFrame.h index 15f9496fa1..e5b8a169f4 100644 --- a/Source/Core/Core/Src/OnFrame.h +++ b/Source/Core/Core/Src/OnFrame.h @@ -40,9 +40,10 @@ struct ControllerState { bool Start:1, A:1, B:1, X:1, Y:1, Z:1; // Binary buttons, 6 bits bool DPadUp:1, DPadDown:1, // Binary D-Pad buttons, 4 bits DPadLeft:1, DPadRight:1; - bool reserved:6; // Reserved bits used for padding, 6 bits + bool L:1, R:1; // Binary triggers, 2 bits + bool reserved:4; // Reserved bits used for padding, 4 bits - u8 L, R; // Triggers, 16 bits + u8 TriggerL, TriggerR; // Triggers, 16 bits u8 AnalogStickX, AnalogStickY; // Main Stick, 16 bits u8 CStickX, CStickY; // Sub-Stick, 16 bits