aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorDmitry Iskrich2016-05-31 21:35:57 +0300
committerEugene Sandulenko2016-08-03 23:40:36 +0200
commit2e87ca495459341499a3fdead70b6410b6501a71 (patch)
treef5e7a542193b74116b9d9a8c09e77f94a58444b5 /engines
parentfb6e06231c20bec264e8c54be4dfb662b9d08fd7 (diff)
downloadscummvm-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.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;