Opened 8 months ago

Last modified 7 months ago

#13165 new defect

SCI: QFG1-JP crash on long messages with Japanese subtitles

Reported by: sluicebox Owned by:
Priority: normal Component: Engine: SCI
Version: Keywords: original
Cc: Game: Quest for Glory 1

Description

In QFG1 Japanese (PC-98), long messages crash due to out of bounds drawing that fails an assertion.

Two messages have been found that do this. Both of them are death messages. Crash occurs when subtitles are enabled and language is set to English. That is, English is drawn above and Japanese is drawn below as the subtitle language. The input language doesn't affect this.

Long messages that crash:

  • open door in room 321, upstairs door on the left
  • kill guard in room 38

Sierra's interpreter didn't crash but it did render the text incorrectly.

Thanks to DarkSoul for finding this and comparing with original behavior: https://twitter.com/DarkSoul4242/status/1472986812465704961

Attachments (6)

qfg1jp-1.png (36.8 KB ) - added by m-kiewitz 8 months ago.
qfg1jp-2.png (33.9 KB ) - added by m-kiewitz 8 months ago.
qfg1jp-3.png (49.1 KB ) - added by m-kiewitz 8 months ago.
qfg1jp-4.png (39.8 KB ) - added by m-kiewitz 8 months ago.
qfg1jp-5.png (40.8 KB ) - added by m-kiewitz 8 months ago.
qfg1jp-6.png (37.2 KB ) - added by m-kiewitz 8 months ago.

Download all attachments as: .zip

Change History (10)

by m-kiewitz, 8 months ago

Attachment: qfg1jp-1.png added

comment:1 by m-kiewitz, 8 months ago

Does it hard crash, or is it an error message that occurs?

Saving images of the twitter posts.

by m-kiewitz, 8 months ago

Attachment: qfg1jp-2.png added

by m-kiewitz, 8 months ago

Attachment: qfg1jp-3.png added

by m-kiewitz, 8 months ago

Attachment: qfg1jp-4.png added

by m-kiewitz, 8 months ago

Attachment: qfg1jp-5.png added

by m-kiewitz, 8 months ago

Attachment: qfg1jp-6.png added

comment:2 by m-kiewitz, 8 months ago

nvm, it's an assert().
Ok.

I'm not sure how to handle this. It's a game bug that only happens when Japanese + English is displayed at the same time and the text for that is simply way too long.

comment:3 by ZvikaZ, 7 months ago

Well, it's probably not the best solution, but maybe in that case we should display just one of the languages.
I assume that most users would prefer to have untranslated text rather than a game crash.

comment:4 by m-kiewitz, 7 months ago

That's easier said than done. All these texts are dynamically loaded, so we can't easily say "well in this special case strip everything away" via scripts. At some point I had planned some way to extend script space, so we would have more space to work with.
Of course one could implement a workaround within the interpreter itself instead of a script patch, but I don't like such hacks at all.

Note: See TracTickets for help on using tickets.