diff options
-rw-r--r-- | engines/kyra/sound_adlib.cpp | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/engines/kyra/sound_adlib.cpp b/engines/kyra/sound_adlib.cpp index 7c5b70174d..0d24238129 100644 --- a/engines/kyra/sound_adlib.cpp +++ b/engines/kyra/sound_adlib.cpp @@ -116,8 +116,8 @@ private: uint8 unk26; uint8 unk7; uint8 unk15; - uint8 unk1; - uint8 unk4; + int8 unk1; + int8 unk4; uint8 unk17; uint8 unkOutputValue1; typedef void (AdlibDriver::*Callback)(OutputState&); @@ -212,7 +212,7 @@ private: int updateCallback26(uint8 *&dataptr, OutputState &state, uint8 value); int updateCallback27(uint8 *&dataptr, OutputState &state, uint8 value); int updateCallback28(uint8 *&dataptr, OutputState &state, uint8 value); - int setTempo(uint8 *&dataptr, OutputState &state, uint8 value); + int update_setTempo(uint8 *&dataptr, OutputState &state, uint8 value); int updateCallback30(uint8 *&dataptr, OutputState &state, uint8 value); int updateCallback31(uint8 *&dataptr, OutputState &state, uint8 value); int updateCallback32(uint8 *&dataptr, OutputState &state, uint8 value); @@ -242,7 +242,7 @@ private: int updateCallback56(uint8 *&dataptr, OutputState &state, uint8 value); private: int _lastProcessed; - uint8 _flagTrigger; + int8 _flagTrigger; int _curTable; uint8 _unk4; uint8 _unk5; @@ -253,7 +253,7 @@ private: uint8 _unkValue1; uint8 _unkValue2; - uint8 _unkValue3; + int8 _unkValue3; uint8 _unkValue4; uint8 _unkValue5; uint8 _unkValue6; @@ -282,7 +282,7 @@ private: uint8 _unkOutputByte2; uint8 _unkOutputByte1; - uint8 _tempo; + int8 _tempo; const uint8 *_tablePtr1; const uint8 *_tablePtr2; @@ -325,7 +325,7 @@ AdlibDriver::AdlibDriver(Audio::Mixer *mixer) { _tempo = 0; - _unkValue3 = 0xFF; + _unkValue3 = -1; _unkValue1 = _unkValue2 = _unkValue4 = _unkValue5 = 0; _unkValue6 = _unkValue7 = _unkValue8 = _unkValue9 = _unkValue10 = 0; _unkValue11 = _unkValue12 = _unkValue13 = _unkValue14 = _unkValue15 = @@ -508,13 +508,13 @@ int AdlibDriver::snd_clearFlag(va_list &list) { void AdlibDriver::callback() { lock(); --_flagTrigger; - if ((int8)_flagTrigger < 0) + if (_flagTrigger < 0) _flags &= ~8; callbackOutput(); callbackProcess(); _unkValue3 += _tempo; - if ((int8)_unkValue3 < 0) { + if (_unkValue3 < 0) { if (!(--_unkValue2)) { _unkValue2 = _unkValue1; ++_unkValue4; @@ -536,8 +536,8 @@ void AdlibDriver::callbackOutput() { initTable(table); table.unk2 = unk2; table.dataptr = ptr; - table.unk1 = 0xFF; - table.unk4 = 0xFF; + table.unk1 = -1; + table.unk4 = -1; table.unk5 = 1; if (index != 9) { unkOutput2(index); @@ -562,9 +562,8 @@ void AdlibDriver::callbackProcess() { table.unk1 = _tempo; } - uint16 temp = table.unk4 + table.unk1; table.unk4 += table.unk1; - if (temp > 0xFF) { + if (table.unk4 < 0) { if (--table.unk5) { if (table.unk5 == table.unk7) unkOutput1(table); @@ -645,7 +644,7 @@ void AdlibDriver::initTable(OutputState &table) { debugC(9, kDebugLevelSound, "initTable(%d)", &table - _outputTables); memset(&table.dataptr, 0, sizeof(OutputState) - ((char*)&table.dataptr - (char*)&table)); - table.unk1 = 0xFF; + table.unk1 = -1; table.unk2 = 0; // normally here are nullfuncs but we set 0 for now table.callback1 = 0; @@ -962,8 +961,8 @@ int AdlibDriver::updateCallback3(uint8 *&dataptr, OutputState &state, uint8 valu initTable(state2); state2.unk2 = temp; state2.dataptr = ptr; - state2.unk1 = 0xFF; - state2.unk4 = 0xFF; + state2.unk1 = -1; + state2.unk4 = -1; state2.unk5 = 1; unkOutput2(table); } @@ -1107,7 +1106,7 @@ int AdlibDriver::updateCallback22(uint8 *&dataptr, OutputState &state, uint8 val int AdlibDriver::updateCallback23(uint8 *&dataptr, OutputState &state, uint8 value) { value >>= 1; _unkValue1 = _unkValue2 = value; - _unkValue3 = 0xFF; + _unkValue3 = -1; _unkValue4 = _unkValue5 = 0; return 0; } @@ -1151,8 +1150,8 @@ int AdlibDriver::updateCallback28(uint8 *&dataptr, OutputState &state, uint8 val return 0; } -int AdlibDriver::setTempo(uint8 *&dataptr, OutputState &state, uint8 value) { - _tempo = value; +int AdlibDriver::update_setTempo(uint8 *&dataptr, OutputState &state, uint8 value) { + _tempo = (int8)value; return 0; } @@ -1163,7 +1162,7 @@ int AdlibDriver::updateCallback30(uint8 *&dataptr, OutputState &state, uint8 val } int AdlibDriver::updateCallback31(uint8 *&dataptr, OutputState &state, uint8 value) { - state.unk1 = value; + state.unk1 = (int8)value; return 0; } @@ -1349,7 +1348,7 @@ int AdlibDriver::updateCallback45(uint8 *&dataptr, OutputState &state, uint8 val if ((int8)value < 0) value = (uint8)-1; } - state.unk1 = value; + state.unk1 = (int8)value; return 0; } @@ -1727,7 +1726,7 @@ const AdlibDriver::ParserOpcode AdlibDriver::_parserOpcodeTable[] = { // 36 COMMAND(updateCallback28), COMMAND(updateCallback9), - COMMAND(setTempo), + COMMAND(update_setTempo), COMMAND(updateCallback30), // 40 |