aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Kołodziejski2003-08-18 17:59:06 +0000
committerPaweł Kołodziejski2003-08-18 17:59:06 +0000
commit8141126e6e0d4fccfb7f992266b14618d00156d0 (patch)
tree21bce79ea718e9532f3d671ba71b0fbb78ba561e
parentc9b054462532325548d02ee01e147d2b3e991b40 (diff)
downloadscummvm-rg350-8141126e6e0d4fccfb7f992266b14618d00156d0.tar.gz
scummvm-rg350-8141126e6e0d4fccfb7f992266b14618d00156d0.tar.bz2
scummvm-rg350-8141126e6e0d4fccfb7f992266b14618d00156d0.zip
fixed y position of mask in v1 costume rendering
svn-id: r9767
-rw-r--r--scumm/costume.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/scumm/costume.cpp b/scumm/costume.cpp
index cf10e252b8..e72c495098 100644
--- a/scumm/costume.cpp
+++ b/scumm/costume.cpp
@@ -360,6 +360,7 @@ void CostumeRenderer::procC64(int actor) {
}
v1.skip_width >>= 3;
+ const byte *mask_ptr = v1.mask_ptr;
if (len)
goto StartPos;
@@ -376,7 +377,7 @@ void CostumeRenderer::procC64(int actor) {
color = *src++;
if (y < _outheight) {
-#define MASK_AT(xoff) (v1.mask_ptr && ((v1.mask_ptr[(v1.x+xoff) >> 3] | v1.mask_ptr[((v1.x+xoff) >> 3) + v1.imgbufoffs]) & revBitMask[(v1.x+xoff) & 7]))
+#define MASK_AT(xoff) (mask_ptr && ((mask_ptr[(v1.x+xoff) >> 3] | mask_ptr[((v1.x+xoff) >> 3) + v1.imgbufoffs]) & revBitMask[(v1.x+xoff) & 7]))
if (!_mirror) {
pcolor = (color >> 0) & 3; if (pcolor) { if (!MASK_AT(0)) dst[0] = palette[pcolor]; if (!MASK_AT(1)) dst[1] = palette[pcolor]; }
pcolor = (color >> 2) & 3; if (pcolor) { if (!MASK_AT(2)) dst[2] = palette[pcolor]; if (!MASK_AT(3)) dst[3] = palette[pcolor]; }
@@ -392,6 +393,7 @@ void CostumeRenderer::procC64(int actor) {
}
dst += _outwidth;
y++;
+ mask_ptr += _numStrips;
if (!--height) {
if (!--v1.skip_width)
return;
@@ -400,6 +402,7 @@ void CostumeRenderer::procC64(int actor) {
v1.x += 8 * v1.scaleXstep;
if (v1.x < 0 || v1.x >= _vm->_screenWidth)
return;
+ mask_ptr = v1.mask_ptr + (v1.x >> 3);
v1.destptr += 8 * v1.scaleXstep;
dst = v1.destptr;
}