[Scummvm-cvs-logs] CVS: scummvm/scumm bundle.h,1.6,1.7 sound.cpp,1.70,1.71

James Brown ender at users.sourceforge.net
Sun Jan 12 11:16:03 CET 2003


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

Modified Files:
	bundle.h sound.cpp 
Log Message:
Fix ComI music bundle switching on disk change


Index: bundle.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/bundle.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- bundle.h	28 Dec 2002 15:02:23 -0000	1.6
+++ bundle.h	12 Jan 2003 19:15:28 -0000	1.7
@@ -45,7 +45,6 @@
 	CompTable _compVoiceTable[50];
 	CompTable _compMusicTable[2500];
 	File _voiceFile;
-	File _musicFile;
 	BundleAudioTable *_bundleVoiceTable;
 	BundleAudioTable *_bundleMusicTable;
 	int32 _numVoiceFiles;
@@ -60,6 +59,7 @@
 	  Bundle();
 	 ~Bundle();
 
+	File _musicFile;
 	void initializeImcTables();
 	bool openVoiceFile(const char *filename, const char *directory);
 	bool openMusicFile(const char *filename, const char *directory);

Index: sound.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sound.cpp,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- sound.cpp	10 Jan 2003 08:25:16 -0000	1.70
+++ sound.cpp	12 Jan 2003 19:15:30 -0000	1.71
@@ -40,6 +40,7 @@
 	_nameBundleMusic = NULL;
 	_musicBundleBufFinal = NULL;
 	_musicBundleBufOutput = NULL;
+	_musicDisk = 0;
 	_talkChannel = -1;
 }
 
@@ -960,9 +961,15 @@
 		if (_scumm->_gameId == GID_CMI) {
 			char bunfile[20];
 			sprintf(bunfile, "musdisk%d.bun", _scumm->_vars[_scumm->VAR_CURRENTDISK]);
-			printf("Opening bundle\n");
-			if (_scumm->_bundle->openMusicFile(bunfile, _scumm->getGameDataPath()) == false)
+			if (_musicDisk != _scumm->_vars[_scumm->VAR_CURRENTDISK]) 
+				_scumm->_bundle->_musicFile.close();	
+
+			if (_scumm->_bundle->openMusicFile(bunfile, _scumm->getGameDataPath()) == false) {
+				_outputMixerSize = 0;
 				return;
+			}
+
+			_musicDisk = _scumm->_vars[_scumm->VAR_CURRENTDISK];
 			_outputMixerSize = 88140; // ((22050 * 2 * 2)
 		} else {
 			if (_scumm->_bundle->openMusicFile("digmusic.bun", _scumm->getGameDataPath()) == false)





More information about the Scummvm-git-logs mailing list