[Scummvm-cvs-logs] CVS: scummvm/scumm base-costume.cpp,2.6,2.7 costume.cpp,1.82,1.83

Max Horn fingolfin at users.sourceforge.net
Sat Jul 12 19:46:11 CEST 2003


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

Modified Files:
	base-costume.cpp costume.cpp 
Log Message:
fix x/y limb offsets and transparancy with C64 costume renderer

Index: base-costume.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/base-costume.cpp,v
retrieving revision 2.6
retrieving revision 2.7
diff -u -d -r2.6 -r2.7
--- base-costume.cpp	8 Jul 2003 17:42:11 -0000	2.6
+++ base-costume.cpp	13 Jul 2003 02:45:31 -0000	2.7
@@ -28,7 +28,10 @@
 	int i;
 	byte result = 0;
 
-	if (_vm->_features & GF_OLD_BUNDLE) {
+	if (_vm->_version == 1) {
+		_xmove = 0;
+		_ymove = 0;
+	} else if (_vm->_features & GF_OLD_BUNDLE) {
 		_xmove = -72;
 		_ymove = -100;
 	} else {

Index: costume.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/costume.cpp,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -d -r1.82 -r1.83
--- costume.cpp	8 Jul 2003 18:18:26 -0000	1.82
+++ costume.cpp	13 Jul 2003 02:45:31 -0000	1.83
@@ -304,51 +304,48 @@
 void CostumeRenderer::procC64() {
 	const byte *src;
 	byte *dst;
+	byte len;
+	int y;
 	byte color;
-	byte len = 0;
 
-	int y = 0;
+	y = 0;
 	src = _srcptr;
 	dst = v1.destptr;
 	len = v1.replen;
 	color = v1.repcolor;
 
-	for (int x = 0; x < (_width >> 3); x++) {
+	for (int x = 0; x < _width; x += 8) {
 		color = *src++;
 		if (color & 0x80) {
 			len = color & 0x7f;
 			color = *src++;
 			while (len--) {
-//				for (int i = 0; i < 8; i++)
-				{
-					dst[0] = dst[1] = _vm->gdi._C64Colors[(color >> 6) & 3];
-					dst[2] = dst[3] = _vm->gdi._C64Colors[(color >> 4) & 3];
-					dst[4] = dst[5] = _vm->gdi._C64Colors[(color >> 2) & 3];
-					dst[6] = dst[7] = _vm->gdi._C64Colors[(color >> 0) & 3];
-					dst += _outwidth;
-					y++;
-				}
+				if ((color >> 6) & 3) dst[0] = dst[1] = _vm->gdi._C64Colors[(color >> 6) & 3];
+				if ((color >> 4) & 3) dst[2] = dst[3] = _vm->gdi._C64Colors[(color >> 4) & 3];
+				if ((color >> 2) & 3) dst[4] = dst[5] = _vm->gdi._C64Colors[(color >> 2) & 3];
+				if ((color >> 0) & 3) dst[6] = dst[7] = _vm->gdi._C64Colors[(color >> 0) & 3];
+				dst += _outwidth;
+				y++;
 				if (y >= _height) {
 					y = 0;
-					dst = v1.destptr + (x << 3);
+					v1.destptr += 8;
+					dst = v1.destptr;
 				}
 			}
 		} else {
 			len = color;
 			while (len--) {
 				color = *src++;
-//				for (int i = 0; i < 8; i++)
-				{
-					dst[0] = dst[1] = _vm->gdi._C64Colors[(color >> 6) & 3];
-					dst[2] = dst[3] = _vm->gdi._C64Colors[(color >> 4) & 3];
-					dst[4] = dst[5] = _vm->gdi._C64Colors[(color >> 2) & 3];
-					dst[6] = dst[7] = _vm->gdi._C64Colors[(color >> 0) & 3];
-					dst += _outwidth;
-					y++;
-				}
+				if ((color >> 6) & 3) dst[0] = dst[1] = _vm->gdi._C64Colors[(color >> 6) & 3];
+				if ((color >> 4) & 3) dst[2] = dst[3] = _vm->gdi._C64Colors[(color >> 4) & 3];
+				if ((color >> 2) & 3) dst[4] = dst[5] = _vm->gdi._C64Colors[(color >> 2) & 3];
+				if ((color >> 0) & 3) dst[6] = dst[7] = _vm->gdi._C64Colors[(color >> 0) & 3];
+				dst += _outwidth;
+				y++;
 				if (y >= _height) {
 					y = 0;
-					dst = v1.destptr + (x << 3);
+					v1.destptr += 8;
+					dst = v1.destptr;
 				}
 			}
 		}
@@ -583,10 +580,10 @@
 			if (_vm->_version == 1) {
 				_width = _srcptr[0] * 8;
 				_height = _srcptr[1];
-				xmoveCur = _xmove + _srcptr[2] * 8;
-				ymoveCur = _ymove + _srcptr[3];
-				_xmove += _srcptr[4] * 8;
-				_ymove -= _srcptr[5];
+				xmoveCur = _xmove + (int8)_srcptr[2] * 8;
+				ymoveCur = _ymove - (int8)_srcptr[3];
+				_xmove += (int8)_srcptr[4] * 8;
+				_ymove -= (int8)_srcptr[5];
 				_srcptr += 6;
 			} else {
 				costumeInfo = (const CostumeInfo *)_srcptr;





More information about the Scummvm-git-logs mailing list