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

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Thu Feb 4 12:54:48 CET 2010


Revision: 47873
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47873&view=rev
Author:   m_kiewitz
Date:     2010-02-04 11:54:48 +0000 (Thu, 04 Feb 2010)

Log Message:
-----------
SCI: fix support for cels that are larger than 64k (sierra logo animation in sq6)

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

Modified: scummvm/trunk/engines/sci/graphics/view.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/view.cpp	2010-02-04 07:44:13 UTC (rev 47872)
+++ scummvm/trunk/engines/sci/graphics/view.cpp	2010-02-04 11:54:48 UTC (rev 47873)
@@ -284,11 +284,11 @@
 	}
 }
 
-void View::unpackCel(int16 loopNo, int16 celNo, byte *outPtr, uint16 pixelCount) {
+void View::unpackCel(int16 loopNo, int16 celNo, byte *outPtr, uint32 pixelCount) {
 	CelInfo *celInfo = getCelInfo(loopNo, celNo);
 	byte *rlePtr;
 	byte *literalPtr;
-	uint16 pixelNo = 0, runLength;
+	uint32 pixelNo = 0, runLength;
 	byte pixel;
 
 	if (celInfo->offsetEGA) {
@@ -297,7 +297,7 @@
 		while (pixelNo < pixelCount) {
 			pixel = *literalPtr++;
 			runLength = pixel >> 4;
-			memset(outPtr + pixelNo, pixel & 0x0F, MIN<uint16>(runLength, pixelCount - pixelNo));
+			memset(outPtr + pixelNo, pixel & 0x0F, MIN<uint32>(runLength, pixelCount - pixelNo));
 			pixelNo += runLength;
 		}
 		return;
@@ -332,7 +332,7 @@
 						outPtr[pixelNo++] = *rlePtr++;
 					break;
 				case 0x80: // fill with color
-					memset(outPtr + pixelNo, *rlePtr++, MIN<uint16>(runLength, pixelCount - pixelNo));
+					memset(outPtr + pixelNo, *rlePtr++, MIN<uint32>(runLength, pixelCount - pixelNo));
 					pixelNo += runLength;
 					break;
 				case 0xC0: // fill with transparent
@@ -355,7 +355,7 @@
 						outPtr[pixelNo++] = *literalPtr++;
 					break;
 				case 0x80: // fill with color
-					memset(outPtr + pixelNo, *literalPtr++, MIN<uint16>(runLength, pixelCount - pixelNo));
+					memset(outPtr + pixelNo, *literalPtr++, MIN<uint32>(runLength, pixelCount - pixelNo));
 					pixelNo += runLength;
 					break;
 				case 0xC0: // fill with transparent

Modified: scummvm/trunk/engines/sci/graphics/view.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/view.h	2010-02-04 07:44:13 UTC (rev 47872)
+++ scummvm/trunk/engines/sci/graphics/view.h	2010-02-04 11:54:48 UTC (rev 47873)
@@ -72,7 +72,7 @@
 
 private:
 	void initData(GuiResourceId resourceId);
-	void unpackCel(int16 loopNo, int16 celNo, byte *outPtr, uint16 pixelCount);
+	void unpackCel(int16 loopNo, int16 celNo, byte *outPtr, uint32 pixelCount);
 	void unditherBitmap(byte *bitmap, int16 width, int16 height, byte clearKey);
 
 	ResourceManager *_resMan;


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