aboutsummaryrefslogtreecommitdiff
path: root/engines/mohawk/myst_stacks/intro.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mohawk/myst_stacks/intro.cpp')
-rw-r--r--engines/mohawk/myst_stacks/intro.cpp68
1 files changed, 8 insertions, 60 deletions
diff --git a/engines/mohawk/myst_stacks/intro.cpp b/engines/mohawk/myst_stacks/intro.cpp
index a8b30492e4..7733fd9f5a 100644
--- a/engines/mohawk/myst_stacks/intro.cpp
+++ b/engines/mohawk/myst_stacks/intro.cpp
@@ -67,7 +67,10 @@ void MystScriptParser_Intro::runPersistentScripts() {
uint16 MystScriptParser_Intro::getVar(uint16 var) {
switch(var) {
case 0:
- return _vm->_gameState->_globals.currentAge;
+ if (_globals.currentAge == 9 || _globals.currentAge == 10)
+ return 2;
+ else
+ return _globals.currentAge;
default:
return MystScriptParser::getVar(var);
}
@@ -77,68 +80,13 @@ void MystScriptParser_Intro::o_useLinkBook(uint16 op, uint16 var, uint16 argc, u
// Hard coded SoundId valid only for Intro Stack.
// Other stacks use Opcode 40, which takes SoundId values as arguments.
const uint16 soundIdLinkSrc = 5;
+ const uint16 soundIdLinkDst[] = { 2282, 3029, 6396, 7122, 3137, 0, 9038, 5134, 0, 4739, 4741 };
debugC(kDebugScript, "Opcode %d: o_useLinkBook", op);
debugC(kDebugScript, "\tvar: %d", var);
- // TODO: Merge with changeStack (Opcode 40) Implementation?
- if (getVar(var) == 5 || getVar(var) > 7) {
- // TODO: Dead Book i.e. Released Sirrus/Achenar
- } else {
- // Play Linking Sound, blocking...
- _vm->_sound->stopSound();
- Audio::SoundHandle *handle = _vm->_sound->replaceSound(soundIdLinkSrc);
- while (_vm->_mixer->isSoundHandleActive(*handle))
- _vm->_system->delayMillis(10);
-
- // Play Flyby Entry Movie on Masterpiece Edition. The Macintosh version is currently hooked
- // up to the Cinepak versions of the video (the 'c' suffix) until the SVQ1 decoder is completed.
- if ((_vm->getFeatures() & GF_ME)) {
- switch (_stackMap[getVar(var)]) {
- case kSeleniticStack:
- if (_vm->getPlatform() == Common::kPlatformMacintosh)
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("FLY_SEc", kMasterpieceOnly));
- else
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("selenitic flyby", kMasterpieceOnly));
- break;
- case kStoneshipStack:
- if (_vm->getPlatform() == Common::kPlatformMacintosh)
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("FLY_STc", kMasterpieceOnly));
- else
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("stoneship flyby", kMasterpieceOnly));
- break;
- // Myst Flyby Movie not used in Original Masterpiece Edition Engine
- case kMystStack:
- if (_vm->_tweaksEnabled) {
- if (_vm->getPlatform() == Common::kPlatformMacintosh)
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("FLY_MYc", kMasterpieceOnly));
- else
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("myst flyby", kMasterpieceOnly));
- }
- break;
- case kMechanicalStack:
- if (_vm->getPlatform() == Common::kPlatformMacintosh)
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("FLY_MEc", kMasterpieceOnly));
- else
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("mech age flyby", kMasterpieceOnly));
- break;
- case kChannelwoodStack:
- if (_vm->getPlatform() == Common::kPlatformMacintosh)
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("FLY_CHc", kMasterpieceOnly));
- else
- _vm->_video->playMovieCentered(_vm->wrapMovieFilename("channelwood flyby", kMasterpieceOnly));
- break;
- default:
- break;
- }
- }
-
- uint16 varValue = getVar(var);
- _vm->changeToStack(_stackMap[varValue]);
- _vm->changeToCard(_startCard[varValue], true);
-
- // TODO: No soundIdLinkDst for Opcode 100 link? Check Original.
- }
+ // Change to dest stack
+ _vm->changeToStack(_stackMap[_globals.currentAge], _startCard[_globals.currentAge], soundIdLinkSrc, soundIdLinkDst[_globals.currentAge]);
}
void MystScriptParser_Intro::o_playIntroMovies(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
@@ -167,7 +115,7 @@ void MystScriptParser_Intro::o_playIntroMovies(uint16 op, uint16 var, uint16 arg
_vm->_video->playMovieCentered(_vm->wrapMovieFilename("intro", kIntroStack));
}
- _vm->changeToCard(_vm->getCurCard() + 1, true);
+ _vm->changeToCard(2, true);
}
void MystScriptParser_Intro::opcode_201(uint16 op, uint16 var, uint16 argc, uint16 *argv) {