diff options
-rw-r--r-- | scumm/gfx.cpp | 19 | ||||
-rw-r--r-- | scumm/scumm.cpp | 19 |
2 files changed, 18 insertions, 20 deletions
diff --git a/scumm/gfx.cpp b/scumm/gfx.cpp index 4aff8bbaa0..09ddda5d73 100644 --- a/scumm/gfx.cpp +++ b/scumm/gfx.cpp @@ -2743,10 +2743,27 @@ void ScummEngine::fadeOut(int effect) { if (!(_features & GF_NEW_CAMERA)) camera._last.x = camera._cur.x; + if (_switchRoomEffect >= 130 && _switchRoomEffect <= 133) { + // We're going to use scrollEffect(), so we'll need a copy of + // the current VirtScreen zero. + + free(_scrollBuffer); + _scrollBuffer = (byte *) malloc(vs->h * vs->w); + + byte *src = vs->getPixels(0, 0); + byte *dst = _scrollBuffer; + + for (int y = 0; y < vs->h; y++) { + memcpy(dst, src, vs->w); + src += vs->pitch; + dst += vs->w; + } + } + + if (_screenEffectFlag && effect != 0) { // Fill screen 0 with black - memset(vs->getPixels(0, 0), 0, vs->pitch * vs->h); // Fade to black with the specified effect, if any. diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp index eb92cbeb7b..f09f410c81 100644 --- a/scumm/scumm.cpp +++ b/scumm/scumm.cpp @@ -2328,25 +2328,6 @@ void ScummEngine::startScene(int room, Actor *a, int objectNr) { runExitScript(); - if (_switchRoomEffect >= 130 && _switchRoomEffect <= 133) { - // We're going to use scrollEffect(), so we'll need a copy of - // the current VirtScreen zero. - - VirtScreen *vs = &virtscr[0]; - - free(_scrollBuffer); - _scrollBuffer = (byte *) malloc(vs->h * vs->w); - - byte *src = vs->getPixels(0, 0); - byte *dst = _scrollBuffer; - - for (int y = 0; y < vs->h; y++) { - memcpy(dst, src, vs->w); - src += vs->pitch; - dst += vs->w; - } - } - killScriptsAndResources(); clearEnqueue(); if (_version >= 4 && _heversion <= 60) |