diff options
author | Paul Gilbert | 2015-08-30 12:03:40 -0400 |
---|---|---|
committer | Paul Gilbert | 2015-08-30 12:03:40 -0400 |
commit | b65436937733c519346a653493d26d3dd00fe106 (patch) | |
tree | ca61e9feb0ff5927d6e50919cd593bb8fd68fb03 | |
parent | 944cf4c64fd978db9b49a4317a955dc681b51089 (diff) | |
download | scummvm-rg350-b65436937733c519346a653493d26d3dd00fe106.tar.gz scummvm-rg350-b65436937733c519346a653493d26d3dd00fe106.tar.bz2 scummvm-rg350-b65436937733c519346a653493d26d3dd00fe106.zip |
SHERLOCK: SS: Fix speed of intro sequence
-rw-r--r-- | engines/sherlock/events.cpp | 9 | ||||
-rw-r--r-- | engines/sherlock/events.h | 6 | ||||
-rw-r--r-- | engines/sherlock/scalpel/scalpel.cpp | 28 | ||||
-rw-r--r-- | engines/sherlock/scalpel/tsage/logo.cpp | 11 | ||||
-rw-r--r-- | engines/sherlock/scalpel/tsage/logo.h | 2 |
5 files changed, 36 insertions, 20 deletions
diff --git a/engines/sherlock/events.cpp b/engines/sherlock/events.cpp index 77833f8b3f..079ea0e663 100644 --- a/engines/sherlock/events.cpp +++ b/engines/sherlock/events.cpp @@ -44,6 +44,7 @@ Events::Events(SherlockEngine *vm): _vm(vm) { _oldButtons = _oldRightButton = false; _firstPress = false; _waitCounter = 0; + _frameRate = 0; if (_vm->_interactiveFl) loadCursors("rmouse.vgs"); @@ -232,10 +233,14 @@ Common::Point Events::mousePos() const { return _vm->_screen->_currentScroll + _mousePos; } +void Events::setFrameRate(int newRate) { + _frameRate = newRate; +} + bool Events::checkForNextFrameCounter() { // Check for next game frame uint32 milli = g_system->getMillis(); - if ((milli - _priorFrameTime) >= GAME_FRAME_TIME) { + if ((milli - _priorFrameTime) >= (1000 / _frameRate)) { ++_frameCounter; _priorFrameTime = milli; @@ -303,7 +308,7 @@ void Events::clearKeyboard() { } void Events::wait(int numFrames) { - uint32 totalMilli = numFrames * 1000 / GAME_FRAME_RATE; + uint32 totalMilli = numFrames * 1000 / _frameRate; delay(totalMilli); } diff --git a/engines/sherlock/events.h b/engines/sherlock/events.h index a44f08375b..8741ffa55b 100644 --- a/engines/sherlock/events.h +++ b/engines/sherlock/events.h @@ -46,6 +46,7 @@ private: int _mouseButtons; Common::Point _mousePos; int _waitCounter; + int _frameRate; /** * Check whether it's time to display the next screen frame @@ -143,6 +144,11 @@ public: Common::Point mousePos() const; /** + * Override the default frame rate + */ + void setFrameRate(int newRate); + + /** * Return the current game frame number */ uint32 getFrameCounter() const { return _frameCounter; } diff --git a/engines/sherlock/scalpel/scalpel.cpp b/engines/sherlock/scalpel/scalpel.cpp index fc8b1e609a..c3915a1cf2 100644 --- a/engines/sherlock/scalpel/scalpel.cpp +++ b/engines/sherlock/scalpel/scalpel.cpp @@ -242,6 +242,8 @@ void ScalpelEngine::showOpening() { if (isDemo() && _interactiveFl) return; + _events->setFrameRate(60); + if (getPlatform() == Common::kPlatform3DO) { show3DOSplash(); @@ -255,20 +257,22 @@ void ScalpelEngine::showOpening() { _events->clearEvents(); _music->stopMusic(); - return; - } + } else { + TsAGE::Logo::show(this); - TsAGE::Logo::show(this); - finished = showCityCutscene(); - if (finished) - finished = showAlleyCutscene(); - if (finished) - finished = showStreetCutscene(); - if (finished) - showOfficeCutscene(); + finished = showCityCutscene(); + if (finished) + finished = showAlleyCutscene(); + if (finished) + finished = showStreetCutscene(); + if (finished) + showOfficeCutscene(); + + _events->clearEvents(); + _music->stopMusic(); + } - _events->clearEvents(); - _music->stopMusic(); + _events->setFrameRate(GAME_FRAME_RATE); } bool ScalpelEngine::showCityCutscene() { diff --git a/engines/sherlock/scalpel/tsage/logo.cpp b/engines/sherlock/scalpel/tsage/logo.cpp index 4eab01947a..64539b941a 100644 --- a/engines/sherlock/scalpel/tsage/logo.cpp +++ b/engines/sherlock/scalpel/tsage/logo.cpp @@ -399,8 +399,9 @@ bool Logo::show(ScalpelEngine *vm) { for (int idx = 0; idx < 4; ++idx) logo->_objects[idx].update(); - events.wait(2); + events.delay(10); events.setButtonState(); + ++logo->_frameCounter; interrupted = vm->shouldQuit() || events.kbHit() || events._pressed; if (interrupted) { @@ -476,7 +477,7 @@ void Logo::nextFrame() { Screen &screen = *_vm->_screen; if (_waitFrames) { - uint32 currFrame = _vm->_events->getFrameCounter(); + uint32 currFrame = _frameCounter; if (currFrame - _waitStartFrame < _waitFrames) { return; } @@ -485,7 +486,7 @@ void Logo::nextFrame() { } if (_animateFrames) { - uint32 currFrame = _vm->_events->getFrameCounter(); + uint32 currFrame = _frameCounter; if (currFrame > _animateStartFrame + _animateFrameDelay) { AnimationFrame animationFrame = _animateFrames[_animateFrame]; if (animationFrame.frame) { @@ -611,14 +612,14 @@ void Logo::nextFrame() { void Logo::waitFrames(uint frames) { _waitFrames = frames; - _waitStartFrame = _vm->_events->getFrameCounter(); + _waitStartFrame = _frameCounter; } void Logo::startAnimation(uint object, uint frameDelay, const AnimationFrame *frames) { _animateObject = object; _animateFrameDelay = frameDelay; _animateFrames = frames; - _animateStartFrame = _vm->_events->getFrameCounter(); + _animateStartFrame = _frameCounter; _animateFrame = 1; _objects[object]._frame = frames[0].frame; diff --git a/engines/sherlock/scalpel/tsage/logo.h b/engines/sherlock/scalpel/tsage/logo.h index c9fac00d9c..8e47ea42a1 100644 --- a/engines/sherlock/scalpel/tsage/logo.h +++ b/engines/sherlock/scalpel/tsage/logo.h @@ -195,7 +195,7 @@ class Logo { private: ScalpelEngine *_vm; TLib _lib; - int _counter; + int _counter, _frameCounter; bool _finished; byte _originalPalette[PALETTE_SIZE]; byte _palette1[PALETTE_SIZE]; |