[Scummvm-cvs-logs] CVS: scummvm/scumm scumm.h,1.77,1.78 string.cpp,1.54,1.55 verbs.cpp,1.9,1.10

Max Horn fingolfin at users.sourceforge.net
Thu Dec 12 16:53:01 CET 2002


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

Modified Files:
	scumm.h string.cpp verbs.cpp 
Log Message:
cleanup

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -d -r1.77 -r1.78
--- scumm.h	12 Dec 2002 16:29:20 -0000	1.77
+++ scumm.h	13 Dec 2002 00:52:14 -0000	1.78
@@ -199,13 +199,10 @@
 	byte _bpp;
 	uint32 _charOffs;
 	byte *_charPtr;
-	int _width, _height;
 	int _offsX, _offsY;
-	int _bottom;
 	int _virtScreenHeight;
 
-
-	void drawBits(byte *dst, byte *mask, int drawTop);
+	void drawBits(byte *dst, byte *mask, int drawTop, int width, int height);
 
 public:
 	byte _colorMap[16];

Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- string.cpp	4 Dec 2002 21:46:00 -0000	1.54
+++ string.cpp	13 Dec 2002 00:52:14 -0000	1.55
@@ -229,7 +229,8 @@
 
 void CharsetRenderer::printChar(int chr)
 {
-	int d, right;
+	int width, height;
+	int d;
 	VirtScreen *vs;
 
 	_vm->checkRange(_vm->_maxCharsets - 1, 1, _curId, "Printing with bad charset %d");
@@ -252,8 +253,8 @@
 
 	_charPtr = _fontPtr + _charOffs;
 
-	_width = _charPtr[0];
-	_height = _charPtr[1];
+	width = _charPtr[0];
+	height = _charPtr[1];
 	if (_firstChar) {
 		_strLeft = 0;
 		_strTop = 0;
@@ -278,10 +279,8 @@
 	_top += _offsY;
 	_left += _offsX;
 
-	right = _left + _width;
-
-	if (right > _right + 1 || _left < 0) {
-		_left = right;
+	if (_left + width > _right + 1 || _left < 0) {
+		_left += width;
 		_top -= _offsY;
 		return;
 	}
@@ -305,14 +304,13 @@
 	int drawTop = _top - vs->topline;
 	if (drawTop < 0)
 		drawTop = 0;
+	int bottom = drawTop + height + _offsY;
 
-	_bottom = drawTop + _height + _offsY;
-
-	_vm->updateDirtyRect(vs->number, _left, right, drawTop, _bottom, 0);
+	_vm->updateDirtyRect(vs->number, _left, _left + width, drawTop, bottom, 0);
 
 	if (vs->number != 0)
 		_blitAlso = false;
-	if (vs->number == 0 && _blitAlso == 0)
+	if (vs->number == 0 && !_blitAlso)
 		_hasMask = true;
 
 	_virtScreenHeight = vs->height;
@@ -328,24 +326,24 @@
 		dst = _vm->getResourceAddress(rtBuffer, vs->number + 5)
 			+ vs->xstart + drawTop * _vm->_realWidth + _left;
 
-		drawBits(dst, mask, drawTop);
+		drawBits(dst, mask, drawTop, width, height);
 
-		_vm->blit(back, dst, _width, _height);
+		_vm->blit(back, dst, width, height);
 	} else {
-		drawBits(dst, mask, drawTop);
+		drawBits(dst, mask, drawTop, width, height);
 	}
 	
-	_left += _width;
+	_left += width;
 	if (_left > _strRight)
 		_strRight = _left;
 
-	if (_top + _height > _strBottom)
-		_strBottom = _top + _height;
+	if (_top + height > _strBottom)
+		_strBottom = _top + height;
 
 	_top -= _offsY;
 }
 
-void CharsetRenderer::drawBits(byte *dst, byte *mask, int drawTop)
+void CharsetRenderer::drawBits(byte *dst, byte *mask, int drawTop, int width, int height)
 {
 	bool usemask;
 	byte maskmask;
@@ -361,12 +359,16 @@
 
 	y = 0;
 
-	for (y = 0; y < _height && y + drawTop < _virtScreenHeight;) {
+	for (y = 0; y < height && y + drawTop < _virtScreenHeight; y++) {
 		maskmask = revBitMask[_left & 7];
 		maskpos = 0;
 
-		for (x = 0; x < _width; x++) {
+		for (x = 0; x < width; x++) {
+			int myMask = (0xFF << (8 - _bpp)) & 0xFF;
+			int myColor = (bits & myMask) >> (8 - _bpp);
 			color = (bits >> (8 - _bpp)) & 0xFF;
+			assert(color == myColor);
+			
 			if (color) {
 				if (usemask) {
 					mask[maskpos] |= maskmask;
@@ -375,18 +377,19 @@
 			}
 			dst++;
 			bits <<= _bpp;
-			if ((numbits -= _bpp) == 0) {
+			numbits -= _bpp;
+			if (numbits == 0) {
 				bits = *_charPtr++;
 				numbits = 8;
 			}
-			if ((maskmask >>= 1) == 0) {
+			maskmask >>= 1;
+			if (maskmask == 0) {
 				maskmask = 0x80;
 				maskpos++;
 			}
 		}
-		dst += _vm->_realWidth - _width;
+		dst += _vm->_realWidth - width;
 		mask += _vm->gdi._numStrips;
-		y++;
 	}
 }
 
@@ -856,9 +859,7 @@
 	}
 
 	for (i = 0; (chr = buf[i++]) != 0;) {
-		if (chr == 254)
-			chr = 255;
-		if (chr == 255) {
+		if (chr == 254 || chr == 255) {
 			chr = buf[i++];
 			switch (chr) {
 			case 9:

Index: verbs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/verbs.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- verbs.cpp	4 Dec 2002 21:46:05 -0000	1.9
+++ verbs.cpp	13 Dec 2002 00:52:14 -0000	1.10
@@ -25,6 +25,7 @@
 #include "object.h"
 #include "resource.h"
 #include "verbs.h"
+#include "common/util.h"
 
 void Scumm::redrawVerbs()
 {
@@ -115,22 +116,22 @@
 	return 0;
 }
 
-void Scumm::drawVerb(int vrb, int mode)
+void Scumm::drawVerb(int verb, int mode)
 {
 	VerbSlot *vs;
 	byte tmp;
 
-	if (!vrb)
+	if (!verb)
 		return;
 
-	vs = &_verbs[vrb];
+	vs = &_verbs[verb];
 
 	if (!vs->saveid && vs->curmode && vs->verbid) {
 		if (vs->type == kImageVerbType) {
-			drawVerbBitmap(vrb, vs->x, vs->y);
+			drawVerbBitmap(verb, vs->x, vs->y);
 			return;
 		}
-		restoreVerbBG(vrb);
+		restoreVerbBG(verb);
 
 		_string[4].charset = vs->charset_nr;
 		_string[4].xpos = vs->x;
@@ -147,15 +148,19 @@
 
 		// FIXME For the future: Indy3 and under inv scrolling
 		/*
-		   if (vrb >= 31 && vrb <= 36) 
-		   vrb += _inventoryOffset;
+		   if (verb >= 31 && verb <= 36) 
+		   verb += _inventoryOffset;
 		 */
 
-		_messagePtr = getResourceAddress(rtVerb, vrb);
+		_messagePtr = getResourceAddress(rtVerb, verb);
 		if (!_messagePtr)
 			return;
 		assert(_messagePtr);
 
+		if ((verb == 49 || verb == 48) && mode == 0) {
+			hexdump(_messagePtr, 32);
+		}
+
 		tmp = charset._center;
 		charset._center = 0;
 		drawString(4);
@@ -169,7 +174,7 @@
 		vs->oldbottom = charset._strBottom;
 		charset._strLeft = charset._strRight;
 	} else {
-		restoreVerbBG(vrb);
+		restoreVerbBG(verb);
 	}
 }
 
@@ -185,7 +190,7 @@
 	}
 }
 
-void Scumm::drawVerbBitmap(int vrb, int x, int y)
+void Scumm::drawVerbBitmap(int verb, int x, int y)
 {
 	VirtScreen *vs;
 	VerbSlot *vst;
@@ -208,7 +213,7 @@
 	xstrip = x >> 3;
 	ydiff = y - vs->topline;
 
-	obim = getResourceAddress(rtVerb, vrb);
+	obim = getResourceAddress(rtVerb, verb);
 	if (_features & GF_SMALL_HEADER) {
 		int obj;
 		obj = READ_LE_UINT16(obim + 6);
@@ -229,7 +234,7 @@
 
 		imptr = findResource(MKID('IM01'), obim);
 		if (!imptr)
-			error("No image for verb %d", vrb);
+			error("No image for verb %d", verb);
 	}
 	for (i = 0; i < imgw; i++) {
 		tmp = xstrip + i;
@@ -237,7 +242,7 @@
 			gdi.drawBitmap(imptr, vs, tmp, ydiff, imgh << 3, i, 1, true);
 	}
 
-	vst = &_verbs[vrb];
+	vst = &_verbs[verb];
 	vst->right = vst->x + imgw * 8 - 1;
 	vst->bottom = vst->y + imgh * 8 - 1;
 	vst->oldleft = vst->x;





More information about the Scummvm-git-logs mailing list