From 429ae8fb01162ee861caaf46ca2e5c7ea2b80706 Mon Sep 17 00:00:00 2001 From: Scott Mansell Date: Mon, 25 Apr 2016 15:26:31 +1200 Subject: [PATCH] Fix netplay desync when using wii-u adapter. If the game sent a command to a disconnected controller, the wii u adapter code would return a diffrent response. This simply deletes the speclized version of RunBuffer for the wii-u adapter as the only diffrence was the code which detected disconnected controllers and returned a error. --- Source/Core/Core/HW/SI_DeviceGCAdapter.cpp | 80 ---------------------- Source/Core/Core/HW/SI_DeviceGCAdapter.h | 1 - 2 files changed, 81 deletions(-) diff --git a/Source/Core/Core/HW/SI_DeviceGCAdapter.cpp b/Source/Core/Core/HW/SI_DeviceGCAdapter.cpp index 974a8d79b4..718091dca7 100644 --- a/Source/Core/Core/HW/SI_DeviceGCAdapter.cpp +++ b/Source/Core/Core/HW/SI_DeviceGCAdapter.cpp @@ -32,86 +32,6 @@ GCPadStatus CSIDevice_GCAdapter::GetPadStatus() return PadStatus; } -int CSIDevice_GCAdapter::RunBuffer(u8* _pBuffer, int _iLength) -{ - // For debug logging only - ISIDevice::RunBuffer(_pBuffer, _iLength); - - // Read the command - EBufferCommands command = static_cast(_pBuffer[3]); - - const u8 numPAD = NetPlay_InGamePadToLocalPad(ISIDevice::m_iDeviceNumber); - if (numPAD < 4) - { - if (!GCAdapter::DeviceConnected(numPAD)) - { - reinterpret_cast(_pBuffer)[0] = SI_NONE; - return 4; - } - } - - // Handle it - switch (command) - { - case CMD_RESET: - case CMD_ID: - *(u32*)&_pBuffer[0] = SI_GC_CONTROLLER; - break; - - case CMD_DIRECT: - { - INFO_LOG(SERIALINTERFACE, "PAD - Direct (Length: %d)", _iLength); - u32 high, low; - GetData(high, low); - for (int i = 0; i < (_iLength - 1) / 2; i++) - { - _pBuffer[i + 0] = (high >> (i * 8)) & 0xff; - _pBuffer[i + 4] = (low >> (i * 8)) & 0xff; - } - } - break; - - case CMD_ORIGIN: - { - INFO_LOG(SERIALINTERFACE, "PAD - Get Origin"); - - Calibrate(); - - u8* pCalibration = reinterpret_cast(&m_Origin); - for (int i = 0; i < (int)sizeof(SOrigin); i++) - { - _pBuffer[i ^ 3] = *pCalibration++; - } - } - break; - - // Recalibrate (FiRES: i am not 100 percent sure about this) - case CMD_RECALIBRATE: - { - INFO_LOG(SERIALINTERFACE, "PAD - Recalibrate"); - - Calibrate(); - - u8* pCalibration = reinterpret_cast(&m_Origin); - for (int i = 0; i < (int)sizeof(SOrigin); i++) - { - _pBuffer[i ^ 3] = *pCalibration++; - } - } - break; - - // DEFAULT - default: - { - ERROR_LOG(SERIALINTERFACE, "Unknown SI command (0x%x)", command); - PanicAlert("SI: Unknown command (0x%x)", command); - } - break; - } - - return _iLength; -} - void CSIDevice_GCAdapter::SendCommand(u32 _Cmd, u8 _Poll) { UCommand command(_Cmd); diff --git a/Source/Core/Core/HW/SI_DeviceGCAdapter.h b/Source/Core/Core/HW/SI_DeviceGCAdapter.h index 67e1adc348..17d59e8126 100644 --- a/Source/Core/Core/HW/SI_DeviceGCAdapter.h +++ b/Source/Core/Core/HW/SI_DeviceGCAdapter.h @@ -14,6 +14,5 @@ public: CSIDevice_GCAdapter(SIDevices device, int _iDeviceNumber); GCPadStatus GetPadStatus() override; - int RunBuffer(u8* _pBuffer, int _iLength) override; void SendCommand(u32 _Cmd, u8 _Poll) override; };