diff options
author | Max Horn | 2004-01-05 00:45:17 +0000 |
---|---|---|
committer | Max Horn | 2004-01-05 00:45:17 +0000 |
commit | 5a3aa023b66c444e7aabe0da92a934a78a655e5d (patch) | |
tree | c0143b6424fb16cb2dfaa6385ca814e182b1f2f9 | |
parent | 181bb0baa521066ef2a896e22083ede5a63ff8bb (diff) | |
download | scummvm-rg350-5a3aa023b66c444e7aabe0da92a934a78a655e5d.tar.gz scummvm-rg350-5a3aa023b66c444e7aabe0da92a934a78a655e5d.tar.bz2 scummvm-rg350-5a3aa023b66c444e7aabe0da92a934a78a655e5d.zip |
'proper' fix for V1 MM problem; added a FIXME
svn-id: r12149
-rw-r--r-- | scumm/gfx.cpp | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/scumm/gfx.cpp b/scumm/gfx.cpp index 433c43034a..93511842e9 100644 --- a/scumm/gfx.cpp +++ b/scumm/gfx.cpp @@ -139,7 +139,7 @@ static const TransitionEffect transitionEffects[5] = { // Inverse iris effect, specially tailored for V1/V2 games { - 8, // Number of iterations + 9, // Number of iterations { -1, -1, 1, -1, -1, 1, 1, 1, @@ -370,8 +370,8 @@ void Gdi::updateDirtyScreen(VirtScreen *vs) { for (i = 0; i < _numStrips; i++) { if (vs->bdirty[i]) { - const int bottom = vs->bdirty[i]; const int top = vs->tdirty[i]; + const int bottom = vs->bdirty[i]; vs->tdirty[i] = vs->height; vs->bdirty[i] = 0; if (i != (_numStrips - 1) && vs->bdirty[i + 1] == bottom && vs->tdirty[i + 1] == top) { @@ -381,6 +381,11 @@ void Gdi::updateDirtyScreen(VirtScreen *vs) { continue; } // handle vertically scrolling rooms + // FIXME: This is an evil hack; it cures some of the symptoms, but + // doesn't solve the core problem. Apparently some other parts of the + // code aren't properly aware of vertical scrolling. As a result, + // this hack is needed, but also sometimes actors leave traces when + // scrolling occurs, and other bad things happen. if (_vm->_features & GF_NEW_CAMERA) drawStripToScreen(vs, start * 8, w, 0, vs->height); else @@ -2273,16 +2278,7 @@ void ScummEngine::transitionEffect(int a) { while (l <= r) { if (l >= 0 && l < gdi._numStrips && t < bottom) { virtscr[0].tdirty[l] = t * 8; -/* - //HACK: this is bad place of this hack - //it fix redraw last 8 lines in room gfx layer - //this is only for maniac classic version becouse that game - //has bigger height of room gfx layer - if ((_version == 1) && (_gameId == GID_MANIAC)) - virtscr[0].bdirty[l] = (b + 2) * 8; - else -*/ - virtscr[0].bdirty[l] = (b + 1) * 8; + virtscr[0].bdirty[l] = (b + 1) * 8; } l++; } @@ -2294,15 +2290,7 @@ void ScummEngine::transitionEffect(int a) { if (t < 0) t = 0; virtscr[0].tdirty[l] = t * 8; -/* //HACK: this is bad place of this hack - //it fix redraw last 8 lines in room gfx layer - //this is only for maniac classic version becouse that game - //has bigger height of room gfx layer - if ((_version == 1) && (_gameId == GID_MANIAC)) - virtscr[0].bdirty[l] = (b + 2) * 8; - else -*/ - virtscr[0].bdirty[l] = (b + 1) * 8; + virtscr[0].bdirty[l] = (b + 1) * 8; } updateDirtyScreen(kMainVirtScreen); } |