aboutsummaryrefslogtreecommitdiff
path: root/engines/director
diff options
context:
space:
mode:
Diffstat (limited to 'engines/director')
-rw-r--r--engines/director/score.cpp8
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;