Opened 14 years ago

Closed 14 years ago

Last modified 4 months ago

#4963 closed defect (fixed)

ICEMAN Demo: Fails to find base object

Reported by: SF/mthreepwood Owned by: sluicebox
Priority: normal Component: Engine: SCI
Version: Keywords:
Cc: Game: Codename: ICEMAN

Description

ICEMAN Demo (r51309, Mac OS X 10.6, 64-bit)

If you watch to the point where you're at the controls of a sub, it errors out with this message:

"Failed to locate base object for object at 0015:015C; skipping"

Of course, it doesn't actually skip anything and errors out. This was probably one of the warnings turned error from a while ago...

Ticket imported from: #3034713. Ticket imported from: bugs/4963.

Change History (8)

comment:1 by SF/mthreepwood, 14 years ago

The object at 15:15c seems to valid to me; I need to look a little deeper as to why it's failing. Just ignoring the error will lead to the game trying to send to an object/script in that segment.

comment:2 by sev-, 14 years ago

Component: Engine: SCI
Game: Codename: ICEMAN

comment:3 by bluegr, 14 years ago

It's the base object of the object that's incorrect, not the object itself :)

comment:4 by bluegr, 14 years ago

Btw, this all happens when entering room 39, with script 39

comment:5 by bluegr, 14 years ago

Fixed in rev #54510

comment:6 by bluegr, 14 years ago

Owner: set to bluegr
Resolution: fixed
Status: newclosed

comment:7 by sluicebox <22204938+sluicebox@…>, 4 months ago

In b29ffb2b:

SCI: Update class table while initializing objects

Sierra's interpreter populated the class table and initialized objects
in one pass, until SCI3. We have always been doing two passes: one to
initialize the class table and then another to initialize objects.
This should not make a difference, except that some scripts contain two
classes with the same supposedly unique class number. When this occurs,
the first class is always overwritten before it can be used, causing any
objects in between to be associated with the wrong class.

In 2010, this condition caused the ICEMAN demo to crash. It was worked
around by adding a third pass. This prevented that particular script
from crashing, but the real problem remained.

Now we update the class table and initialize objects in one pass.
For SCI3, we continue to use two passes like the original.

  • Fixes KQ5 FM-Towns save and restore dialog buttons
  • Fixes ICEMAN demo properly, removes workaround (bug #4963)

See: 3485d433c5c158ceb1ea74d985fa9c1274185e9c

comment:8 by sluicebox, 4 months ago

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