diff options
Diffstat (limited to 'saga/music.cpp')
-rw-r--r-- | saga/music.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/saga/music.cpp b/saga/music.cpp index d8ab563e65..bb44ca9916 100644 --- a/saga/music.cpp +++ b/saga/music.cpp @@ -452,9 +452,24 @@ int Music::play(uint32 music_rn, uint16 flags) { _player->setGM(true); parser = MidiParser::createParser_SMF(); } else { - // Load XMI resource data + // Load MIDI/XMI resource data - rsc_ctxt = GAME_GetFileContext(GAME_RESOURCEFILE, 0); + bool isGM = false; + + if (GAME_GetGameType() == GID_ITE) { + rsc_ctxt = GAME_GetFileContext(GAME_RESOURCEFILE, 0); + } else { + // TODO: Someone else will have to verify that the "FM" + // music is really the appropriate choice for MT-32. Is + // either of them the best choice for Adlib, or will + // they both sound equally wimpy? + if (!hasNativeMT32()) { + isGM = true; + rsc_ctxt = GAME_GetFileContext(GAME_MUSICFILE_GM, 0); + } else { + rsc_ctxt = GAME_GetFileContext(GAME_MUSICFILE_FM, 0); + } + } if (RSC_LoadResource(rsc_ctxt, music_rn, &resource_data, &resource_size) != SUCCESS ) { @@ -462,7 +477,7 @@ int Music::play(uint32 music_rn, uint16 flags) { return FAILURE; } - _player->setGM(false); + _player->setGM(isGM); parser = MidiParser::createParser_XMIDI(); } |