Opened 3 weeks ago

Closed 3 weeks ago

#15398 closed defect (fixed)

SCUMM: DIG: Fast room skipping in first two screens produces glitches

Reported by: AndywinXp Owned by: AndywinXp
Priority: high Component: Engine: SCUMM
Version: Keywords:
Cc: Game: The Dig

Description

This is a regression from 2.8.1 to 2.9.0git which I didn't have time to look up yet.

It happens in the very beginning of the game. For brevity I will now refer to the first room of the game (which is very wide as it contains both the space ship and the asteroid far view) as two separate rooms. A "room change" between these two actually appears to be a camera movement.

How to reproduce

  1. Start up the game and skip the intro with ESC
  2. Move the mouse to the right of the screen and double click a few times on the "asteroid" hotspot until the game immediately changes the room without a transition
  3. On the new screen perform the same double-clicking on the left side of the screen to go back to the previous room

What will happen then

The background will stay the same as if the room was never changed, while the actor will be in their correct state instead.

What should have happened

The background should have changed on room change.

I know, I know, I'm a SCUMM maintainer and I should fix it instead of filing a ticket, but with the things I have to finish before release I swear I'm going to forget about this if I don't file it... And I'm really not sure I ever touched the camera code.

Change History (2)

comment:1 by AndywinXp, 3 weeks ago

Update: my 27e6b811d5105907ae8e75d4356e68408672773a commit broke this. Why am I not surprised? :-)

There must be something missing from the equation, the changes done there mirror the disasm...

comment:2 by AndywinXp, 3 weeks ago

Owner: set to AndywinXp
Resolution: fixed
Status: newclosed

In 107133c8:

SCUMM: v7-8: Fix setCameraAt() behavior when executed from checkExecVerbs()

Checking all the necessary disasms, the camera._last update
(and the sound as well...) should be executed before checkExecVerbs().
This successfully fixes #15398:
"SCUMM: DIG: Fast room skipping in first two screens produces glitches"

Note: See TracTickets for help on using tickets.