mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
Patch in Iulius' framelimiter, since it has advantages over "Other Audio" in many games (more speed).
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3397 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
da30c24c5e
commit
6f845b8bb0
@ -65,6 +65,8 @@ struct SConfig
|
||||
|
||||
// interface language
|
||||
INTERFACE_LANGUAGE m_InterfaceLanguage;
|
||||
// framelimit choose
|
||||
u32 m_InterfaceFramelimit;
|
||||
// other interface settings
|
||||
bool m_InterfaceToolbar;
|
||||
bool m_InterfaceStatusbar;
|
||||
|
@ -664,20 +664,42 @@ void Callback_VideoCopiedToXFB()
|
||||
static u64 ticks = 0;
|
||||
static u64 idleTicks = 0;
|
||||
|
||||
|
||||
u32 targetfps = (SConfig::GetInstance().m_InterfaceFramelimit)*5;
|
||||
static u64 old_frametime=0;
|
||||
u64 new_frametime;
|
||||
s16 wait_frametime;
|
||||
|
||||
frames++;
|
||||
|
||||
|
||||
if (targetfps>0)
|
||||
{
|
||||
new_frametime=Timer.GetTimeDifference()-old_frametime;
|
||||
|
||||
old_frametime=Timer.GetTimeDifference();
|
||||
|
||||
wait_frametime=((1000/targetfps)-new_frametime);
|
||||
if (targetfps<35)
|
||||
wait_frametime--;
|
||||
if (wait_frametime>0)
|
||||
Common::SleepCurrentThread(wait_frametime*2);
|
||||
}
|
||||
|
||||
if (Timer.GetTimeDifference() >= 1000)
|
||||
{
|
||||
old_frametime=0;
|
||||
|
||||
u64 newTicks = CoreTiming::GetTicks();
|
||||
u64 newIdleTicks = CoreTiming::GetIdleTicks();
|
||||
|
||||
|
||||
s64 diff = (newTicks - ticks) / 1000000;
|
||||
s64 idleDiff = (newIdleTicks - idleTicks) / 1000000;
|
||||
|
||||
|
||||
ticks = newTicks;
|
||||
idleTicks = newIdleTicks;
|
||||
|
||||
float t = (float)(Timer.GetTimeDifference()) / 1000.f;
|
||||
|
||||
char temp[256];
|
||||
sprintf(temp, "FPS:%8.2f - Core: %s | %s - Speed: %i MHz [Real: %i + IdleSkip: %i] / %i MHz",
|
||||
(float)frames / t,
|
||||
@ -709,7 +731,7 @@ void Callback_VideoCopiedToXFB()
|
||||
Timer.Update();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// __________________________________________________________________________________________________
|
||||
// Callback_DSPLog
|
||||
// WARNING - THIS MAY EXECUTED FROM DSP THREAD
|
||||
|
@ -237,7 +237,7 @@ void FakeGPWatchdogCallback(u64 userdata, int cyclesLate)
|
||||
|
||||
void Init()
|
||||
{
|
||||
FAKE_GP_WATCHDOG_PERIOD = GetTicksPerSecond() / 15;
|
||||
FAKE_GP_WATCHDOG_PERIOD = GetTicksPerSecond() / 60;
|
||||
if (Core::GetStartupParameter().bWii)
|
||||
{
|
||||
CPU_CORE_CLOCK = 729000000u;
|
||||
|
@ -45,6 +45,7 @@ EVT_RADIOBOX(ID_INTERFACE_THEME, CConfigMain::CoreSettingsChanged)
|
||||
EVT_CHECKBOX(ID_INTERFACE_WIIMOTE_LEDS, CConfigMain::CoreSettingsChanged)
|
||||
EVT_CHECKBOX(ID_INTERFACE_WIIMOTE_SPEAKERS, CConfigMain::CoreSettingsChanged)
|
||||
EVT_CHOICE(ID_INTERFACE_LANG, CConfigMain::CoreSettingsChanged)
|
||||
EVT_CHOICE(ID_INTERFACE_FRAMELIMIT, CConfigMain::CoreSettingsChanged)
|
||||
|
||||
EVT_CHECKBOX(ID_ALLWAYS_HLEBIOS, CConfigMain::CoreSettingsChanged)
|
||||
EVT_CHECKBOX(ID_USEDYNAREC, CConfigMain::CoreSettingsChanged)
|
||||
@ -172,6 +173,20 @@ void CConfigMain::CreateGUIControls()
|
||||
arrayStringFor_WiiSystemLang.Add(wxT("Korean"));
|
||||
// GUI
|
||||
arrayStringFor_InterfaceLang = arrayStringFor_GCSystemLang;
|
||||
// Framelimit
|
||||
arrayStringFor_Framelimit.Add(wxT("off"));
|
||||
arrayStringFor_Framelimit.Add(wxT("5"));
|
||||
arrayStringFor_Framelimit.Add(wxT("10"));
|
||||
arrayStringFor_Framelimit.Add(wxT("15"));
|
||||
arrayStringFor_Framelimit.Add(wxT("20"));
|
||||
arrayStringFor_Framelimit.Add(wxT("25"));
|
||||
arrayStringFor_Framelimit.Add(wxT("30"));
|
||||
arrayStringFor_Framelimit.Add(wxT("35"));
|
||||
arrayStringFor_Framelimit.Add(wxT("40"));
|
||||
arrayStringFor_Framelimit.Add(wxT("45"));
|
||||
arrayStringFor_Framelimit.Add(wxT("50"));
|
||||
arrayStringFor_Framelimit.Add(wxT("55"));
|
||||
arrayStringFor_Framelimit.Add(wxT("60"));
|
||||
|
||||
// Create the notebook and pages
|
||||
Notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize);
|
||||
@ -241,6 +256,11 @@ void CConfigMain::CreateGUIControls()
|
||||
// need redesign
|
||||
InterfaceLang->SetSelection(SConfig::GetInstance().m_InterfaceLanguage);
|
||||
|
||||
// Choose Framelimit
|
||||
wxStaticText *InterfaceFramelimitText = new wxStaticText(GeneralPage, ID_INTERFACE_FRAMELIMIT_TEXT, wxT("Framelimit (experimental):"), wxDefaultPosition, wxDefaultSize);
|
||||
InterfaceFramelimit = new wxChoice(GeneralPage, ID_INTERFACE_FRAMELIMIT, wxDefaultPosition, wxDefaultSize, arrayStringFor_Framelimit, 0, wxDefaultValidator);
|
||||
InterfaceFramelimit->SetSelection(SConfig::GetInstance().m_InterfaceFramelimit);
|
||||
|
||||
// Themes
|
||||
wxArrayString ThemeChoices;
|
||||
ThemeChoices.Add(wxT("Boomy"));
|
||||
@ -311,6 +331,10 @@ void CConfigMain::CreateGUIControls()
|
||||
sInterfaceLanguage->Add(InterfaceLangText, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
||||
sInterfaceLanguage->Add(InterfaceLang, 0, wxEXPAND | wxALL, 5);
|
||||
sbInterface->Add(sInterfaceLanguage, 0, wxEXPAND | wxALL, 5);
|
||||
wxBoxSizer *sInterfaceFramelimit = new wxBoxSizer(wxHORIZONTAL);
|
||||
sInterfaceFramelimit->Add(InterfaceFramelimitText, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5);
|
||||
sInterfaceFramelimit->Add(InterfaceFramelimit, 0, wxEXPAND | wxALL, 5);
|
||||
sbInterface->Add(sInterfaceFramelimit, 0, wxEXPAND | wxALL, 5);
|
||||
|
||||
// Populate the entire page
|
||||
sGeneralPage = new wxBoxSizer(wxVERTICAL);
|
||||
@ -631,6 +655,10 @@ void CConfigMain::CoreSettingsChanged(wxCommandEvent& event)
|
||||
SConfig::GetInstance().m_InterfaceLanguage = (INTERFACE_LANGUAGE)InterfaceLang->GetSelection();
|
||||
bRefreshList = true;
|
||||
break;
|
||||
case ID_INTERFACE_FRAMELIMIT:
|
||||
SConfig::GetInstance().m_InterfaceFramelimit = (u32)InterfaceFramelimit->GetSelection();
|
||||
bRefreshList = true;
|
||||
break;
|
||||
|
||||
case ID_ALLWAYS_HLEBIOS: // Core
|
||||
SConfig::GetInstance().m_LocalCoreStartupParameter.bHLEBios = AlwaysUseHLEBIOS->IsChecked();
|
||||
|
@ -56,6 +56,9 @@ class CConfigMain
|
||||
wxArrayString arrayStringFor_InterfaceLang;
|
||||
wxChoice* InterfaceLang;
|
||||
|
||||
wxArrayString arrayStringFor_Framelimit;
|
||||
wxChoice* InterfaceFramelimit;
|
||||
|
||||
wxRadioBox* Theme;
|
||||
|
||||
wxBoxSizer* sCore;
|
||||
@ -226,6 +229,7 @@ class CConfigMain
|
||||
ID_INTERFACE_WIIMOTE_TEXT, ID_INTERFACE_WIIMOTE_LEDS, ID_INTERFACE_WIIMOTE_SPEAKERS,
|
||||
ID_INTERFACE_LANG_TEXT, ID_INTERFACE_LANG,
|
||||
ID_INTERFACE_THEME,
|
||||
ID_INTERFACE_FRAMELIMIT_TEXT, ID_INTERFACE_FRAMELIMIT,
|
||||
|
||||
ID_GC_SRAM_LNG_TEXT,
|
||||
ID_GC_SRAM_LNG,
|
||||
|
Loading…
Reference in New Issue
Block a user