Opened 2 years ago

Closed 2 years ago

#13373 closed defect (fixed)

SCUMM: Loom (EGA) - Rusty's ghost can disappear completely

Reported by: antoniou79 Owned by: athrxx
Priority: normal Component: Engine: SCUMM
Version: Keywords: blink, disappear, Rusty
Cc: Game: Loom


This in on Windows 10 x64, with a recent local build from HEAD master of 2.6.0git, testing with LOOM DOS EGA, using the orchestral audio feature.

For this I've applied the patch for the MT-32 upgrade to LOOM and set my Audio settings for the game to use "MT-32 emulator" as Music device. You may also need to do that for the attached save game to work.

How to reproduce:
After the cutscene whereby Rusty's ghost comes in, click on the hole to Outside, wait for Rusty to block Bobbin's exit and just before he starts speaking, click on his corpse. It's a relatively small time window. This can happen on subsequent times Rusty's ghost tries to block Bobbin --it does not have to be the first time.

What happens:
Rusty's ghost disappears (sometimes it also may flash once and then again disappear). Bobbin can still not exit to Outside, but there's no dialogue text now when trying to do so. Healing Rusty still works (HEALING SPELL: CAAC) and the game can proceed normally after that.

What should happen:
Rusty's ghost should not blink out.

Additional notes:

  • Note 1: The bug is not specific to the first dialogue Rusty says when blocking the hole to Outside. It can happen with his subsequent (different from the first, but repeating) dialogue for this.
  • Note 2: It does not seem to matter if the user skips the cutscene (whereby Rusty's ghost comes in and explains the situation to Bobbin) with Esc or watches it fully.
  • Note 3: It seems that if the user clicks on the hole to the Outside and then on Rusty's corpse, the game remembers the first click and Rusty will speak his dialogue for blocking Bobbin while standing over his corpse. Not sure if this is connected to the main bug reported here.

I'm including a save game.

Attachments (1)

loom-ega.s71 (14.9 KB ) - added by antoniou79 2 years ago.

Download all attachments as: .zip

Change History (7)

by antoniou79, 2 years ago

Attachment: loom-ega.s71 added

comment:1 by eriktorbjorn, 2 years ago

I haven't managed to reproduce this in the original interpreter - not yet, at least - and I don't understand what happens. I added some debug messages to Actor_v3::actorWalkStep() for what I think is the Rusty's ghost actor, and saw this:

Before: pos: 234, 66
After: pos: 234, 66
Before: pos: 234, -2303
After: pos: 234, -2303
Before: pos: 234, -4672
After: pos: 234, -4672
Before: pos: 234, -7041
After: pos: 234, -7041

So at some point, but probably not inside actorWalkStep(), Rusty's Y coordinate got all screwed up, and he just keeps moving further and further away.

comment:2 by eriktorbjorn, 2 years ago

I was wrong, the jump does happen in Actor_v3::actorWalkStep() after all. For whatever reason, _walkdata.deltaYFactor is 63167.

comment:3 by athrxx, 2 years ago

I have made a fix. Please check if it does what it should...

comment:4 by athrxx, 2 years ago

Owner: set to athrxx
Resolution: pending
Status: newpending

in reply to:  3 comment:5 by antoniou79, 2 years ago

Replying to athrxx:

I have made a fix. Please check if it does what it should...

I can confirm the bug is now fixed in the EGA DOS version of LOOM.

comment:6 by athrxx, 2 years ago

Resolution: pendingfixed
Status: pendingclosed
Note: See TracTickets for help on using tickets.