diff --git a/Source/Core/Core/HW/GCPad.cpp b/Source/Core/Core/HW/GCPad.cpp index e1021af2b9..ca30d25fb8 100644 --- a/Source/Core/Core/HW/GCPad.cpp +++ b/Source/Core/Core/HW/GCPad.cpp @@ -10,7 +10,6 @@ #include "Core/HW/GCPadEmu.h" #include "InputCommon/GCPadStatus.h" #include "InputCommon/InputConfig.h" -#include "InputCommon/ControllerInterface/ControllerInterface.h" namespace Pad { @@ -53,14 +52,6 @@ void GetStatus(u8 pad_num, GCPadStatus* pad_status) memset(pad_status, 0, sizeof(*pad_status)); pad_status->err = PAD_ERR_NONE; - // If we are on the next input cycle, update output and input - static int last_pad_num = 4; - if (pad_num <= last_pad_num) - { - g_controller_interface.UpdateInput(); - } - last_pad_num = pad_num; - // Get input static_cast(s_config.GetController(pad_num))->GetInput(pad_status); } diff --git a/Source/Core/Core/HW/SI.cpp b/Source/Core/Core/HW/SI.cpp index e69cb158fb..813f72e703 100644 --- a/Source/Core/Core/HW/SI.cpp +++ b/Source/Core/Core/HW/SI.cpp @@ -20,6 +20,7 @@ #include "Core/HW/SystemTimers.h" #include "Core/HW/VideoInterface.h" +#include "InputCommon/ControllerInterface/ControllerInterface.h" namespace SerialInterface { @@ -513,6 +514,10 @@ void ChangeDevice(SIDevices device, int channel) void UpdateDevices() { + // Update inputs at the rate of SI + // Typically 120hz but is variable + g_controller_interface.UpdateInput(); + // Update channels and set the status bit if there's new data g_StatusReg.RDST0 = !!g_Channel[0].m_device->GetData(g_Channel[0].m_InHi.Hex, g_Channel[0].m_InLo.Hex); g_StatusReg.RDST1 = !!g_Channel[1].m_device->GetData(g_Channel[1].m_InHi.Hex, g_Channel[1].m_InLo.Hex);