[Scummvm-cvs-logs] SF.net SVN: scummvm:[43642] scummvm/trunk/engines/gob

drmccoy at users.sourceforge.net drmccoy at users.sourceforge.net
Sat Aug 22 15:11:30 CEST 2009


Revision: 43642
          http://scummvm.svn.sourceforge.net/scummvm/?rev=43642&view=rev
Author:   drmccoy
Date:     2009-08-22 13:11:30 +0000 (Sat, 22 Aug 2009)

Log Message:
-----------
Hooking up the v2 spriteUncompressor into the v6 one

Modified Paths:
--------------
    scummvm/trunk/engines/gob/video_v2.cpp
    scummvm/trunk/engines/gob/video_v6.cpp

Modified: scummvm/trunk/engines/gob/video_v2.cpp
===================================================================
--- scummvm/trunk/engines/gob/video_v2.cpp	2009-08-22 13:05:24 UTC (rev 43641)
+++ scummvm/trunk/engines/gob/video_v2.cpp	2009-08-22 13:11:30 UTC (rev 43642)
@@ -64,12 +64,15 @@
 		memBuffer = new byte[4370];
 		assert(memBuffer);
 
+		memset(memBuffer, 0, 4370);
+
 		srcPtr = sprBuf + 3;
+
 		sourceLeft = READ_LE_UINT32(srcPtr);
 
 		destPtr = destDesc.getVidMem() + destDesc.getWidth() * y + x;
 
-		curWidth = 0;
+		curWidth  = 0;
 		curHeight = 0;
 
 		linePtr = destPtr;
@@ -89,58 +92,64 @@
 		cmdVar = 0;
 		while (1) {
 			cmdVar >>= 1;
-			if ((cmdVar & 0x100) == 0) {
-				cmdVar = *srcPtr | 0xFF00;
-				srcPtr++;
-			}
+			if ((cmdVar & 0x100) == 0)
+				cmdVar = *srcPtr++ | 0xFF00;
+
 			if ((cmdVar & 1) != 0) {
 				temp = *srcPtr++;
+
 				if ((temp != 0) || (transp == 0))
 					*destPtr = temp;
+
 				destPtr++;
 				curWidth++;
+
 				if (curWidth >= srcWidth) {
 					curWidth = 0;
 					linePtr += destDesc.getWidth();
 					destPtr = linePtr;
-					curHeight++;
-					if (curHeight >= srcHeight)
+					if (++curHeight >= srcHeight)
 						break;
 				}
-				sourceLeft--;
+
 				memBuffer[bufPos] = temp;
-				bufPos++;
-				bufPos %= 4096;
-				if (sourceLeft == 0)
+
+				bufPos = (bufPos + 1) % 4096;
+
+				if (--sourceLeft == 0)
 					break;
+
 			} else {
 				offset = *srcPtr++;
-				offset |= (*srcPtr & 0xF0) << 4;
-				strLen = (*srcPtr & 0x0F) + 3;
-				*srcPtr++;
+				temp   = *srcPtr++;
+
+				offset |= (temp & 0xF0) << 4;
+				strLen  = (temp & 0x0F)  + 3;
+
 				if (strLen == lenCmd)
 					strLen = *srcPtr++ + 18;
 
 				for (counter2 = 0; counter2 < strLen; counter2++) {
 					temp = memBuffer[(offset + counter2) % 4096];
+
 					if ((temp != 0) || (transp == 0))
 						*destPtr = temp;
+
 					destPtr++;
+					curWidth++;
 
-					curWidth++;
 					if (curWidth >= srcWidth) {
 						curWidth = 0;
 						linePtr += destDesc.getWidth();
 						destPtr = linePtr;
-						curHeight++;
-						if (curHeight >= srcHeight) {
+						if (++curHeight >= srcHeight) {
 							delete[] memBuffer;
 							return 1;
 						}
 					}
+
 					memBuffer[bufPos] = temp;
-					bufPos++;
-					bufPos %= 4096;
+					bufPos = (bufPos + 1) % 4096;
 				}
 
 				if (strLen >= ((int32) sourceLeft)) {
@@ -148,7 +157,9 @@
 					return 1;
 				} else
 					sourceLeft--;
+
 			}
+
 		}
 	} else
 		return 0;

Modified: scummvm/trunk/engines/gob/video_v6.cpp
===================================================================
--- scummvm/trunk/engines/gob/video_v6.cpp	2009-08-22 13:05:24 UTC (rev 43641)
+++ scummvm/trunk/engines/gob/video_v6.cpp	2009-08-22 13:11:30 UTC (rev 43642)
@@ -84,8 +84,23 @@
 		return 1;
 	}
 
-	warning("Urban Stub: spriteUncompressor(), sprBuf[0,1] = %d,%d",
-			sprBuf[0], sprBuf[1]);
+	if (srcWidth & 0xC000) {
+		warning("Playtoons Stub: srcWidth & 0xC000 == %04X", srcWidth & 0xC000);
+		srcWidth &= 0x3FFF;
+	}
+
+	if ((sprBuf[0] == 1) && (sprBuf[1] == 2)) {
+		if (Video_v2::spriteUncompressor(sprBuf, srcWidth, srcHeight, x, y, transp, destDesc))
+			return 1;
+
+		_vm->validateVideoMode(destDesc._vidMode);
+
+		_videoDriver->drawPackedSprite(sprBuf, srcWidth, srcHeight, x, y, transp, destDesc);
+		return 1;
+	}
+
+	warning("Urban Stub: spriteUncompressor(), sprBuf[0,1,2] = %d,%d,%d",
+			sprBuf[0], sprBuf[1], sprBuf[2]);
 	return 1;
 }
 


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