diff options
author | Johannes Schickel | 2006-03-05 21:48:55 +0000 |
---|---|---|
committer | Johannes Schickel | 2006-03-05 21:48:55 +0000 |
commit | e2779a0658a3625bbf4c907a9c7b773cc210fae6 (patch) | |
tree | 3ad556a1cc6d98b307688b0aa92e9d4d7c973164 /engines/kyra | |
parent | 5e25b3b679d61a92a39f2d9ee699fad50b0bcbb6 (diff) | |
download | scummvm-rg350-e2779a0658a3625bbf4c907a9c7b773cc210fae6.tar.gz scummvm-rg350-e2779a0658a3625bbf4c907a9c7b773cc210fae6.tar.bz2 scummvm-rg350-e2779a0658a3625bbf4c907a9c7b773cc210fae6.zip |
Corrects implementation of updateCallback48.
svn-id: r21105
Diffstat (limited to 'engines/kyra')
-rw-r--r-- | engines/kyra/sound_adlib.cpp | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/engines/kyra/sound_adlib.cpp b/engines/kyra/sound_adlib.cpp index 83416d751b..5f0a01ee72 100644 --- a/engines/kyra/sound_adlib.cpp +++ b/engines/kyra/sound_adlib.cpp @@ -1380,20 +1380,18 @@ int AdlibDriver::updateCallback48(uint8 *&dataptr, OutputState &state, uint8 val int tableBackUp = _curTable; int outputByteBackUp = _unkOutputByte1; - uint8 entry = value * 2; + uint8 entry = value << 1; + uint8 *ptr = _soundData + READ_LE_UINT16(_soundData + entry + 0x1F4); - uint8 *ptr = _soundData; _curTable = 6; _unkOutputByte1 = _outputTable[6]; - ptr += READ_LE_UINT16(_soundData + entry + 0x1F4); - _unkValue6 = *(ptr + 6); updateAndOutput2(_unkOutputByte1, ptr, state); - entry = *ptr++ * 2; + entry = *dataptr++ << 1; + ptr = _soundData + READ_LE_UINT16(_soundData + entry + 0x1F4); - ptr = _soundData; _curTable = 7; _unkOutputByte1 = _outputTable[7]; @@ -1401,9 +1399,9 @@ int AdlibDriver::updateCallback48(uint8 *&dataptr, OutputState &state, uint8 val _unkValue8 = entry = *(ptr + 6); updateAndOutput2(_unkOutputByte1, ptr, state); - entry = *ptr++ * 2; + entry = *dataptr++ << 1; + ptr = _soundData + READ_LE_UINT16(_soundData + entry + 0x1F4); - ptr = _soundData; _curTable = 8; _unkOutputByte1 = _outputTable[8]; @@ -1413,17 +1411,17 @@ int AdlibDriver::updateCallback48(uint8 *&dataptr, OutputState &state, uint8 val // Octave / F-Number / Key-On for channels 6, 7 and 8 - _outputTables[6].unkOutputValue1 = *ptr++ & 0x2F; + _outputTables[6].unkOutputValue1 = *dataptr++ & 0x2F; writeOPL(0xB6, _outputTables[6].unkOutputValue1); - writeOPL(0xA6, *ptr++); + writeOPL(0xA6, *dataptr++); - _outputTables[7].unkOutputValue1 = *ptr++ & 0x2F; + _outputTables[7].unkOutputValue1 = *dataptr++ & 0x2F; writeOPL(0xB7, _outputTables[7].unkOutputValue1); - writeOPL(0xA7, *ptr++); + writeOPL(0xA7, *dataptr++); - _outputTables[8].unkOutputValue1 = *ptr++ & 0x2F; + _outputTables[8].unkOutputValue1 = *dataptr++ & 0x2F; writeOPL(0xB8, _outputTables[8].unkOutputValue1); - writeOPL(0xA8, *ptr++); + writeOPL(0xA8, *dataptr++); _unk4 = 0x20; |