[ scummvm-Patches-606595 ] MAX: fix for Sam & Max animation glitch
noreply at sourceforge.net
noreply at sourceforge.net
Mon Sep 9 08:27:08 CEST 2002
Patches item #606595, was opened at 2002-09-09 08:27
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=418822&aid=606595&group_id=37116
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Torbjörn Andersson (eriktorbjorn)
Assigned to: Nobody/Anonymous (nobody)
Summary: MAX: fix for Sam & Max animation glitch
Initial Comment:
There is a slight animation bug when Sam & Max have
disguised themselves as a bigfoot. Sometimes Sam's lips
move when Max is speaking, and vice versa.
This phenomenon can be triggered by saying something
profound to Evelyn Morrison or the eating bigfoot, or
by asking (first time only) the eating bigfoot about
Bruno. There are other cases as well, but these are the
ones I've found that are the easiest to trigger.
The animation frame to use is embedded in the message
to speak, and CHARSET_1() decodes that just fine.
Problem is, that part of the code doesn't have the
final say in the matter. In these cases:
* actorTalk() will call a->startAnimActor(a->talkFrame1)
* CHARSET_1() will call a->startAnimActor(a->talkFrame1)
* CHARSET_1() will call a->startAnimActor(frme)
* processSfxQueues() will call
a->startAnimActor(a->talkFrame1)
And since processSfxQueues() isn't called until after
the screen has been updated, you will get one frame of
the right animation, before the wrong one kicks in.
Note that, at least at the moment, it's not sufficient
to simply set a->talkFrame1 = frme, because not every
message specifies a starting frame. The original value
needs to be kept as default.
By the way, the reason the same bug doesn't happen with
the Kushman brothers is because that script doesn't use
embedded commands. Instead it uses o6_actorSet() to
explicitly set the talk frames before each line.
Fortunately, processSfxQueues()'s call to
startAnimActor() seems to be triggered only from
CHARSET_1(), so fixing the bug becomes mostly a matter
of fixing that one function. The included patch does
the following:
A fourth parameter is added to talkSound() to specify
the talk sound frame, or -1 to indicate that the
default should be used. This also requires a small
update to processSfxQueues(), of course.
CHARSET_1() won't call talkSound() or startAnimActor()
until after all the commands embedded into the message
have been processed.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=418822&aid=606595&group_id=37116
More information about the Scummvm-tracker
mailing list