aboutsummaryrefslogtreecommitdiff
path: root/engines/xeen/worldofxeen/darkside_cutscenes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/xeen/worldofxeen/darkside_cutscenes.cpp')
-rw-r--r--engines/xeen/worldofxeen/darkside_cutscenes.cpp78
1 files changed, 59 insertions, 19 deletions
diff --git a/engines/xeen/worldofxeen/darkside_cutscenes.cpp b/engines/xeen/worldofxeen/darkside_cutscenes.cpp
index a30f354d67..0c806dec41 100644
--- a/engines/xeen/worldofxeen/darkside_cutscenes.cpp
+++ b/engines/xeen/worldofxeen/darkside_cutscenes.cpp
@@ -81,7 +81,7 @@ bool DarkSideCutscenes::showDarkSideTitle() {
++nwcFrame;
}
- if (events.wait(2, true))
+ if (events.wait(2))
return false;
}
@@ -112,14 +112,14 @@ bool DarkSideCutscenes::showDarkSideTitle() {
break;
}
- if (events.wait(2, true))
+ if (events.wait(2))
return false;
}
if (_vm->shouldQuit())
return false;
// Pause for a bit
- if (events.wait(10, true))
+ if (events.wait(10))
return false;
sound.setMusicVolume(95);
@@ -130,7 +130,7 @@ bool DarkSideCutscenes::showDarkSideTitle() {
screen.fadeIn(4);
events.updateGameCounter();
- events.wait(60, true);
+ events.wait(60);
return true;
}
@@ -149,6 +149,7 @@ bool DarkSideCutscenes::showDarkSideIntro() {
};
screen.fadeOut(8);
+ screen.loadPalette("dark.pal");
screen.loadBackground("pyramid2.raw");
screen.loadPage(0);
screen.loadPage(1);
@@ -158,14 +159,14 @@ bool DarkSideCutscenes::showDarkSideIntro() {
SpriteResource sprites[3] = {
SpriteResource("title.int"), SpriteResource("pyratop.int"), SpriteResource("pyramid.int")
};
- File voc[2];
- voc[0].open("pharoh1a.voc");
- voc[1].open("pharoh1b.voc");
screen.vertMerge(SCREEN_HEIGHT);
screen.loadPage(0);
screen.loadPage(1);
+ // Play the intro music
+ sound.playSong("bigtheme.m");
+
// Show Might and Magic Darkside of Xeen title, and gradualy scroll
// the background vertically down to show the Pharoah's base
int yp = 0;
@@ -196,7 +197,7 @@ bool DarkSideCutscenes::showDarkSideIntro() {
yCtr -= timeExpired;
yp = MIN((uint)(yp + timeExpired), (uint)200);
- if (events.wait(1, true))
+ if (events.wait(1))
return false;
if (fadeFlag) {
@@ -211,7 +212,8 @@ bool DarkSideCutscenes::showDarkSideIntro() {
screen.freePages();
events.updateGameCounter();
- events.wait(30, true);
+ if (events.wait(30))
+ return false;
// Zoom into the Pharoah's base closeup view
for (int idx = 14; idx >= 0; --idx) {
@@ -222,36 +224,74 @@ bool DarkSideCutscenes::showDarkSideIntro() {
if (idx == 2)
sound.setMusicVolume(48);
- if (events.wait(2, true))
+ if (events.wait(2))
return false;
}
- // TODO: More
- sound.playSong(voc[0]);
- sound.playSong(voc[1]);
-
return true;
}
bool DarkSideCutscenes::showDarkSideEnding() {
EventsManager &events = *_vm->_events;
Screen &screen = *_vm->_screen;
-// Sound &sound = *_vm->_sound;
+ Sound &sound = *_vm->_sound;
- //Voc voc("ido2.voc");
- // Music newBright("newbrigh.m");
+ File ido2("ido2.voc");
SpriteResource box("box.vga");
-// newBright.play();
+ sound.playSong("dngon3.m");
screen.loadBackground("scene1.raw");
screen.loadPalette("endgame.pal");
screen.update();
screen.fadeIn(4);
events.updateGameCounter();
+ if (events.wait(30))
+ return false;
+
+ screen.loadBackground("scene2-b.raw");
+ screen.update();
+ screen.saveBackground();
+
+ SpriteResource faceEnd("face.end");
+ events.updateGameCounter();
+ screen.restoreBackground();
+ faceEnd.draw(screen, 0, Common::Point(29, 76), SPRFLAG_4000);
+ screen.update();
+
+ screen.fadeIn(4);
+ if (events.wait(1, false))
+ return false;
+
+ _subtitles.load("special.bin");
+ recordTime();
+ resetSubtitles();
+
+ // Alamar stands up
+ for (int idx = 74; idx > 20; idx -= 2) {
+ if (idx == 60)
+ sound.songCommand(207);
+ else if (idx == 22)
+ sound.stopSong();
+
+ events.updateGameCounter();
+ screen.restoreBackground();
+ faceEnd.draw(screen, 0, Common::Point(29, idx), SPRFLAG_4000);
+ screen.update();
- // TODO
+ if (events.wait(2))
+ return false;
+ }
+
+ // Alamar says "Come to me"
+ sound.playSound("come2.voc");
+ if (!subtitlesWait(27))
+ return false;
+
+ // TODO
events.wait(5000);
+
+ freeSubtitles();
return true;
}