[Scummvm-cvs-logs] CVS: scummvm/queen music.cpp,1.22,1.23 music.h,1.14,1.15 queen.cpp,1.91,1.92

Eugene Sandulenko sev at users.sourceforge.net
Fri Oct 22 16:45:03 CEST 2004


Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22410

Modified Files:
	music.cpp music.h queen.cpp 
Log Message:
Support MT-32 emu.


Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/music.cpp,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- music.cpp	6 Aug 2004 17:01:58 -0000	1.22
+++ music.cpp	22 Oct 2004 23:44:08 -0000	1.23
@@ -42,7 +42,7 @@
 	 47, 117, 127, 118, 118, 116, 115, 119, 115, 112,  55, 124, 123,   0,  14, 117  // 7x
 };
 
-	MusicPlayer::MusicPlayer(MidiDriver *driver, byte *data, uint32 size) : _driver(driver), _isPlaying(false), _looping(false), _randomLoop(false), _masterVolume(192), _queuePos(0), _musicData(data), _musicDataSize(size) {
+	MusicPlayer::MusicPlayer(MidiDriver *driver, byte *data, uint32 size) : _driver(driver), _isPlaying(false), _looping(false), _randomLoop(false), _masterVolume(192), _queuePos(0), _musicData(data), _musicDataSize(size), _passThrough(false) {
 		memset(_channel, 0, sizeof(_channel));
 		queueClear();
 		_lastSong = _currentSong = 0;
@@ -123,6 +123,11 @@
 	}
 	
 	void MusicPlayer::send(uint32 b) {
+		if (_passThrough) {
+			_driver->send(b);
+			return;
+		}
+
 		byte channel = (byte)(b & 0x0F);
 		if ((b & 0xFFF0) == 0x07B0) {
 			// Adjust volume changes by master volume

Index: music.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/music.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- music.h	9 Mar 2004 01:48:12 -0000	1.14
+++ music.h	22 Oct 2004 23:44:08 -0000	1.15
@@ -45,6 +45,7 @@
 	void queueTuneList(int16 tuneList);
 	bool queueSong(uint16 songNum);
 	void queueClear();
+	void setPassThrough(bool b)		{ _passThrough = b; }
 	
 	//MidiDriver interface implementation
 	int open();
@@ -77,6 +78,7 @@
 	MidiChannel *_channel[16];
 	byte _channelVolume[16];
 	bool _nativeMT32;
+	bool _passThrough;
 	
 	Common::RandomSource _rnd;
 				
@@ -104,6 +106,7 @@
 	void queueTuneList(int16 tuneList)	{ _player->queueTuneList(tuneList); }
 	void playMusic()			{ _player->playMusic(); }
 	void stopSong()				{ _player->stopMusic(); }
+	void setPassThrough(bool b)		{ _player->setPassThrough(b); }
 
 	void toggleVChange();	
 	void setVolume(int vol)			{ _player->setVolume(vol); }

Index: queen.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/queen.cpp,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -d -r1.91 -r1.92
--- queen.cpp	10 Oct 2004 17:12:50 -0000	1.91
+++ queen.cpp	22 Oct 2004 23:44:08 -0000	1.92
@@ -347,14 +347,18 @@
 		_logic = new LogicGame(this);
 	}
 
-	MidiDriver *driver = GameDetector::createMidi(GameDetector::detectMusicDriver(MDT_NATIVE | MDT_ADLIB | MDT_PREFER_NATIVE));
+	int midiDriver = GameDetector::detectMusicDriver(MDT_NATIVE | MDT_ADLIB | MDT_PREFER_NATIVE);
+	MidiDriver *driver = GameDetector::createMidi(midiDriver);
 	if (!driver)
 		driver = MidiDriver_ADLIB_create(_mixer);
-	else if (ConfMan.getBool("native_mt32"))
+	else if (ConfMan.getBool("native_mt32") || (midiDriver == MD_MT32))
 		driver->property(MidiDriver::PROP_CHANNEL_MASK, 0x03FE);
 		
 	_music = new Music(driver, this);
-	_music->hasNativeMT32(ConfMan.getBool("native_mt32"));
+	_music->hasNativeMT32(ConfMan.getBool("native_mt32") || (midiDriver == MD_MT32));
+
+	if (midiDriver == MD_MT32)
+		_music->setPassThrough(true);
 	
 	_sound = Sound::giveSound(_mixer, this, _resource->compression());
 	_walk = new Walk(this);





More information about the Scummvm-git-logs mailing list