diff options
author | Dmitry Iskrich | 2016-05-31 21:35:57 +0300 |
---|---|---|
committer | Eugene Sandulenko | 2016-08-03 23:40:36 +0200 |
commit | 2e87ca495459341499a3fdead70b6410b6501a71 (patch) | |
tree | f5e7a542193b74116b9d9a8c09e77f94a58444b5 /engines | |
parent | fb6e06231c20bec264e8c54be4dfb662b9d08fd7 (diff) | |
download | scummvm-rg350-2e87ca495459341499a3fdead70b6410b6501a71.tar.gz scummvm-rg350-2e87ca495459341499a3fdead70b6410b6501a71.tar.bz2 scummvm-rg350-2e87ca495459341499a3fdead70b6410b6501a71.zip |
DIRECTOR: Fix cast data reading
Diffstat (limited to 'engines')
-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; |