diff options
Diffstat (limited to 'engines/agos/drivers/accolade/mt32.cpp')
-rw-r--r-- | engines/agos/drivers/accolade/mt32.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/engines/agos/drivers/accolade/mt32.cpp b/engines/agos/drivers/accolade/mt32.cpp index f863ffba4c..2a023297ee 100644 --- a/engines/agos/drivers/accolade/mt32.cpp +++ b/engines/agos/drivers/accolade/mt32.cpp @@ -254,12 +254,24 @@ bool MidiDriver_Accolade_MT32::setupInstruments(byte *driverData, uint16 driverD return true; } -MidiDriver *MidiDriver_Accolade_MT32_create() { - return new MidiDriver_Accolade_MT32(); -} - -bool MidiDriver_Accolade_MT32_setupInstruments(MidiDriver *driver, byte *instrumentData, uint16 instrumentDataSize, bool useMusicDrvFile) { - return static_cast<MidiDriver_Accolade_MT32 *>(driver)->setupInstruments(instrumentData, instrumentDataSize, useMusicDrvFile); +MidiDriver *MidiDriver_Accolade_MT32_create(Common::String driverFilename) { + byte *driverData = NULL; + uint16 driverDataSize = 0; + bool isMusicDrvFile = false; + + MidiDriver_Accolade_readDriver(driverFilename, MT_MT32, driverData, driverDataSize, isMusicDrvFile); + if (!driverData) + error("ACCOLADE-ADLIB: error during readDriver()"); + + MidiDriver_Accolade_MT32 *driver = new MidiDriver_Accolade_MT32(); + if (!driver) + return nullptr; + + if (!driver->setupInstruments(driverData, driverDataSize, isMusicDrvFile)) { + delete driver; + return nullptr; + } + return driver; } } // End of namespace AGOS |