Opened 4 years ago

Closed 4 years ago

#6931 closed defect (fixed)

SHERLOCK: Crash when talking to Lestrade at the beginning of the game (Spanish version)

Reported by: SF/gsanmartin Owned by: dreammaster
Priority: normal Component: Engine: Sherlock
Keywords: Cc:
Game: Sherlock Holmes: Case of the Serrated Scalpel

Description

When talking to Lestrade after checking out the corpse of the actress, right at the beginning of the game, the game crashes. Attached is a screencap of the scene and the log scummvm throws.

When the game was under the works I used to be able to play this scene.

ScummVM version: ScummVM 1.8.0git4720-g711d77c (Oct 2 2015 15:54:49) Language: Spanish Version: Floppy Platform: Win32

Ticket imported from: bugs/6931.

Attachments (2)

sherlock.PNG (76.0 KB ) - added by SF/gsanmartin 4 years ago.
claro.jpg (49.5 KB ) - added by m-kiewitz 4 years ago.

Download all attachments as: .zip

Change History (32)

by SF/gsanmartin, 4 years ago

Attachment: sherlock.PNG added

comment:1 by m-kiewitz, 4 years ago

Summary: Crash when talking to Lestrade at the beginning of the game (Spanish version)SHERLOCK: Crash when talking to Lestrade at the beginning of the game (Spanish version)

by m-kiewitz, 4 years ago

Attachment: claro.jpg added

comment:2 by m-kiewitz, 4 years ago

Game tries to print "-Claro! Mi experiencia profesional revela que esta mujer." to screen. First character is 0xAD.

I just checked with the original game and that character isn't shown. It seems the scripts should not pass the first character at all. Original game screenshot attached.

comment:3 by SF/gsanmartin, 4 years ago

Don't know if tthis can be of help, but it shouldn't read "-Claro!" anyway, it should be "¡Claro!". Maybe that's related to the problem?

comment:4 by m-kiewitz, 4 years ago

The original game only prints "Claro!", not "¡Claro!". My screenshot is from dos-box.

comment:5 by SF/gsanmartin, 4 years ago

I know, but you mentioned scummvm is trying to print "-Claro!" (or so I understood). Just trying to help pinpointing the problem.

comment:6 by m-kiewitz, 4 years ago

script logic skips over script opcodes normally, but English + German/Spanish versions don't behave the same. It seems that the character before "Claro!" is supposed to be an opcode, but it isn't skipped at the moment and that character results in the assert-crash.

comment:7 by m-kiewitz, 4 years ago

The issue was just fixed by dreammaster. It's quite weird, the character may even actually be text, but the character itself isn't inside the font.

The original game (but only the translated non-english versions!) skipped over all bytes >= 0x80, which also means that text can not start with such special characters.

Can you please tell me if "¡Claro!" is how it would be written normally? Maybe the 0xAD was supposed to be "¡", but wasn't translated properly.

comment:8 by m-kiewitz, 4 years ago

Owner: set to dreammaster
Resolution: fixed

comment:9 by dreammaster, 4 years ago

Now fixed journal as well. It turns out gputs explicitly ignores characters out of range for the font being used, whereas I previously just had it assert out.

comment:10 by SF/gsanmartin, 4 years ago

Yes, that's the proper way to write it. All sentences with exclamation point are surrounded by "¡ !" in Spanish. There's no way a sentence would be written without it in proper Spanish. But then again, the game fails to print the accent mark (áéíóú).

It seems that the game does not ever print the "¡" character:

But it also omits the "¿" (otherwise printed) when it's at the beginning of the dialogue:

These were just taken with DosBox.

Hope this helps.

comment:11 by dreammaster, 4 years ago

I'll also change my previous commit tonight, so that the special characters can appear at the start of sentences.

comment:12 by m-kiewitz, 4 years ago

I have just added code that creates the inverted exclamation mark, because it isn't inside the Spanish font file. The inverted question mask however is already included. The inverted exclamation mark now turns up in the journal.

comment:13 by m-kiewitz, 4 years ago

Gabriel, can you please tell us if those accented characters are not printed in both dos-box + ScummVM? I think I saw quite a few accented characters inside the Spanish font when I created the inverted exclamation mark stuff. I just want to make sure that it's not a ScummVM bug.

comment:14 by SF/gsanmartin, 4 years ago

I haven't seen them on the original either. I can't say for sure they don't show up ever, but in the three screenshots from DosBox in this thread there should be some accented words ("bisturí", "médico", " técnica"). I never saw any accent in my short play this morning, and accents are very common in the Spanish language. I dont think theyre on the translation at all.

comment:15 by m-kiewitz, 4 years ago

I see. We can't fix those then. But at least the inverted question mark/exclamation mark are now fixed. I just added code that will show those characters during regular dialog as well. I hope it won't cause any problems.

comment:16 by dreammaster, 4 years ago

I've now fixed the crash which was happening in the German version when talking to Watson in the alleyway murder scene. Is there anything else needed, and feasible, to be fixed before this bug is closed?

comment:17 by m-kiewitz, 4 years ago

Gabriel, can you please help us a bit more?

I just looked into the journal and a few English words are currently hardcoded. The German version is pretty straightforward, but it seems for the Spanish version they added a few extra words.

Original English text: 'Holmes ' 'asked ' 'said to ' 'me' 'the Inspector' ', "' 'I replied, "' 'The reply was, "' 'I' 'The Inspector' ' asked, "' ' said, "' 'Then ' 'Holmes'

Spanish text (same order as above, but with extra text added): 'Holmes ' 'me pregunto ' 'pregunto a' 'me dijo ' 'dijo a' 'l inspector' 'El ' 'Un ' ' un ' ': "' 'Yo replique: "' 'Replique: "' 'Y respondio: "' 'La respuesta fue: "' 'Yo' 'El inspector' ' pregunte: "' ' pregunto: "' ' dije: "' ' dijo: "' 'Entonces ' 'Holmes' 'yo' 'el inspector' ' pregunte, "' ' pregunto, "' ' dije, "' ' dijo, "'

Can you connect those together? When is "pregunte" used and when is "pregunto" used?

comment:18 by SF/gsanmartin, 4 years ago

These seem like the bits used to build sentences for the journal right? So roughly these are just conjugations of the verbs "decir" (to say), "preguntar"(to ask), "responder" (to reply), etc. In English for instance in the sentence "Holmes said " the verb is the same as in "I [Watson] said", but in Spanish they would be "Holmes dijo" as opposed to "Yo dije".

So: Holmes me preguntó (the accent is missing) --> Holmes asked me Holmes preguntó a --> Holmes Holmes me dijo --> Holmes told me Holmes dijo a --> Holmes told [a third person]

"l inspector" is a trickier one. When saying the sentence "Holmes told the inspector", in Spanish it would be "Holmes dijo al inspector", so it would seem they take the "dijo a" and concatenate it with "l inspector".

The next few ones ('El', 'Un', ' un ', ': ") im not sure why they're here, but my best guess is this:

In English you would say "Holmes told the kid:(...)" while in Spanish you would say something that would literally translate to "Holmes told to the kid". So Im guessing these particles ("El-->the","un"-->"a") are here as the bits to connect these sentences.

'Yo repliqué: "' --> I replied 'Repliqué: "' --> Again, I replied, don't know why it's repeated 'Y respondió: "' (And he replied) 'La respuesta fue: "' (the answer was)

'Yo' (I) 'El inspector' (The inspector) ' pregunté: "' ("asked" in the first person, to be concatenated with Yo) ' preguntó: "' ("asked" in the third person, to be concatenated with he/she, "El inspector") ' dije: "' ("said" in the first person) ' dijo: "' ("said" in the third person)

'Entonces ' (then) 'Holmes' (Holmes, duh) 'yo' (I) 'el inspector' (the inspector) ' pregunté, "' (again, like above) ' preguntó, "' (ditto) ' dije, "' (ditto) ' dijo, "' (ditto)

comment:19 by SF/gsanmartin, 4 years ago

By the way there's one more addition that could fix the original translation: the first location you can go, the alley where Sarah Carroway is killed, should be named "Callejón" in Spanish (which is the transaltion for "alley"). However it was left out as "alley".

The word "Exit" in conversations and in the inventory was also left out in English. It should say "Salir".

Can this be corrected as well?

comment:20 by m-kiewitz, 4 years ago

I just fixed the "Exit" translation. I already noticed that when I originally implemented it. Thank you. Fixing "alley" should be possible as well, but is more problematic. Will have to talk with dreammaster about it.

comment:21 by dreammaster, 4 years ago

That should be easy enough - just add a special language check at the end of loadLocationList, I think the method is, and replace the appropriate entry for the scene with the correct translation.

comment:22 by SF/gsanmartin, 4 years ago

Another bug I've found in the Spanish version (perhaps I should recopilate them all and open another bug tracker?). This only happens with ScummVM, when a text exceeds the window the instructions above read "Press any key to continue" in ScummVM. It said "Tecla para ver mas" (also "mas" should have an accent as in "más") in the original:

comment:23 by m-kiewitz, 4 years ago

Quite a bit of text isn't multilingual at the moment, that problem was already known. Will fix that as soon as possible.

comment:24 by m-kiewitz, 4 years ago

Okay, I have fixed "Alley" on the map now and it's now "Callejon"

And I just noticed that the journal uses "En el cajellon destras del teatro Regency". Is "cajellon" a typo? And "destras" looks like a typo too?

Shouldn't this be "En el callejon detras del teatro Regency"?

If those are typos, maybe you could look inside the files "journal.txt" and "chess.txt" for more typos.

comment:25 by SF/gsanmartin, 4 years ago

Indeed those are typos. And there are some others:

In chess.txt: Alamacen --> Almacen Compra-Venta de Jaimeson -> I feel like this should say "Jamieson" instead of "Jaimeson"?

journal.txt En el cajellon destras del teatro Regency -> En el callejon detras del teatro Regency En el apartamente de Simon Kingsley -> En el apartamento de Simon Kingsley Bajo la muelle de Savoy Pier -> Bajo el muelle de Savoy Pier En le viejo Sherman -> En el viejo Sherman En la entrada de la cada de Anna Carroway -> En la entrada de la casa de Anna Carroway En la tienda de Compra-Venta de Jaimeson -> Again not sure about "Jaimeson"

comment:26 by m-kiewitz, 4 years ago

Okay, I have just fixed all of those typos as well. I haven't touched the "Jaimeson" yet, because I think that's a name, but I'm not sure. I haven't fully played through the game yet, maybe dreammaster can help.

comment:27 by SF/gsanmartin, 4 years ago

Sorry to be at it again, but I saw this commit: https://github.com/scummvm/scummvm/commit/d236ddca4db10b0c9c477da06eed1089ce67db15

and then this happened:

Could it be the same bug?

comment:28 by m-kiewitz, 4 years ago

That commit was for the second Sherlock Holmes game. But the "Change Speaker to xxx" is already known by dreammaster. I think he already added a workaround, but I guess that one was for "Change Speaker To Holmes". Those seem to be left-overs from the translation itself and should also happen in the original interpreter.

comment:29 by dreammaster, 4 years ago

I'm going to close this.. we've sort of digressed from the original problem somewhat :). M. Kiewitz can look into what translation fixes can be done separately, and open a new bug story if needed.

comment:30 by dreammaster, 4 years ago

Status: newclosed
Note: See TracTickets for help on using tickets.