diff *** Source/Core/Core/Src/ConfigManager.cpp Mon May 7 14:50:10 2012 --- Source/Core/Core/Src/ConfigManager.cpp Fri May 11 11:06:30 2012 *************** *** 228,233 **** --- 228,235 ---- ini.Set("Core", "SlotB", m_EXIDevice[1]); ini.Set("Core", "SerialPort1", m_EXIDevice[2]); ini.Set("Core", "BBA_MAC", m_bba_mac); + // wiimote update frequency + ini.Set("Core", "WiimoteUpdateFrequency", m_LocalCoreStartupParameter.iWiimoteUpdateFrequency); char sidevicenum[16]; for (int i = 0; i < 4; ++i) { *************** *** 362,367 **** --- 366,373 ---- ini.Get("Core", "ProfiledReJIT",&m_LocalCoreStartupParameter.bJITProfiledReJIT, false); ini.Get("Core", "TimeProfiling",&m_LocalCoreStartupParameter.bJITILTimeProfiling, false); ini.Get("Core", "OutputIR", &m_LocalCoreStartupParameter.bJITILOutputIR, false); + // wiimote update frequency + ini.Get("Core", "WiimoteUpdateFrequency", &m_LocalCoreStartupParameter.iWiimoteUpdateFrequency, 150); char sidevicenum[16]; for (int i = 0; i < 4; ++i) { diff *** Source/Core/Core/Src/CoreParameter.h Mon May 7 14:50:10 2012 --- Source/Core/Core/Src/CoreParameter.h Fri May 11 11:05:29 2012 *************** *** 121,126 **** --- 121,129 ---- bool bWii; bool bDisableWiimoteSpeaker; + // wiimote update frequency + int iWiimoteUpdateFrequency; + // Interface settings bool bConfirmStop, bHideCursor, bAutoHideCursor, bUsePanicHandlers; diff *** Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp Mon May 7 14:50:11 2012 --- Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp Fri May 11 11:07:34 2012 *************** *** 498,517 **** // fill the ACL queue (even) quicker than it can be processed by Dolphin, // especially during simultaneous requests involving many (emulated) Wiimotes... // Thus, we only use that interval when the option is enabled. See issue 4608. ! const u64 interval = SystemTimers::GetTicksPerSecond() / (SConfig::GetInstance(). ! m_LocalCoreStartupParameter.bDisableWiimoteSpeaker ? 150 : 200); ! const u64 each_wiimote_interval = interval / m_WiiMotes.size(); const u64 now = CoreTiming::GetTicks(); if (now - m_last_ticks > each_wiimote_interval) { ! static int wiimote_to_update = 0; ! if (m_WiiMotes[wiimote_to_update].IsConnected()) { ! NetPlay_WiimoteUpdate(wiimote_to_update); ! Wiimote::Update(wiimote_to_update); } ! wiimote_to_update = (wiimote_to_update + 1) % m_WiiMotes.size(); m_last_ticks = now; } --- 498,530 ---- // fill the ACL queue (even) quicker than it can be processed by Dolphin, // especially during simultaneous requests involving many (emulated) Wiimotes... // Thus, we only use that interval when the option is enabled. See issue 4608. ! //const u64 interval = SystemTimers::GetTicksPerSecond() / (SConfig::GetInstance(). ! // m_LocalCoreStartupParameter.bDisableWiimoteSpeaker ? 150 : 200); ! // const u64 each_wiimote_interval = interval / m_WiiMotes.size(); const u64 now = CoreTiming::GetTicks(); + // custom wiimote update intervall + const u64 each_wiimote_interval = SystemTimers::GetTicksPerSecond() / SConfig::GetInstance().m_LocalCoreStartupParameter.iWiimoteUpdateFrequency; + if (now - m_last_ticks > each_wiimote_interval) { ! // update all 4 at once to prevent different timing depending on selected wiimotes. ! //static int wiimote_to_update = 0; ! //if (m_WiiMotes[wiimote_to_update].IsConnected()) ! for (int wiimote_to_update = 0; wiimote_to_update < 4; ++wiimote_to_update) { ! if (m_WiiMotes[wiimote_to_update].IsConnected()) ! { ! // no NetPlay please. ! // NetPlay_WiimoteUpdate(wiimote_to_update); ! Wiimote::Update(wiimote_to_update); ! } } ! //wiimote_to_update = (wiimote_to_update + 1) % m_WiiMotes.size(); m_last_ticks = now; }