diff options
author | Martin Kiewitz | 2010-05-04 08:54:07 +0000 |
---|---|---|
committer | Martin Kiewitz | 2010-05-04 08:54:07 +0000 |
commit | c5f94872a7c4a1082f7c401c4e90f9bd3bf0290e (patch) | |
tree | 7bb4efb31275bdb8915a6c2ae4d126e6b429b79c | |
parent | 3c0bd3dd270ea785c51c873b971820beda480933 (diff) | |
download | scummvm-rg350-c5f94872a7c4a1082f7c401c4e90f9bd3bf0290e.tar.gz scummvm-rg350-c5f94872a7c4a1082f7c401c4e90f9bd3bf0290e.tar.bz2 scummvm-rg350-c5f94872a7c4a1082f7c401c4e90f9bd3bf0290e.zip |
SCI: kPortrait - correctly jump over offset table to land on raw lipsync data in portrait files
svn-id: r48928
-rw-r--r-- | engines/sci/graphics/portrait.cpp | 14 |
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) { |