aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/saga/detection_tables.h33
-rw-r--r--engines/saga/font.cpp2
-rw-r--r--engines/saga/itedata.cpp24
-rw-r--r--engines/saga/saga.cpp3
4 files changed, 61 insertions, 1 deletions
diff --git a/engines/saga/detection_tables.h b/engines/saga/detection_tables.h
index 98009326ae..8b3a0e5207 100644
--- a/engines/saga/detection_tables.h
+++ b/engines/saga/detection_tables.h
@@ -825,6 +825,39 @@ static const SAGAGameDescription gameDescriptions[] = {
IHNMCD_GameFonts,
NULL,
},
+
+ // I Have No Mouth And I Must Scream - Russian fan translaction v1.0 (by jack7277 et al)
+ {
+ {
+ "ihnm",
+ "",
+ {
+ {"musicfm.res", GAME_MUSICFILE_FM, "0439083e3dfdc51b486071d45872ae52", -1},
+ {"musicgm.res", GAME_MUSICFILE_GM, "80f875a1fb384160d1f4b27166eef583", -1},
+ {"scream.res", GAME_RESOURCEFILE, "ac00dd9e6701e8edbb49429dacbc4731", 79210049},
+ {"patch.re_", GAME_PATCHFILE | GAME_RESOURCEFILE, "58b79e61594779513c7f2d35509fa89e", -1},
+ {"scripts.res", GAME_SCRIPTFILE, "be38bbc5a26be809dbf39f13befebd01", -1},
+ //{"sfx.res", GAME_SOUNDFILE, "1c610d543f32ec8b525e3f652536f269", -1},
+ // There are two English versions of the game, each one with a different sfx.res file
+ // Known MD5 checksums for sfx.res in the English version of the game are
+ // 1c610d543f32ec8b525e3f652536f269 and 45a9a9f5d37740be24fd2ae2edf36573
+ {"sfx.res", GAME_SOUNDFILE, NULL, -1},
+ { NULL, 0, NULL, 0}
+ },
+ Common::RU_RUS,
+ Common::kPlatformDOS,
+ ADGF_NO_FLAGS,
+ GUIO1(GUIO_NOASPECT)
+ },
+ GID_IHNM,
+ 0,
+ IHNM_DEFAULT_SCENE,
+ &IHNM_Resources,
+ ARRAYSIZE(IHNMCD_GameFonts),
+ IHNMCD_GameFonts,
+ NULL,
+ },
+
// I Have No Mouth And I Must Scream - Mac English CD
{
{
diff --git a/engines/saga/font.cpp b/engines/saga/font.cpp
index 73d42598cb..66a4e1c530 100644
--- a/engines/saga/font.cpp
+++ b/engines/saga/font.cpp
@@ -232,7 +232,7 @@ void Font::createOutline(FontData *font) {
}
int Font::translateChar(int charId) {
- if (charId <= 127)
+ if (charId <= 127 || (_vm->getLanguage() == Common::RU_RUS && charId <= 254))
return charId; // normal character
else
return _charMap[charId - 128]; // extended character
diff --git a/engines/saga/itedata.cpp b/engines/saga/itedata.cpp
index da70733f4e..3577499399 100644
--- a/engines/saga/itedata.cpp
+++ b/engines/saga/itedata.cpp
@@ -422,6 +422,30 @@ const char *ITEinterfaceTextStrings[][53] = {
NULL,
NULL,
"Cardango una partida guardada"
+ },
+ // Russian IHNM
+ {
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, "\xC2\xFB\xE9\xF2\xE8 \xE8\xE7 \xE8\xE3\xF0\xFB?",
+ "Load Successful!",
+ "\xC2\xE2\xE5\xE4\xE8\xF2\xE5 \xE8\xEC\xFF \xE7\xE0\xEF\xE8\xF1\xE8",
+ "\xC4\xE0\xF2\xFC %s >> %s",
+ "\xC8\xF1\xEF\xEE\xEB\xFC\xE7\xEE\xE2\xE0\xF2\xFC %s >> %s",
+ "[\xCD\xEE\xE2\xE0\xFF \xE7\xE0\xEF\xE8\xF1\xFC]",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ " \xC7\xE0\xE3\xF0\xF3\xE7\xEA\xE0 "
}
};
diff --git a/engines/saga/saga.cpp b/engines/saga/saga.cpp
index b94bb66bb4..532b59d3c7 100644
--- a/engines/saga/saga.cpp
+++ b/engines/saga/saga.cpp
@@ -503,6 +503,9 @@ const char *SagaEngine::getTextString(int textStringId) {
case Common::ES_ESP:
lang = 3;
break;
+ case Common::RU_RUS:
+ lang = 4;
+ break;
default:
lang = 0;
break;