Skip to content
Permalink
Browse files

HW: SI_Device_GCAdapter: Restore calibration behavior for real gamecu…

…be controllers.
  • Loading branch information...
jordan-woyak committed Jan 31, 2019
1 parent 419ba92 commit cb9896618f42fd149154ab3107d1db639ee52f6f
@@ -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;
}

@@ -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)
{
@@ -111,6 +111,7 @@ class CSIDevice_GCController : public ISIDevice

protected:
void HandleMoviePadStatus(GCPadStatus* pad_status);
void SetOrigin(const GCPadStatus& pad_status);
};

// "TaruKonga", the DK Bongo controller

0 comments on commit cb98966

Please sign in to comment.
You can’t perform that action at this time.