Opened 11 years ago

Closed 11 years ago

Last modified 9 years ago

#6452 closed defect

SCI: Gabriel Knight 1 - a little status report

Reported by: SF/bschmitzdorff Owned by: bluegr
Priority: normal Component: Engine: SCI
Version: Keywords:
Cc: Game:


Dear developer team,

some days ago I used some free time to compare the current status of "Gabriel Knight 1 - Sins of the fathers" in the daily build of ScummVM. For the comparison I ran DOSBox and ScummVM (1.7.0git3970-gc65e8a3 (Nov 9 2013 05:16:52)) on a MacBook Pro (OSX 10.9, Mavericks) at the same time.

For I am owner of a real Roland MT-32 sound module, I used the inbuilt Munt synthesizer with the correct ROM file setup and the music was really amazing.

Everything seemed to work flawless up to a special point near the end of Day 1: When trying to talk to inspector Mosely (Mostly) at his office. In the original (proved via DOSBox) it is possible to talk to Mosely as soon as Gabriel sat down on the chair. In ScummVM the Object of inspector Mosely cannot be operated. While clicking at his image within the talk option pointer (?) the female narrator tells always that "Mosely is the person who can talked to in this room" as if I had clicked on the floor or another domain in the screen. Out of this reason it is not possible to get further in the story line and to complete day 1.

Beside the object error I found a sprite scaling error at the crime szene of day 1: Instead of being scaled to the programmed image the sprites are always painted with their smallest image.

Conclusion: The fruits seem to hang very low now for getting the game completely playable. Maybe some of you have time and fun to look into the described bugs. As soon as the status changes I will test the game again.



Ticket imported from: bugs/6452.

Attachments (2)

SCI-relative-nsRect.patch (1.2 KB ) - added by SF/tkorvola 11 years ago.
SCI-update-nsRect.patch (1.5 KB ) - added by SF/tkorvola 11 years ago.

Download all attachments as: .zip

Change History (9)

comment:1 by bluegr, 11 years ago

This is not a bug per se, taking into account the current code base.

A very large part of the SCI engine has been rewritten from Gabriel Knight 1 onwards. In order to support Gabriel Knight and newer SCI games properly, a large chunk of the graphics code will need to be rewritten. For example, there are more issues later on in the game (e.g. the Rada Drum book), all caused from guesswork on the graphics code.

This is why Gabriel Knight and newer games are not supported, yet, although a large chunk is playable. This is a long-term goal, and not something that can be quickly patched. Thus, closing this bug, as there is no support for these games, and we will accept bug report when the codebase for SCI32 games is more mature than its current state.

comment:2 by bluegr, 11 years ago

Owner: set to bluegr
Status: newclosed

comment:3 by Strangerke, 11 years ago

Component: Engine: SCI

by SF/tkorvola, 11 years ago

Attachment: SCI-relative-nsRect.patch added

comment:4 by SF/tkorvola, 11 years ago

The bugs that prevent completing Gabriel Knight 1 with ScummVM seem related to nsRects, at least those that I have come across.

  • nsRect can apparently be relative to the object position, which is indicated by a negative nsLeft or nsTop. This was fixed in June 2010, but the fix seems to have been lost in subsequent refactoring. See attached patch, which should fix not being able to talk to Mosely in his office.
  • When objects move, their nsRects are left behind. This is particularly apparent with the ego: when you try to click on Gabriel it often fails to register, whereas clicking on an apparently random location can get interpreted as being on Gabriel because the nsRect happened to be there. It also happens with other objects: when an envelope lands in the bookshop at the beginning of Day 6, its nsRect remains where the envelope first appears, well above where it lands. This makes the envelope impossible to click on.

by SF/tkorvola, 11 years ago

Attachment: SCI-update-nsRect.patch added

comment:5 by SF/tkorvola, 11 years ago

To fix the second problem I modified frameout to always set object nsRects from cels. This with the previous patch allowed me to complete GK1. I do not have any other Sierra games to test with nor have I had time for a full playthrough of GK1 from the beginning after my changes. There are of course still graphical glitches; these patches do not affect rendering in any way.

comment:6 by wjp, 11 years ago

Thank you for looking at this, but we're at the point where we should really only make changes if those are verified to match the behaviour of the original interpreter, since masking graphical glitches will hide actual underlying bugs.

I had a quick look at IsOnMe in Sierra's SCI, but I don't think this patch fixes nsrect behaviour in the right way.

comment:7 by m-kiewitz, 9 years ago

Summary: Gabriel Knight 1 - a little status reportSCI: Gabriel Knight 1 - a little status report
Note: See TracTickets for help on using tickets.