Permalink
Browse files

MOHAWK: RIVEN: Delay less for slower systems

Some systems may take longer to process the game loop
than others so we delay by a variable amount so faster
and slower system execute the game loop the same number
of times per second (the fps is capped at 100).

Slower systems that take longer than 10ms to process the game
loop won't have any delay.
  • Loading branch information...
dafioram authored and bgK committed Aug 8, 2018
1 parent 56389b1 commit 535c47fced43bf98eded5e401cb7ea78ebaae66e
Showing with 5 additions and 1 deletion.
  1. +4 −1 engines/mohawk/riven.cpp
  2. +1 −0 engines/mohawk/riven.h
@@ -209,6 +209,7 @@ Common::Error MohawkEngine_Riven::run() {

void MohawkEngine_Riven::doFrame() {
// Update background running things
uint32 loopStart = _system->getMillis();
_sound->updateSLST();
_video->updateMovies();

@@ -234,9 +235,11 @@ void MohawkEngine_Riven::doFrame() {

// Update the screen once per frame
_system->updateScreen();
uint32 loopElapsed = _system->getMillis() - loopStart;

// Cut down on CPU usage
_system->delayMillis(10);
if (loopElapsed < 10)
_system->delayMillis(10 - loopElapsed);
}

void MohawkEngine_Riven::processInput() {
@@ -106,6 +106,7 @@ class MohawkEngine_Riven : public MohawkEngine {
bool hasFeature(EngineFeature f) const override;

void doFrame();
void processInput();

private:
// Datafiles

0 comments on commit 535c47f

Please sign in to comment.