aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorBastien Bouclet2011-05-19 22:05:57 +0200
committerBastien Bouclet2011-05-19 22:06:37 +0200
commitda3f6708984043322bd8e97535dd461977376417 (patch)
tree34506bffd135bd858e1005aa7c0c7e9e050d34b1 /engines
parentfcae7bb497b51baa6d55099e86092adbc9e44ef1 (diff)
downloadscummvm-rg350-da3f6708984043322bd8e97535dd461977376417.tar.gz
scummvm-rg350-da3f6708984043322bd8e97535dd461977376417.tar.bz2
scummvm-rg350-da3f6708984043322bd8e97535dd461977376417.zip
MOHAWK: Compensate movie encoding difference between Myst ME and Myst original, to fix a crash in the clock tower.
Diffstat (limited to 'engines')
-rw-r--r--engines/mohawk/myst_stacks/myst.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp
index f77ae753d9..70abf0ccd3 100644
--- a/engines/mohawk/myst_stacks/myst.cpp
+++ b/engines/mohawk/myst_stacks/myst.cpp
@@ -2839,11 +2839,17 @@ void Myst::clockGearForwardOneStep(uint16 gear) {
}
void Myst::clockWeightDownOneStep() {
+ // The Myst ME version of this video is encoded faster than the original
+ // The weight goes on the floor one step too early. Original ME engine also has this behavior.
+ bool updateVideo = !(_vm->getFeatures() & GF_ME) || _clockWeightPosition < (2214 - 246);
+
// Set video bounds
- _clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack) , 124, 0);
- _vm->_video->setVideoBounds(_clockWeightVideo,
- Audio::Timestamp(0, _clockWeightPosition, 600),
- Audio::Timestamp(0, _clockWeightPosition + 246, 600));
+ if (updateVideo) {
+ _clockWeightVideo = _vm->_video->playMovie(_vm->wrapMovieFilename("cl1wlfch", kMystStack) , 124, 0);
+ _vm->_video->setVideoBounds(_clockWeightVideo,
+ Audio::Timestamp(0, _clockWeightPosition, 600),
+ Audio::Timestamp(0, _clockWeightPosition + 246, 600));
+ }
// Increment value by one step
_clockWeightPosition += 246;