From 0cc0618e6d4865c814cdcbb215e47d92d7661c87 Mon Sep 17 00:00:00 2001 From: smelenchuk Date: Tue, 15 Feb 2011 23:38:44 +0000 Subject: [PATCH] GC input recording: Record the on/off state and the analogue state of the L/R triggers separately (gets rid of an arbitrary numeric constant of 230 which isn't elsewhere in the code and should solve some issues with Metroid Prime recordings). git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7179 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Core/Src/OnFrame.cpp | 15 +++++++++------ Source/Core/Core/Src/OnFrame.h | 5 +++-- 2 files changed, 12 insertions(+), 8 deletions(-) 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