diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 1592e3ec9b..116e663b78 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -42,6 +42,7 @@ void PrefsManager::Init() m_iRefreshRate = REFRESH_DEFAULT; m_bOnlyDedicatedMenuButtons = false; m_bCelShadeModels = false; // Work-In-Progress.. disable by default. + m_fConstantUpdateDeltaSeconds = 0; #ifdef DEBUG m_bShowStats = true; #else @@ -330,6 +331,7 @@ void PrefsManager::ReadPrefsFromFile( CString sIni ) ini.GetValue( "Options", "ScreenHeight", m_fScreenHeight ); #endif ini.GetValue( "Options", "CelShadeModels", m_bCelShadeModels ); + ini.GetValue( "Options", "ConstantUpdateDeltaSeconds", m_fConstantUpdateDeltaSeconds ); ini.GetValue( "Options", "DisplayWidth", m_iDisplayWidth ); ini.GetValue( "Options", "DisplayHeight", m_iDisplayHeight ); ini.GetValue( "Options", "DisplayColorDepth", m_iDisplayColorDepth ); @@ -563,6 +565,7 @@ void PrefsManager::SaveGlobalPrefsToDisk() const ini.SetValue( "Options", "Windowed", m_bWindowed ); ini.SetValue( "Options", "CelShadeModels", m_bCelShadeModels ); + ini.SetValue( "Options", "ConstantUpdateDeltaSeconds", m_fConstantUpdateDeltaSeconds ); ini.SetValue( "Options", "DisplayWidth", m_iDisplayWidth ); ini.SetValue( "Options", "DisplayHeight", m_iDisplayHeight ); ini.SetValue( "Options", "DisplayColorDepth", m_iDisplayColorDepth ); diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 01acd3f1c9..d9fe96c41f 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -202,6 +202,10 @@ public: int m_iMaxHighScoresPerListForPlayer; bool m_bCelShadeModels; + /* experimental: force a specific update rate. This prevents big + * animation jumps on frame skips. */ + float m_fConstantUpdateDeltaSeconds; // 0 to disable + // Number of seconds it takes for a button on the controller to release // after pressed. float m_fPadStickSeconds; diff --git a/stepmania/src/StepMania.cpp b/stepmania/src/StepMania.cpp index b1af85483c..a95f893336 100644 --- a/stepmania/src/StepMania.cpp +++ b/stepmania/src/StepMania.cpp @@ -1496,6 +1496,9 @@ static void GameLoop() * Update */ float fDeltaTime = timer.GetDeltaTime(); + + if( PREFSMAN->m_fConstantUpdateDeltaSeconds > 0 ) + fDeltaTime = PREFSMAN->m_fConstantUpdateDeltaSeconds; CheckSkips( fDeltaTime );