Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#4389 closed defect (fixed)

DETECTOR: Atlantis CD sets wrong gui options

Reported by: salty-horse Owned by: Kirben
Priority: blocker Component: Engine: SCUMM
Keywords: detection Cc:
Game: Indiana Jones 4

Description

Using latest r42333.

When detecting the Fate of Atlantis CD version, the game options that are set to it are those of the floppy version: sndNoSpeech.
It should have no restrictions.

Here's what I discovered:

The detected MD5Table struct entry for the game has "CD" in the "extra" field (which scumm-md5.txt calls the "Description" field).
According to the comment in scumm-md5.txt, that field is used to distinguish between variants.

The game has two variants:

{"atlantis", 0, 0, GID_INDY4, 5, 0, MDT_ADLIB | MDT_MIDI, 0, UNK, GUIO_NOSPEECH},
{"atlantis", "CD" , 0, GID_INDY4, 5, 0, MDT_ADLIB | MDT_MIDI, 0, UNK, GUIO_NONE},

The distinguishing data between the two is the "variant" field of the GameSettings struct.
The comment in engines/scumm/detection.h says 'it matches the "extra" data in scumm-md5.txt'.

The computeGameSettingsFromMD5() function, which should select the correct variant entry for the game, completely ignores MD5Entry's "extra" field.

It *does* compare MD5Entry's "variant" field with the "variant" field of GameSettings, but since the "variant" field of all md5 entries for atlantis is "", it will always select the first variant, which is the floppy version of the game.

Perhaps the "extra" information needs to be compared against too, now that ScummVM cares about features such as speech availability.
Another alternative is to merge that extra information into the "variant" field.

In any case, the field descriptions in scumm-md5.txt should match the "generated" struct field names.

Ticket imported from: #2819628. Ticket imported from: bugs/4389.

Change History (4)

comment:1 by sev-, 10 years ago

Raising priority. This is a release-critical bug.

comment:2 by sev-, 10 years ago

Priority: normalblocker

comment:3 by Kirben, 10 years ago

Fixed in ScummVM SVN, the variant field just needed to be updated for several games.

comment:4 by Kirben, 10 years ago

Component: Engine: SCUMM
Game: Indiana Jones 4
Owner: set to Kirben
Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.