Opened 7 years ago

Closed 5 years ago

Last modified 23 months ago

#9760 closed defect (fixed)

SCI: GK1: Animation glitch in grandmother's house

Reported by: esziarko Owned by: sluicebox
Priority: normal Component: Engine: SCI
Version: Keywords: sci32 original has-pull-request
Cc: m-kiewitz Game: Gabriel Knight 1

Description

ScummVM Version: 1.10.0git3200-g23b6dbb (Apr 30 2017)
OS: Windows 10 x64
Game version: Gabriel Knight 1 CD/Windows/English

There's a small animation glitch present at Gabriel's grandmother's house that I don't remember in the original. When sitting down but not talking, if you first look at something in the room one small frame of animation will play, then if you look at the staircase, a frame of Gabriel standing up will play.

Attachments (1)

gk1-cd-win.003 (52.7 KB ) - added by esziarko 7 years ago.
Save game before the glitch

Download all attachments as: .zip

Change History (14)

by esziarko, 7 years ago

Attachment: gk1-cd-win.003 added

Save game before the glitch

comment:1 by csnover, 7 years ago

Cc: m-kiewitz added
Keywords: sci32 added; animation removed

Thanks for the report! I was able to reproduce the issue, and verified that it does not occur in the original interpreter.

The problems seems to be that the ego tries to turn to face the object that has been looked at. So, clicking any object to the right of the chair will cause an attempt to face the right, and to the left will cause an attempt to face the left. (And you can keep causing the glitches by switching between looking at objects on the left and objects on the right.)

m-kiewitz, you’re better at script debugging than me, would you be willing to look into this?

comment:2 by m-kiewitz, 7 years ago

Owner: set to m-kiewitz

sure, will look into it.

comment:3 by m-kiewitz, 7 years ago

room is 380
stairs::facingMe/notFacing triggers GKEgo::setHeading (latter script 18)

comment:4 by m-kiewitz, 7 years ago

Grycler is then used as cycler

Which then sets loop to 3 on first ::doit call.
(view 381 - Gabriel Knight, cel 1)

it seems there is code somewhere, that fixes the loop to 0 and original interpreter fixes it to 2, which would be the right loop.

comment:5 by m-kiewitz, 7 years ago

or maybe there is something else going wrong.
Grycler has numOfLoops = 4
Which is a bit weird because there are only 3 loops for that view
have to dig in deeper.

comment:6 by m-kiewitz, 7 years ago

numOfLoops being 4 seems to be "correct"

to reproduce without saved game:
warp to room 380
Gabriel will sit down automatically
talk to Granny
exit immediately
look at couch on the left
look at stairs on the right

comment:7 by wjp, 7 years ago

I can reproduce this using the original interpreter. (GOG version in dosbox.)

comment:8 by m-kiewitz, 7 years ago

Problem actually happens in the original too (thx wjp for thinking about that and checking).

Gabriel's head doesn't move in case you haven't talked with Granny.

I can't get in there for my version, because original interpreter is error'ing out when I try to go to Granny's house w/ error 999.

Will try to figure out a script patch.

comment:9 by csnover, 7 years ago

(For the record: I was not able to reproduce the issue in the original interpreter earlier because I did not question grandma first. Once I did that, the bug was reproduced.)

comment:10 by sluicebox, 5 years ago

I wrote a script patch: https://github.com/scummvm/scummvm/pull/1369

The script bug is in all versions but I can only consistently reproduce the animation glitch in the CD versions.

comment:11 by digitall, 5 years ago

Keywords: original has-pull-request added

comment:12 by bluegr, 5 years ago

Owner: changed from m-kiewitz to bluegr
Resolution: fixed
Status: newclosed

The pull request has been merged, so this can be closed now

comment:13 by sluicebox, 23 months ago

Owner: changed from bluegr to sluicebox
Note: See TracTickets for help on using tickets.