aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2015-09-14 19:54:47 -0400
committerPaul Gilbert2015-09-14 19:54:47 -0400
commite9efe9ab9065d43dcd55dbcebeb1c9b959200c61 (patch)
tree4ee33d60c04cec95d032e7bf81e15d033ed92929 /engines
parentfc7df50ed0e81aa694c7d6dbd97dbd962943702b (diff)
downloadscummvm-rg350-e9efe9ab9065d43dcd55dbcebeb1c9b959200c61.tar.gz
scummvm-rg350-e9efe9ab9065d43dcd55dbcebeb1c9b959200c61.tar.bz2
scummvm-rg350-e9efe9ab9065d43dcd55dbcebeb1c9b959200c61.zip
SHERLOCK: 3DO: Fix introduction
Diffstat (limited to 'engines')
-rw-r--r--engines/sherlock/animation.cpp9
-rw-r--r--engines/sherlock/scalpel/scalpel.cpp12
2 files changed, 8 insertions, 13 deletions
diff --git a/engines/sherlock/animation.cpp b/engines/sherlock/animation.cpp
index 468d61a7b2..681e71d0f6 100644
--- a/engines/sherlock/animation.cpp
+++ b/engines/sherlock/animation.cpp
@@ -201,12 +201,9 @@ bool Animation::play3DO(const Common::String &filename, bool intro, int minDelay
// Draw the sprite. Note that we explicitly use the raw frame below, rather than the ImageFrame,
// since we don't want the offsets in the image file to be used, just the explicit position we specify
- if (!fadeActive) {
- screen.transBlitFrom(images[imageFrame]._frame, pt);
- } else {
- // Fade active, blit to backbuffer1
- screen._backBuffer1.transBlitFrom(images[imageFrame]._frame, pt);
- }
+ screen._backBuffer1.transBlitFrom(images[imageFrame]._frame, pt);
+ if (!fadeActive)
+ screen.slamArea(pt.x, pt.y, images[imageFrame]._frame.w, images[imageFrame]._frame.h);
} else {
// At this point, either the sprites for the frame has been complete, or there weren't any sprites
// at all to draw for the frame
diff --git a/engines/sherlock/scalpel/scalpel.cpp b/engines/sherlock/scalpel/scalpel.cpp
index a76b73e109..a169b905b9 100644
--- a/engines/sherlock/scalpel/scalpel.cpp
+++ b/engines/sherlock/scalpel/scalpel.cpp
@@ -714,8 +714,7 @@ bool ScalpelEngine::showCityCutscene3DO() {
}
if (finished) {
- screen._backBuffer1.blitFrom(*_screen); // save into backbuffer 1, used for fade
- screen._backBuffer2.blitFrom(*_screen); // save into backbuffer 2, for restoring later
+ screen._backBuffer2.blitFrom(screen._backBuffer1);
// "London, England"
ImageFile3DO titleImage_London("title2a.cel", kImageFile3DOType_Cel);
@@ -735,7 +734,8 @@ bool ScalpelEngine::showCityCutscene3DO() {
if (finished) {
// Restore screen
- _screen->blitFrom(_screen->_backBuffer2);
+ _screen->_backBuffer1.blitFrom(screen._backBuffer2);
+ _screen->blitFrom(screen._backBuffer1);
}
}
@@ -743,8 +743,6 @@ bool ScalpelEngine::showCityCutscene3DO() {
finished = _animation->play3DO("26open2", true, 1, false, 2);
if (finished) {
- screen._backBuffer1.blitFrom(screen); // save into backbuffer 1, used for fade
-
// "Sherlock Holmes" (title)
ImageFile3DO titleImage_SherlockHolmesTitle("title1ab.cel", kImageFile3DOType_Cel);
screen._backBuffer1.transBlitFrom(titleImage_SherlockHolmesTitle[0]._frame, Common::Point(34, 5));
@@ -931,7 +929,7 @@ bool ScalpelEngine::showOfficeCutscene3DO() {
// TODO: Brighten the image, possibly by doing a partial fade
// to white.
- _screen->_backBuffer1.blitFrom(*_screen);
+ _screen->_backBuffer2.blitFrom(_screen->_backBuffer1);
for (int nr = 1; finished && nr <= 4; nr++) {
char filename[15];
@@ -939,7 +937,7 @@ bool ScalpelEngine::showOfficeCutscene3DO() {
ImageFile3DO *creditsImage = new ImageFile3DO(filename, kImageFile3DOType_Cel);
ImageFrame *creditsFrame = &(*creditsImage)[0];
for (int i = 0; finished && i < 200 + creditsFrame->_height; i++) {
- _screen->blitFrom(_screen->_backBuffer1);
+ _screen->blitFrom(_screen->_backBuffer2);
_screen->transBlitFrom(creditsFrame->_frame, Common::Point((320 - creditsFrame->_width) / 2, 200 - i));
if (!_events->delay(70, true))
finished = false;