diff options
| author | JMC47 <JMC4789@gmail.com> | 2019-01-31 23:47:09 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-31 23:47:09 -0500 |
| commit | a129d60a570c73b614c02a3145bef42f2d329b64 (patch) | |
| tree | 671a7c1e917c9e84c41f835af832d4ce5f795514 /Source | |
| parent | 7a91c27489e4b70d67e76cbf5b016036a62ec8cb (diff) | |
| parent | cb9896618f42fd149154ab3107d1db639ee52f6f (diff) | |
Merge pull request #7762 from jordan-woyak/gcadapter-calibration
HW: SI_Device_GCAdapter: Restore calibration behavior for real gamecube controllers.
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/HW/SI/SI_DeviceGCAdapter.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/Core/HW/SI/SI_DeviceGCController.cpp | 25 | ||||
| -rw-r--r-- | Source/Core/Core/HW/SI/SI_DeviceGCController.h | 1 |
3 files changed, 25 insertions, 6 deletions
diff --git a/Source/Core/Core/HW/SI/SI_DeviceGCAdapter.cpp b/Source/Core/Core/HW/SI/SI_DeviceGCAdapter.cpp index 3ef843f950..4e18ae39a7 100644 --- a/Source/Core/Core/HW/SI/SI_DeviceGCAdapter.cpp +++ b/Source/Core/Core/HW/SI/SI_DeviceGCAdapter.cpp @@ -37,6 +37,11 @@ GCPadStatus CSIDevice_GCAdapter::GetPadStatus() HandleMoviePadStatus(&pad_status); + // Our GCAdapter code sets PAD_GET_ORIGIN when a new device has been connected. + // Watch for this to calibrate real controllers on connection. + if (pad_status.button & PAD_GET_ORIGIN) + SetOrigin(pad_status); + return pad_status; } diff --git a/Source/Core/Core/HW/SI/SI_DeviceGCController.cpp b/Source/Core/Core/HW/SI/SI_DeviceGCController.cpp index eb5a829721..11494cae46 100644 --- a/Source/Core/Core/HW/SI/SI_DeviceGCController.cpp +++ b/Source/Core/Core/HW/SI/SI_DeviceGCController.cpp @@ -149,6 +149,12 @@ GCPadStatus CSIDevice_GCController::GetPadStatus() } HandleMoviePadStatus(&pad_status); + + // Our GCAdapter code sets PAD_GET_ORIGIN when a new device has been connected. + // Watch for this to calibrate real controllers on connection. + if (pad_status.button & PAD_GET_ORIGIN) + SetOrigin(pad_status); + return pad_status; } @@ -257,16 +263,13 @@ CSIDevice_GCController::HandleButtonCombos(const GCPadStatus& pad_status) { if (m_last_button_combo == COMBO_RESET) { + INFO_LOG(SERIALINTERFACE, "PAD - COMBO_RESET"); ProcessorInterface::ResetButton_Tap(); } else if (m_last_button_combo == COMBO_ORIGIN) { - m_origin.origin_stick_x = pad_status.stickX; - m_origin.origin_stick_y = pad_status.stickY; - m_origin.substick_x = pad_status.substickX; - m_origin.substick_y = pad_status.substickY; - m_origin.trigger_left = pad_status.triggerLeft; - m_origin.trigger_right = pad_status.triggerRight; + INFO_LOG(SERIALINTERFACE, "PAD - COMBO_ORIGIN"); + SetOrigin(pad_status); } m_last_button_combo = COMBO_NONE; @@ -277,6 +280,16 @@ CSIDevice_GCController::HandleButtonCombos(const GCPadStatus& pad_status) return COMBO_NONE; } +void CSIDevice_GCController::SetOrigin(const GCPadStatus& pad_status) +{ + m_origin.origin_stick_x = pad_status.stickX; + m_origin.origin_stick_y = pad_status.stickY; + m_origin.substick_x = pad_status.substickX; + m_origin.substick_y = pad_status.substickY; + m_origin.trigger_left = pad_status.triggerLeft; + m_origin.trigger_right = pad_status.triggerRight; +} + // SendCommand void CSIDevice_GCController::SendCommand(u32 command, u8 poll) { diff --git a/Source/Core/Core/HW/SI/SI_DeviceGCController.h b/Source/Core/Core/HW/SI/SI_DeviceGCController.h index 217880c9cd..218c715e51 100644 --- a/Source/Core/Core/HW/SI/SI_DeviceGCController.h +++ b/Source/Core/Core/HW/SI/SI_DeviceGCController.h @@ -110,6 +110,7 @@ public: protected: void HandleMoviePadStatus(GCPadStatus* pad_status); + void SetOrigin(const GCPadStatus& pad_status); }; // "TaruKonga", the DK Bongo controller |
