aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/graphics/portrait.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/engines/sci/graphics/portrait.cpp b/engines/sci/graphics/portrait.cpp
index 61c400d6e2..0012aece95 100644
--- a/engines/sci/graphics/portrait.cpp
+++ b/engines/sci/graphics/portrait.cpp
@@ -121,13 +121,19 @@ void Portrait::init() {
// Offset table follows
curBitmap = _bitmaps;
- data += 18;
+ int32 offsetTableSize = READ_LE_UINT32(data);
+ assert((bitmapNr + 1) * 14 <= offsetTableSize);
+ data += 4;
+ byte *dataOffsetTable = data + 14; // we skip first bitmap offsets
for (bitmapNr = 0; bitmapNr < _bitmapCount; bitmapNr++) {
- curBitmap->displaceX = READ_LE_UINT16(data);
- curBitmap->displaceY = READ_LE_UINT16(data + 2);
- data += 14;
+ curBitmap->displaceX = READ_LE_UINT16(dataOffsetTable);
+ curBitmap->displaceY = READ_LE_UINT16(dataOffsetTable + 2);
+ dataOffsetTable += 14;
curBitmap++;
}
+ data += offsetTableSize;
+
+ // raw lip-sync data follows
}
void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint16 verb, uint16 cond, uint16 seq) {