Opened 14 years ago

Closed 9 years ago

Last modified 12 months ago

#2507 closed defect (fixed)

SCUMM: Detecting mac version of indy3/loom broken

Reported by: fingolfin Owned by: sev-
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Indiana Jones 3

Description

Detecting the native mac version of indy3 and loom currently is broken.
These games split the room files over three directories: "Rooms 1",
"Rooms 2" and "Rooms 3". The detector is not prepared to deal with that
at this time.

If you manually add the games, though, they work, since we use
File::addDefaultDirectory on them.

Fixing this is in a clean fashion is non-trivial, because we would have to
descend into subdirs...

But a simple hard coded check could solve it: Add a check whether three
dirs with that name are present; if that is the case, check whether 00.LFL
is present in Rooms 1. If yes, add Indy3/Mac to the list. Ugly to hard code
this, but I can't think of a better solution at this time...

Ticket imported from: #1438631. Ticket imported from: bugs/2507.

Change History (9)

comment:1 by Kirben, 14 years ago

This problem occurs with several other games under ScummVM,
which split files over several directories too.

It would be best to cache the contents of all default
directories in the File class, as this will be required
when the File class is made completely case insensitive in
the future too.

comment:2 by fingolfin, 14 years ago

But the problem here is a bit deeper...

For example, if the user navigates into "Rooms 1"
and presses 'Detect' there, the game actually gets
detected (since 00.LFL is present). But it will
fail to work properly as soon as ScummVM tries to
load one of the rooms that are in the "Rooms 2"
or "Rooms 3" dir.

OTOH, if the user points the detector at the
directory "x", we shouldn't just blindly descend
into all subdirs and look for 00.LFL. After all,
if there is a "x/zak/00.LFL", then this would end
up with "x" being considered to be the path, when
it really should be "x/zak".

So in this particular case, I really would add a
specific check for subdirs named "Rooms 1" to 3.

If you know of other games that can only be
detected by descending to subdirs, please list
them here with some details, then we an try to
find a more generic solution, if possible.

comment:3 by Kirben, 14 years ago

The AtariST and Amiga versions of SCUMM games use a 'Rooms'
directory to store their data files in.

Also the Amiga version of the Feeble Files stores
the 'gfxindex.dat' file in a 'gfx' directory, which is
required for game detection.

comment:4 by Kirben, 12 years ago

Component: --Unset--

comment:5 by Kirben, 12 years ago

Another game version with similar issues:
The Acorn CD release of Simon the Sorcerer 1, which includes several data files (required for game detection) in an 'EXECUTE' sub directory.

comment:6 by fingolfin, 10 years ago

Testing tracker monitoring feature -- please ignore & sorry for the annoyance.

comment:7 by sev-, 9 years ago

Fixed in SVN. Please retest.

comment:8 by sev-, 9 years ago

Owner: set to sev-
Resolution: fixed
Status: newclosed

comment:9 by digitall, 12 months ago

Component: --Unset--Engine: SCUMM
Game: Indiana Jones 3
Note: See TracTickets for help on using tickets.