[Scummvm-cvs-logs] SF.net SVN: scummvm:[49019] scummvm/trunk/engines/sci/graphics/view.cpp

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Wed May 12 23:28:38 CEST 2010


Revision: 49019
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49019&view=rev
Author:   m_kiewitz
Date:     2010-05-12 21:28:38 +0000 (Wed, 12 May 2010)

Log Message:
-----------
SCI: header size within sci1.1+ views doesn't include the actual header size word, adjust accordingly (should make mac view support possible now)

Modified Paths:
--------------
    scummvm/trunk/engines/sci/graphics/view.cpp

Modified: scummvm/trunk/engines/sci/graphics/view.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/view.cpp	2010-05-12 20:22:10 UTC (rev 49018)
+++ scummvm/trunk/engines/sci/graphics/view.cpp	2010-05-12 21:28:38 UTC (rev 49019)
@@ -67,7 +67,7 @@
 	CelInfo *cel;
 	uint16 celCount = 0;
 	uint16 mirrorBits = 0;
-	uint16 palOffset = 0;
+	uint32 palOffset = 0;
 	uint16 headerSize = 0;
 	uint16 loopSize = 0, celSize = 0;
 	int loopNo, celNo, EGAmapNr;
@@ -166,15 +166,17 @@
 		}
 		break;
 
-	case kViewVga11: // View-format SCI1.1
+	case kViewVga11: // View-format SCI1.1+
 		// HeaderSize:WORD LoopCount:BYTE Unknown:BYTE Version:WORD Unknown:WORD PaletteOffset:WORD
-		headerSize = READ_LE_UINT16(_resourceData + 0);
+		headerSize = READ_LE_UINT16(_resourceData + 0) + 2; // headerSize is not part of the header, so its added
+		assert(headerSize >= 16);
 		_loopCount = _resourceData[2];
-		palOffset = READ_LE_UINT16(_resourceData + 8);
+		palOffset = READ_LE_UINT32(_resourceData + 8);
 		// FIXME: After LoopCount there is another byte and its set for view 50 within Laura Bow 2 CD, check what it means
 
 		loopData = _resourceData + headerSize;
 		loopSize = _resourceData[12];
+		assert(loopSize >= 16);
 		celSize = _resourceData[13];
 
 		if (palOffset) {
@@ -186,7 +188,7 @@
 		for (loopNo = 0; loopNo < _loopCount; loopNo++) {
 			loopData = _resourceData + headerSize + (loopNo * loopSize);
 
-			seekEntry = loopData[2];
+			seekEntry = loopData[0];
 			if (seekEntry != 255) {
 				if (seekEntry >= _loopCount)
 					error("Bad loop-pointer in sci 1.1 view");
@@ -196,10 +198,10 @@
 				_loop[loopNo].mirrorFlag = false;
 			}
 
-			celCount = loopData[4];
+			celCount = loopData[2];
 			_loop[loopNo].celCount = celCount;
 
-			celData = _resourceData + READ_LE_UINT16(loopData + 14);
+			celData = _resourceData + READ_LE_UINT32(loopData + 12);
 
 			// read cel info
 			_loop[loopNo].cel = new CelInfo[celCount];


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