Moved the gcpad calibration from construction to runtime

This commit is contained in:
skidau 2015-03-05 23:06:19 +11:00
parent e96569ff0c
commit dee6a04980

View File

@ -24,35 +24,8 @@ CSIDevice_GCController::CSIDevice_GCController(SIDevices device, int _iDeviceNum
, m_TButtonCombo(0) , m_TButtonCombo(0)
, m_LastButtonCombo(COMBO_NONE) , m_LastButtonCombo(COMBO_NONE)
{ {
GCPadStatus pad_origin;
memset(&m_Origin, 0, sizeof(SOrigin));
memset(&pad_origin, 0, sizeof(GCPadStatus));
pad_origin.button = 0x00;
pad_origin.stickX = 0x80; // center
pad_origin.stickY = 0x80;
pad_origin.substickX = 0x80;
pad_origin.substickY = 0x80;
pad_origin.triggerLeft = 0x1F; // 0-30 is the lower deadzone
pad_origin.triggerRight = 0x1F;
// Dunno if we need to do this, game/lib should set it? // Dunno if we need to do this, game/lib should set it?
m_Mode = 0x03; m_Mode = 0x03;
#if defined(__LIBUSB__) || defined (_WIN32)
if (SI_GCAdapter::IsDetected())
{
SI_GCAdapter::Input(ISIDevice::m_iDeviceNumber, &pad_origin);
}
#endif
m_Origin.uButton = pad_origin.button;
m_Origin.uOriginStickX = pad_origin.stickX;
m_Origin.uOriginStickY = pad_origin.stickY;
m_Origin.uSubStickStickX = pad_origin.substickX;
m_Origin.uSubStickStickY = pad_origin.substickY;
m_Origin.uTrigger_L = pad_origin.triggerLeft;
m_Origin.uTrigger_R = pad_origin.triggerRight;
} }
int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength) int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength)
@ -87,6 +60,21 @@ int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength)
case CMD_ORIGIN: case CMD_ORIGIN:
{ {
INFO_LOG(SERIALINTERFACE, "PAD - Get Origin"); INFO_LOG(SERIALINTERFACE, "PAD - Get Origin");
GCPadStatus pad_origin;
memset(&m_Origin, 0, sizeof(SOrigin));
memset(&pad_origin, 0, sizeof(GCPadStatus));
pad_origin = GetPadStatus();
m_Origin.uButton = pad_origin.button;
m_Origin.uOriginStickX = pad_origin.stickX;
m_Origin.uOriginStickY = pad_origin.stickY;
m_Origin.uSubStickStickX = pad_origin.substickX;
m_Origin.uSubStickStickY = pad_origin.substickY;
m_Origin.uTrigger_L = pad_origin.triggerLeft;
m_Origin.uTrigger_R = pad_origin.triggerRight;
u8* pCalibration = reinterpret_cast<u8*>(&m_Origin); u8* pCalibration = reinterpret_cast<u8*>(&m_Origin);
for (int i = 0; i < (int)sizeof(SOrigin); i++) for (int i = 0; i < (int)sizeof(SOrigin); i++)
{ {