Opened 16 years ago

Last modified 3 months ago

#1946 new defect

SCUMM: Adlib Emulation doesn't Respect Volume Settings

Reported by: SF/tbcarey Owned by:
Priority: low Component: Engine: SCUMM
Keywords: audio, reproducible, AdLib Cc:
Game:

Description

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 SF/tbcarey, 16 years ago

Once again, forgot to mention I'm using the latest CVS build [Mar 9 2005 10:47:16] on Win32. Sorry about that.

comment:2 by SF/tbcarey, 16 years ago

I downloaded the Monkey1 Demo [which uses the MONKEYEGA target] and the same behaviour was exhibited.

comment:3 by fingolfin, 16 years ago

Owner: set to fingolfin
Summary: MULT: Adlib Emulation Does Not Respect Music Volume SettingsADLIB: Adlib Emulation doesn't Respect Volume Settings

comment:4 by fingolfin, 16 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 fingolfin, 16 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 fingolfin, 16 years ago

Owner: fingolfin removed

comment:7 by eriktorbjorn, 15 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 bluegr, 10 years ago

Bug #3053125 seems to be a duplicate of this, for SCI

comment:9 by lordhoto, 9 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 Mataniko, 2 years ago

Keywords: audio reproducible added
Priority: normallow

This is still reproducible using MONKEYEGA demo

comment:11 by Mataniko, 2 years ago

Component: Engine: SCUMM

comment:12 by raziel-, 3 months ago

Keywords: AdLib added
Summary: ADLIB: Adlib Emulation doesn't Respect Volume SettingsSCUMM: Adlib Emulation doesn't Respect Volume Settings
Note: See TracTickets for help on using tickets.