[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