diff --git a/Source/Core/Core/HW/SI.cpp b/Source/Core/Core/HW/SI.cpp index 87db67b9e3..6f965c3783 100644 --- a/Source/Core/Core/HW/SI.cpp +++ b/Source/Core/Core/HW/SI.cpp @@ -260,9 +260,25 @@ void Init() g_Channel[i].m_InLo.Hex = 0; if (Movie::IsMovieActive()) - AddDevice(Movie::IsUsingPad(i) ? (Movie::IsUsingBongo(i) ? SIDEVICE_GC_TARUKONGA : SIDEVICE_GC_CONTROLLER) : SIDEVICE_NONE, i); + { + if (Movie::IsUsingPad(i)) + { + SIDevices current = SConfig::GetInstance().m_SIDevice[i]; + // GC pad-compatible devices can be used for both playing and recording + if (SIDevice_IsGCController(current)) + AddDevice(Movie::IsUsingBongo(i) ? SIDEVICE_GC_TARUKONGA : current, i); + else + AddDevice(Movie::IsUsingBongo(i) ? SIDEVICE_GC_TARUKONGA : SIDEVICE_GC_CONTROLLER, i); + } + else + { + AddDevice(SIDEVICE_NONE, i); + } + } else if (!NetPlay::IsNetPlayRunning()) + { AddDevice(SConfig::GetInstance().m_SIDevice[i], i); + } } g_Poll.Hex = 0; diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp index db0acc7fe0..45a9c397be 100644 --- a/Source/Core/DolphinWX/FrameTools.cpp +++ b/Source/Core/DolphinWX/FrameTools.cpp @@ -797,7 +797,7 @@ void CFrame::OnRecord(wxCommandEvent& WXUNUSED (event)) for (int i = 0; i < 4; 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 (g_wiimote_sources[i] != WIIMOTE_SRC_NONE)