Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#5394 closed defect (fixed)

MMC64: Crash when trying to use the radio unit (Funkgerät)

Reported by: SF/zaurak Owned by: Kirben
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Maniac Mansion

Description

Version:ScummVM 1.2.0pre 52840 (Sep 21 2010 17:06:49)
System: Windows XP
Game: Maniac Mansion C64 (German language)
playing with Dave, Syd & Bernard

To complete the game using the path by calling the meteor police, it is necessary to use the radio unit (Benutz Funkgerät) to call them.

If Bernard uses the radio unit (Benutz Funkgerät) and types in the number of the meteor police (1138), which is noted at the wall notice (Fahndungsanzeige), ScummVM crashes reporting:

"convertMessageToString(): string escape sequence 252 unknown!"

Therefore the game is not completable using this path,

Ticket imported from: #3077966. Ticket imported from: bugs/5394.

Attachments (1)

maniaca.s14 (6.6 KB ) - added by SF/zaurak 9 years ago.
Savegame: Use radio unit (Benutz Funkgerät) and type in the meteor police number (1138)

Download all attachments as: .zip

Change History (7)

by SF/zaurak, 9 years ago

Attachment: maniaca.s14 added

Savegame: Use radio unit (Benutz Funkgerät) and type in the meteor police number (1138)

comment:1 by SF/tobigun, 9 years ago

This bug relates to the telephone as well.
After the keypad (room 43) script is executed (number typed) the method scummLoop() will call handleMouseOver() which in turn calls drawSentence() where convertMessageToString() (with drawString()) is executed.
convertMessageToString() crashes as it gets a cryptic malformed string as input (something like "Gehe zu $§Ö²Ä³ÖJ!?!!") .

The corrupted string is created by drawSentenceWord() which is called by drawSentence() to retrieve the name of the active object. Unfortunately the active object is set to the last key typed on the keypad (here the key "8", _activeObject=173, _activeObjectIndex=11) so getObjOrActorName() searches for the name of a key which just points to garbage.

I don't know what is the best way to fix this. It seems as if _activeObject(Index) has to be set to the currently pressed key, otherwise the script will not work. Maybe the activeObject could be set to the radio unit (object=135, index=8) or telephone after script execution (rather dirty solution) or getObjOrActorName() could handle the keys of the keypad separately (maybe the easiest solution) or the call to drawSentence() could be prevented at all.

comment:2 by SF/segra, 9 years ago

The fix for this problem was just been posted, patch #3077966

comment:3 by SF/segra, 9 years ago

Opps, that should be patch #3091570

comment:4 by Kirben, 9 years ago

Fixed in ScummVM SVN, by the patch provided by segra.

Use the next daily snapshot of ScummVM SVN.

comment:5 by Kirben, 9 years ago

Owner: set to Kirben
Resolution: fixed
Status: newclosed

comment:6 by SF/zaurak, 9 years ago

Works fine using ScummVM 1.3.0svn53822 (Oct 25 2010 23:36:48). Game is completable using the path by calling the meteor police.

Note: See TracTickets for help on using tickets.