Fix netplay desync when using wii-u adapter. #3797

Merged
merged 1 commit into from Apr 30, 2016

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.
commit 429ae8fb01162ee861caaf46ca2e5c7ea2b80706 @phire phire committed Apr 25, 2016
@@ -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<EBufferCommands>(_pBuffer[3]);
-
- const u8 numPAD = NetPlay_InGamePadToLocalPad(ISIDevice::m_iDeviceNumber);
- if (numPAD < 4)
- {
- if (!GCAdapter::DeviceConnected(numPAD))
- {
- reinterpret_cast<u32*>(_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<u8*>(&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<u8*>(&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);
@@ -14,6 +14,5 @@ class CSIDevice_GCAdapter : public CSIDevice_GCController
CSIDevice_GCAdapter(SIDevices device, int _iDeviceNumber);
GCPadStatus GetPadStatus() override;
- int RunBuffer(u8* _pBuffer, int _iLength) override;
void SendCommand(u32 _Cmd, u8 _Poll) override;
};