aboutsummaryrefslogtreecommitdiff
path: root/scumm/imuse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scumm/imuse.cpp')
-rw-r--r--scumm/imuse.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/scumm/imuse.cpp b/scumm/imuse.cpp
index 2662b6c039..4be77f7669 100644
--- a/scumm/imuse.cpp
+++ b/scumm/imuse.cpp
@@ -408,6 +408,7 @@ public:
void setBase(byte **base);
uint32 property(int prop, uint32 value);
+ MidiDriver *getMidiDriver();
static IMuseInternal *create(OSystem *syst, MidiDriver *midi);
};
@@ -526,6 +527,25 @@ IMuseInternal::~IMuseInternal() {
terminate();
}
+MidiDriver *IMuseInternal::getMidiDriver() {
+ MidiDriver *driver = NULL;
+
+ if (_midi_native) {
+ driver = _midi_native;
+#if !defined(__PALM_OS__) // Adlib not supported on PalmOS
+ } else {
+ // Route it through Adlib anyway.
+ if (!_midi_adlib) {
+ _midi_adlib = MidiDriver_ADLIB_create();
+ initMidiDriver (_midi_adlib);
+ }
+ driver = _midi_adlib;
+#endif
+ }
+
+ return driver;
+}
+
byte *IMuseInternal::findTag(int sound, char *tag, int index) {
byte *ptr = NULL;
int32 size, pos;
@@ -3488,6 +3508,7 @@ int32 IMuse::doCommand(int a, int b, int c, int d, int e, int f, int g, int h) {
int IMuse::clear_queue() { in(); int ret = _target->clear_queue(); out(); return ret; }
void IMuse::setBase(byte **base) { in(); _target->setBase (base); out(); }
uint32 IMuse::property(int prop, uint32 value) { in(); uint32 ret = _target->property (prop, value); out(); return ret; }
+MidiDriver *IMuse::getMidiDriver() { in(); MidiDriver *ret = _target->getMidiDriver(); out(); return ret; }
// The IMuse::create method provides a front-end factory
// for creating IMuseInternal without exposing that class