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

eriktorbjorn eriktorbjorn at telia.com
Sun Jun 28 12:01:43 CEST 2015


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:
bfebfbc127 TOLTECS: Use the Miles audio drivers for AdLib and MT-32


Commit: bfebfbc127c4cead483f6d187c542ee5343d7954
    https://github.com/scummvm/scummvm/commit/bfebfbc127c4cead483f6d187c542ee5343d7954
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2015-06-28T11:56:58+02:00

Commit Message:
TOLTECS: Use the Miles audio drivers for AdLib and MT-32

There doesn't seem to be much music in the game, so I've only been
able to test it with the music when riding the trolley. The MT-32
music is just as bad as in DOSBox, and you should feel bad.

Changed paths:
    NEWS
    engines/toltecs/music.cpp
    engines/toltecs/music.h



diff --git a/NEWS b/NEWS
index 51cef25..2c57bff 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,9 @@ For a more comprehensive changelog of the latest experimental code, see:
  General:
    - Updated Munt MT-32 emulation code to version 1.5.0.
 
+ 3 Skulls of the Toltecs:
+   - Improved AdLib music support.
+
  AGI:
    - It is now possible to disable mouse support (except for Amiga versions
      and fanmade games, that require a mouse).
@@ -42,7 +45,7 @@ For a more comprehensive changelog of the latest experimental code, see:
      Tentacle, with a few caveats. See README for details.
 
  Tinsel:
-   - improved AdLib music support in Discworld 1
+   - Improved AdLib music support in Discworld 1
 
 1.7.0 (2014-07-21)
  New Games:
diff --git a/engines/toltecs/music.cpp b/engines/toltecs/music.cpp
index e4e067d..97d8b1a 100644
--- a/engines/toltecs/music.cpp
+++ b/engines/toltecs/music.cpp
@@ -21,6 +21,7 @@
  */
 
 #include "audio/midiparser.h"
+#include "audio/miles.h"
 #include "common/textconsole.h"
 
 #include "toltecs/toltecs.h"
@@ -30,20 +31,47 @@
 namespace Toltecs {
 
 MusicPlayer::MusicPlayer(bool isGM) : _isGM(isGM), _buffer(NULL) {
-	MidiPlayer::createDriver();
+	MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_GM);
+	MusicType musicType = MidiDriver::getMusicType(dev);
+
+	switch (musicType) {
+	case MT_ADLIB:
+		_milesAudioMode = true;
+		_driver = Audio::MidiDriver_Miles_AdLib_create("SAMPLE.AD", "SAMPLE.OPL");
+		break;
+	case MT_MT32:
+		// Not recommended since it sounds awful, but apparently the
+		// original sounded just as bad. I guess MT-32 support was
+		// added by default, not because anyone actually put any work
+		// into it.
+		_milesAudioMode = true;
+		_driver = Audio::MidiDriver_Miles_MT32_create("");
+		break;
+	default:
+		_milesAudioMode = false;
+		MidiPlayer::createDriver();
+		break;
+	}
 
 	int ret = _driver->open();
 	if (ret == 0) {
-		if (_nativeMT32)
-			_driver->sendMT32Reset();
-		else
-			_driver->sendGMReset();
+		if (musicType != MT_ADLIB) {
+			if (musicType == MT_MT32 || _nativeMT32)
+				_driver->sendMT32Reset();
+			else
+				_driver->sendGMReset();
+		}
 
 		_driver->setTimerCallback(this, &timerCallback);
 	}
 }
 
 void MusicPlayer::send(uint32 b) {
+	if (_milesAudioMode) {
+		_driver->send(b);
+		return;
+	}
+
 	if ((b & 0xF0) == 0xC0 && !_isGM && !_nativeMT32) {
 		b = (b & 0xFFFF00FF) | MidiDriver::_mt32ToGm[(b >> 8) & 0xFF] << 8;
 	}
diff --git a/engines/toltecs/music.h b/engines/toltecs/music.h
index e6dc3dd..25d67e9 100644
--- a/engines/toltecs/music.h
+++ b/engines/toltecs/music.h
@@ -47,6 +47,7 @@ protected:
 
 private:
 	byte *_buffer;
+	bool _milesAudioMode;
 };
 
 class Music : public MusicPlayer {






More information about the Scummvm-git-logs mailing list