Menu

#4389 DETECTOR: Atlantis CD sets wrong gui options

Indiana Jones 4
closed-fixed
kirben
9
2009-07-11
2009-07-10
No

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.

Discussion

  • Eugene Sandulenko

    • priority: 5 --> 9
     
  • Eugene Sandulenko

    Raising priority. This is a release-critical bug.

     
  • kirben

    kirben - 2009-07-11

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

     
  • kirben

    kirben - 2009-07-11
    • milestone: --> Indiana Jones 4
    • assigned_to: nobody --> kirben
    • status: open --> closed-fixed