diff --git a/Source/Core/Core/Movie.cpp b/Source/Core/Core/Movie.cpp index 0fdc5cfcdb..3c9e4fa24d 100644 --- a/Source/Core/Core/Movie.cpp +++ b/Source/Core/Core/Movie.cpp @@ -406,17 +406,28 @@ void ChangePads(bool instantly) int controllers = 0; for (int i = 0; i < MAX_SI_CHANNELS; ++i) - if (SConfig::GetInstance().m_SIDevice[i] == SIDEVICE_GC_CONTROLLER || SConfig::GetInstance().m_SIDevice[i] == SIDEVICE_GC_TARUKONGA) + if (SIDevice_IsGCController(SConfig::GetInstance().m_SIDevice[i])) controllers |= (1 << i); if (instantly && (s_numPads & 0x0F) == controllers) return; for (int i = 0; i < MAX_SI_CHANNELS; ++i) + { + SIDevices device = SIDEVICE_NONE; + if (IsUsingPad(i)) + { + if (SIDevice_IsGCController(SConfig::GetInstance().m_SIDevice[i])) + device = SConfig::GetInstance().m_SIDevice[i]; + else + device = IsUsingBongo(i) ? SIDEVICE_GC_TARUKONGA : SIDEVICE_GC_CONTROLLER; + } + if (instantly) // Changes from savestates need to be instantaneous - SerialInterface::AddDevice(IsUsingPad(i) ? (IsUsingBongo(i) ? SIDEVICE_GC_TARUKONGA : SIDEVICE_GC_CONTROLLER) : SIDEVICE_NONE, i); + SerialInterface::AddDevice(device, i); else - SerialInterface::ChangeDevice(IsUsingPad(i) ? (IsUsingBongo(i) ? SIDEVICE_GC_TARUKONGA : SIDEVICE_GC_CONTROLLER) : SIDEVICE_NONE, i); + SerialInterface::ChangeDevice(device, i); + } } void ChangeWiiPads(bool instantly)