aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2015-08-30 12:03:40 -0400
committerPaul Gilbert2015-08-30 12:03:40 -0400
commitb65436937733c519346a653493d26d3dd00fe106 (patch)
treeca61e9feb0ff5927d6e50919cd593bb8fd68fb03
parent944cf4c64fd978db9b49a4317a955dc681b51089 (diff)
downloadscummvm-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.cpp9
-rw-r--r--engines/sherlock/events.h6
-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
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];