diff options
Diffstat (limited to 'sky/music/adlibchannel.cpp')
-rw-r--r-- | sky/music/adlibchannel.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/sky/music/adlibchannel.cpp b/sky/music/adlibchannel.cpp index 6303e261ed..98b7a9fb17 100644 --- a/sky/music/adlibchannel.cpp +++ b/sky/music/adlibchannel.cpp @@ -42,18 +42,30 @@ SkyAdlibChannel::SkyAdlibChannel(FM_OPL *opl, uint8 *pMusicData, uint16 startOfD uint16 instrumentDataLoc; - if (SkyState::_systemVars.gameVersion == 267) { - instrumentDataLoc = (_musicData[0x11FC] << 8) | _musicData[0x11FB]; - _frequenceTable = (uint16*)(_musicData+0x7F4); - _registerTable = _musicData+0xDF4; - _opOutputTable = _musicData+0xE06; - _adlibRegMirror = _musicData+0xF55; + if (SkyState::_systemVars.gameVersion == 109) { + //instrumentDataLoc = (_musicData[0x11D0] << 8) | _musicData[0x11CF]; + //_frequenceTable = (uint16*)(_musicData + 0x835); + //_registerTable = _musicData + 0xE35; + //_opOutputTable = _musicData + 0xE47; + //_adlibRegMirror = _musicData + 0xF4A; + + instrumentDataLoc = READ_LE_UINT16(_musicData + 0x1204); + _frequenceTable = (uint16*)(_musicData + 0x868); + _registerTable = _musicData + 0xE68; + _opOutputTable = _musicData + 0xE7A; + _adlibRegMirror = _musicData + 0xF7D; + } else if (SkyState::_systemVars.gameVersion == 267) { + instrumentDataLoc = READ_LE_UINT16(_musicData + 0x11FB); + _frequenceTable = (uint16*)(_musicData + 0x7F4); + _registerTable = _musicData + 0xDF4; + _opOutputTable = _musicData + 0xE06; + _adlibRegMirror = _musicData + 0xF55; } else { - instrumentDataLoc = (_musicData[0x1206] << 8) | _musicData[0x1205]; - _frequenceTable = (uint16*)(_musicData+0x7FE); - _registerTable = _musicData+0xDFE; - _opOutputTable = _musicData+0xE10; - _adlibRegMirror = _musicData+0xF5F; + instrumentDataLoc = READ_LE_UINT16(_musicData + 0x1205); + _frequenceTable = (uint16*)(_musicData + 0x7FE); + _registerTable = _musicData + 0xDFE; + _opOutputTable = _musicData + 0xE10; + _adlibRegMirror = _musicData + 0xF5F; } _instrumentMap = _musicData+instrumentDataLoc; |