From f19e2019b8e86f9fe4c95296428a7b31417666ac Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Thu, 7 Apr 2011 01:00:41 +0200 Subject: KYRA: Cleanup background music looping of Kyra3. --- engines/kyra/animator_mr.cpp | 1 - engines/kyra/gui_mr.cpp | 14 ------------ engines/kyra/gui_mr.h | 2 -- engines/kyra/kyra_mr.cpp | 54 +------------------------------------------- engines/kyra/kyra_mr.h | 1 - engines/kyra/scene_mr.cpp | 50 +++------------------------------------- engines/kyra/script_mr.cpp | 6 ----- engines/kyra/text_mr.cpp | 4 +--- 8 files changed, 5 insertions(+), 127 deletions(-) (limited to 'engines') diff --git a/engines/kyra/animator_mr.cpp b/engines/kyra/animator_mr.cpp index 12f1061432..e6daba7aeb 100644 --- a/engines/kyra/animator_mr.cpp +++ b/engines/kyra/animator_mr.cpp @@ -336,7 +336,6 @@ void KyraEngine_MR::setupSceneAnimObject(int animId, uint16 flags, int x, int y, if (flags & 8) { _sceneAnimMovie[animId]->open(filename, 1, 0); - musicUpdate(0); if (_sceneAnimMovie[animId]->opened()) { anim.wsaFlag = 1; if (x2 == -1) diff --git a/engines/kyra/gui_mr.cpp b/engines/kyra/gui_mr.cpp index a04ec49324..6bdecfc3b8 100644 --- a/engines/kyra/gui_mr.cpp +++ b/engines/kyra/gui_mr.cpp @@ -830,8 +830,6 @@ void KyraEngine_MR::processAlbum() { checkInput(buttonList); removeInputTop(); - musicUpdate(0); - if (_album.curPage != _album.nextPage) { int oldPage = _album.curPage; _album.curPage = _album.nextPage; @@ -1085,11 +1083,6 @@ void GUI_MR::flagButtonDisable(Button *button) { } } -void GUI_MR::getInput() { - _vm->musicUpdate(0); - GUI_v2::getInput(); -} - const char *GUI_MR::getMenuTitle(const Menu &menu) { if (!menu.menuNameId) return 0; @@ -1173,8 +1166,6 @@ int GUI_MR::quitGame(Button *caller) { int GUI_MR::optionsButton(Button *button) { PauseTimer pause(*_vm->_timer); - _vm->musicUpdate(0); - _screen->hideMouse(); updateButton(&_vm->_mainButtonData[0]); _screen->showMouse(); @@ -1200,7 +1191,6 @@ int GUI_MR::optionsButton(Button *button) { int oldHandItem = _vm->_itemInHand; _screen->setMouseCursor(0, 0, _vm->getShapePtr(0)); - _vm->musicUpdate(0); _displayMenu = true; for (int i = 0; i < 4; ++i) { @@ -1226,8 +1216,6 @@ int GUI_MR::optionsButton(Button *button) { _currentMenu = &_mainMenu; - _vm->musicUpdate(0); - if (_vm->_menuDirectlyToLoad) { backUpPage1(_vm->_screenBuffer); @@ -1256,7 +1244,6 @@ int GUI_MR::optionsButton(Button *button) { _isDeathMenu = false; } - _vm->musicUpdate(0); backUpPage1(_vm->_screenBuffer); initMenu(*_currentMenu); _madeSave = false; @@ -1407,7 +1394,6 @@ int GUI_MR::gameOptions(Button *caller) { } void GUI_MR::setupOptionsButtons() { - _vm->musicUpdate(0); if (_vm->_configWalkspeed == 3) _gameOptions.item[0].itemId = 28; else diff --git a/engines/kyra/gui_mr.h b/engines/kyra/gui_mr.h index 89aaa447d1..b104626db7 100644 --- a/engines/kyra/gui_mr.h +++ b/engines/kyra/gui_mr.h @@ -50,8 +50,6 @@ public: void createScreenThumbnail(Graphics::Surface &dst); private: - void getInput(); - const char *getMenuTitle(const Menu &menu); const char *getMenuItemTitle(const MenuItem &menuItem); const char *getMenuItemLabel(const MenuItem &menuItem); diff --git a/engines/kyra/kyra_mr.cpp b/engines/kyra/kyra_mr.cpp index b863ef5725..2c948182c0 100644 --- a/engines/kyra/kyra_mr.cpp +++ b/engines/kyra/kyra_mr.cpp @@ -428,7 +428,7 @@ void KyraEngine_MR::snd_playWanderScoreViaMap(int track, int force) { char file[13]; sprintf(file, "%s", _soundList[track]); - _musicSoundChannel = _soundDigital->playSound(file, 0xFF, Audio::Mixer::kMusicSoundType); + _musicSoundChannel = _soundDigital->playSound(file, 0xFF, Audio::Mixer::kMusicSoundType, true); } _lastMusicCommand = track; @@ -442,31 +442,6 @@ void KyraEngine_MR::stopMusicTrack() { _musicSoundChannel = -1; } -int KyraEngine_MR::musicUpdate(int forceRestart) { - static uint32 mTimer = 0; - static uint16 lock = 0; - - if (ABS(_system->getMillis() - mTimer) > (int)(0x0F * _tickLength)) - mTimer = _system->getMillis(); - - if (_system->getMillis() < mTimer && !forceRestart) - return 1; - - if (!lock) { - lock = 1; - if (_musicSoundChannel >= 0) { - if (!_soundDigital->isPlaying(_musicSoundChannel)) { - if (_lastMusicCommand != -1) - snd_playWanderScoreViaMap(_lastMusicCommand, 1); - } - } - lock = 0; - mTimer = _system->getMillis() + 0x0F * _tickLength; - } - - return 1; -} - void KyraEngine_MR::fadeOutMusic(int ticks) { if (_musicSoundChannel >= 0) { _fadeOutMusicChannel = _musicSoundChannel; @@ -550,11 +525,8 @@ void KyraEngine_MR::startup() { assert(_album.leftPage.wsa); _album.rightPage.wsa = new WSAMovie_v2(this); assert(_album.rightPage.wsa); - musicUpdate(0); _gamePlayBuffer = new uint8[64000]; - musicUpdate(0); - musicUpdate(0); _interface = new uint8[17920]; _interfaceCommandLine = new uint8[3840]; @@ -562,17 +534,11 @@ void KyraEngine_MR::startup() { _screen->setFont(Screen::FID_8_FNT); _stringBuffer = new char[500]; - musicUpdate(0); allocAnimObjects(1, 16, 50); - musicUpdate(0); - memset(_sceneShapes, 0, sizeof(_sceneShapes)); _screenBuffer = new uint8[64000]; - musicUpdate(0); - musicUpdate(0); - if (!loadLanguageFile("ITEMS.", _itemFile)) error("Couldn't load ITEMS"); if (!loadLanguageFile("SCORE.", _scoreFile)) @@ -586,13 +552,10 @@ void KyraEngine_MR::startup() { if (!loadLanguageFile("_ACTOR.", _actorFile)) error("couldn't load _ACTOR"); - musicUpdate(0); openTalkFile(0); - musicUpdate(0); _currentTalkFile = 0; openTalkFile(1); loadCostPal(); - musicUpdate(0); for (int i = 0; i < 16; ++i) { _sceneAnims[i].flags = 0; @@ -607,30 +570,24 @@ void KyraEngine_MR::startup() { for (int i = 0; i < 88; ++i) _talkObjectList[i].sceneId = 0xFF; - musicUpdate(0); _gfxBackUpRect = new uint8[_screen->getRectSize(32, 32)]; initItemList(50); resetItemList(); loadShadowShape(); - musicUpdate(0); loadExtrasShapes(); - musicUpdate(0); _characterShapeFile = 0; loadCharacterShapes(_characterShapeFile); updateMalcolmShapes(); - musicUpdate(0); initMainButtonList(true); loadButtonShapes(); loadInterfaceShapes(); - musicUpdate(0); _screen->loadPalette("PALETTE.COL", _screen->getPalette(0)); _paletteOverlay = new uint8[256]; _screen->generateOverlay(_screen->getPalette(0), _paletteOverlay, 0xF0, 0x19); loadInterface(); - musicUpdate(0); clearAnimObjects(); @@ -640,8 +597,6 @@ void KyraEngine_MR::startup() { _scoreMax += _scoreTable[i]; } - musicUpdate(0); - memset(_newSceneDlgState, 0, sizeof(_newSceneDlgState)); memset(_conversationState, -1, sizeof(_conversationState)); @@ -650,7 +605,6 @@ void KyraEngine_MR::startup() { memset(_sceneList, 0, sizeof(SceneDesc)*98); _sceneListSize = 98; - musicUpdate(0); runStartupScript(1, 0); _res->exists("MOODOMTR.WSA", true); _invWsa = new WSAMovie_v2(this); @@ -667,7 +621,6 @@ void KyraEngine_MR::startup() { (*_mainButtonData[0].buttonCallback)(&_mainButtonData[0]); _screen->updateScreen(); - musicUpdate(0); _screen->showMouse(); setNextIdleAnimTimer(); @@ -1113,14 +1066,11 @@ int KyraEngine_MR::inputSceneChange(int x, int y, int unk1, int unk2) { void KyraEngine_MR::update() { updateInput(); - musicUpdate(0); refreshAnimObjectsIfNeed(); - musicUpdate(0); updateMouse(); updateSpecialSceneScripts(); updateCommandLine(); updateItemAnimations(); - musicUpdate(0); _screen->updateScreen(); } @@ -1128,12 +1078,10 @@ void KyraEngine_MR::update() { void KyraEngine_MR::updateWithText() { updateInput(); - musicUpdate(0); updateMouse(); updateItemAnimations(); updateSpecialSceneScripts(); updateCommandLine(); - musicUpdate(0); restorePage3(); drawAnimObjects(); diff --git a/engines/kyra/kyra_mr.h b/engines/kyra/kyra_mr.h index fd31089953..f5ff3772ba 100644 --- a/engines/kyra/kyra_mr.h +++ b/engines/kyra/kyra_mr.h @@ -122,7 +122,6 @@ private: void snd_playWanderScoreViaMap(int track, int force); void stopMusicTrack(); - int musicUpdate(int forceRestart); void fadeOutMusic(int ticks); void snd_playSoundEffect(int item, int volume); diff --git a/engines/kyra/scene_mr.cpp b/engines/kyra/scene_mr.cpp index f1ea79f49b..acb0710616 100644 --- a/engines/kyra/scene_mr.cpp +++ b/engines/kyra/scene_mr.cpp @@ -36,20 +36,13 @@ void KyraEngine_MR::enterNewScene(uint16 sceneId, int facing, int unk1, int unk2 _screen->hideMouse(); showMessage(0, 0xF0, 0xF0); - if (_inventoryState) { + if (_inventoryState) hideInventory(); - musicUpdate(0); - } - musicUpdate(0); if (_currentChapter != _currentTalkFile) { _currentTalkFile = _currentChapter; openTalkFile(_currentTalkFile); } - musicUpdate(0); - - if (!unk3) - musicUpdate(0); if (unk1) { int x = _mainCharacter.x1; @@ -73,11 +66,9 @@ void KyraEngine_MR::enterNewScene(uint16 sceneId, int facing, int unk1, int unk2 break; } - musicUpdate(0); moveCharacter(facing, x, y); } - musicUpdate(0); uint32 waitUntilTimer = 0; if (_lastMusicCommand != _sceneList[sceneId].sound) { fadeOutMusic(60); @@ -89,33 +80,23 @@ void KyraEngine_MR::enterNewScene(uint16 sceneId, int facing, int unk1, int unk2 if (!unk3) { _emc->init(&_sceneScriptState, &_sceneScriptData); _emc->start(&_sceneScriptState, 5); - while (_emc->isValid(&_sceneScriptState)) { + while (_emc->isValid(&_sceneScriptState)) _emc->run(&_sceneScriptState); - musicUpdate(0); - } } - musicUpdate(0); - _specialExitCount = 0; Common::set_to(_specialExitTable, _specialExitTable+ARRAYSIZE(_specialExitTable), 0xFFFF); - musicUpdate(0); - _mainCharacter.sceneId = sceneId; _sceneList[sceneId].flags &= ~1; - musicUpdate(0); unloadScene(); - musicUpdate(0); for (int i = 0; i < 4; ++i) { if (i != _musicSoundChannel && i != _fadeOutMusicChannel) _soundDigital->stopSound(i); } _fadeOutMusicChannel = -1; - musicUpdate(0); loadScenePal(); - musicUpdate(0); if (queryGameFlag(0x1D9)) { char filename[20]; @@ -141,9 +122,7 @@ void KyraEngine_MR::enterNewScene(uint16 sceneId, int facing, int unk1, int unk2 resetGameFlag(0x1D9); } - musicUpdate(0); loadSceneMsc(); - musicUpdate(0); _sceneExit1 = _sceneList[sceneId].exit1; _sceneExit2 = _sceneList[sceneId].exit2; _sceneExit3 = _sceneList[sceneId].exit3; @@ -152,9 +131,7 @@ void KyraEngine_MR::enterNewScene(uint16 sceneId, int facing, int unk1, int unk2 while (_system->getMillis() < waitUntilTimer) _system->delayMillis(10); - musicUpdate(0); initSceneScript(unk3); - musicUpdate(0); if (_overwriteSceneFacing) { facing = _mainCharacter.facing; @@ -162,7 +139,6 @@ void KyraEngine_MR::enterNewScene(uint16 sceneId, int facing, int unk1, int unk2 } enterNewSceneUnk1(facing, unk2, unk3); - musicUpdate(0); setCommandLineRestoreTimer(-1); _sceneScriptState.regs[3] = 1; enterNewSceneUnk2(unk3); @@ -306,13 +282,9 @@ void KyraEngine_MR::enterNewSceneUnk2(int unk1) { void KyraEngine_MR::unloadScene() { delete[] _sceneStrings; _sceneStrings = 0; - musicUpdate(0); _emc->unload(&_sceneScriptData); - musicUpdate(0); freeSceneShapes(); - musicUpdate(0); freeSceneAnims(); - musicUpdate(0); } void KyraEngine_MR::freeSceneShapes() { @@ -356,13 +328,11 @@ void KyraEngine_MR::loadSceneMsc() { height = stream->readSint16LE(); delete stream; stream = 0; - musicUpdate(0); _maskPageMinY = minY; _maskPageMaxY = minY + height - 1; _screen->setShapePages(5, 3, _maskPageMinY, _maskPageMaxY); - musicUpdate(0); _screen->loadBitmap(filename, 5, 5, 0, true); // HACK @@ -372,12 +342,10 @@ void KyraEngine_MR::loadSceneMsc() { _screen->copyBlockToPage(5, 0, _maskPageMinY, 320, height, data); delete[] data; - musicUpdate(0); } void KyraEngine_MR::initSceneScript(int unk1) { const SceneDesc &scene = _sceneList[_mainCharacter.sceneId]; - musicUpdate(0); char filename[16]; strcpy(filename, scene.filename1); @@ -400,7 +368,6 @@ void KyraEngine_MR::initSceneScript(int unk1) { if (shapesCount > 0) { strcpy(filename, scene.filename1); strcat(filename, "9.CPS"); - musicUpdate(0); _screen->loadBitmap(filename, 3, 3, 0); int pageBackUp = _screen->_curPage; _screen->_curPage = 2; @@ -413,19 +380,15 @@ void KyraEngine_MR::initSceneScript(int unk1) { _sceneShapeDescs[i].drawY = stream->readSint16LE(); _sceneShapes[i] = _screen->encodeShape(x, y, w, h, 0); assert(_sceneShapes[i]); - musicUpdate(0); } _screen->_curPage = pageBackUp; - musicUpdate(0); } delete stream; stream = 0; - musicUpdate(0); strcpy(filename, scene.filename1); strcat(filename, ".CPS"); _screen->loadBitmap(filename, 3, 3, 0); - musicUpdate(0); Common::set_to(_specialSceneScriptState, _specialSceneScriptState+ARRAYSIZE(_specialSceneScriptState), false); _sceneEnterX1 = 160; @@ -442,14 +405,12 @@ void KyraEngine_MR::initSceneScript(int unk1) { _emc->init(&_sceneScriptState, &_sceneScriptData); strcpy(filename, scene.filename2); strcat(filename, ".EMC"); - musicUpdate(0); _res->exists(filename, true); _emc->load(filename, &_sceneScriptData, &_opcodes); strcpy(filename, scene.filename2); strcat(filename, "."); loadLanguageFile(filename, _sceneStrings); - musicUpdate(0); runSceneScript8(); _emc->start(&_sceneScriptState, 0); @@ -459,12 +420,10 @@ void KyraEngine_MR::initSceneScript(int unk1) { _emc->run(&_sceneScriptState); _screen->copyRegionToBuffer(3, 0, 0, 320, 200, _gamePlayBuffer); - musicUpdate(0); for (int i = 0; i < 10; ++i) { _emc->init(&_sceneSpecialScripts[i], &_sceneScriptData); _emc->start(&_sceneSpecialScripts[i], i+9); - musicUpdate(0); _sceneSpecialScriptsTimer[i] = 0; } @@ -476,7 +435,6 @@ void KyraEngine_MR::initSceneScript(int unk1) { _sceneEnterY3 &= ~1; _sceneEnterX4 &= ~3; _sceneEnterY4 &= ~1; - musicUpdate(0); } void KyraEngine_MR::initSceneAnims(int unk1) { @@ -789,10 +747,8 @@ void KyraEngine_MR::runSceneScript4(int unk1) { void KyraEngine_MR::runSceneScript8() { _emc->start(&_sceneScriptState, 8); - while (_emc->isValid(&_sceneScriptState)) { - musicUpdate(0); + while (_emc->isValid(&_sceneScriptState)) _emc->run(&_sceneScriptState); - } } bool KyraEngine_MR::lineIsPassable(int x, int y) { diff --git a/engines/kyra/script_mr.cpp b/engines/kyra/script_mr.cpp index 5cd100b69c..18878b6543 100644 --- a/engines/kyra/script_mr.cpp +++ b/engines/kyra/script_mr.cpp @@ -857,8 +857,6 @@ int KyraEngine_MR::o3_defineSceneAnim(EMCState *script) { const int animId = stackPos(0); SceneAnim &anim = _sceneAnims[animId]; - musicUpdate(0); - uint16 flags = anim.flags = stackPos(1); int x = anim.x = stackPos(2); int y = anim.y = stackPos(3); @@ -875,7 +873,6 @@ int KyraEngine_MR::o3_defineSceneAnim(EMCState *script) { if (flags & 8) { _sceneAnimMovie[animId]->open(filename, 1, 0); - musicUpdate(0); if (_sceneAnimMovie[animId]->opened()) { anim.wsaFlag = 1; if (x2 == -1) @@ -900,8 +897,6 @@ int KyraEngine_MR::o3_defineSceneAnim(EMCState *script) { } } - musicUpdate(0); - return 9; } @@ -1080,7 +1075,6 @@ int KyraEngine_MR::o3_setupSceneAnimObject(EMCState *script) { debugC(3, kDebugLevelScriptFuncs, "KyraEngine_MR::o3_setupSceneAnimObject(%p) (%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %s)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7), stackPos(8), stackPos(9), stackPos(10), stackPos(11), stackPosString(12)); - musicUpdate(0); setupSceneAnimObject(stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5), stackPos(6), stackPos(7), stackPos(8), stackPos(9), stackPos(10), stackPos(11), stackPosString(12)); return 0; diff --git a/engines/kyra/text_mr.cpp b/engines/kyra/text_mr.cpp index 98c6ef3130..001faab016 100644 --- a/engines/kyra/text_mr.cpp +++ b/engines/kyra/text_mr.cpp @@ -340,10 +340,8 @@ void KyraEngine_MR::objectChatWaitToFinish() { _emc->start(&_chatScriptState, 1); _animNeedUpdate = false; - while (!_animNeedUpdate && _emc->isValid(&_chatScriptState) && !shouldQuit()) { - musicUpdate(0); + while (!_animNeedUpdate && _emc->isValid(&_chatScriptState) && !shouldQuit()) _emc->run(&_chatScriptState); - } int curFrame = _animNewFrame; uint32 delayTime = _animDelayTime; -- cgit v1.2.3