diff options
author | Max Horn | 2004-09-26 18:09:48 +0000 |
---|---|---|
committer | Max Horn | 2004-09-26 18:09:48 +0000 |
commit | bc5407c15462b0be2bec522805f792295053a01f (patch) | |
tree | 5b9e5ba8c51e0a258bbb818ecf464ead89ef3949 | |
parent | b60c95be7caffbc43d0656c9a441c46bbe1ddcc9 (diff) | |
download | scummvm-rg350-bc5407c15462b0be2bec522805f792295053a01f.tar.gz scummvm-rg350-bc5407c15462b0be2bec522805f792295053a01f.tar.bz2 scummvm-rg350-bc5407c15462b0be2bec522805f792295053a01f.zip |
fix actor masking with V7_SMOOTH_SCROLLING_HACK enabled
svn-id: r15301
-rw-r--r-- | scumm/akos.cpp | 12 | ||||
-rw-r--r-- | scumm/gfx.cpp | 3 |
2 files changed, 7 insertions, 8 deletions
diff --git a/scumm/akos.cpp b/scumm/akos.cpp index 66396f1a86..c866dc4969 100644 --- a/scumm/akos.cpp +++ b/scumm/akos.cpp @@ -511,8 +511,8 @@ void AkosRenderer::codec1_genericDecode() { height = _height; scaleytab = &v1.scaletable[v1.scaleYindex]; - maskbit = revBitMask[v1.x & 7]; - mask = v1.mask_ptr + v1.x / 8; + maskbit = revBitMask[(v1.x + _vm->virtscr[0].xstart) & 7]; + mask = _vm->getMaskBuffer(v1.x, v1.y, _zbuf); if (len) goto StartPos; @@ -532,7 +532,7 @@ void AkosRenderer::codec1_genericDecode() { return; } } else { - masked = (y < 0 || y >= _outheight) || (v1.mask_ptr && (*mask & maskbit)); + masked = (y < 0 || y >= _outheight) || (*mask & maskbit); if (color && !masked && !skip_column) { pcolor = palette[color]; @@ -566,14 +566,14 @@ void AkosRenderer::codec1_genericDecode() { v1.x += v1.scaleXstep; if (v1.x < 0 || v1.x >= _outwidth) return; - maskbit = revBitMask[v1.x & 7]; + maskbit = revBitMask[(v1.x + _vm->virtscr[0].xstart) & 7]; v1.destptr += v1.scaleXstep; skip_column = false; } else skip_column = true; v1.scaleXindex += v1.scaleXstep; dst = v1.destptr; - mask = v1.mask_ptr + v1.x / 8; + mask = _vm->getMaskBuffer(v1.x, v1.y, _zbuf); } StartPos:; } while (--len); @@ -928,8 +928,6 @@ byte AkosRenderer::codec1(int xmoveCur, int ymoveCur) { v1.destptr = _outptr + v1.y * _outwidth + v1.x; - v1.mask_ptr = _vm->getMaskBuffer(0, v1.y, _zbuf); - codec1_genericDecode(); return drawFlag; diff --git a/scumm/gfx.cpp b/scumm/gfx.cpp index 0b5a5753ad..da4dd2ce64 100644 --- a/scumm/gfx.cpp +++ b/scumm/gfx.cpp @@ -328,6 +328,7 @@ void ScummEngine::markRectAsDirty(VirtScreenNumber virt, int left, int right, in // in V7_SMOOTH_SCROLLING_HACK mode. Right now I have no idea // why this hack is needed, but for now it works well enough. lp = left / 8 + _screenStartStrip - 1; + //lp = (left + vs->xstart) / 8; } else #endif lp = left / 8 + _screenStartStrip; @@ -756,7 +757,7 @@ void CharsetRenderer::clearCharsetMask() { } byte *ScummEngine::getMaskBuffer(int x, int y, int z) { - return gdi.getMaskBuffer(x / 8, y, z) + _screenStartStrip; + return gdi.getMaskBuffer((x + virtscr[0].xstart) / 8, y, z); } byte *Gdi::getMaskBuffer(int x, int y, int z) { |