Opened 18 years ago

Closed 14 years ago

Last modified 5 years ago

#2507 closed defect (fixed)

SCUMM: Detecting mac version of indy3/loom broken

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


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, 18 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, 18 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, 18 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, 17 years ago

Component: --Unset--

comment:5 by Kirben, 17 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, 14 years ago

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

comment:7 by sev-, 14 years ago

Fixed in SVN. Please retest.

comment:8 by sev-, 14 years ago

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

comment:9 by digitall, 5 years ago

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