aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2014-12-26 18:50:14 +1100
committerPaul Gilbert2014-12-26 18:50:14 +1100
commit1a6dd88713ff6a6994f9e4d69abf8e3c66538bb2 (patch)
treebe10484ac626ca7ae27ea1dc89efc9f2554735a0
parentd213db3dc1b24e281e03dc593f21925db8fcd10e (diff)
downloadscummvm-rg350-1a6dd88713ff6a6994f9e4d69abf8e3c66538bb2.tar.gz
scummvm-rg350-1a6dd88713ff6a6994f9e4d69abf8e3c66538bb2.tar.bz2
scummvm-rg350-1a6dd88713ff6a6994f9e4d69abf8e3c66538bb2.zip
XEEN: Fix error in vertMerge
-rw-r--r--engines/xeen/darkside/darkside_game.cpp3
-rw-r--r--engines/xeen/resources.cpp2
-rw-r--r--engines/xeen/screen.cpp2
3 files changed, 4 insertions, 3 deletions
diff --git a/engines/xeen/darkside/darkside_game.cpp b/engines/xeen/darkside/darkside_game.cpp
index a597ab2ce8..17a998eb41 100644
--- a/engines/xeen/darkside/darkside_game.cpp
+++ b/engines/xeen/darkside/darkside_game.cpp
@@ -60,6 +60,7 @@ void DarkSideEngine::darkSideIntro() {
bool breakFlag = false;
int nwcIndex = 0, nwcFrame = 0;
for (int idx = 0; idx < 55 && !shouldQuit() && !breakFlag; ++idx) {
+ // Render the next frame
_events->updateGameCounter();
_screen->vertMerge(0);
nwc[nwcIndex].draw(*_screen, nwcFrame, Common::Point(0, 0));
@@ -72,7 +73,7 @@ void DarkSideEngine::darkSideIntro() {
case 34:
case 44:
++nwcIndex;
- ++nwcFrame;
+ nwcFrame = 0;
break;
case 35:
_sound->proc2(voc[1]);
diff --git a/engines/xeen/resources.cpp b/engines/xeen/resources.cpp
index 4cc586f014..736f014a81 100644
--- a/engines/xeen/resources.cpp
+++ b/engines/xeen/resources.cpp
@@ -345,7 +345,7 @@ void SpriteResource::drawOffset(XSurface &dest, uint16 offset, const Common::Poi
}
}
- dest.addDirtyRect(Common::Rect(destPos.x, destPos.y,
+ dest.addDirtyRect(Common::Rect(destPos.x + xOffset, destPos.y + yOffset,
destPos.x + xOffset + width, destPos.y + yOffset + height));
}
diff --git a/engines/xeen/screen.cpp b/engines/xeen/screen.cpp
index 0c7df8b776..e390f16cdd 100644
--- a/engines/xeen/screen.cpp
+++ b/engines/xeen/screen.cpp
@@ -160,7 +160,7 @@ void Screen::vertMerge(int yp) {
Common::copy(srcP, srcP + SCREEN_WIDTH, destP);
}
- for (int y = yp; y < SCREEN_HEIGHT; ++y) {
+ for (int y = SCREEN_HEIGHT - yp; y < SCREEN_HEIGHT; ++y) {
const byte *srcP = (const byte *)_pages[1].getBasePtr(0, y);
byte *destP = (byte *)getBasePtr(0, y);
Common::copy(srcP, srcP + SCREEN_WIDTH, destP);