[Scummvm-cvs-logs] CVS: scummvm/scumm charset.cpp,2.114,2.115 gfx.cpp,2.363,2.364 gfx.h,1.91,1.92

Travis Howell kirben at users.sourceforge.net
Tue Oct 5 02:45:25 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5929/scumm

Modified Files:
	charset.cpp gfx.cpp gfx.h 
Log Message:

Allow color adjustment when decompressing wizImages.


Index: charset.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/charset.cpp,v
retrieving revision 2.114
retrieving revision 2.115
diff -u -d -r2.114 -r2.115
--- charset.cpp	5 Oct 2004 05:52:48 -0000	2.114
+++ charset.cpp	5 Oct 2004 09:39:39 -0000	2.115
@@ -1331,6 +1331,9 @@
 		src = dst;
 		src.moveTo(0, 0);
 
+		memset(_vm->gdi._wizImagePalette, 255, sizeof(_vm->gdi._wizImagePalette));
+		memcpy(_vm->gdi._wizImagePalette, _vm->_charsetColorMap, 16);
+
 		_vm->gdi.decompressWizImage(dstPtr, vs->w, dst, charPtr, src);
 
 		if (_blitAlso && vs->hasTwoBuffers)

Index: gfx.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/gfx.cpp,v
retrieving revision 2.363
retrieving revision 2.364
diff -u -d -r2.363 -r2.364
--- gfx.cpp	5 Oct 2004 05:52:48 -0000	2.363
+++ gfx.cpp	5 Oct 2004 09:39:39 -0000	2.364
@@ -583,16 +583,14 @@
  */
 void ScummEngine::redrawBGAreas() {
 	int i;
-	int val;
 	int diff;
+	int val = 0;;
 	bool cont = true;
 
 	if (!(_features & GF_NEW_CAMERA))
 		if (camera._cur.x != camera._last.x && _charset->_hasMask && (_version > 3 && _gameId != GID_PASS))
 			stopTalk();
 
-	val = 0;
-
 	if (_heversion >= 70) {
 		byte *room = getResourceAddress(rtRoomImage, _roomResource) + _IM00_offs;
 		if (findResource(MKID('BMAP'), room) != NULL) {
@@ -1479,6 +1477,9 @@
 	if (calcClipRects(dstw, dsth, srcx, srcy, srcw, srch, rect, r1, r2)) {
 		if (r1.isValidRect() && r2.isValidRect()) {
 			uint8 *dstPtr = dst + r2.left + r2.top * dstw;
+			for (int i = 0; i < 256; i++)
+				_wizImagePalette[i] = i;
+
 			decompressWizImage(dstPtr, dstw, r2, src, r1);
 		}
 	}
@@ -1491,6 +1492,7 @@
 	uint8 databit;
 	int h, w, xoff;
 	uint16 off;
+	int color;
 	
 	dstPtr = dst;
 	dataPtr = src;
@@ -1558,26 +1560,28 @@
 			databit = code & 1;
 			code >>= 1;
 			if (databit) {
-dec_sub1:		dstPtr += code;
+dec_sub1:			dstPtr += code;
 				w -= code;
 			} else {
 				databit = code & 1;
 				code = (code >> 1) + 1;
 				if (databit) {
-dec_sub2:			w -= code;
+dec_sub2:				w -= code;
 					if (w < 0) {
 						code += w;
 					}
-					memset(dstPtr, *dataPtr++, code);
+					color = _wizImagePalette[*dataPtr++];
+					memset(dstPtr, color, code);
 					dstPtr += code;
 				} else {
-dec_sub3:			w -= code;
+dec_sub3:				w -= code;
 					if (w < 0) {
 						code += w;
 					}
-					memcpy(dstPtr, dataPtr, code);
-					dstPtr += code;
-					dataPtr += code;
+					while (code--) {
+						color = _wizImagePalette[*dataPtr++];
+						*dstPtr++ = color;
+					}
 				}
 			}
 		}

Index: gfx.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/gfx.h,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -d -r1.91 -r1.92
--- gfx.h	4 Oct 2004 14:39:42 -0000	1.91
+++ gfx.h	5 Oct 2004 09:39:39 -0000	1.92
@@ -207,6 +207,8 @@
 	ScummEngine *_vm;
 
 public:
+	byte _wizImagePalette[256];
+
 	int _numZBuffer;
 	int _imgBufOffs[8];
 	int32 _numStrips;





More information about the Scummvm-git-logs mailing list