Opened 16 years ago

Closed 16 years ago

Last modified 12 months ago

#8316 closed patch (fixed)

Possible fix for Sam & Max music glitch

Reported by: eriktorbjorn Owned by: SF/ender
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Sam and Max

Description

I've begun play-testing Sam & Max (talkie version) with
a January 27 CVS snapshot, but got side-tracked on the
following bug: When Doug tells me about the Ball of
Twine, the music goes silent.

This is what the script looks like:

[0D2E] (5D) if (ifClassOfIs(102,[19])) {
[0D3B] (AC) soundKludge([14,29,0,1,60,40])
[0D51] (5F) startScriptQuick(45,[102,1,1])
[0D61] (6C) break()
[0D62] (AC) soundKludge([14,29,0,1,127,100])
[0D78] (**) }

IMUSE command 14 is the Sam and Max "parameter fade",
which is here used to fade down the volume of the Mole
Man theme to 60. The US map is shown to reveal the
location of the Ball of Twine, and then the Mole Man
theme is faded back up. In theory.

Unfortunately it's not able to find player 29.
Apparently the US map script does one of those
temporary save/restore kind of things, and
ScummEngine::loadState() will call
_sound->stopAllSounds(), causing the music to stop.

The iMUSE state was not saved (and therefore not
restored) because _saveSound is 0 and
_saveLoadCompatible is 1. I can only assume that this
is deliberate, but it does mean that the music won't be
restarted. So in that case we shouldn't call
stopAllSounds(). Maybe not stopCD() either, but the CD
state is always saved as far as I can see.

Normally I might have simply applied this right away,
but since we're getting close to 0.6.0 I'd like some
feedback first to make sure I'm not missing anything
important.

Ticket imported from: #886058. Ticket imported from: patches/421.

Attachments (2)

samnmax.s20 (17.4 KB ) - added by eriktorbjorn 16 years ago.
Savegame at Doug's place
samnmax.diff (966 bytes ) - added by eriktorbjorn 16 years ago.
Patch against a January 27 CVS snapshot

Download all attachments as: .zip

Change History (12)

by eriktorbjorn, 16 years ago

Attachment: samnmax.s20 added

Savegame at Doug's place

comment:1 by eriktorbjorn, 16 years ago

Summary: Possible fix for Sam & Max music glitchPossible fix for Sam & Max music glitch

by eriktorbjorn, 16 years ago

Attachment: samnmax.diff added

Patch against a January 27 CVS snapshot

comment:2 by fingolfin, 16 years ago

Jamiesons might know more. Of course Jamieson currently isn't
"here", but I assign this to him anyway, just in case ... :-)

comment:3 by fingolfin, 16 years ago

Owner: set to SF/jamieson630

comment:4 by eriktorbjorn, 16 years ago

The music also goes quiet at Bumpusville when Bruno tells
you the location of the bigfoot party. I assume it's for the
same reason, because it didn't happen when I played the
scene with the patch applied, but I haven't had the time to
investigate any further.

comment:5 by Kirben, 16 years ago

That change is definately right for samnmax, I just checked
disasm. Original game only stopped all sounds when reloading
save game if _savesound was true.

comment:6 by eriktorbjorn, 16 years ago

What about the _saveLoadCompatible flag? Or is there no
corresponding flag in the original?

Speaking of that, why is there a 'compat' parameter to
saveState() and loadState()? As far as I can tell, it's
always the same as _saveLoadCompatible anyway.

comment:7 by Kirben, 16 years ago

I can't see anything like a _saveLoadCompatible flag in the
disasm. of original game.

comment:8 by SF/ender, 16 years ago

Owner: changed from SF/jamieson630 to SF/ender
Resolution: fixed
Status: newclosed

comment:9 by SF/ender, 16 years ago

It makes sense to me, anyway. The only area this particular
change could possibly break are temporary state saves, such as
some cutscenes in Tentacle and FOA. I didn't notice any
regressions in DOTT with this, so it should be fine. Applied.

comment:10 by digitall, 12 months ago

Component: Engine: SCUMM
Game: Sam and Max
Note: See TracTickets for help on using tickets.