Merge pull request #7762 from jordan-woyak/gcadapter-calibration

HW: SI_Device_GCAdapter: Restore calibration behavior for real gamecube controllers.
This commit is contained in:
JMC47 2019-01-31 23:47:09 -05:00 committed by GitHub
commit a129d60a57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 6 deletions

View File

@ -37,6 +37,11 @@ GCPadStatus CSIDevice_GCAdapter::GetPadStatus()
HandleMoviePadStatus(&pad_status); 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; return pad_status;
} }

View File

@ -149,6 +149,12 @@ GCPadStatus CSIDevice_GCController::GetPadStatus()
} }
HandleMoviePadStatus(&pad_status); 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; return pad_status;
} }
@ -257,16 +263,13 @@ CSIDevice_GCController::HandleButtonCombos(const GCPadStatus& pad_status)
{ {
if (m_last_button_combo == COMBO_RESET) if (m_last_button_combo == COMBO_RESET)
{ {
INFO_LOG(SERIALINTERFACE, "PAD - COMBO_RESET");
ProcessorInterface::ResetButton_Tap(); ProcessorInterface::ResetButton_Tap();
} }
else if (m_last_button_combo == COMBO_ORIGIN) else if (m_last_button_combo == COMBO_ORIGIN)
{ {
m_origin.origin_stick_x = pad_status.stickX; INFO_LOG(SERIALINTERFACE, "PAD - COMBO_ORIGIN");
m_origin.origin_stick_y = pad_status.stickY; SetOrigin(pad_status);
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;
} }
m_last_button_combo = COMBO_NONE; m_last_button_combo = COMBO_NONE;
@ -277,6 +280,16 @@ CSIDevice_GCController::HandleButtonCombos(const GCPadStatus& pad_status)
return COMBO_NONE; 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 // SendCommand
void CSIDevice_GCController::SendCommand(u32 command, u8 poll) void CSIDevice_GCController::SendCommand(u32 command, u8 poll)
{ {

View File

@ -110,6 +110,7 @@ public:
protected: protected:
void HandleMoviePadStatus(GCPadStatus* pad_status); void HandleMoviePadStatus(GCPadStatus* pad_status);
void SetOrigin(const GCPadStatus& pad_status);
}; };
// "TaruKonga", the DK Bongo controller // "TaruKonga", the DK Bongo controller