diff options
Diffstat (limited to 'engines/gob/scenery.cpp')
-rw-r--r-- | engines/gob/scenery.cpp | 10 |
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 |