Opened 2 years ago

Closed 2 months ago

#15036 closed feature request (wontfix)

SCUMM: Re-enable the missing answering machine message in Sam&Max

Reported by: GermanTribun Owned by: dwatteau
Priority: normal Component: Engine: SCUMM
Version: Keywords:
Cc: Game: Sam and Max

Description

As TCRF wrote here about Sam & Max,

https://tcrf.net/Sam_%26_Max_Hit_the_Road#Local_Script_205_in_Room_7

the answering machine in the office actually has four messages, but for whatever reason, only three of those are picked at random. Is the fourth message also in the monster.sou? If yes, can the randomizer include all four of the messages?

Change History (5)

comment:1 by eriktorbjorn, 2 years ago

At least in the English CD version of the game, the other messages have a sound, like this:

[03D3] (B4)     printLine.msg(sound(0x1BD2BB, 0xA) + "<beep> Hello, is this the Saint Francis Pie Shop?" + wait() + "I'd like to order 200 lemon meringue pies and a small diet cola.")

(I don't remember off-hand what the parameters to sound() are, but I think the first one is the exact offset into the monster.sou file, or something like that.)

The fourth message, however, does not:

[04CE] (B4)     printLine.msg("<beep> Snork! <Grunt>" + wait() + "SQUEEEE!!!!" + wait() + "<Scronk> Yib!" + wait() + "<Click>")

I suppose it could be enabled for the floppy versions with something like this:

diff --git a/engines/scumm/script_v6.cpp b/engines/scumm/script_v6.cpp
index 4229dd37e5c..85614396dbe 100644
--- a/engines/scumm/script_v6.cpp
+++ b/engines/scumm/script_v6.cpp
@@ -1525,7 +1525,12 @@ void ScummEngine_v6::o6_loadRoomWithEgo() {
 
 void ScummEngine_v6::o6_getRandomNumber() {
        int rnd = _rnd.getRandomNumber(0x7fff);
-       rnd = rnd % (pop() + 1);
+       int max = pop();
+
+       if (enhancementEnabled(kEnhRestoredContent) && _game.id == GID_SAMNMAX && strcmp(_game.variant, "Floppy") == 0 && _currentRoom == 7 && vm.slot[_currentScript].number == 205)
+               max = 4;
+
+       rnd = rnd % max;
        if (VAR_RANDOM_NR != 0xFF)
                VAR(VAR_RANDOM_NR) = rnd;
        push(rnd);

But I don't own even a single floppy version, so I can't test it.

comment:2 by dwatteau, 2 months ago

In cb47285a:

SCUMM: SAMNMAX: Let one restore some unused answering machine line (floppy)

In Sam & Max's office, script 7-205 controls the random messages of the
answering machine. As documented on the TCRF wiki, one message remains
unused.

I *think* this line was cut on purpose (the talkie release has no voice
content for it, and Sam & Max don't have any reaction to it), but one
could argue that, on the floppy release (which is only voiced during the
intro), restoring this line doesn't seem out of place, then.

So, let users decide if they wish to restore it, through the Enhancement
setting for it. But only do so for the floppy release, where nobody
would complain about the missing audio for it.

Reported in Trac#15036.

comment:3 by dwatteau, 2 months ago

Owner: set to dwatteau
Resolution: fixed
Status: newclosed

The next ScummVM release will have an Enhancement for those who want to restore it -- only in the floppy release though, for the reasons given above, as I agree with erik's reasoning.

Thanks!

comment:4 by dwatteau, 2 months ago

Resolution: fixedwontfix
Status: closedpending

Well, I've actually undid the previous change.

The floppy release did have the proper getRandomNumber() max value set. Then, when they did the talkie release, they both changed the getRandomNumber() value, and they chose not to voice it.

So, it seems it was cut from the talkie release on purpose, and not by accident (as initially thought). And the current de facto policy is that we don't want the Enhancements to include changes clearly going _against_ original intent.

comment:5 by dwatteau, 2 months ago

Status: pendingclosed
Note: See TracTickets for help on using tickets.