[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