SCI32: Fix detection and loading of localized resources in Torin

Italian still needs to be fixed, but nobody seems to have access
to this version at the moment.

Fixes Trac#9772.
This commit is contained in:
Colin Snover 2017-05-18 19:12:48 -05:00
parent 43440193f0
commit d6ff67e3c4
3 changed files with 97 additions and 26 deletions

View file

@ -506,10 +506,23 @@ static ADGameDescription s_fallbackDesc = {
static char s_fallbackGameIdBuf[256];
static const char *directoryGlobs[] = {
"english",
"french",
"german",
"italian",
"msg",
"spanish",
0
};
class SciMetaEngine : public AdvancedMetaEngine {
public:
SciMetaEngine() : AdvancedMetaEngine(Sci::SciGameDescriptions, sizeof(ADGameDescription), s_sciGameTitles, optionsList) {
_singleId = "sci";
_maxScanDepth = 3;
_directoryGlobs = directoryGlobs;
_matchFullPaths = true;
}
virtual const char *getName() const {

View file

@ -4747,64 +4747,100 @@ static const struct ADGameDescription SciGameDescriptions[] = {
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_CD, GUIO_TORIN_DEMO },
// Torin's Passage (Multilingual) - English Windows CD
// Torin's Passage - Multilingual EN/FR/DE w/ English audio Windows CD
// Also matches GOG.com English-only release
// Also matches Spanish and Italian CD releases
// SCI interpreter version 2.100.002
{"torin", "", {
// Duplicate resmap is intentional; it gives the English version equal
// priority to localized versions that are detected with an additional
// file
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// Torin's Passage (Multilingual) - Spanish Windows CD (from jvprat)
// Executable scanning reports "2.100.002", VERSION file reports "1.0"
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
// TODO: depend on one of the patches?
AD_LISTEND},
Common::ES_ESP, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// Torin's Passage (Multilingual) - French Windows CD
// SCI interpreter version 2.100.002
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"french/msg/0.msg", 0, "cbf314308636380a96f20a76f2a26ce5", 5857},
AD_LISTEND},
Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// Torin's Passage - German Windows CD (from m_kiewitz)
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"german/msg/0.msg", 0, "374ce3a7e540e1f4917d132f74f356b8", 5993},
AD_LISTEND},
Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// from jvprat and m_kiewitz
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"spanish/msg/0.msg", 0, "3c468ee0a8595d64d93df68054b116d7", 5681},
AD_LISTEND},
Common::ES_ESP, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// from glorifindel
// TODO: Need to get ahold of italian/msg/0.msg from an Italian release
// {"torin", "", {
// {"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
// {"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
// // {"italian/msg/0.msg", 0, ?, ?},
// AD_LISTEND},
// Common::IT_ITA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// ---
// Torin's Passage - Multilingual EN/FR/DE w/ German audio Windows CD (from m_kiewitz)
// SCI interpreter version 2.100.002
// VERSION file "1.0"
{"torin", "", {
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
AD_LISTEND},
Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// Torin's Passage (Multilingual) - German Windows CD
// SCI interpreter version 2.100.002
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
AD_LISTEND},
Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
AD_LISTEND},
Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// Torin's Passage (Multilingual) - Italian Windows CD (from glorifindel)
// SCI interpreter version 2.100.002
{"torin", "", {
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
AD_LISTEND},
Common::IT_ITA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// ---
// Torin's Passage - French Windows (from LePhilousophe)
// Torin's Passage - Multilingual EN/FR/DE w/ French audio Windows CD (from LePhilousophe)
// SCI interpreter version 2.100.002
// NOTE: This version of Torin has an ITALIAN directory, but it contains
// English language data, not Italian
{"torin", "", {
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
{"torin", "", {
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
// ---
// Torin's Passage - Russian Windows CD (SoftClub official translate)
// SCI interpreter version 2.100.002
// VERSION file "1.0"

View file

@ -169,6 +169,28 @@ SciEngine::SciEngine(OSystem *syst, const ADGameDescription *desc, SciGameId gam
// Some releases (e.g. Pointsoft Torin) use a different patch directory name
SearchMan.addSubDirectoryMatching(gameDataDir, "patch"); // resource patches
switch (desc->language) {
case Common::DE_DEU:
SearchMan.addSubDirectoryMatching(gameDataDir, "german/msg");
break;
case Common::EN_ANY:
case Common::EN_GRB:
case Common::EN_USA:
SearchMan.addSubDirectoryMatching(gameDataDir, "english/msg");
break;
case Common::ES_ESP:
SearchMan.addSubDirectoryMatching(gameDataDir, "spanish/msg");
break;
case Common::FR_FRA:
SearchMan.addSubDirectoryMatching(gameDataDir, "french/msg");
break;
case Common::IT_ITA:
SearchMan.addSubDirectoryMatching(gameDataDir, "italian/msg");
break;
default:
break;
}
}
SciEngine::~SciEngine() {