aboutsummaryrefslogtreecommitdiff
path: root/scumm/gfx.cpp
diff options
context:
space:
mode:
authorMax Horn2004-01-05 00:45:17 +0000
committerMax Horn2004-01-05 00:45:17 +0000
commit5a3aa023b66c444e7aabe0da92a934a78a655e5d (patch)
treec0143b6424fb16cb2dfaa6385ca814e182b1f2f9 /scumm/gfx.cpp
parent181bb0baa521066ef2a896e22083ede5a63ff8bb (diff)
downloadscummvm-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
Diffstat (limited to 'scumm/gfx.cpp')
-rw-r--r--scumm/gfx.cpp30
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);
}