In INDY3, LOOM, and MONKEYVGA, when Adlib emulation is
selected, the music volume does not decrease or mute
when volume is changed using the volume control hotkeys
and new dialogue. For example, setting volume at 0 for
any of these games will still play the music at full
volume using Adlib emulation. I do not have MONKEYEGA
to test, but I have tried all other SCUMM games
utilizing MIDI and no others exhibit this behavior.
Note that this behaviour occurs only with Adlib
emulation; any other type of emulation will properly
mute or lower the volume when the volume control
hotkeys are used.
Logged In: YES
user_id=1103943
Once again, forgot to mention I'm using the latest CVS build
[Mar 9 2005 10:47:16] on Win32. Sorry about that.
Logged In: YES
user_id=1103943
I downloaded the Monkey1 Demo [which uses the MONKEYEGA
target] and the same behaviour was exhibited.
Logged In: YES
user_id=12935
Yes, we know that the adlib emu doesn't use the volume
settings. It would be trivial to make it use the music
volume setting (at least in SCUMM games), too. However,
adlib is also used for SFX, which means this wouldn't be the
right fix... of course, being able to control the volume at
least in some way for now might be better than not having
any control over it at all... I'll see what I can do once I
am back home from this conference sometime next week.
Logged In: YES
user_id=12935
I am back to my own computer now and had some time to look into this.
Essentially, the problem is that with V3-V6 SCUMM games, volume
control is done by iMuse. Hence, it would be wrong if the adlib emu would
do volume control, too, because then everything would be too quiet.
So, the question is why the volume settings aren't applied for these three
games. All of them are small header (V3/V4) games. For those games,
PROP_OLD_ADLIB is set. To quote from adlib.cpp:
"Older games used a different operator volume algorithm". There is a flag
in it, _game_SmallHeader, which controls the differences between old and
new games.
My guess: for some reason, the small header mode doesn't properly
handle volume changes. Note in particular that for SH games, neither
volume_table nor lookup_table are used.
Logged In: YES
user_id=577918
Looks like you're right. Without the final volume
adjustments - the one where volume_table[] is used - it
seems to me like the note volume is simply a constant
determined by a property (oplvl_1 and oplvl_2) of the
instrument itself.
But I don't really understand this part of the code.
Bug #3053125 seems to be a duplicate of this, for SCI
Bug #3053125 is probably not related to the cause of this problem though. The SCUMM engine uses a different AdLib driver implementation.