void KyraEngine_v1::snd_playWanderScoreViaMap(int command, int restart) { if (restart) _lastMusicCommand = -1; // no track mapping given // so don't do anything here if (!_trackMap || !_trackMapSize) return; //if (!_disableSound) { // XXX //} if (_flags.platform == Common::kPlatformPC || _flags.platform == Common::kPlatformMacintosh) { assert(command*2+1 < _trackMapSize); if (_curMusicTheme != _trackMap[command*2]) { if (_trackMap[command*2] != -1 && _trackMap[command*2] != -2) snd_playTheme(_trackMap[command*2], -1); } if (command != 1) { if (_lastMusicCommand != command) { _sound->haltTrack(); _sound->playTrack(_trackMap[command*2+1]); } } else { _sound->beginFadeOut(); } } else if (_flags.platform == Common::kPlatformFMTowns || _flags.platform == Common::kPlatformPC98) { if (command == -1) { _sound->haltTrack(); } else { assert(command*2+1 < _trackMapSize); if (_trackMap[command*2] != -2 && command != _lastMusicCommand) { _sound->haltTrack(); _sound->playTrack(command); } } } else if (_flags.platform == Common::kPlatformAmiga) { if (_curMusicTheme != 1) snd_playTheme(1, -1); assert(command < _trackMapSize); if (_trackMap[_lastMusicCommand] != _trackMap[command]) _sound->playTrack(_trackMap[command]); } _lastMusicCommand = command; }
void KyraEngine_LoK::startup() { static const uint8 colorMap[] = { 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 0 }; _screen->setTextColorMap(colorMap); _sound->selectAudioResourceSet(kMusicIngame); if (_flags.platform == Common::kPlatformPC98) _sound->loadSoundFile("SE.DAT"); else _sound->loadSoundFile(0); // _screen->setFont(Screen::FID_6_FNT); _screen->setAnimBlockPtr(3750); memset(_sceneAnimTable, 0, sizeof(_sceneAnimTable)); loadMouseShapes(); _currentCharacter = &_characterList[0]; for (int i = 1; i < 5; ++i) _animator->setCharacterDefaultFrame(i); for (int i = 5; i <= 10; ++i) setCharactersPositions(i); _animator->setCharactersHeight(); resetBrandonPoisonFlags(); _screen->_curPage = 0; // XXX for (int i = 0; i < 12; ++i) { int size = _screen->getRectSize(3, 24); _shapes[361 + i] = new byte[size]; } _itemBkgBackUp[0] = new uint8[_screen->getRectSize(3, 24)]; memset(_itemBkgBackUp[0], 0, _screen->getRectSize(3, 24)); _itemBkgBackUp[1] = new uint8[_screen->getRectSize(4, 32)]; memset(_itemBkgBackUp[1], 0, _screen->getRectSize(4, 32)); for (int i = 0; i < _roomTableSize; ++i) { for (int item = 0; item < 12; ++item) { _roomTable[i].itemsTable[item] = kItemNone; _roomTable[i].itemsXPos[item] = 0xFFFF; _roomTable[i].itemsYPos[item] = 0xFF; _roomTable[i].needInit[item] = 0; } } loadCharacterShapes(); loadSpecialEffectShapes(); loadItems(); loadButtonShapes(); initMainButtonList(); loadMainScreen(); _screen->loadPalette("PALETTE.COL", _screen->getPalette(0)); if (_flags.platform == Common::kPlatformAmiga) _screen->loadPaletteTable("PALETTE.DAT", 6); // XXX _animator->initAnimStateList(); setCharactersInDefaultScene(); if (!_emc->load("_STARTUP.EMC", &_npcScriptData, &_opcodes)) error("Could not load \"_STARTUP.EMC\" script"); _emc->init(&_scriptMain, &_npcScriptData); if (!_emc->start(&_scriptMain, 0)) error("Could not start script function 0 of script \"_STARTUP.EMC\""); while (_emc->isValid(&_scriptMain)) _emc->run(&_scriptMain); _emc->unload(&_npcScriptData); if (!_emc->load("_NPC.EMC", &_npcScriptData, &_opcodes)) error("Could not load \"_NPC.EMC\" script"); snd_playTheme(1, -1); if (_gameToLoad == -1) { enterNewScene(_currentCharacter->sceneId, _currentCharacter->facing, 0, 0, 1); if (_abortIntroFlag && _skipIntroFlag && saveFileLoadable(0)) { _menuDirectlyToLoad = true; _screen->setMouseCursor(1, 1, _shapes[0]); _screen->showMouse(); _gui->buttonMenuCallback(0); _menuDirectlyToLoad = false; } else if (!shouldQuit()) { saveGameStateIntern(0, "New game", 0); } } else { _screen->setFont(_flags.lang == Common::JA_JPN ? Screen::FID_SJIS_FNT : Screen::FID_8_FNT); loadGameStateCheck(_gameToLoad); _gameToLoad = -1; } }