[Scummvm-cvs-logs] scummvm master -> f19e2019b8e86f9fe4c95296428a7b31417666ac

lordhoto lordhoto at gmail.com
Thu Apr 7 01:03:04 CEST 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
f19e2019b8 KYRA: Cleanup background music looping of Kyra3.


Commit: f19e2019b8e86f9fe4c95296428a7b31417666ac
    https://github.com/scummvm/scummvm/commit/f19e2019b8e86f9fe4c95296428a7b31417666ac
Author: Johannes Schickel (lordhoto at scummvm.org)
Date: 2011-04-06T16:01:55-07:00

Commit Message:
KYRA: Cleanup background music looping of Kyra3.

Changed paths:
    engines/kyra/animator_mr.cpp
    engines/kyra/gui_mr.cpp
    engines/kyra/gui_mr.h
    engines/kyra/kyra_mr.cpp
    engines/kyra/kyra_mr.h
    engines/kyra/scene_mr.cpp
    engines/kyra/script_mr.cpp
    engines/kyra/text_mr.cpp



diff --git a/engines/kyra/animator_mr.cpp b/engines/kyra/animator_mr.cpp
index 12f1061..e6daba7 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 a04ec49..6bdecfc 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 89aaa44..b104626 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 b863ef5..2c94818 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<int>(_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 fd31089..f5ff377 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 f1ea79f..acb0710 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 5cd100b..18878b6 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 98c6ef3..001faab 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;






More information about the Scummvm-git-logs mailing list