[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