aboutsummaryrefslogtreecommitdiff
path: root/engines/sherlock/scalpel
diff options
context:
space:
mode:
authorPaul Gilbert2015-08-30 12:03:40 -0400
committerPaul Gilbert2015-08-30 12:03:40 -0400
commitb65436937733c519346a653493d26d3dd00fe106 (patch)
treeca61e9feb0ff5927d6e50919cd593bb8fd68fb03 /engines/sherlock/scalpel
parent944cf4c64fd978db9b49a4317a955dc681b51089 (diff)
downloadscummvm-rg350-b65436937733c519346a653493d26d3dd00fe106.tar.gz
scummvm-rg350-b65436937733c519346a653493d26d3dd00fe106.tar.bz2
scummvm-rg350-b65436937733c519346a653493d26d3dd00fe106.zip
SHERLOCK: SS: Fix speed of intro sequence
Diffstat (limited to 'engines/sherlock/scalpel')
-rw-r--r--engines/sherlock/scalpel/scalpel.cpp28
-rw-r--r--engines/sherlock/scalpel/tsage/logo.cpp11
-rw-r--r--engines/sherlock/scalpel/tsage/logo.h2
3 files changed, 23 insertions, 18 deletions
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];