aboutsummaryrefslogtreecommitdiff
path: root/engines/made/music.cpp
diff options
context:
space:
mode:
authorTorbjörn Andersson2015-07-04 23:34:08 +0200
committerTorbjörn Andersson2015-07-05 00:08:15 +0200
commit672bdeff1f4a0e73d4565ab596af4833e9b7075a (patch)
treeb883abe3250264726b430d40f739b8d95e52bcf9 /engines/made/music.cpp
parent0800d67f6568a67925f7fcda115dfcc6d6aec98c (diff)
downloadscummvm-rg350-672bdeff1f4a0e73d4565ab596af4833e9b7075a.tar.gz
scummvm-rg350-672bdeff1f4a0e73d4565ab596af4833e9b7075a.tar.bz2
scummvm-rg350-672bdeff1f4a0e73d4565ab596af4833e9b7075a.zip
MADE: Allow loading of sample.ad from rtzcd.red
At the moment, AdLib music doesn't work yet though. At least not for this particular case.
Diffstat (limited to 'engines/made/music.cpp')
-rw-r--r--engines/made/music.cpp25
1 files changed, 18 insertions, 7 deletions
diff --git a/engines/made/music.cpp b/engines/made/music.cpp
index 6e5acb88b0..7efa24f985 100644
--- a/engines/made/music.cpp
+++ b/engines/made/music.cpp
@@ -25,21 +25,30 @@
// MIDI and digital music class
#include "made/music.h"
+#include "made/redreader.h"
#include "made/resource.h"
#include "audio/midiparser.h"
#include "audio/miles.h"
+#include "common/stream.h"
+
namespace Made {
-MusicPlayer::MusicPlayer(bool milesAudio) : _isGM(false),_milesAudioMode(false) {
+MusicPlayer::MusicPlayer(bool milesAudio, bool compressedCD) : _isGM(false),_milesAudioMode(false) {
+ MusicType musicType;
if (milesAudio) {
MidiDriver::DeviceHandle dev = MidiDriver::detectDevice(MDT_MIDI | MDT_ADLIB | MDT_PREFER_MT32);
- MusicType musicType = MidiDriver::getMusicType(dev);
+ musicType = MidiDriver::getMusicType(dev);
switch (musicType) {
case MT_ADLIB:
_milesAudioMode = true;
- _driver = Audio::MidiDriver_Miles_AdLib_create("SAMPLE.AD", "SAMPLE.AD");
+ if (compressedCD) {
+ Common::SeekableReadStream *adLibInstrumentStream = RedReader::loadFromRed("rtzcd.red", "sample.ad");
+ _driver = Audio::MidiDriver_Miles_AdLib_create("", "", adLibInstrumentStream);
+ } else {
+ _driver = Audio::MidiDriver_Miles_AdLib_create("SAMPLE.AD", "SAMPLE.AD");
+ }
break;
case MT_MT32:
_milesAudioMode = true;
@@ -56,10 +65,12 @@ MusicPlayer::MusicPlayer(bool milesAudio) : _isGM(false),_milesAudioMode(false)
int ret = _driver->open();
if (ret == 0) {
- if (_nativeMT32)
- _driver->sendMT32Reset();
- else
- _driver->sendGMReset();
+ if (musicType != MT_ADLIB) {
+ if (_nativeMT32)
+ _driver->sendMT32Reset();
+ else
+ _driver->sendGMReset();
+ }
_driver->setTimerCallback(this, &timerCallback);
}