[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