summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorsmelenchuk <smelenchuk@gmail.com>2011-02-15 23:38:44 +0000
committersmelenchuk <smelenchuk@gmail.com>2011-02-15 23:38:44 +0000
commit0cc0618e6d4865c814cdcbb215e47d92d7661c87 (patch)
treede5f3fbc12787dc9d650c3ae7a2818358166e5d3 /Source/Core
parentd19c97dbe178bee6c315933fdf94416fcd4b4d60 (diff)
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
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/Src/OnFrame.cpp15
-rw-r--r--Source/Core/Core/Src/OnFrame.h5
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