HW: SI_Device_GCAdapter: Restore calibration behavior for real gamecube controllers.

This commit is contained in:
Jordan Woyak 2019-01-31 07:25:23 -06:00
parent 419ba925b7
commit cb9896618f
3 changed files with 25 additions and 6 deletions

View File

@ -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;
}

View File

@ -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)
{

View File

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