diff options
Diffstat (limited to 'engines/director')
-rw-r--r-- | engines/director/score.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/engines/director/score.cpp b/engines/director/score.cpp index e9210376ab..b42fd2cc5a 100644 --- a/engines/director/score.cpp +++ b/engines/director/score.cpp @@ -84,11 +84,10 @@ void Score::readVersion(uint32 rid) { } void Score::loadCastData(Common::SeekableReadStream &stream) { - for (uint16 id = _castArrayStart; id < _castArrayEnd; id++) { + for (uint16 id = _castArrayStart; id <= _castArrayEnd; id++) { byte size = stream.readByte(); if (size == 0) continue; - uint8 castType = stream.readByte(); switch (castType) { case kCastBitmap: @@ -410,6 +409,11 @@ void Frame::display(Archive &_movie, Graphics::ManagedSurface &surface, Common:: DIBDecoder img; //TODO check cast type uint32 imgId = 1024 + _sprites[i]->_castId; + //TODO looks like bad file? + if (!_movie.hasResource(MKTAG('D', 'I', 'B', ' '), imgId)) { + continue; + } + img.loadStream(*_movie.getResource(MKTAG('D', 'I', 'B', ' '), imgId)); uint32 regX = static_cast<BitmapCast *>(_sprites[i]->_cast)->regX; |