diff --git a/engines/xeen/worldofxeen/clouds_cutscenes.cpp b/engines/xeen/worldofxeen/clouds_cutscenes.cpp index 1d578bdbea4..9c29ca73da9 100644 --- a/engines/xeen/worldofxeen/clouds_cutscenes.cpp +++ b/engines/xeen/worldofxeen/clouds_cutscenes.cpp @@ -26,12 +26,69 @@ namespace Xeen { bool CloudsCutscenes::showCloudsTitle() { - // TODO + EventsManager &events = *_vm->_events; + Screen &screen = *_vm->_screen; + Sound &sound = *_vm->_sound; + + // Initial logo display + screen.loadPalette("intro1.pal"); + screen.loadBackground("logobak.raw"); + screen.saveBackground(); + screen.update(); + screen.fadeIn(128); + + SpriteResource logo[2] = { + SpriteResource("logo.vga"), SpriteResource("logo1.vga") + }; + sound.playFX(1); + + for (int idx = 0; idx < 80; ++idx) { + screen.restoreBackground(); + logo[idx / 65].draw(screen, idx % 65); + screen.update(); + + switch (idx) { + case 37: + sound.playFX(0); + sound.playFX(53); + sound.playSound("fire.voc"); + break; + case 52: + case 60: + sound.playFX(3); + break; + case 64: + sound.playFX(2); + break; + case 66: + sound.playFX(52); + sound.playSound("meangro&.voc"); + break; + default: + break; + } + + WAIT(2); + } + + screen.restoreBackground(); + screen.update(); + WAIT(30); + + screen.fadeOut(8); + logo[0].clear(); + logo[1].clear(); + return true; } bool CloudsCutscenes::showCloudsIntro() { // TODO + EventsManager &events = *_vm->_events; + Sound &sound = *_vm->_sound; + sound.playSong("mm4theme.m"); + + events.wait(5000); return true; } diff --git a/engines/xeen/worldofxeen/worldofxeen.cpp b/engines/xeen/worldofxeen/worldofxeen.cpp index ccdbf8cf3b8..7f29249968e 100644 --- a/engines/xeen/worldofxeen/worldofxeen.cpp +++ b/engines/xeen/worldofxeen/worldofxeen.cpp @@ -40,7 +40,7 @@ void WorldOfXeenEngine::showIntro() { if (gDebugLevel == 0) return; - showDarkSideEnding(); + showCloudsTitle(); /* bool completed = showDarkSideTitle(); if (!_seenDarkSideIntro && completed)