[Scummvm-tracker] [ScummVM] #10241: SCI: SQ4: Vohaul's taunt to Roger bug
ScummVM
trac at scummvm.org
Mon Mar 18 06:03:46 CET 2019
#10241: SCI: SQ4: Vohaul's taunt to Roger bug
----------------------------+-------------------------
Reporter: EricOakford | Owner: (none)
Type: defect | Status: new
Priority: normal | Component: Engine: SCI
Resolution: | Keywords:
Game: Space Quest 4 |
----------------------------+-------------------------
Comment (by sluicebox):
I ran into this a while ago, yikes is it intense. I have a patch that
fixes this, though it needs some final polish and loads more testing, but
oh my gosh it's more a script rewrite than a patch.
It looks to me like when they were converting scripts for the CD version
they got to this one and said "i'm not touching this mess". Instead it's a
"if speech then new-code else run-the-old-code-as-is", which is unusual in
this game. The old text-mode code not only has empty midi tracks for
timing but also lots of leading space characters for placing text on
screen. I think if this script were less fragile they would have just
upgraded it to use the new FaceTalker class, like they did with the other
scripts such as zondraTalker in room 320, in which case it would
automatically work in dual mode. (btw I love dual mode )
Despite all that, the midi timing is working correctly in ScummVM, not
that we want to use it.
The real obstacle to fixing this is that the audio and text for Vohaul's
second and third messages are out of sync. The audio for the second
message contains *both* messages, and there is simply no audio resource
for the third message. Ain't nothin' easy.
My patch rewrites the script to use tVOHAUL, a FaceTalker, in all modes,
and passes the (many) text formatting parameters it needs to draw the text
in the same way that the room's text-mode code does. This automatically
gets us the right behavior in all three modes. To handle the broken
2nd/3rd messages it sets a timer the length of the first half of the 2nd
message's audio, and if that fires before the user dismisses the message
it hot swaps the on-screen text with the third message if in text or dual
mode, a feature not supported by FaceTalker. It also works around
FaceTalker's message-delay calculation coming up with a value that's too
short in text-mode since it's based on string length and this broken
message only has half the message in its text.
Anyway, this one almost broke me, and it still might.
--
Ticket URL: <https://bugs.scummvm.org/ticket/10241#comment:6>
ScummVM <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list