diff --git a/engines/director/score.cpp b/engines/director/score.cpp index 84f436fd1c3..1c9919fe8c3 100644 --- a/engines/director/score.cpp +++ b/engines/director/score.cpp @@ -413,6 +413,13 @@ void Score::updateCurrentFrame() { } if (_curFrameNumber != nextFrameNumberToLoad) { + // Load the current sprite information into the _currentFrame data store. + // This is specifically because of delta updates; loading the next frame + // in the score applies delta changes to _currentFrame, and ideally we want + // those deltas to be applied over the top of whatever the current state is. + for (uint ch = 0; ch < _channels.size(); ch++) + *_currentFrame->_sprites[ch] = *_channels[ch]->_sprite; + // this copies in the frame data and updates _curFrameNumber loadFrame(nextFrameNumberToLoad, true); }