aboutsummaryrefslogtreecommitdiff
path: root/sky/music/adlibchannel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sky/music/adlibchannel.cpp')
-rw-r--r--sky/music/adlibchannel.cpp34
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;