[Scummvm-cvs-logs] SF.net SVN: scummvm:[48928] scummvm/trunk/engines/sci/graphics/portrait.cpp
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Tue May 4 10:54:07 CEST 2010
Revision: 48928
http://scummvm.svn.sourceforge.net/scummvm/?rev=48928&view=rev
Author: m_kiewitz
Date: 2010-05-04 08:54:07 +0000 (Tue, 04 May 2010)
Log Message:
-----------
SCI: kPortrait - correctly jump over offset table to land on raw lipsync data in portrait files
Modified Paths:
--------------
scummvm/trunk/engines/sci/graphics/portrait.cpp
Modified: scummvm/trunk/engines/sci/graphics/portrait.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/portrait.cpp 2010-05-03 22:33:46 UTC (rev 48927)
+++ scummvm/trunk/engines/sci/graphics/portrait.cpp 2010-05-04 08:54:07 UTC (rev 48928)
@@ -121,13 +121,19 @@
// 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) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list