diff options
author | Torbjörn Andersson | 2006-03-10 10:18:05 +0000 |
---|---|---|
committer | Torbjörn Andersson | 2006-03-10 10:18:05 +0000 |
commit | 69b18f17441c406e70b2de750bcef1742bd6fcf4 (patch) | |
tree | 2cd6486e7cc2997949ed85f97ae3071ba5df4ac4 | |
parent | 95196056bd258d78f31ecb720117bb6a0973331c (diff) | |
download | scummvm-rg350-69b18f17441c406e70b2de750bcef1742bd6fcf4.tar.gz scummvm-rg350-69b18f17441c406e70b2de750bcef1742bd6fcf4.tar.bz2 scummvm-rg350-69b18f17441c406e70b2de750bcef1742bd6fcf4.zip |
Added some guesswork comments about stateCallback1_2() and related functions
and variables.
svn-id: r21200
-rw-r--r-- | engines/kyra/sound_adlib.cpp | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/engines/kyra/sound_adlib.cpp b/engines/kyra/sound_adlib.cpp index 2ee13a6bf6..a8380d03e8 100644 --- a/engines/kyra/sound_adlib.cpp +++ b/engines/kyra/sound_adlib.cpp @@ -817,10 +817,10 @@ void AdlibDriver::setInstrument(uint8 regOffset, uint8 *dataptr, OutputState &st void AdlibDriver::updateAndOutput3(OutputState &state) { debugC(9, kDebugLevelSound, "updateAndOutput3(%d)", &state - _outputTables); - // This sets the "note on" bit. - state.regBx |= 0x20; - // Octave / F-Number / Key-On + // The "note on" bit is set, and the current note is played. + + state.regBx |= 0x20; writeOPL(0xB0 + _curTable, state.regBx); int8 shift = 9 - state.unk33; @@ -879,6 +879,34 @@ void AdlibDriver::stateCallback1_1(OutputState &state) { state.regBx = value; } +// This is presumably used for some sound effects, e.g. Malcolm entering and +// leaving Kallak's hut. Related functions and variables: +// +// updateCallback21() +// - Initialises unk32, unk33, unk34, unk35 and unk36 +// - unk32 is not further modified +// - unk33 is not further modified +// - unk34 is a countdown that gets reinitialised to unk35 on zero +// - unk35 is based on unk34 and not further modified +// - unk36 is not further modified +// +// updateAndOutput3() +// - Plays the current note +// - Updates unk37 with a new (lower?) frequency +// - Copies unk36 to unk38. The unk38 variable is a countdown. +// +// unk32 - determines how often the notes are played +// unk33 - modifies the frequency +// unk34 - countdown, updates frequency on zero +// unk35 - initialiser for unk34 countdown +// unk36 - initialiser for unk38 countdown +// unk37 - frequency +// unk38 - countdown, stops playing on zero +// unk41 - determines how often the notes are played +// +// Note that unk41 is never initialised. Not that it should matter much, but it +// is a bit sloppy. + void AdlibDriver::stateCallback1_2(OutputState &state) { debugC(9, kDebugLevelSound, "Calling stateCallback1_2 (channel: %d)", _curTable); if (state.unk38) { |