[Scummvm-cvs-logs] CVS: scummvm/scumm akos.cpp,1.89,1.90 imuse_digi.cpp,1.74,1.75 imuse_digi.h,1.20,1.21 script_v6.cpp,1.219,1.220 sound.cpp,1.292,1.293

Pawel Kolodziejski aquadran at users.sourceforge.net
Thu Dec 25 03:15:01 CET 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv23485

Modified Files:
	akos.cpp imuse_digi.cpp imuse_digi.h script_v6.cpp sound.cpp 
Log Message:
start sound call directly digital imuse, only script part handled by mainloop of scumm script

Index: akos.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/akos.cpp,v
retrieving revision 1.89
retrieving revision 1.90
diff -u -d -r1.89 -r1.90
--- akos.cpp	16 Nov 2003 20:52:56 -0000	1.89
+++ akos.cpp	25 Dec 2003 11:14:05 -0000	1.90
@@ -1325,7 +1325,10 @@
 		break;
 	case 3:
 		if (param_1 != 0) {
-			_sound->addSoundToQueue(param_1);
+			if (_features & GF_DIGI_IMUSE)
+				_sound->playSound(param_1);
+			else
+				_sound->addSoundToQueue(param_1);
 		}
 		break;
 	case 4:

Index: imuse_digi.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi.cpp,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -d -r1.74 -r1.75
--- imuse_digi.cpp	24 Dec 2003 18:07:44 -0000	1.74
+++ imuse_digi.cpp	25 Dec 2003 11:14:05 -0000	1.75
@@ -992,7 +992,7 @@
 	pauseBundleMusic(p);
 }
 
-int32 IMuseDigital::doCommand(int a, int b, int c, int d, int e, int f, int g, int h) {
+void IMuseDigital::parseScriptQues(int a, int b, int c, int d, int e, int f, int g, int h) {
 	int cmd = a;
 	int sample = b;
 	int sub_cmd = c;
@@ -1000,17 +1000,17 @@
 	int l, r;
 
 	if (!cmd)
-		return 1;
+		return;
 
 	switch (cmd) {
 	case 10: // ImuseStopAllSounds
 		debug(5, "ImuseStopAllSounds()");
 		stopAllSounds();
-		return 0;
+		return;
 	case 12: // ImuseSetParam
 		switch (sub_cmd) {
 		case 0x500: // set priority - could be ignored
-			return 0;
+			return;
 		case 0x600: // set volume
 			debug(5, "ImuseSetParam (%x), sample(%d), volume(%d)", sub_cmd, sample, d);
 			for (l = 0; l < MAX_DIGITAL_CHANNELS; l++) {
@@ -1021,12 +1021,12 @@
 			}
 			if (chan == -1) {
 				debug(0, "ImuseSetParam (%x), sample(%d) not exist in channels", sub_cmd, sample);
-				return 1;
+				return;
 			}
 			_channel[chan].vol = d * 1000;
 			if (_channel[chan].volFadeUsed)
 				_channel[chan].volFadeStep = (_channel[chan].volFadeDest - _channel[chan].vol) / (((1000 * _channel[chan].volFadeDelay) / 60) / 40);
-			return 0;
+			return;
 		case 0x700: // set pan
 			debug(5, "ImuseSetParam (0x700), sample(%d), pan(%d)", sample, d);
 			for (l = 0; l < MAX_DIGITAL_CHANNELS; l++) {
@@ -1037,13 +1037,13 @@
 			}
 			if (chan == -1) {
 				debug(5, "ImuseSetParam (0x700), sample(%d) not exist in channels", sample);
-				return 1;
+				return;
 			}
 			_channel[chan].pan = d;
-			return 0;
+			return;
 		default:
 			warning("IMuseDigital::doCommand SetParam DEFAULT command %d", sub_cmd);
-			return 1;
+			return;
 		}
 	case 14: // ImuseFadeParam
 		switch (sub_cmd) {
@@ -1051,7 +1051,7 @@
 			debug(5, "ImuseFadeParam - fade sample(%d), to volume(%d) with 60hz ticks(%d)", sample, d, e);
 			if ((_scumm->_gameId == GID_DIG) && (_scumm->_features & GF_DEMO)) {
 				stopSound(sample);
-				return 0;
+				return;
 			}
 			for (l = 0; l < MAX_DIGITAL_CHANNELS; l++) {
 				if ((_channel[l].idSound == sample) && _channel[l].used) {
@@ -1061,17 +1061,17 @@
 			}
 			if (chan == -1) {
 				debug(5, "ImuseFadeParam (0x600), sample %d not exist in channels", sample);
-				return 1;
+				return;
 			}
 			_channel[chan].volFadeDelay = e;
 			_channel[chan].volFadeDest = d * 1000;
 			_channel[chan].volFadeStep = (_channel[chan].volFadeDest - _channel[chan].vol) / (((1000 * e) / 60) / 40);
 			_channel[chan].volFadeUsed = true;
 			debug(5, "ImuseFadeParam: vol %d, volDest %d, step %d", _channel[chan].vol, d * 1000, _channel[chan].volFadeStep);
-			return 0;
+			return;
 		default:
 			warning("IMuseDigital::doCommand FadeParam DEFAULT sub command %d", sub_cmd);
-			return 1;
+			return;
 		}
 	case 0x1000: // ImuseSetState
 		debug(5, "ImuseSetState (%d)", b);
@@ -1082,16 +1082,16 @@
 				if (getSoundStatus(2) == 0)
 					startSound(2);
 			}
-			return 0;
+			return;
 		}
 		if (_scumm->_gameId == GID_DIG) {
 			if (b == 1000) {		// STATE_NULL
 				stopBundleMusic();
-				return 0;
+				return;
 			}
 			for (l = 0;; l++) {
 				if (_digStateMusicMap[l].room == -1) {
-					return 1;
+					return;
 				}
 				if (_digStateMusicMap[l].room == b) {
 					int music = _digStateMusicMap[l].table_index;
@@ -1100,7 +1100,7 @@
 						(strcmp(_digStateMusicTable[_digStateMusicTable[music].unk3].filename, _nameBundleMusic) != 0) ) {
 						playBundleMusic(_digStateMusicTable[music].filename);
 					}
-					return 0;
+					return;
 				}
 			}
 		} else if ((_scumm->_gameId == GID_CMI) && (_scumm->_features & GF_DEMO)) {
@@ -1116,29 +1116,29 @@
 				playBundleMusic("gun.imx");
 			} else {
 				warning("imuse digital: set state unknown for cmi demo: %d, room: %d", b, this->_scumm->_currentRoom);
-				return 1;
+				return;
 			}
 		} else if (_scumm->_gameId == GID_CMI) {
 			if (b == 1000) {		// STATE_NULL
 				stopBundleMusic();
-				return 0;
+				return;
 			}
 			for (l = 0;; l++) {
 				if (_comiStateMusicTable[l].id == -1) {
-					return 1;
+					return;
 				}
 				if ((_comiStateMusicTable[l].id == b)) {
 					debug(5, "Play imuse music: %s, %s, %s", _comiStateMusicTable[l].name, _comiStateMusicTable[l].title, _comiStateMusicTable[l].filename);
 					if (_comiStateMusicTable[l].filename[0] != 0) {
 						playBundleMusic(_comiStateMusicTable[l].filename);
 					}
-					return 0;
+					return;
 				}
 			}
 		} else if (_scumm->_gameId == GID_FT) {
 			for (l = 0;; l++) {
 				if (_ftStateMusicTable[l].index == -1) {
-					return 1;
+					return;
 				}
 				if (_ftStateMusicTable[l].index == b) {
 					debug(5, "Play imuse music: %s, %s", _ftStateMusicTable[l].name, _ftStateMusicTable[l].audioname);
@@ -1146,46 +1146,46 @@
 						for (r = 0; r < _scumm->_numAudioNames; r++) {
 							if (strcmp(_ftStateMusicTable[l].audioname, &_scumm->_audioNames[r * 9]) == 0) {
 								startSound(r);
-								doCommand(12, r, 1536, _ftStateMusicTable[l].volume, 0, 0, 0, 0);
+								parseScriptQues(12, r, 1536, _ftStateMusicTable[l].volume, 0, 0, 0, 0);
 							}
 						}
 					}
 				}
 			}
 		}
-		return 0;
+		return;
 	case 0x1001: // ImuseSetSequence
 		debug(5, "ImuseSetSequence (%d)", b);
 		if (_scumm->_gameId == GID_DIG) {
 			for (l = 0;; l++) {
 				if (_digSeqMusicTable[l].room == -1) {
-					return 1;
+					return;
 				}
 				if ((_digSeqMusicTable[l].room == b)) {
 					debug(5, "Play imuse music: %s, %s, %s", _digSeqMusicTable[l].name, _digSeqMusicTable[l].title, _digSeqMusicTable[l].filename);
 					if (_digSeqMusicTable[l].filename[0] != 0) {
 						playBundleMusic(_digSeqMusicTable[l].filename);
 					}
-					return 0;
+					return;
 				}
 			}
 		} else if (_scumm->_gameId == GID_CMI) {
 			for (l = 0;; l++) {
 				if (_comiSeqMusicTable[l].id == -1) {
-					return 1;
+					return;
 				}
 				if ((_comiSeqMusicTable[l].id == b)) {
 					debug(5, "Play imuse music: %s, %s, %s", _comiSeqMusicTable[l].name, _comiSeqMusicTable[l].title, _comiSeqMusicTable[l].filename);
 					if (_comiSeqMusicTable[l].filename[0] != 0) {
 						playBundleMusic(_comiSeqMusicTable[l].filename);
 					}
-					return 0;
+					return;
 				}
 			}
 		} else if (_scumm->_gameId == GID_FT) {
 			for (l = 0;; l++) {
 				if (_ftSeqMusicTable[l].index == -1) {
-					return 1;
+					return;
 				}
 				if (_ftSeqMusicTable[l].index == b) {
 					debug(5, "Play imuse music: %s, %s", _ftSeqMusicTable[l].name, _ftSeqMusicTable[l].audioname);
@@ -1193,32 +1193,31 @@
 						for (r = 0; r < _scumm->_numAudioNames; r++) {
 							if (strcmp(_ftSeqMusicTable[l].audioname, &_scumm->_audioNames[r * 9]) == 0) {
 								startSound(r);
-								doCommand(12, r, 1536, _ftSeqMusicTable[l].volume, 0, 0, 0, 0);
+								parseScriptQues(12, r, 1536, _ftSeqMusicTable[l].volume, 0, 0, 0, 0);
 							}
 						}
 					}
 				}
 			}
 		}
-		return 0;
+		return;
 	case 0x1002: // ImuseSetCuePoint
 		debug(5, "ImuseSetCuePoint (%d)", b);
-		return 0;
+		return;
 	case 0x1003: // ImuseSetAttribute
 		debug(5, "ImuseSetAttribute (%d, %d)", b, c);
-		return 0;
+		return;
 	case 0x2000: // ImuseSetMasterSFXVolume
 		debug(5, "ImuseSetMasterSFXVolume (%d)", b);
-		return 0;
+		return;
 	case 0x2001: // ImuseSetMasterVoiceVolume
 		debug(5, "ImuseSetMasterVoiceVolume (%d)", b);
-		return 0;
+		return;
 	case 0x2002: // ImuseSetMasterMusicVolume
 		debug(5, "ImuseSetMasterMusicVolume (%d)", b);
-		return 0;
+		return;
 	default:
 		warning("IMuseDigital::doCommand DEFAULT command %d", cmd);
-		return 1;
 	}
 }
 

Index: imuse_digi.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/imuse_digi.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- imuse_digi.h	22 Dec 2003 22:39:16 -0000	1.20
+++ imuse_digi.h	25 Dec 2003 11:14:05 -0000	1.21
@@ -141,7 +141,7 @@
 	void stopSound(int sound);
 	void stopAllSounds();
 	void pause(bool pause);
-	int32 doCommand(int a, int b, int c, int d, int e, int f, int g, int h);
+	void parseScriptQues(int a, int b, int c, int d, int e, int f, int g, int h);
 	int getSoundStatus(int sound) const;
 };
 

Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.219
retrieving revision 1.220
diff -u -d -r1.219 -r1.220
--- script_v6.cpp	17 Dec 2003 17:36:04 -0000	1.219
+++ script_v6.cpp	25 Dec 2003 11:14:05 -0000	1.220
@@ -930,7 +930,11 @@
 void ScummEngine_v6::o6_startSound() {
 	if ((_features & GF_HUMONGOUS) && (_gameId != GID_PUTTDEMO))
 		pop(); // offset which seems to always be zero
-	_sound->addSoundToQueue(pop());
+
+	if (_features & GF_DIGI_IMUSE)
+		_sound->playSound(pop());
+	else
+		_sound->addSoundToQueue(pop());
 }
 
 void ScummEngine_v6::o6_stopSound() {
@@ -938,7 +942,10 @@
 }
 
 void ScummEngine_v6::o6_startMusic() {
-	_sound->addSoundToQueue(pop());
+	if (_features & GF_DIGI_IMUSE)
+		_sound->playSound(pop());
+	else
+		_sound->addSoundToQueue(pop());
 }
 
 void ScummEngine_v6::o6_stopObjectScript() {

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.292
retrieving revision 1.293
diff -u -d -r1.292 -r1.293
--- sound.cpp	24 Dec 2003 17:47:51 -0000	1.292
+++ sound.cpp	25 Dec 2003 11:14:05 -0000	1.293
@@ -66,16 +66,9 @@
 }
 
 void Sound::addSoundToQueue(int sound) {
-	if (!(_scumm->_features & GF_DIGI_IMUSE)) {
-		_scumm->VAR(_scumm->VAR_LAST_SOUND) = sound;
-		_scumm->ensureResourceLoaded(rtSound, sound);
-		addSoundToQueue2(sound);
-	} else {
-		// WARNING ! This may break something, maybe this sould be put inside if (_gameID == GID_FT || _gameID == GID_FTDEMO) ? 
-		// But why addSoundToQueue should not queue sound ?
-		_scumm->ensureResourceLoaded(rtSound, sound);
-		addSoundToQueue2(sound);
-	}
+	_scumm->VAR(_scumm->VAR_LAST_SOUND) = sound;
+	_scumm->ensureResourceLoaded(rtSound, sound);
+	addSoundToQueue2(sound);
 }
 
 void Sound::addSoundToQueue2(int sound) {
@@ -107,17 +100,13 @@
 				data[j] = _soundQue[i + j];
 			i += num;
 
-#if 0
-			debug(1, "processSoundQues(%d,%d,%d,%d,%d,%d,%d,%d,%d)",
-						data[0] >> 8,
-						data[0] & 0xFF,
-						data[1], data[2], data[3], data[4], data[5], data[6], data[7]
-				);
-#endif
-			
+			debug(5, "processSoundQues(%d,%d,%d,%d,%d,%d,%d,%d,%d)",
+						data[0] >> 8, data[0] & 0xFF,
+						data[1], data[2], data[3], data[4], data[5], data[6], data[7]);
+
 			if (_scumm->_features & GF_DIGI_IMUSE) {
 				if (_scumm->_imuseDigital)
-					_scumm->_imuseDigital->doCommand(data[0], data[1], data[2], data[3], data[4],
+					_scumm->_imuseDigital->parseScriptQues(data[0], data[1], data[2], data[3], data[4],
 																	data[5], data[6], data[7]);
 			} else if (_scumm->_imuse) {
 				_scumm->VAR(_scumm->VAR_SOUNDRESULT) = (short)_scumm->_imuse->doCommand (num, data);





More information about the Scummvm-git-logs mailing list