Opened 12 months ago

Closed 8 months ago

#10750 closed defect (wontfix)

QFG4: Wrong voice from Franz at the inn, introducing himself

Reported by: Vhati Owned by: bluegr
Priority: low Component: Engine: SCI
Keywords: SCI32 original Cc:
Game: Quest for Glory 4

Description

ScummVM 2.1.0git3770-g15306581ab (Oct 18 2018 04:27:32)
Windows 7 64bit
QFG4 CD (English)

In town, when asking the men at the inn about their names, the voice and text don't match.

The text says, "I be Franz. I am wealthy garlic grower."

The voice says: "Listen I'm tellin' ya, Igor's death must be avenged!"

File - 5kb MD5 - Full MD5
RESOURCE.000 - 263dce4aa34c49d3ad29bec889007b1c - 1364ba69e3c0abb68cc0170650a56692
RESOURCE.AUD - c39521bffb1d8b19a57394866184a0ca - 71098b9e97e20c8941c0e4812d5f906f
RESOURCE.MAP - aba367f2102e81782d961b14fbe3d630 - 801a04cc6aa5d437681a2dd0b6545248
RESOURCE.SFX - 3cf95e09dab8b11d675e0537e18b499a - 7c858d7253f86dab4cc6066013c5ecec

Attachments (1)

sci.005 (54.7 KB ) - added by Vhati 12 months ago.
SavedGame - Inn

Download all attachments as: .zip

Change History (25)

by Vhati, 12 months ago

Attachment: sci.005 added

SavedGame - Inn

comment:1 by digitall, 12 months ago

@Vhati: Thanks for the bug report. Could you try testing this with the original SCI interpreter to see if this occurs in the original as well?

comment:2 by digitall, 12 months ago

I have just compared the MD5sums that you provided with your datafiles with the ones for my copy of QFG4CD from the Quest for Glory Anthology.

They all match, apart from the RESOURCE.AUD file which for my copy has a file MD5sum of 799d4ac594bd79c7f786243c66a5b33c, rather than 71098b9e97e20c8941c0e4812d5f906f.

You may have an earlier variant of the game and mine is patched to fix these issues, but can I suggest that you recopy that file from the original media to see if this is corrupted datafiles and if that fixes this issue?

comment:3 by Vhati, 12 months ago

Original media's MD5 matches what's on my hard drive.

Game menu says it's v1.0.

comment:4 by Vhati, 12 months ago

The original interpreter also does this, confirming it was a Sierra problem with this variant.

comment:5 by m-kiewitz, 12 months ago

@Vhati Can you please tell us, from where you got this version?
Is it simply the US standalone release?

What's inside your VERSION file?

comment:6 by digitall, 12 months ago

Keywords: original added

comment:7 by Vhati, 12 months ago

VERSION file says 1.0

README.WIN "Quest for Glory - Shadows of Darkness CD Version 1.0"
README.WRI "Quest for Glory Anthology CD"

INSTALL.BAT: Mentions QFG1 (Original and remake), QFG2, QFG3 (Multiple languages), QFG4 (German no-voice), QFG4 (English voice), QFG5 Demo. Installer refers to itself as "Quest for Glory Collection". Datestamp 1997.

Checking Wikipedia...
https://en.wikipedia.org/wiki/Quest_for_Glory#Collections

This must be the "Quest for Glory Collection Series (1997)", which bundled "QFG5 Demo" + "Quest for Glory Anthology (1996)", which presumably bundled a standalone QFG4 release.

Wikipedia says the Anthology included "the fully patched CD version of QFG IV" though. No citation there. Maybe whoever wrote that meant all the floppy patches till then were already part of the first talkie release?

ScummVM's Wiki says the Anthology's QFG4 talkie was 1.0.
http://wiki.scummvm.org/index.php/SCI/Game_Collections#Quest_For_Glory_Anthology

comment:8 by Vhati, 12 months ago

RESOURCE.AUD Modified Date: 1994-09-20

That happens to be the exact month the standalone CD was released.

comment:9 by m-kiewitz, 12 months ago

Nice, that's the one I also got.

comment:10 by Vhati, 11 months ago

The message at fault is...

  • message pool 322 - noun:10, verb:147, cond:3, seq:2
    • Text: "I be Franz. I am wealthy garlic grower."
    • Voice: "Listen, I'm tellin' ya. Igor's death must be avenged!" (bug)

That wrong voice was a copy of...

  • message pool 260 - noun:18, verb:131, cond:91, seq:4
    • Text: "Igor's death must be avenged!"
    • Voice: "Listen, I'm tellin' ya. Igor's death must be avenged!"

They're not swapped. I didn't hear the correct audio anywhere in 322 or 260.


I don't know how to keep the text and suppress the voice for one message.

I don't know how to prune one message entirely from a sequence.


@digitall:
Since your resource.aud is different, can you check if you also have this bug?

Message fixes would ideally be restricted to the variant that needs fixing. Dunno if that's possible.

comment:11 by Vhati, 11 months ago

Summary: QFG4: Wrong voice from Franz at the innQFG4: Wrong voice from Franz at the inn, introducing himself

comment:12 by m-kiewitz, 11 months ago

Hmmm, maybe the correct voice is somewhere else.
OR maybe the voice is really nowhere.

Difficult to fix. We could - in theory - patch the message resource in some way.
Will have to look deeper into this.

comment:13 by m-kiewitz, 11 months ago

@digital can you please somehow warp to this location and try to get the dialog in your version?

comment:14 by Vhati, 11 months ago

@m-kiewitz:

somehow warp to this location and try to get the dialog

The room inits itself differently with each arrival as the story progresses. Unless there's a way to directly call script procedures from the debugger, setting specific plot flags to time travel would be really cumbersome.

They're stored across a range of globals (500-532), referenced together as an array. Each global integer is a bitmask representing several flags mashed together.

  • "proc0_2(n)"
    • Sets a flag, where 1 <= n <= 527.
  • "proc0_3(n)"
    • Clears a flag.
  • "proc0_4(n)"
    • Tests a flag.



script 0

(procedure (proc0_2 param1)
	(= [global500 (/ param1 16)]
		(|
			[global500 (/ param1 16)]
			(>> $8000 (mod param1 16))
		)
	)
)

(procedure (proc0_3 param1)
	(= [global500 (/ param1 16)]
		(&
			[global500 (/ param1 16)]
			(~ (>> $8000 (mod param1 16)))
		)
	)
)

(procedure (proc0_4 param1)
	(return
		(&
			[global500 (/ param1 16)]
			(>> $8000 (mod param1 16))
		)
	)
)

The debugger CAN set a global. What's complicated is choosing the value to set the desired bits. I'll see if I can determine the magic numbers driving their dialogue.

Of course, if digitall can open my savegame, well, they'd be there already. :)


EDIT: Doh. This is intro dialogue! A newly created character could simply teleport to 320, rest until nightfall, and re-enter for this message.

Last edited 11 months ago by Vhati (previous) (diff)

comment:15 by m-kiewitz, 11 months ago

Saved game may not work, because it may be a different game version.

comment:16 by Vhati, 11 months ago

Quick and dirty way to reproduce this.

  • Create a new character.
  • No plot flags necessary.
  • Fake an evening.
    • vv g 123 4
  • Teleport to the bed.
    • room 330
  • Walk downstairs, and ask about names.
Last edited 11 months ago by Vhati (previous) (diff)

comment:17 by digitall, 11 months ago

@m-kiewitz: Stand by. Will try and replicate :)

comment:18 by digitall, 11 months ago

Right. Can replicate from both the savegame and with Vhati's instructions from comment:16.

The person to talk to is not the large gentleman (innkeeper) on the right side of screen, but the smaller man at the back near the centre which gives the "Ask about: Names" dialog. Each of the men around the table then introduces themselves. The first character dialog vs. text has a few extra words in the audio, but generally matches... but the second one i.e. Franz gives the audio of "Igor's death must be avenged" which is totally wrong.

To be clear, this was with the latest git master i.e. ScummVM 2.1.0git3935-g442c578223 on Linux x86_64 and with the DOS version of QFG4-CD.

comment:19 by sluicebox, 11 months ago

This is funny because I was looking at bug #10813, which is also about the wrong audio for a message in resource 322, so I started playing the audio for random messages in that resource in sci companion, and the third one I did was this one, which didn't match the text at all. "I wonder if that's been reported yet" Yup!

See my comment in #10813 for the long version, but the short version is that this isn't a script bug, Sierra messed up and put a copy of a different audio file in the wrong place. The correct audio probably doesn't exist anywhere. If you dump the audio resources and listen to them and find the right message then this can be easily fixed. It's a long shot, but I got lucky with one of these in Gabriel Knight 1.

comment:20 by sluicebox, 10 months ago

There are six orphaned audio tracks in the game and this message isn't one of them.

comment:21 by Vhati, 10 months ago

I tried adding the following in resource_audio.cpp to ignore the bad audio...

// Any ignore blocks have to come after this to let the pointer advance.
if (isEarly) {
	offset = ptr.getUint32LE();
	ptr += 4;
} else {
	offset += ptr.getUint24LE();
	ptr += 3;
}

// QFG4CD has a message whose audio36 resource doesn't match the text.
//  The message tuple is 322 10 147 3 2. We ignore the voice. bug #10750
if (g_sci->getGameId() == GID_QFG4 && g_sci->isCD() &&
	map->_mapNumber == 322 && n == 0x0a930302) {
	continue;
}

It did remove the voice... with side effects.
The text wasn't kept on-screen long enough to read, and a warning printed.

WARNING: [Audio32::play]: audio36.322(10, 147, 3, 2) could not be found!



If there are a few seconds of silence lurking somewhere, that could be substituted to fill time.

comment:22 by sluicebox, 10 months ago

The best outcome would be to always show text for these messages and not play audio, which from what I know of the narrator/talker classes that would be hard, but it would benefit other games too.

Suppressing the incorrect audio36 resources from loading would be the easy part but as you saw the narrator/talker/whatever doesn't care if there's no audio, it just plays dead air. The only thing that determines if the text appears is the mode (Voice/Text/Dual) and it's like that in all the talkies.

The harder part would be to inject generic functionality so that the game did fallback on displaying text if there's no audio, no matter what mode it's in. That would be useful for other games too. KQ6CD is missing audio for three messages (#9610) with the same dead air problem in voice mode. There's probably others.

comment:23 by tomasz89, 10 months ago

I recall this being mentioned in the original QFG4 Readmes for the voice version - the voice dialog from Hans/Franz/Ivan was not 100% exactly what was on screen, but the developers decided to leave it intentionally, with the catch that this bug describes - one of the voice lines is just plain wrong.

comment:24 by bluegr, 8 months ago

Owner: set to bluegr
Resolution: wontfix
Status: newclosed

This is an error with the game resources. There’s not much we can do about it, since there’s no appropriate audio track

Closing as wontfix

Note: See TracTickets for help on using tickets.