diff options
| author | Torbjörn Andersson | 2006-03-09 12:04:41 +0000 |
|---|---|---|
| committer | Torbjörn Andersson | 2006-03-09 12:04:41 +0000 |
| commit | 9d19f7d32e0d6c063a8b9457dd554f8cf93496ad (patch) | |
| tree | 4b2ba1054325db179e8529fed824c3e4e14263ac | |
| parent | ff676b0b54ef475bd314aa8f93a15929f2a7dd92 (diff) | |
| download | scummvm-rg350-9d19f7d32e0d6c063a8b9457dd554f8cf93496ad.tar.gz scummvm-rg350-9d19f7d32e0d6c063a8b9457dd554f8cf93496ad.tar.bz2 scummvm-rg350-9d19f7d32e0d6c063a8b9457dd554f8cf93496ad.zip | |
Corrected a few comments where I had mistaken the note on/off bit for one of
the octave bits.
The unkOuput1() function always turns off the note, so I've renamed it
noteOff(). I've added some comments to unkOuput2() as well, but I'm still not
quite sure what its purpose is. It seems unlikely that it's simply a "note on"
function, given the many things it will clear for the channel. It does end by
turning the note on, though. Strange.
svn-id: r21162
| -rw-r--r-- | engines/kyra/sound_adlib.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/engines/kyra/sound_adlib.cpp b/engines/kyra/sound_adlib.cpp index 9615306c5c..03577c7e7d 100644 --- a/engines/kyra/sound_adlib.cpp +++ b/engines/kyra/sound_adlib.cpp @@ -150,7 +150,7 @@ private: void resetAdlibState(); void writeOPL(byte reg, byte val); void initTable(OutputState &table); - void unkOutput1(OutputState &table); + void noteOff(OutputState &table); void unkOutput2(uint8 num); uint16 getRandomNr(); @@ -442,7 +442,7 @@ int AdlibDriver::snd_unkOpcode3(va_list &list) { table.unk2 = 0; table.dataptr = 0; if (value != 9) { - unkOutput1(table); + noteOff(table); } ++value; } @@ -566,9 +566,9 @@ void AdlibDriver::callbackProcess() { if (table.unk4 < 0) { if (--table.unk5) { if (table.unk5 == table.unk7) - unkOutput1(table); + noteOff(table); if (table.unk5 == table.unk3 && _curTable != 9) - unkOutput1(table); + noteOff(table); } else { int8 opcode = 0; while (table.dataptr) { @@ -652,8 +652,8 @@ void AdlibDriver::initTable(OutputState &table) { table.unk3 = 0x01; } -void AdlibDriver::unkOutput1(OutputState &table) { - debugC(9, kDebugLevelSound, "unkOutput1(%d)", &table - _outputTables); +void AdlibDriver::noteOff(OutputState &table) { + debugC(9, kDebugLevelSound, "noteOff(%d)", &table - _outputTables); if (_curTable == 9) return; if (_unk4 && _curTable >= 6) @@ -684,8 +684,9 @@ void AdlibDriver::unkOutput2(uint8 num) { // Octave / F-Number / Key-On - // The purpose of this seems to be to first clear everything, and then - // set the octave. + // Turn the note off, then turn it on again. This could be a "note on" + // function, but it also clears the octave and the part of the + // frequency (F-Number) stored in this register. Weird. writeOPL(0xB0 + num, 0x00); writeOPL(0xB0 + num, 0x20); @@ -793,7 +794,7 @@ void AdlibDriver::updateAndOutput2(uint8 unk1, uint8 *dataptr, OutputState &stat void AdlibDriver::updateAndOutput3(OutputState &state) { debugC(9, kDebugLevelSound, "updateAndOutput3(%d)", &state - _outputTables); - // This sets a bit in the "Octave" field + // This sets the "note on" bit. state.unkOutputValue1 |= 0x20; // Octave / F-Number / Key-On @@ -1002,7 +1003,7 @@ int AdlibDriver::updateCallback8(uint8 *&dataptr, OutputState &state, uint8 valu int AdlibDriver::updateCallback9(uint8 *&dataptr, OutputState &state, uint8 value) { state.unk2 = 0; if (_curTable != 9) { - unkOutput1(state); + noteOff(state); } dataptr = 0; return 2; @@ -1010,7 +1011,7 @@ int AdlibDriver::updateCallback9(uint8 *&dataptr, OutputState &state, uint8 valu int AdlibDriver::updateCallback10(uint8 *&dataptr, OutputState &state, uint8 value) { update1(value, state); - unkOutput1(state); + noteOff(state); return (_continueFlag != 0); } |
