[Scummvm-cvs-logs] CVS: scummvm/scumm gfx.cpp,2.12,2.13

Max Horn fingolfin at users.sourceforge.net
Mon Dec 30 20:37:03 CET 2002


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv10001

Modified Files:
	gfx.cpp 
Log Message:
more cleanup

Index: gfx.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/gfx.cpp,v
retrieving revision 2.12
retrieving revision 2.13
diff -u -d -r2.12 -r2.13
--- gfx.cpp	31 Dec 2002 04:19:46 -0000	2.12
+++ gfx.cpp	31 Dec 2002 04:36:14 -0000	2.13
@@ -980,8 +980,6 @@
 
 void Gdi::decompressBitmap(byte *bgbak_ptr, byte *smap_ptr, int numLinesToProcess)
 {
-	_useOrDecompress = false;
-
 	byte code = *smap_ptr++;
 	assert(numLinesToProcess);
 
@@ -990,10 +988,16 @@
 	else
 		_palette_mod = 0;
 
+	_useOrDecompress = false;
 	_decomp_shr = code % 10;
 	_decomp_mask = 0xFF >> (8 - _decomp_shr);
+	
+	// Note that some of the decoders exist in pairs: one honors _transparency, the other not.
+	// The pairs are:
+	// unkDecode1 <-> unkDecode3
+	// unkDecode2 <-> unkDecode5
+	// unkDecode4 <-> unkDecode6
 
-//printf("decompressBitmap codec %d\n", code);
 	switch (code) {
 	case 1:
 		unkDecode7(bgbak_ptr, smap_ptr, numLinesToProcess);
@@ -1054,19 +1058,6 @@
 	case 66:
 	case 67:
 	case 68:
-		unkDecode1(bgbak_ptr, smap_ptr, numLinesToProcess);
-		break;
-
-	case 84:
-	case 85:
-	case 86:
-	case 87:
-	case 88:
-		_useOrDecompress = true;
-		unkDecode3(bgbak_ptr, smap_ptr, numLinesToProcess);
-		break;
-
-		/* New since version 6 */
 	case 104:
 	case 105:
 	case 106:
@@ -1075,7 +1066,11 @@
 		unkDecode1(bgbak_ptr, smap_ptr, numLinesToProcess);
 		break;
 
-		/* New since version 6 */
+	case 84:
+	case 85:
+	case 86:
+	case 87:
+	case 88:
 	case 124:
 	case 125:
 	case 126:
@@ -1263,14 +1258,15 @@
 			FILL_BITS;
 			*dst++ = color + _palette_mod;
 
-		againPos:;
-
+		againPos:
 			if (!READ_BIT) {
 			} else if (READ_BIT) {
 				incm = (bits & 7) - 4;
 				cl -= 3;
 				bits >>= 3;
-				if (!incm) {
+				if (incm) {
+					color += incm;
+				} else {
 					FILL_BITS;
 					reps = bits & 0xFF;
 					do {
@@ -1285,8 +1281,6 @@
 					bits >>= 8;
 					bits |= (*src++) << (cl - 8);
 					goto againPos;
-				} else {
-					color += incm;
 				}
 			} else {
 				FILL_BITS;
@@ -1348,11 +1342,10 @@
 				*dst = color + _palette_mod;
 			dst++;
 
-		againPos:;
+		againPos:
 			if (!READ_BIT) {
 			} else if (READ_BIT) {
 				incm = (bits & 7) - 4;
-
 				cl -= 3;
 				bits >>= 3;
 				if (incm) {
@@ -1491,22 +1484,22 @@
 
 #define NEXT_ROW                                            \
 				dst += _vm->_realWidth;                     \
-					if (--h == 0) {                         \
+				if (--h == 0) {                             \
 					if (!--_currentX)                       \
 						  return;                           \
 					dst -= _vertStripNextInc;               \
-					h = height;                 \
+					h = height;                             \
 				}
 
 void Gdi::unkDecode7(byte *dst, byte *src, int height)
 {
+printf("unkDecode7(%d)\n", height);
 	uint h = height;
 
 	if (_vm->_features & GF_OLD256) {
 		_currentX = 8;
 		for (;;) {
-			byte color = *src++;
-			*dst = color;
+			*dst = *src++;
 			NEXT_ROW
 		}
 		return;





More information about the Scummvm-git-logs mailing list