Opened 5 years ago

Last modified 5 years ago

#6781 new defect

ZVISION: Animation glitch (position? scaling?) in Nemesis laboratory

Reported by: eriktorbjorn Owned by:
Priority: normal Component: Engine: ZVision
Keywords: Cc:
Game: Zork Nemesis

Description

Current git snapshot of ScummVM
English Zork Nemesis, included on ZGI DVD version

In the attached savegame, you can click on the red picture on the desk to reveal a picture of a violinist underneath. But the animation doesn't line up with the background, creating a very noticeable seam. This does not happen in the original interpreter. At least not in the DOS version.

Ticket imported from: bugs/6781.

Attachments (7)

znemesis.003 (9.3 KB ) - added by eriktorbjorn 5 years ago.
animation-glitch.png (119.1 KB ) - added by eriktorbjorn 5 years ago.
dosbox.png (133.8 KB ) - added by eriktorbjorn 5 years ago.
znemesis.005 (11.2 KB ) - added by eriktorbjorn 5 years ago.
scummvm-noscaling.png (70.6 KB ) - added by eriktorbjorn 5 years ago.
dosbox.2.png (87.1 KB ) - added by eriktorbjorn 5 years ago.
scummvm.png (69.7 KB ) - added by eriktorbjorn 5 years ago.

Download all attachments as: .zip

Change History (12)

by eriktorbjorn, 5 years ago

Attachment: znemesis.003 added

by eriktorbjorn, 5 years ago

Attachment: animation-glitch.png added

comment:1 by eriktorbjorn, 5 years ago

Here is a screenshot during the animation.

by eriktorbjorn, 5 years ago

Attachment: dosbox.png added

comment:2 by eriktorbjorn, 5 years ago

I tried capturing the same image in DOSBox. This is as close as I got. It's not the exact same frame, but to me it does seem to suggest that it's scaling, not position, that is off.

comment:3 by eriktorbjorn, 5 years ago

The problem seems to be that it's scaling down the animation (I don't yet know the reason why). If I force it to draw the animation at the actual size, it matches the background as well as can be expected.

comment:4 by eriktorbjorn, 5 years ago

These scripts, from tl9e.scr, seem to be responsible for setting up the animation. So it appears that it's the scripts that specify too little space for the frames. Did the original ignore the specified size in some cases? If so, when?

(They don't appear after each other like this in the original script file, but GitHub merged the text blocks together when I tried to separate them.)

puzzle:1283 {               # TL9E Hide Photo puzl
              criteria { 
                            [1280] = 1                  # tl9e hide photo
              }
              results {
                            action:assign(1280, 0)      # tl9e hide photo
                            action:assign(1283, 0)      # TL9E Hide Photo puzl
                            action:disable_control(1280)               # tl9e hide photo
                            action:disable_control(1278)               # tl9e Get Photo
                            action:syncsound(27030 0 tl9eq1sc.raw 22050 16 0 0) #a
                            background:playpreload:1282(27030 146 142 297 229 12 22 1)
              }
              flags {
                            ONCE_PER_INST
              }
}

puzzle:1290 {               # TL9E Reveal Photo pzl
              criteria { 
                            [1287] = 1                  # tl9e Reveal Photo
              }
              results {
                            action:assign(1287, 0)      # tl9e Reveal Photo
                            action:assign(1290, 0)      # TL9E Reveal Photo pzl
                            action:disable_control(1287)               # tl9e Reveal Photo
                            action:syncsound(27030 0 tl9eq1sc.raw 22050 16 0 0) #a
                            background:playpreload:1289(27030 146 142 297 229 0 11 1)
              }
              flags {
                            ONCE_PER_INST
              }
}

by eriktorbjorn, 5 years ago

Attachment: dosbox.2.png added

comment:5 by eriktorbjorn, 5 years ago

Another example of scaling gone wrong is the fist controls. Here are screenshots of DOSBox, ScummVM and ScummVM where fist_control.cpp calls blitSurfaceToBkg() instead of blitSurfaceToBkgScaled().

comment:6 by eriktorbjorn, 5 years ago

The "fists" glitch had already been filed as bug #6784, Earth pavilion door puzzle inset videos out of alignment

comment:7 by RichieSams, 5 years ago

Can you confirm that this was fixed by commit 1adcb23d7

comment:8 by bluegr, 5 years ago

The bug in the Nemesis laboratory is not related to the fist door puzzle (which is fixed by commit 1adcb23d7)

Note: See TracTickets for help on using tickets.