aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm/detection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/scumm/detection.cpp')
-rw-r--r--engines/scumm/detection.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/engines/scumm/detection.cpp b/engines/scumm/detection.cpp
index c23d8a5529..a32c0892a7 100644
--- a/engines/scumm/detection.cpp
+++ b/engines/scumm/detection.cpp
@@ -210,7 +210,17 @@ static bool searchFSNode(const Common::FSList &fslist, const Common::String &nam
// The following function tries to detect the language for COMI and DIG
static Common::Language detectLanguage(const Common::FSList &fslist, byte id) {
- assert(id == GID_CMI || id == GID_DIG);
+ // First try to detect Chinese translation
+ Common::FSNode fontFile;
+
+ if (searchFSNode(fslist, "chinese_gb16x12.fnt", fontFile)) {
+ debug(0, "Chinese detected");
+ return Common::ZH_CNA;
+ }
+
+ // Now try to detect COMI and Dig by language files
+ if (id != GID_CMI && id != GID_DIG)
+ return Common::UNK_LANG;
// Check for LANGUAGE.BND (Dig) resp. LANGUAGE.TAB (CMI).
// These are usually inside the "RESOURCE" subdirectory.
@@ -314,8 +324,8 @@ static void computeGameSettingsFromMD5(const Common::FSList &fslist, const GameF
dr.game.features |= GF_DEMO;
}
- // HACK: Detect COMI & Dig languages
- if (dr.language == UNK_LANG && (dr.game.id == GID_CMI || dr.game.id == GID_DIG)) {
+ // HACK: Try to detect languages for translated games
+ if (dr.language == UNK_LANG) {
dr.language = detectLanguage(fslist, dr.game.id);
}
break;
@@ -442,6 +452,8 @@ static void detectGames(const Common::FSList &fslist, Common::List<DetectorResul
continue;
}
+ // HACK: Perhaps it is some modified translation?
+ dr.language = detectLanguage(fslist, g->id);
// Add the game/variant to the candidates list if it is consistent
// with the file(s) we are seeing.