aboutsummaryrefslogtreecommitdiff
path: root/engines/gob
diff options
context:
space:
mode:
authorSven Hesse2010-10-07 09:18:15 +0000
committerSven Hesse2010-10-07 09:18:15 +0000
commit8e523d9d2fc471ef1ef25ac26b9f7053a382192e (patch)
tree0848016910092f16cd63d4d697e08205a90bccd0 /engines/gob
parente47e474cff9823c789626f4b0b26ff69257b5263 (diff)
downloadscummvm-rg350-8e523d9d2fc471ef1ef25ac26b9f7053a382192e.tar.gz
scummvm-rg350-8e523d9d2fc471ef1ef25ac26b9f7053a382192e.tar.bz2
scummvm-rg350-8e523d9d2fc471ef1ef25ac26b9f7053a382192e.zip
GOB: Fix object videos with more than 255 frames
A regression of the CoktelDecoder rewrite. svn-id: r53043
Diffstat (limited to 'engines/gob')
-rw-r--r--engines/gob/scenery.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/engines/gob/scenery.cpp b/engines/gob/scenery.cpp
index 0efdf9983c..8b8b55eff8 100644
--- a/engines/gob/scenery.cpp
+++ b/engines/gob/scenery.cpp
@@ -623,6 +623,16 @@ void Scenery::updateAnim(int16 layer, int16 frame, int16 animation, int16 flags,
if (frame >= (int32)_vm->_vidPlayer->getFrameCount(obj.videoSlot - 1))
frame = _vm->_vidPlayer->getFrameCount(obj.videoSlot - 1) - 1;
+ if (_vm->_vidPlayer->getCurrentFrame(obj.videoSlot - 1) >= 255) {
+ // Allow for object videos with more than 255 frames, although the
+ // object frame counter is just a byte.
+
+ uint32 curFrame = _vm->_vidPlayer->getCurrentFrame(obj.videoSlot - 1) + 1;
+ uint16 frameWrap = curFrame / 256;
+
+ frame = ((frame + 1) % 256) + frameWrap * 256;
+ }
+
if (frame != (int32)_vm->_vidPlayer->getCurrentFrame(obj.videoSlot - 1)) {
// Seek to frame