diff --git a/src/common/RewindManager.cxx b/src/common/RewindManager.cxx index 16468d17b..f6d6d0b62 100644 --- a/src/common/RewindManager.cxx +++ b/src/common/RewindManager.cxx @@ -214,9 +214,14 @@ uInt32 RewindManager::unwindState(uInt32 numStates) void RewindManager::compressStates() { double expectedCycles = myInterval * myFactor * (1 + myFactor); - double maxError = 1; + double maxError = 1.5; uInt32 idx = myStateList.size() - 2; + //uInt32 removeIdx = 0; + // in case maxError is <= 1.5 remove first state by default: Common::LinkedObjectPool::const_iter removeIter = myStateList.first(); + if(myUncompressed < mySize) + // if compression is enabled, the first but one state is removed by default: + removeIter++; //cerr << "idx: " << idx << endl; // iterate from last but one to first but one @@ -236,21 +241,13 @@ void RewindManager::compressStates() { maxError = error; removeIter = it; + //removeIdx = idx; } } --idx; } - if (maxError < 1) - { - // the horizon is getting too big (can happen after changing settings) - myStateList.remove(1); // remove oldest but one -//cerr << "remove oldest + 1" << endl; - } - else - { - myStateList.remove(removeIter); // remove + myStateList.remove(removeIter); // remove //cerr << "remove " << removeIdx << endl; - } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 18d079f42..ac09c2478 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -34,6 +34,7 @@ Settings::Settings(OSystem& osystem) { // Video-related options setInternal("video", ""); + setInternal("framerate", "0"); setInternal("vsync", "true"); setInternal("fullscreen", "false"); setInternal("center", "false");