Opened 18 years ago
Last modified 3 years ago
#1946 new defect
SCUMM: Adlib Emulation doesn't Respect Volume Settings
|Reported by:||SF/tbcarey||Owned by:|
|Version:||Keywords:||audio, reproducible, AdLib|
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.
Ticket imported from: #1159581. Ticket imported from: bugs/1946.
Change History (12)
comment:1 by , 18 years ago
comment:2 by , 18 years ago
I downloaded the Monkey1 Demo [which uses the MONKEYEGA target] and the same behaviour was exhibited.
comment:3 by , 18 years ago
|Summary:||MULT: Adlib Emulation Does Not Respect Music Volume Settings → ADLIB: Adlib Emulation doesn't Respect Volume Settings|
comment:4 by , 18 years ago
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.
comment:5 by , 18 years ago
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.
comment:6 by , 18 years ago
comment:7 by , 18 years ago
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.
comment:8 by , 12 years ago
Bug #3053125 seems to be a duplicate of this, for SCI
comment:9 by , 11 years ago
Bug #3053125 is probably not related to the cause of this problem though. The SCUMM engine uses a different AdLib driver implementation.
comment:10 by , 4 years ago
|Keywords:||audio reproducible added|
|Priority:||normal → low|
This is still reproducible using MONKEYEGA demo
comment:11 by , 4 years ago
|Component:||→ Engine: SCUMM|
comment:12 by , 3 years ago
|Summary:||ADLIB: Adlib Emulation doesn't Respect Volume Settings → SCUMM: Adlib Emulation doesn't Respect Volume Settings|
Once again, forgot to mention I'm using the latest CVS build [Mar 9 2005 10:47:16] on Win32. Sorry about that.