Mixed Adlib in MI2 - Did someone script extra sound effects?

General chat related to ScummVM, adventure gaming, and so on.

Moderator: ScummVM Team

Post Reply
Mau1wurf1977
Posts: 85
Joined: Sun Sep 17, 2006 2:26 am
Location: Perth, WA, Australia

Mixed Adlib in MI2 - Did someone script extra sound effects?

Post by Mau1wurf1977 »

Ok this isn't a question about how to use mixed adlib or what it does.

It is a very specific question, likely for the people that worked on the ScummVM implemention of MI2...

The scene in question is the bar with the barkeeper cleaning a mug, there is a piano with a metronom on top of it...

Now the barkeeper cleans his bug and spits in it.

On Adlib: You hear the cleaning sound and a spitting noise
On Sound Blaster: Cleaning sound but no spittin noise
Roland: Neither sound

Now Mixed Adlib gives you something not found in any version of the "real" game.

You get the cleaning sound of Adlib and Sound Blaster version and you hear a spitting noise that is totally different compared to the Adlib spitting noise.

The Adlib spittin noise sound like FM, the Mixed Adlib spitting noise sounds like a digital recording.

Now one thing I can think of is that someone took the digital recording from Largo LaGrande spitting in the bar and reused it for the barkeeper spitting into his mug.

Not even the old version in Special Edition of MI2 has the barkeeper spitting into his mug sound :-)
User avatar
eriktorbjorn
ScummVM Developer
Posts: 3523
Joined: Mon Oct 31, 2005 7:39 am

Post by eriktorbjorn »

I don't remember the details. Monkey Island 2 has some digitized sound effects (some yells from Largo, and some sound effects during the spitting competition at least), and from what I remember ScummVM cheats so that those are always played.

A comment in script_v5.cpp (the o5_isEqual() function; the aforementioned cheat) also mentions a spitting sound for the bartender that's only played - I think - if the interpreter claims you have an AdLib soundcard. It might be the sound effect you're hearing. I don't remember if it's a digitized sound or not. I can't check at the moment.
Mau1wurf1977
Posts: 85
Joined: Sun Sep 17, 2006 2:26 am
Location: Perth, WA, Australia

Post by Mau1wurf1977 »

Yea that conclusion would make a lot of sense...

I was really surprised when I heard that spitting sound, because I am really familiar with this game and no version I played before had that sound!
User avatar
LogicDeLuxe
Posts: 431
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe »

Now Mixed Adlib gives you something not found in any version of the "real" game.
That was the whole point. Especially MT-32 (while it has the superior music) has some sounds missing. Native SCUMM isn't able to use multiple music devices simultaneously, but ScummVM does with this switch on.

Usually, sampled sounds are not affected by this switch. However, this particular script is somewhat buggy, so the sound is usually not played in DOS. ScummVM circumvents some script bugs.
Mau1wurf1977
Posts: 85
Joined: Sun Sep 17, 2006 2:26 am
Location: Perth, WA, Australia

Post by Mau1wurf1977 »

Fully aware that the MT-32 has missing sounds. My question was specifically for this one room with the barkeeper spitting noise...

So you are saying that the real DOS version, not playing the spitting sound in Sound Blaster mode, is a scripting bug?

Or did someone at ScummVM simply go "Hey let's just reuse Largo Legrande spit and use it for the barkeeper"?

I don't mind mixing technologies that are found in the Game, but adding sound effects that don't exist in the Game is something else alltogether...
User avatar
eriktorbjorn
ScummVM Developer
Posts: 3523
Joined: Mon Oct 31, 2005 7:39 am

Post by eriktorbjorn »

Mau1wurf1977 wrote: So you are saying that the real DOS version, not playing the spitting sound in Sound Blaster mode, is a scripting bug?
I've had a chance to look at it now, so things are starting to come back to me. I believe that the (possible) script bug is that is only tries to play the spitting sound when the soundcard variable is 3 (AdLib, I think). I don't think ScummVM tries to do anything to get around that.

Each sound effect can exist in several different formats, and this one does so it's strange that it's so picky about playing it in this particular case. ScummVM generally prefers the digitized version of the sound effect, if one is available. The "cheat" I mentioned before is that for some other sound effects (Largo's yelps of pain, for instance) the scripts check if the soundcard variable is 5 (not sure what that means) before playing them. In those cases, whatever value the variable actually has ScummVM pretends that it is 5 after all.

(It's possible that this hack could be reworked now - the cheat was added a long time ago - but I don't think ScummVM ever sets that variable to 5 on its own at the moment.)
Mau1wurf1977 wrote:Or did someone at ScummVM simply go "Hey let's just reuse Largo Legrande spit and use it for the barkeeper"?
It's possible that this particular spitting sound is reused in other places, but ScummVM doesn't try to swap one sound effect for another. Judging by what you say, it just decides to play a different version of it than the original did in that case.
User avatar
LogicDeLuxe
Posts: 431
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe »

This is the actual part of the script in question:

Code: Select all

[0012] (48) if (VAR_SOUNDCARD == 3) {
[0019] (1C)   startSound(11);
[001B] (**) }
Trying in DOSBox, this variable is 3 in AdLib mode, and 4 in MT-32 mode.

It is the same sound used at the campfire, for Largo's spit, at the spitting contest, and when hanging above the acid pit. None of those have any check against VAR_SOUNDCARD.

In ScummVM, the variable seems to be always set to 3, even in MIDI mode and mixed AdLib turned off.

And the reason ScummVM plays that sample in MIDI mode at all is due to a higher priority given to samples than MIDI. Quite a useful feature. Original SCUMM just plays the first sub resource in a SOUN resource which it is able to play. Oddly enough, in Monkey 2, ROL is always ordered before SBL. Only Largo's screams have no ROL resource, thus the sample is actually played.

They must have encountered problems with the ROL version of the spit sound in this scene. Maybe they ran out of available MIDI channels on the MT-32, and thus included this check against VAR_SOUNDCARD (I didn't try). You might argue that this wouldn't be a problem, if they had ordered SBL before ROL. But then again, it is possible to have just an MPU-401 interface, and no soundcard at all, which is a supported system some might have in use in those days after all.
Mau1wurf1977
Posts: 85
Joined: Sun Sep 17, 2006 2:26 am
Location: Perth, WA, Australia

Post by Mau1wurf1977 »

LogicDeLuxe wrote:This is the actual part of the script in question:

Code: Select all

[0012] (48) if (VAR_SOUNDCARD == 3) {
[0019] (1C)   startSound(11);
[001B] (**) }
Trying in DOSBox, this variable is 3 in AdLib mode, and 4 in MT-32 mode.
And that is exactly what I found!

If you play Monkey island with "monkey2 a" you will hear a FM spit sound. But if you play with "monkey2 s" no spit sound.

However ScummVM plays a digital spitting sound and that's the thing I can't figure out...

I guess it's a bug that under DOS with a Sound Blaster you don't hear the digital version of the spit sound...

Even the classic version in Monkey Island 2 Deluxe Edition has no spitting sound for the barkeeper! A bug that made it's way into the next game Heheheh
Mau1wurf1977
Posts: 85
Joined: Sun Sep 17, 2006 2:26 am
Location: Perth, WA, Australia

Post by Mau1wurf1977 »

eriktorbjorn wrote: The "cheat" I mentioned before is that for some other sound effects (Largo's yelps of pain, for instance) the scripts check if the soundcard variable is 5 (not sure what that means) before playing them. In those cases, whatever value the variable actually has ScummVM pretends that it is 5 after all.
Variable 5 would have to be for Sound Blaster. In Adlib mode Largo you can hear the needle go into the doll, but no screaming whatsoever. With a Sound Blaster you hear digital recordings of him screaming...
Judging by what you say, it just decides to play a different version of it than the original did in that case.
But looking at the script posted above, there should only be a spitting sound when you play in Adlib mode. Which is exactly what I found...
Mau1wurf1977
Posts: 85
Joined: Sun Sep 17, 2006 2:26 am
Location: Perth, WA, Australia

Post by Mau1wurf1977 »

Here is a video of the issue: http://www.youtube.com/watch?v=dTBcqDPXMTs

I don't how to record in ScummVM. I have a full version of Fraps but no luck...
rftl
Posts: 2
Joined: Sun Sep 26, 2010 9:12 am

Post by rftl »

I read on queststudios.

That the CM-32L had more effects in MI2 than the MT-32 (the Spit noise).

They include the Spit noises, doors opening/closing, Slamming gate on Phatt island, Keys from Walt the dog, metronome in scabb island bar, thunder at graveyard, hammer noises, and bats.
Does any of the other sounds have the AdLib/SoundBlaster Problem?

And does that not mean we need a MT-32 vs LAPC-I/CM-32L (ans all the other devices with the 33 extra sounds) switch?
Mau1wurf1977
Posts: 85
Joined: Sun Sep 17, 2006 2:26 am
Location: Perth, WA, Australia

Post by Mau1wurf1977 »

rftl wrote:I read on queststudios.

That the CM-32L had more effects in MI2 than the MT-32 (the Spit noise).
I use a CM-64, but that wasn't the problem.

The issue is related to the mixed Adlib mode.
And does that not mean we need a MT-32 vs LAPC-I/CM-32L (ans all the other devices with the 33 extra sounds) switch?
Not at all. The Roland mode works perfectly.

Watch the YouTube video I uploaded. It shows that in Adlib mode you hear a spit noise, but not in Sound Blaster mode.

However in mixed Adlib mode with ScummVM you hear a spit sound that doesn't exist in the game. THAT's the issue. A sound that doesn't exist in the real game.

If I could record ScummVM I could upload a video. But there isn't an option and Fraps doesn't work with it either. So I'm stuck
Mau1wurf1977
Posts: 85
Joined: Sun Sep 17, 2006 2:26 am
Location: Perth, WA, Australia

Post by Mau1wurf1977 »

Here is the issue in all it's glory:

Real game Adlib: FM spit sound

Real game Sound Blaster: No spit sound whatsoever

See this video: http://www.youtube.com/watch?v=dTBcqDPXMTs

ScummVM: Digital recording of spit sound

See this video: http://www.youtube.com/watch?v=36niZEFZ9Ls

So the question is, how come ScummVM plays a sound that doesn't exist in the real game?
User avatar
eriktorbjorn
ScummVM Developer
Posts: 3523
Joined: Mon Oct 31, 2005 7:39 am

Post by eriktorbjorn »

Mau1wurf1977 wrote: So the question is, how come ScummVM plays a sound that doesn't exist in the real game?
Because the game script, in some cases, tells it to play a certain sound effect. The script only provides a numerical ID for the sound but ScummVM notices that it exists in several different forms, and guesses that the digitized one is the best one.

So ScummVM handles it slightly differently than the original, but is it wrong or is it closer to the original vision? I don't know. It is playing the sound effect it's being told to, after all.
Mau1wurf1977
Posts: 85
Joined: Sun Sep 17, 2006 2:26 am
Location: Perth, WA, Australia

Post by Mau1wurf1977 »

Yup thanks!

My post was mostly to clarify what the issue is.

I don't want readers to jump to conclusions regarding Roland modules and what not ;-)
Post Reply