Opened 9 years ago

Closed 9 years ago

Last modified 13 months ago

#5350 closed defect (fixed)

SCUMM: Restart with F8 key not working properly

Reported by: SF/simsaw Owned by: lordhoto
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game:

Description

When pressing F8 to restart a game, you see the message asking you if you really want to restart plus the letter that tells the script which letter to take for restart. So it shows for example:
"Do you want to restart? (Y/N)Y"
It should not display the last letter in the game as it is just an information for the script.

Furthermore, ScummVM assumes it's always "Y" you need to press in order to restart. However, in translated games there are other keys meant to be pressed. So for example in the German version of Monkey Island 2 you see:
"Wollen Sie wirklich neu anfangen? (J/N)J"
You still have to press "Y" although you are asked to confirm with "J".

This happens in all SCUMM games that can be restarted using the F8 key and have such a prompting message.

Tested with Daily Build from September, 11 2010.

Ticket imported from: #3064655. Ticket imported from: bugs/5350.

Attachments (1)

scumm_confirm_dialog.patch (1.3 KB ) - added by lordhoto 9 years ago.
Patch against r52679

Download all attachments as: .zip

Change History (9)

by lordhoto, 9 years ago

Attachment: scumm_confirm_dialog.patch added

Patch against r52679

comment:1 by lordhoto, 9 years ago

I uploaded a possible fix for this. The code now interprets the character after the ")" as "yes" key (and removes it from the output). I still allow Y for that though, since I am not sure what Japanese versions of the game supply there, also it would be neat to know whether there's any language which uses a different aboart key than "n" and whether it's defined in the string too.

I tested my Loom PC-Engine Janpanese, but I only get an English string there.

comment:2 by criezy, 9 years ago

I can confirm this patch fixes the issue with the french versions of the games which use 'o' for yes and 'n' for no.

comment:3 by SF/simsaw, 9 years ago

Does your code look for a ")" char in order to find out if it should be removed or not? There might be some games or localisations doing it differently, like:
"Do you want to quit? Y/NY" or "Do you want to quit [y\n]Y" (minus the " chars of course)
Thus I recommend looking for the last char of the line and removing this one from the output.

It's good to keep 'Y' for the moment as the Japanese version cannot print the restart question correctly at the moment (see bug #1946611).
I must say however that I am not quite happy with this because someone could be used from playing in DOS of pressing any other key to express "no", then a German person presses "y" thinking that only "j" would restart the game and probably has to redo hours of game play. So we might consider to change this in the future.

comment:4 by lordhoto, 9 years ago

Yes the code looks for ")". Well actually it could look for "]" too. On the other hand we could search for the "/" and then skip one character and take the next one as yes character.

Anyway I don't see any real report about a Japanese version not working properly in bug #1946611, it rather talks about that a specific "workaround" wouldn't work for Japanese and Russian versions. And as I said my Loom PC-Engine Japanese seems to use English text there too.

comment:5 by lordhoto, 9 years ago

To be precise the code checks whether the last char on the line is a ")" if that's not the case it uses it as "YES" button. In case there is, it does not do anything.

Simple removing the last char might not work. I think the built-in message strings do not contain that extra "Y" for example.

comment:6 by lordhoto, 9 years ago

Anyway I committed it now (r52715), in case there are problems with FM-TOWNS games, either a follow up should be reported here or a new item should be opened.

comment:7 by lordhoto, 9 years ago

Owner: set to lordhoto
Resolution: fixed
Status: newclosed

comment:8 by digitall, 13 months ago

Component: Engine: SCUMM
Note: See TracTickets for help on using tickets.