From dee6a0498082a1f1ec8bc890a8c0f257f3a53b65 Mon Sep 17 00:00:00 2001 From: skidau Date: Thu, 5 Mar 2015 23:06:19 +1100 Subject: [PATCH] Moved the gcpad calibration from construction to runtime --- Source/Core/Core/HW/SI_DeviceGCController.cpp | 42 +++++++------------ 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/Source/Core/Core/HW/SI_DeviceGCController.cpp b/Source/Core/Core/HW/SI_DeviceGCController.cpp index a05e54148f..5fcd50aaa0 100644 --- a/Source/Core/Core/HW/SI_DeviceGCController.cpp +++ b/Source/Core/Core/HW/SI_DeviceGCController.cpp @@ -24,35 +24,8 @@ CSIDevice_GCController::CSIDevice_GCController(SIDevices device, int _iDeviceNum , m_TButtonCombo(0) , 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? 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) @@ -87,6 +60,21 @@ int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength) case CMD_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(&m_Origin); for (int i = 0; i < (int)sizeof(SOrigin); i++) {