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:
parent
43440193f0
commit
d6ff67e3c4
3 changed files with 97 additions and 26 deletions
|
@ -506,10 +506,23 @@ static ADGameDescription s_fallbackDesc = {
|
||||||
|
|
||||||
static char s_fallbackGameIdBuf[256];
|
static char s_fallbackGameIdBuf[256];
|
||||||
|
|
||||||
|
static const char *directoryGlobs[] = {
|
||||||
|
"english",
|
||||||
|
"french",
|
||||||
|
"german",
|
||||||
|
"italian",
|
||||||
|
"msg",
|
||||||
|
"spanish",
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
class SciMetaEngine : public AdvancedMetaEngine {
|
class SciMetaEngine : public AdvancedMetaEngine {
|
||||||
public:
|
public:
|
||||||
SciMetaEngine() : AdvancedMetaEngine(Sci::SciGameDescriptions, sizeof(ADGameDescription), s_sciGameTitles, optionsList) {
|
SciMetaEngine() : AdvancedMetaEngine(Sci::SciGameDescriptions, sizeof(ADGameDescription), s_sciGameTitles, optionsList) {
|
||||||
_singleId = "sci";
|
_singleId = "sci";
|
||||||
|
_maxScanDepth = 3;
|
||||||
|
_directoryGlobs = directoryGlobs;
|
||||||
|
_matchFullPaths = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual const char *getName() const {
|
virtual const char *getName() const {
|
||||||
|
|
|
@ -4747,64 +4747,100 @@ static const struct ADGameDescription SciGameDescriptions[] = {
|
||||||
AD_LISTEND},
|
AD_LISTEND},
|
||||||
Common::EN_ANY, Common::kPlatformWindows, ADGF_DEMO | ADGF_TESTING | ADGF_CD, GUIO_TORIN_DEMO },
|
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
|
// SCI interpreter version 2.100.002
|
||||||
{"torin", "", {
|
{"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},
|
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
|
||||||
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
|
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
|
||||||
AD_LISTEND},
|
AD_LISTEND},
|
||||||
Common::EN_ANY, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
|
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", "", {
|
{"torin", "", {
|
||||||
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
|
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
|
||||||
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
|
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
|
||||||
|
{"french/msg/0.msg", 0, "cbf314308636380a96f20a76f2a26ce5", 5857},
|
||||||
AD_LISTEND},
|
AD_LISTEND},
|
||||||
Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
|
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
|
// SCI interpreter version 2.100.002
|
||||||
// VERSION file "1.0"
|
// VERSION file "1.0"
|
||||||
{"torin", "", {
|
{"torin", "", {
|
||||||
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
|
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
|
||||||
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
|
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56127540},
|
||||||
AD_LISTEND},
|
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", "", {
|
{"torin", "", {
|
||||||
{"resmap.000", 0, "bb3b0b22ff08df54fbe2d06263409be6", 9799},
|
{"resmap.000", 0, "e55c3097329b3c53752301e01c6af2fb", 9787},
|
||||||
{"ressci.000", 0, "693a259d346c9360f4a0c11fdaae430a", 55973887},
|
{"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},
|
AD_LISTEND},
|
||||||
Common::DE_DEU, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
|
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
|
// 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", "", {
|
{"torin", "", {
|
||||||
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
|
{"resmap.000", 0, "66ed46e3e56f487e688d52f05b33d0ba", 9787},
|
||||||
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
|
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
|
||||||
AD_LISTEND},
|
AD_LISTEND},
|
||||||
Common::FR_FRA, Common::kPlatformWindows, ADGF_TESTING | ADGF_CD, GUIO_TORIN },
|
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)
|
// Torin's Passage - Russian Windows CD (SoftClub official translate)
|
||||||
// SCI interpreter version 2.100.002
|
// SCI interpreter version 2.100.002
|
||||||
// VERSION file "1.0"
|
// VERSION file "1.0"
|
||||||
|
|
|
@ -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
|
// Some releases (e.g. Pointsoft Torin) use a different patch directory name
|
||||||
SearchMan.addSubDirectoryMatching(gameDataDir, "patch"); // resource patches
|
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() {
|
SciEngine::~SciEngine() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue