From 2e87ca495459341499a3fdead70b6410b6501a71 Mon Sep 17 00:00:00 2001 From: Dmitry Iskrich Date: Tue, 31 May 2016 21:35:57 +0300 Subject: DIRECTOR: Fix cast data reading --- engines/director/score.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'engines/director') 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(_sprites[i]->_cast)->regX; -- cgit v1.2.3