Opened 16 years ago

Closed 13 years ago

#1339 closed defect (fixed)

ZAK: "Oxygene-bug" on Mars

Reported by: SF/slc_ Owned by: fingolfin
Priority: low Component: Engine: SCUMM
Keywords: Cc:
Game: Zak McKracken


Tested with a CVS-snapshot of the win32-build from
12th of December, 2003.

After turning on the "oxygene-machine" on Mars, I by
mistake went outside with one of the girls.
She said "I can't breathe" and I tried getting inside
again by chosing "walk to chamber" (or something
like that). Then she said "I can't reach it" until I put on
the helmet again. Sometimes, if trying to walk towards it
she will eventually get inside again.

Savegame attached.

Ticket imported from: #859513. Ticket imported from: bugs/1339.

Attachments (1)

zak256.s21 (8.4 KB) - added by SF/slc_ 16 years ago.
In the great chambers…

Download all attachments as: .zip

Change History (11)

Changed 16 years ago by SF/slc_

Attachment: zak256.s21 added

In the great chambers...

comment:1 Changed 15 years ago by fingolfin

Summary: ZAK256: "Oxygene-bug" on MarsZAK256: "Oxygene-bug" on Mars

comment:2 Changed 14 years ago by fingolfin

Interesting! I think the problem is caused by the talk
animation. This might be related to bug #771483.

To be precises: script 131 is responsible for printing the
"I can't breathe" string. In particular it contains this:
[0055] (91) animateCostume(VAR_EGO,246)
[00BC] (D8) printEgo([Text("I can't breathe!")]);

So, the actor is told to turn around and face the player.
That interfers with the player's commands (who tells the
girl to walk back in); so she turns around, which stops all
here other movements.

comment:3 Changed 13 years ago by Kirben

Summary: ZAK256: "Oxygene-bug" on MarsZAK: "Oxygene-bug" on Mars

comment:4 Changed 13 years ago by Kirben

This bug occurs in the PC versions of Zak McKracken too,
not just the FM-TOWNS version.

comment:5 Changed 13 years ago by fingolfin

In order to fix this with the think-it-through-method (as
opposed to the disassembling method :-), it would be very
useful to know how the original interpreter behaves in this
situation -- is it buggy, too? Is the turn command simply
ignored? Is the turn exectued but then the walk continues?

comment:6 Changed 13 years ago by Kirben

I checked the original FM-TOWNS version of game under Unz
emulator, and the exact same situation occurs in the
original game, when without oxygen too.

So this isn't a ScummVM specific issue, although maybe we
could add work around?

comment:7 Changed 13 years ago by fingolfin

Priority: normallow

comment:8 Changed 13 years ago by fingolfin

It's a relief to hear we are not doing anything wrong, phew.

Yes, we could add a workaround. One idea would be to ignore that particular
animateCostume() opcode (i.e. check for the game/script/room IDs or so, and if
they match, ignore the opcode). Of course that's rather crude. More elegant
would be to only ignore it while walking. Even more sophisticated approaches
would be possible, up to rewriting that script and patching the game to use our
modified script, but I don't think it would be worth the effort :-)

comment:9 Changed 13 years ago by fingolfin

Owner: set to fingolfin
Resolution: fixed
Status: newclosed

comment:10 Changed 13 years ago by fingolfin

I put a workaround into SVN (namely, I changed it to ignore that particular
animation command).

Note: See TracTickets for help on using tickets.