aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sound_adlib.cpp
diff options
context:
space:
mode:
authorJohannes Schickel2006-03-12 17:58:04 +0000
committerJohannes Schickel2006-03-12 17:58:04 +0000
commit20095d8e93085419385efbe82d6607201d1d38c6 (patch)
tree64ba0fdcab20a7c0d3a34968171fdc4729976933 /engines/kyra/sound_adlib.cpp
parent63245b8eba5121a2880f6d40d4aaf77d52e1c37f (diff)
downloadscummvm-rg350-20095d8e93085419385efbe82d6607201d1d38c6.tar.gz
scummvm-rg350-20095d8e93085419385efbe82d6607201d1d38c6.tar.bz2
scummvm-rg350-20095d8e93085419385efbe82d6607201d1d38c6.zip
- Changes usage of regBx to regAx in primaryEffect2 (seems to be a bug introduced when renaming).
- Changes unk41 and unk32 to signed. - Fixes wrong sound when dropping items (that was also a little bug in primaryEffect2) svn-id: r21240
Diffstat (limited to 'engines/kyra/sound_adlib.cpp')
-rw-r--r--engines/kyra/sound_adlib.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/engines/kyra/sound_adlib.cpp b/engines/kyra/sound_adlib.cpp
index fdefaabede..971df24484 100644
--- a/engines/kyra/sound_adlib.cpp
+++ b/engines/kyra/sound_adlib.cpp
@@ -152,8 +152,8 @@ private:
uint8 unk34;
uint8 unk35;
uint8 unk36;
- uint8 unk32;
- uint8 unk41;
+ int8 unk32;
+ int8 unk41;
uint8 unk38;
uint8 opExtraLevel1;
uint8 unk7;
@@ -1094,23 +1094,23 @@ void AdlibDriver::primaryEffect2(OutputState &state) {
}
state.unk41 += state.unk32;
- if ((int8)state.unk41 < 0) {
- uint16 temp2 = state.unk37;
+ if (state.unk41 < 0) {
+ uint16 unk1 = state.unk37;
if (!(--state.unk34)) {
- temp2 ^= 0xFFFF;
- ++temp2;
- state.unk37 = temp2;
+ unk1 ^= 0xFFFF;
+ ++unk1;
+ state.unk37 = unk1;
state.unk34 = state.unk35;
}
- uint16 temp3 = state.regAx | (state.regBx << 8);
- temp2 += temp3 & 0x3FF;
- state.regAx = temp2 & 0xFF;
-
- state.regBx = (state.regBx & 0xFC) | (temp3 >> 8);
+ uint16 unk2 = (state.regAx | (state.regBx << 8)) & 0x3FF;
+ unk2 += unk1;
+
+ state.regAx = unk2 & 0xFF;
+ state.regBx = (state.regBx & 0xFC) | (unk2 >> 8);
// Octave / F-Number / Key-On
- writeOPL(0xA0 + _curTable, state.regBx);
+ writeOPL(0xA0 + _curTable, state.regAx);
writeOPL(0xB0 + _curTable, state.regBx);
}
}
@@ -1352,7 +1352,7 @@ int AdlibDriver::update_setBaseFreq(uint8 *&dataptr, OutputState &state, uint8 v
}
int AdlibDriver::update_setupPrimaryEffect2(uint8 *&dataptr, OutputState &state, uint8 value) {
- state.unk32 = value;
+ state.unk32 = (int8)value;
state.unk33 = *dataptr++;
uint8 temp = *dataptr++;
state.unk34 = temp + 1;