Opened 7 years ago

Closed 7 years ago

#9788 closed defect (fixed)

SCI: PHANT1: Chapter 7 - Palette glitch in chapel

Reported by: bgK Owned by: csnover
Priority: high Component: Engine: SCI
Version: Keywords: sci32
Cc: Game: Phantasmagoria 1

Description (last modified by bgK)

ScummVM: dec12f5b6dca67e5d6f47579bfee5ef2d1ab7ed3
Game: Phantasmagoria DOS/French 1.100.000

Step to reproduce:
In the 7th chapter, go to the chapel without triggering the endgame sequence. Go to the right towards the crypt's secret entrance.

The scene uses an incorrect palette. Doing any action fixes the palette.

Attachments (3)

Capture d'écran de 2017-05-14 14-10-35.png (232.3 KB ) - added by bgK 7 years ago.
Incorrect palette
Capture d'écran de 2017-05-14 14-11-08.png (212.9 KB ) - added by bgK 7 years ago.
Correct palette
phantasmagoria-cd-fr-phantsg.2 (156 bytes ) - added by bgK 7 years ago.
Save

Download all attachments as: .zip

Change History (10)

by bgK, 7 years ago

Incorrect palette

by bgK, 7 years ago

Correct palette

by bgK, 7 years ago

Save

comment:1 by bgK, 7 years ago

Description: modified (diff)

comment:2 by csnover, 7 years ago

Thanks for your report! I was able to reproduce this issue using the attached save file with the US English 1.000.000 release.

The original interpreter also exhibits this bug, but it manifests slightly differently with a 3 frame flash of bad palette until Adrian’s walk cycle advances a frame and then the palette is refreshed with the correct values.

Interestingly, the same problem only seems to occur during chapter 7; the same action in chapter 6 causes no palette issue.

comment:3 by csnover, 7 years ago

Priority: normalhigh

comment:4 by csnover, 7 years ago

Owner: set to csnover

comment:5 by csnover, 7 years ago

The problem occurs only in chapter 7 because the bad palette is caused when the palette of view 64001 (the chest box in the lower-right of the screen) is submitted. This chest object is only added when game flag 206 is true.

I don’t know why resubmitting the ego's palette during the walk animation works in SSCI and not in ScummVM, since the view's palette should be marked has having already been submitted in SSCI too. Maybe a problem with the order of the draw list?

There is another similar palette problem in room 20200 (basement) during chapter 7, though in this case the bad view (3171) is being drawn at the top-left corner of its plane so maybe should have not made its way into the draw list at all (it is certainly not visible!). To reproduce this, warp to room 20210, set game to day 7 (vv g 106 7), then exit through the door to room 20200.

comment:6 by csnover, 7 years ago

I don’t know why resubmitting the ego's palette during the walk animation works in SSCI and not in ScummVM, since the view's palette should be marked has having already been submitted in SSCI too. Maybe a problem with the order of the draw list?

This works in SSCI because the P button at the bottom of the screen has a different value for index 255, and is updated when transitioning between rooms, which then triggers a palette update on the next frame that “fixes” the glitch. In ScummVM this was broken by the palette optimisation in e133c7440309fa55034addcc41879bf180a0a299. SSCI can be made to break in the same way as ScummVM by using the game’s debug code to teleport directly to room 6400 once flag 206 is set, instead of using the navigation hotspot in room 6500 (which is available only when flag 215 is set). A proper fix for this room will probably either involve messing with the chest view’s palette at runtime so it stops overwriting colours used by the background, or by just not drawing the chest at all in room 6400 (AFAICT there’s no real reason for it to be there except to avoid a small continuity error).

The other issue with the basement palette has been broken into its own separate ticket #9957 since it has a different root cause.

Patches forthcoming.

comment:7 by csnover, 7 years ago

Resolution: fixed
Status: newclosed

Thanks for your report! A patch for this issue has been added in commit bbad7ada1b88c18f89590119bccc0ae1bd70b04b and will be available in daily builds 1.10.0git-3916 and higher.

Note: See TracTickets for help on using tickets.