[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