[Scummvm-cvs-logs] SF.net SVN: scummvm: [21232] scummvm/trunk/engines/kyra/sound_adlib.cpp
eriktorbjorn at users.sourceforge.net
eriktorbjorn at users.sourceforge.net
Sun Mar 12 04:41:07 CET 2006
Revision: 21232
Author: eriktorbjorn
Date: 2006-03-12 04:40:14 -0800 (Sun, 12 Mar 2006)
ViewCVS: http://svn.sourceforge.net/scummvm/?rev=21232&view=rev
Log Message:
-----------
And now, for a change, some more renamings:
update1() -> setupDuration()
updateAndOutput1() -> setupNote()
setInstrument() -> setupInstrument() (just for the symmetry)
updateAndOutput3() -> noteOn()
That made the following two renamings seem natural:
updateCallback10() -> update_playRest()
updateCallback27() -> update_playNote()
I decided to number the secondary effects, even though there's only one:
update_setupSecondaryEffect() -> update_setupSecondaryEffect1()
update_removeSecondaryEffect() -> update_removeSecondaryEffect1()
And finally, I renamed the effects callbacks:
stateCallback1_1() -> primaryEffect1()
stateCallback1_2() -> primaryEffect2()
stateCallback2_1() -> secondaryEffect1()
Modified Paths:
--------------
scummvm/trunk/engines/kyra/sound_adlib.cpp
Modified: scummvm/trunk/engines/kyra/sound_adlib.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sound_adlib.cpp 2006-03-12 10:56:14 UTC (rev 21231)
+++ scummvm/trunk/engines/kyra/sound_adlib.cpp 2006-03-12 12:40:14 UTC (rev 21232)
@@ -35,7 +35,6 @@
// - check how the sounds are stopped (doesn't work atm whyever)
// - implement music pausing + stop and fadeing
// - check why the sfx sounds strange sometimes
-// - implement stateCallback1_1
// Basic Adlib Programming:
// http://www.gamedev.net/reference/articles/article446.asp
@@ -104,24 +103,24 @@
// unk11 - Unknown. Used for updating unk5.
// unk12 - Unknown. Used for updating unk7.
// unk16 - Sound-related. Possibly some sort of pitch bend.
- // unk18 - Sound-effect. Used for stateCallback2_1()
- // unk19 - Sound-effect. Used for stateCallback2_1()
- // unk20 - Sound-effect. Used for stateCallback2_1()
- // unk21 - Sound-effect. Used for stateCallback2_1()
- // unk22 - Sound-effect. Used for stateCallback2_1()
- // unk29 - Sound-effect. Used for stateCallback1_1()
- // unk30 - Sound-effect. Used for stateCallback1_1()
- // unk31 - Sound-effect. Used for stateCallback1_1()
- // unk32 - Sound-effect. Used for stateCallback1_2()
- // unk33 - Sound-effect. Used for stateCallback1_2()
- // unk34 - Sound-effect. Used for stateCallback1_2()
- // unk35 - Sound-effect. Used for stateCallback1_2()
- // unk36 - Sound-effect. Used for stateCallback1_2()
- // unk37 - Sound-effect. Used for stateCallback1_2()
- // unk38 - Sound-effect. Used for stateCallback1_2()
+ // unk18 - Sound-effect. Used for secondaryEffect1()
+ // unk19 - Sound-effect. Used for secondaryEffect1()
+ // unk20 - Sound-effect. Used for secondaryEffect1()
+ // unk21 - Sound-effect. Used for secondaryEffect1()
+ // unk22 - Sound-effect. Used for secondaryEffect1()
+ // unk29 - Sound-effect. Used for primaryEffect1()
+ // unk30 - Sound-effect. Used for primaryEffect1()
+ // unk31 - Sound-effect. Used for primaryEffect1()
+ // unk32 - Sound-effect. Used for primaryEffect2()
+ // unk33 - Sound-effect. Used for primaryEffect2()
+ // unk34 - Sound-effect. Used for primaryEffect2()
+ // unk35 - Sound-effect. Used for primaryEffect2()
+ // unk36 - Sound-effect. Used for primaryEffect2()
+ // unk37 - Sound-effect. Used for primaryEffect2()
+ // unk38 - Sound-effect. Used for primaryEffect2()
// unk39 - Currently unused, except for updateCallback56()
// unk40 - Currently unused, except for updateCallback56()
- // unk41 - Sound-effect. Used for stateCallback1_2()
+ // unk41 - Sound-effect. Used for primaryEffect2()
struct OutputState {
uint8 opExtraLevel2;
@@ -174,9 +173,9 @@
int8 unk16;
};
- void stateCallback1_1(OutputState &state);
- void stateCallback1_2(OutputState &state);
- void stateCallback2_1(OutputState& state);
+ void primaryEffect1(OutputState &state);
+ void primaryEffect2(OutputState &state);
+ void secondaryEffect1(OutputState& state);
void resetAdlibState();
void writeOPL(byte reg, byte val);
@@ -185,11 +184,11 @@
void unkOutput2(uint8 num);
uint16 getRandomNr();
- void update1(uint8 unk1, OutputState &state);
+ void setupDuration(uint8 duration, OutputState &state);
- void updateAndOutput1(uint8 rawNote, OutputState &state, bool flag = false);
- void setInstrument(uint8 regOffset, uint8 *dataptr, OutputState &state);
- void updateAndOutput3(OutputState &state);
+ void setupNote(uint8 rawNote, OutputState &state, bool flag = false);
+ void setupInstrument(uint8 regOffset, uint8 *dataptr, OutputState &state);
+ void noteOn(OutputState &state);
void adjustVolume(OutputState &state);
@@ -224,11 +223,11 @@
int update_returnFromSubroutine(uint8 *&dataptr, OutputState &state, uint8 value);
int update_setBaseOctave(uint8 *&dataptr, OutputState &state, uint8 value);
int updateCallback9(uint8 *&dataptr, OutputState &state, uint8 value);
- int updateCallback10(uint8 *&dataptr, OutputState &state, uint8 value);
+ int update_playRest(uint8 *&dataptr, OutputState &state, uint8 value);
int update_writeAdlib(uint8 *&dataptr, OutputState &state, uint8 value);
int updateCallback12(uint8 *&dataptr, OutputState &state, uint8 value);
int update_setBaseNote(uint8 *&dataptr, OutputState &state, uint8 value);
- int update_setupSecondaryEffect(uint8 *&dataptr, OutputState &state, uint8 value);
+ int update_setupSecondaryEffect1(uint8 *&dataptr, OutputState &state, uint8 value);
int updateCallback15(uint8 *&dataptr, OutputState &state, uint8 value);
int updateCallback16(uint8 *&dataptr, OutputState &state, uint8 value);
int updateCallback17(uint8 *&dataptr, OutputState &state, uint8 value);
@@ -241,10 +240,10 @@
int updateCallback24(uint8 *&dataptr, OutputState &state, uint8 value);
int update_setExtraLevel1(uint8 *&dataptr, OutputState &state, uint8 value);
int updateCallback26(uint8 *&dataptr, OutputState &state, uint8 value);
- int updateCallback27(uint8 *&dataptr, OutputState &state, uint8 value);
+ int update_playNote(uint8 *&dataptr, OutputState &state, uint8 value);
int updateCallback28(uint8 *&dataptr, OutputState &state, uint8 value);
int update_setTempo(uint8 *&dataptr, OutputState &state, uint8 value);
- int update_removeSecondaryEffect(uint8 *&dataptr, OutputState &state, uint8 value);
+ int update_removeSecondaryEffect1(uint8 *&dataptr, OutputState &state, uint8 value);
int updateCallback31(uint8 *&dataptr, OutputState &state, uint8 value);
int update_setExtraLevel3(uint8 *&dataptr, OutputState &state, uint8 value);
int update_setExtraLevel2(uint8 *&dataptr, OutputState &state, uint8 value);
@@ -709,9 +708,9 @@
continue;
} else {
opcode = 0;
- updateAndOutput1(command & 0xFF, table);
- updateAndOutput3(table);
- update1((command & 0xFF00) >> 8, table);
+ setupNote(command & 0xFF, table);
+ noteOn(table);
+ setupDuration((command & 0xFF00) >> 8, table);
if (!_continueFlag)
continue;
break;
@@ -834,22 +833,25 @@
return _rnd;
}
-void AdlibDriver::update1(uint8 unk1, OutputState &state) {
- debugC(9, kDebugLevelSound, "update1(%d, %d)", unk1, &state - _outputTables);
- _continueFlag = unk1;
+void AdlibDriver::setupDuration(uint8 duration, OutputState &state) {
+ debugC(9, kDebugLevelSound, "setupDuration(%d, %d)", duration, &state - _outputTables);
+ _continueFlag = duration;
if (state.unk11) {
- state.unk5 = unk1 + (getRandomNr() & state.unk11 & 0xFF);
+ state.unk5 = duration + (getRandomNr() & state.unk11 & 0xFF);
return;
}
if (state.unk12) {
- state.unk7 = (unk1 >> 3) * state.unk12;
+ state.unk7 = (duration >> 3) * state.unk12;
}
- state.unk5 = unk1;
+ state.unk5 = duration;
}
-void AdlibDriver::updateAndOutput1(uint8 rawNote, OutputState &state, bool flag) {
- debugC(9, kDebugLevelSound, "updateAndOutput1(%d, %d)", rawNote, &state - _outputTables);
+// This function may or may not play the note. It's usually followed by a call
+// to noteOn(), which will always play the current note.
+void AdlibDriver::setupNote(uint8 rawNote, OutputState &state, bool flag) {
+ debugC(9, kDebugLevelSound, "setupNote(%d, %d)", rawNote, &state - _outputTables);
+
state.rawNote = rawNote;
int8 note = (rawNote & 0x0F) + state.baseNote;
@@ -901,8 +903,8 @@
writeOPL(0xB0 + _curTable, state.regBx);
}
-void AdlibDriver::setInstrument(uint8 regOffset, uint8 *dataptr, OutputState &state) {
- debugC(9, kDebugLevelSound, "setInstrument(%d, %p, %d)", regOffset, (const void *)dataptr, &state - _outputTables);
+void AdlibDriver::setupInstrument(uint8 regOffset, uint8 *dataptr, OutputState &state) {
+ debugC(9, kDebugLevelSound, "setupInstrument(%d, %p, %d)", regOffset, (const void *)dataptr, &state - _outputTables);
// Amplitude Modulation / Vibrato / Envelope Generator Type /
// Keyboard Scaling Rate / Modulator Frequency Multiple
writeOPL(0x20 + regOffset, *dataptr++);
@@ -945,9 +947,12 @@
writeOPL(0x83 + regOffset, *dataptr++);
}
-void AdlibDriver::updateAndOutput3(OutputState &state) {
- debugC(9, kDebugLevelSound, "updateAndOutput3(%d)", &state - _outputTables);
+// Apart from playing the note, this function also updates the variables for
+// primary effect 2.
+void AdlibDriver::noteOn(OutputState &state) {
+ debugC(9, kDebugLevelSound, "noteOn(%d)", &state - _outputTables);
+
// The "note on" bit is set, and the current note is played.
state.regBx |= 0x20;
@@ -984,8 +989,8 @@
// unk30 - modifies the frequency
// unk31 - determines how often the notes are played
-void AdlibDriver::stateCallback1_1(OutputState &state) {
- debugC(9, kDebugLevelSound, "Calling stateCallback1_1 (channel: %d)", _curTable);
+void AdlibDriver::primaryEffect1(OutputState &state) {
+ debugC(9, kDebugLevelSound, "Calling primaryEffect1 (channel: %d)", _curTable);
state.unk31 += state.unk29;
if (state.unk31 >= 0)
return;
@@ -1049,7 +1054,7 @@
// - unk35 is based on unk34 and not further modified
// - unk36 is not further modified
//
-// updateAndOutput3()
+// noteOn()
// - Plays the current note
// - Updates unk37 with a new (lower?) frequency
// - Copies unk36 to unk38. The unk38 variable is a countdown.
@@ -1066,8 +1071,8 @@
// 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);
+void AdlibDriver::primaryEffect2(OutputState &state) {
+ debugC(9, kDebugLevelSound, "Calling primaryEffect2 (channel: %d)", _curTable);
if (state.unk38) {
--state.unk38;
return;
@@ -1106,7 +1111,7 @@
//
// Related functions and variables:
//
-// update_setupSecondaryEffect()
+// update_setupSecondaryEffect1()
// - Initialies unk18, unk19, unk20, unk21, unk22 and offset
// - unk19 is not further modified
// - unk20 is not further modified
@@ -1120,8 +1125,8 @@
// unk22 - the operation to perform
// offset - the offset to the data chunk
-void AdlibDriver::stateCallback2_1(OutputState &state) {
- debugC(9, kDebugLevelSound, "Calling stateCallback2_1 (channel: %d)", _curTable);
+void AdlibDriver::secondaryEffect1(OutputState &state) {
+ debugC(9, kDebugLevelSound, "Calling secondaryEffect1 (channel: %d)", _curTable);
state.unk18 += state.unk19;
if (state.unk18 < 0) {
if (--state.unk21 < 0) {
@@ -1251,8 +1256,8 @@
return 2;
}
-int AdlibDriver::updateCallback10(uint8 *&dataptr, OutputState &state, uint8 value) {
- update1(value, state);
+int AdlibDriver::update_playRest(uint8 *&dataptr, OutputState &state, uint8 value) {
+ setupDuration(value, state);
noteOff(state);
return (_continueFlag != 0);
}
@@ -1263,9 +1268,9 @@
}
int AdlibDriver::updateCallback12(uint8 *&dataptr, OutputState &state, uint8 value) {
- updateAndOutput1(value, state);
+ setupNote(value, state);
value = *dataptr++;
- update1(value, state);
+ setupDuration(value, state);
return (_continueFlag != 0);
}
@@ -1274,13 +1279,13 @@
return 0;
}
-int AdlibDriver::update_setupSecondaryEffect(uint8 *&dataptr, OutputState &state, uint8 value) {
+int AdlibDriver::update_setupSecondaryEffect1(uint8 *&dataptr, OutputState &state, uint8 value) {
state.unk18 = value;
state.unk19 = value;
state.unk20 = state.unk21 = *dataptr++;
state.unk22 = *dataptr++;
state.offset = READ_LE_UINT16(dataptr); dataptr += 2;
- state.callback2 = &AdlibDriver::stateCallback2_1;
+ state.callback2 = &AdlibDriver::secondaryEffect1;
return 0;
}
@@ -1306,7 +1311,7 @@
int AdlibDriver::updateCallback17(uint8 *&dataptr, OutputState &state, uint8 value) {
uint8 *ptr = _soundData;
ptr += READ_LE_UINT16(_soundData + (value << 1) + 0x1F4);
- setInstrument(_curRegOffset, ptr, state);
+ setupInstrument(_curRegOffset, ptr, state);
return 0;
}
@@ -1314,7 +1319,7 @@
state.unk29 = value;
state.unk30 = READ_BE_UINT16(dataptr);
dataptr += 2;
- state.callback1 = &AdlibDriver::stateCallback1_1;
+ state.callback1 = &AdlibDriver::primaryEffect1;
state.unk31 = -1;
return 0;
}
@@ -1338,7 +1343,7 @@
state.unk34 = temp + 1;
state.unk35 = temp << 1;
state.unk36 = *dataptr++;
- state.callback1 = &AdlibDriver::stateCallback1_2;
+ state.callback1 = &AdlibDriver::primaryEffect2;
return 0;
}
@@ -1379,13 +1384,13 @@
}
int AdlibDriver::updateCallback26(uint8 *&dataptr, OutputState &state, uint8 value) {
- update1(value, state);
+ setupDuration(value, state);
return (_continueFlag != 0);
}
-int AdlibDriver::updateCallback27(uint8 *&dataptr, OutputState &state, uint8 value) {
- update1(value, state);
- updateAndOutput3(state);
+int AdlibDriver::update_playNote(uint8 *&dataptr, OutputState &state, uint8 value) {
+ setupDuration(value, state);
+ noteOn(state);
return (_continueFlag != 0);
}
@@ -1399,7 +1404,7 @@
return 0;
}
-int AdlibDriver::update_removeSecondaryEffect(uint8 *&dataptr, OutputState &state, uint8 value) {
+int AdlibDriver::update_removeSecondaryEffect1(uint8 *&dataptr, OutputState &state, uint8 value) {
--dataptr;
state.callback2 = 0;
return 0;
@@ -1522,7 +1527,7 @@
int AdlibDriver::updateCallback41(uint8 *&dataptr, OutputState &state, uint8 value) {
state.unk16 = value;
- updateAndOutput1(state.rawNote, state, true);
+ setupNote(state.rawNote, state, true);
return 0;
}
@@ -1583,7 +1588,7 @@
_curRegOffset = _outputTable[6];
_unkValue6 = *(ptr + 6);
- setInstrument(_curRegOffset, ptr, state);
+ setupInstrument(_curRegOffset, ptr, state);
entry = *dataptr++ << 1;
ptr = _soundData + READ_LE_UINT16(_soundData + entry + 0x1F4);
@@ -1593,7 +1598,7 @@
_unkValue7 = entry = *(ptr + 5);
_unkValue8 = entry = *(ptr + 6);
- setInstrument(_curRegOffset, ptr, state);
+ setupInstrument(_curRegOffset, ptr, state);
entry = *dataptr++ << 1;
ptr = _soundData + READ_LE_UINT16(_soundData + entry + 0x1F4);
@@ -1603,7 +1608,7 @@
_unkValue9 = entry = *(ptr + 5);
_unkValue10 = entry = *(ptr + 6);
- setInstrument(_curRegOffset, ptr, state);
+ setupInstrument(_curRegOffset, ptr, state);
// Octave / F-Number / Key-On for channels 6, 7 and 8
@@ -1887,13 +1892,13 @@
// 8
COMMAND(updateCallback9),
- COMMAND(updateCallback10),
+ COMMAND(update_playRest),
COMMAND(update_writeAdlib),
COMMAND(updateCallback12),
// 12
COMMAND(update_setBaseNote),
- COMMAND(update_setupSecondaryEffect),
+ COMMAND(update_setupSecondaryEffect1),
COMMAND(updateCallback15),
COMMAND(updateCallback16),
@@ -1923,7 +1928,7 @@
// 32
COMMAND(updateCallback26),
- COMMAND(updateCallback27),
+ COMMAND(update_playNote),
COMMAND(updateCallback9),
COMMAND(updateCallback9),
@@ -1931,7 +1936,7 @@
COMMAND(updateCallback28),
COMMAND(updateCallback9),
COMMAND(update_setTempo),
- COMMAND(update_removeSecondaryEffect),
+ COMMAND(update_removeSecondaryEffect1),
// 40
COMMAND(updateCallback9),
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list