[Scummvm-git-logs] scummvm master -> 52ebbfebc9d365d6b0b52e82a59ed0201b404a2f
athrxx
athrxx at scummvm.org
Sun Dec 13 21:27:19 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
52ebbfebc9 KYRA: support hebrew fan translation (#2683)
Commit: 52ebbfebc9d365d6b0b52e82a59ed0201b404a2f
https://github.com/scummvm/scummvm/commit/52ebbfebc9d365d6b0b52e82a59ed0201b404a2f
Author: Niv Baehr (bloop93 at gmail.com)
Date: 2020-12-13T22:27:16+01:00
Commit Message:
KYRA: support hebrew fan translation (#2683)
* KYRA: add hebrew to kyra.dat
* KYRA: add hebrew detection entry + fix kallak text
* KYRA: fix rigth align text for hebrew
* KYRA: restore lines lost in rebase
* KYRA: convert non-ascii to escape sequence
* KYRA: bump kyra.dat version
* KYRA: update renamed variable
* KYRA: use memset and rename variables
* KYRA: translate remaining hebrew strings
Co-authored-by: BLooperZ <blooperz at users.noreply.github.com>
Changed paths:
A devtools/create_kyradat/escaping/convert.py
A devtools/create_kyradat/resources/lok_dos_cd_hebrew.h
devtools/create_kyradat/create_kyradat.cpp
devtools/create_kyradat/games.cpp
devtools/create_kyradat/resources.cpp
engines/kyra/detection_tables.h
engines/kyra/gui/gui_lok.cpp
engines/kyra/resource/staticres.cpp
engines/kyra/sequence/seqplayer_lok.cpp
engines/kyra/sequence/sequences_lok.cpp
engines/kyra/text/text.cpp
engines/kyra/text/text_lok.cpp
diff --git a/devtools/create_kyradat/create_kyradat.cpp b/devtools/create_kyradat/create_kyradat.cpp
index bc4c8e0257..80d55232c1 100644
--- a/devtools/create_kyradat/create_kyradat.cpp
+++ b/devtools/create_kyradat/create_kyradat.cpp
@@ -45,7 +45,7 @@
enum {
- kKyraDatVersion = 107
+ kKyraDatVersion = 108
};
const ExtractFilename extractFilenames[] = {
@@ -1201,6 +1201,7 @@ const TypeTable languageTable[] = {
{ IT_ITA, 5 },
{ JA_JPN, 6 },
{ RU_RUS, 7 },
+ { HE_ISR, 8 },
{ -1, -1 }
};
diff --git a/devtools/create_kyradat/escaping/convert.py b/devtools/create_kyradat/escaping/convert.py
new file mode 100644
index 0000000000..3fe332fd84
--- /dev/null
+++ b/devtools/create_kyradat/escaping/convert.py
@@ -0,0 +1,40 @@
+"""
+Allows converting header files from escape sequences and back to readable form.
+"""
+
+from string import printable
+
+def escape_char(c):
+ if chr(c) in printable:
+ return bytes([c])
+ ashex = hex(c)[2:].upper().encode()
+ return b'\\x' + ashex
+
+def encode_seq(seq):
+ try:
+ print(int(b'0x' + seq[:2], 16))
+ return bytes([int(b'0x' + seq[:2], 16)]) + seq[2:]
+ except:
+ return seq
+
+if __name__ == '__main__':
+ import argparse
+
+ parser = argparse.ArgumentParser(description='convert character escape sequence')
+ group = parser.add_mutually_exclusive_group()
+ group.add_argument('--escape', '-e', action='store_true')
+ group.add_argument('--read', '-r', action='store_true')
+ parser.add_argument('input', help='filename to read from')
+ parser.add_argument('output', help='filename to write to')
+ args = parser.parse_args()
+
+ with open(args.input, 'rb') as f:
+ data = f.read()
+
+ if args.escape:
+ with open(args.output, 'wb') as f:
+ f.write(b''.join(escape_char(c) for c in data))
+
+ else:
+ with open(args.output, 'wb') as f:
+ f.write(b''.join(encode_seq(seq) for seq in data.split(b'\\x')))
diff --git a/devtools/create_kyradat/games.cpp b/devtools/create_kyradat/games.cpp
index 676aec31fa..21303f4a6a 100644
--- a/devtools/create_kyradat/games.cpp
+++ b/devtools/create_kyradat/games.cpp
@@ -51,6 +51,7 @@ const Game kyra1Games[] = {
{ kKyra1, kPlatformDOS, kTalkieVersion, IT_ITA },
{ kKyra1, kPlatformDOS, kTalkieVersion, ES_ESP },
//{ kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS },
+ { kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR },
{ kKyra1, kPlatformFMTowns, kNoSpecial, EN_ANY },
{ kKyra1, kPlatformFMTowns, kNoSpecial, JA_JPN },
diff --git a/devtools/create_kyradat/resources.cpp b/devtools/create_kyradat/resources.cpp
index 53cc90d43f..5936f03436 100644
--- a/devtools/create_kyradat/resources.cpp
+++ b/devtools/create_kyradat/resources.cpp
@@ -47,7 +47,7 @@
#include "resources/lok_dos_cd_italian.h"
#include "resources/lok_dos_cd_spanish.h"
#include "resources/lok_dos_cd_russian.h"
-
+#include "resources/lok_dos_cd_hebrew.h"
#include "resources/lok_dos_cddemo.h"
#include "resources/lok_dos_cddemo_english.h"
@@ -693,7 +693,30 @@ static const ResourceProvider resourceProviders[] = {
{ k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1NewGameStringDOSCDRussianProvider },
{ k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, RU_RUS, &k1ConfigStringsDOSCDRussianProvider },*/
+ { k1IntroStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1IntroStringsDOSCDHebrewProvider },
+ { k1ItemNames, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1ItemNamesDOSCDHebrewProvider },
+ { k1TakenStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1TakenStringsDOSCDHebrewProvider },
+ { k1PlacedStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1PlacedStringsDOSCDHebrewProvider },
+ { k1DroppedStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1DroppedStringsDOSCDHebrewProvider },
+ { k1NoDropStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1NoDropStringsDOSCDHebrewProvider },
+ { k1PutDownString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1PutDownStringDOSCDHebrewProvider },
+ { k1WaitAmuletString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1WaitAmuletStringDOSCDHebrewProvider },
+ { k1BlackJewelString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1BlackJewelStringDOSCDHebrewProvider },
+ { k1HealingTipString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1HealingTipStringDOSCDHebrewProvider },
+ { k1PoisonGoneString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1PoisonGoneStringDOSCDHebrewProvider },
+ { k1ThePoisonStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1ThePoisonStringsDOSCDHebrewProvider },
+ { k1FluteStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1FluteStringsDOSCDHebrewProvider },
+ { k1WispJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1WispJewelStringsDOSCDHebrewProvider },
+ { k1MagicJewelStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1MagicJewelStringsDOSCDHebrewProvider },
+ { k1FlaskFullString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1FlaskFullStringDOSCDHebrewProvider },
+ { k1FullFlaskString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1FullFlaskStringDOSCDHebrewProvider },
+ { k1OutroHomeString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1OutroHomeStringDOSCDHebrewProvider },
+ { k1VeryCleverString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1VeryCleverStringDOSCDHebrewProvider },
+ { k1GUIStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1GUIStringsDOSCDHebrewProvider },
+ { k1NewGameString, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1NewGameStringDOSCDHebrewProvider },
+ { k1ConfigStrings, kKyra1, kPlatformDOS, kTalkieVersion, HE_ISR, &k1ConfigStringsDOSCDHebrewProvider },
{ k1KallakWritingSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1KallakWritingSeqFMTownsProvider },
+
{ k1MalcolmTreeSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1MalcolmTreeSeqFMTownsProvider },
{ k1WestwoodLogoSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1WestwoodLogoSeqFMTownsProvider },
{ k1KyrandiaLogoSeq, kKyra1, kPlatformFMTowns, kNoSpecial, UNK_LANG, &k1KyrandiaLogoSeqFMTownsProvider },
diff --git a/devtools/create_kyradat/resources/lok_dos_cd_hebrew.h b/devtools/create_kyradat/resources/lok_dos_cd_hebrew.h
new file mode 100644
index 0000000000..1c7da8fe77
--- /dev/null
+++ b/devtools/create_kyradat/resources/lok_dos_cd_hebrew.h
@@ -0,0 +1,428 @@
+static const char *const k1IntroStringsDOSCDHebrew[51] = {
+ "This is a text test - 1",
+ "This is a text test - 2",
+ "\xE1\xF8\xEB\xE5\xFA, \xE7\xE9\xEC\xE9\xF7...",
+ "...\xEE\xF0\xE4\xE9\xE2\xED \xF8\xE1 \xE4\xF2\xE5\xF6\xEE\xE4 \xF9\xEC \xE4\xEE\xE9\xF1\xE8\xE9\xF7\xF0\xE9\xED \xE4\xEE\xEC\xEB\xE5\xFA\xE9\xE9\xED!",
+ "\xE4\xE1\xE4\xEC\xFA\xE9 \xE0\xE5\xFA\xEA?",
+ "\xEE\xEC\xF7\xE5\xEC\xED!",
+ "\xF9\xEE\xF2\xFA\xE9 \xE0\xFA\xEE\xE5\xEC \xF2\xEC \xE0\xE5\xE3\xE5\xFA \xE4\xE1\xF8\xE9\xE7\xE4 \xF9\xEC\xEA.",
+ "\xE5\xF6\xE9\xF4\xE9\xFA\xE9 \xF9\xFA\xE1\xE5\xE0 \xEE\xE5\xF7\xE3\xED \xE9\xE5\xFA\xF8.",
+ "\xEC\xEE\xE4 \xEC\xE9 \xEC\xEE\xE4\xF8?",
+ "\xE4\xE0\xF8\xF5 \xE4\xE6\xE5 \xF0\xFA\xE5\xF0\xE4 \xEC\xEE\xF8\xE5\xFA\xE9!",
+ "\xE4\xF7\xEC\xEC\xE4 \xE4\xF4\xF2\xE5\xE8\xE4 \xF9\xEC\xEA \xE0\xE9\xF0\xE4 \xE9\xEB\xE5\xEC\xE4 \xEC\xF2\xF6\xE5\xF8 \xE0\xE5\xFA\xE9.",
+ "\xF7\xE3\xE9\xEE\xE4, \xF7\xE8\xE5\xEC \xE0\xE5\xFA\xE9 \xF2\xEB\xF9\xE9\xE5!",
+ "\xF0\xE5\xFA\xF8 \xEC\xE9 \xF8\xF7 \xEE\xF2\xE8 \xF7\xF1\xED.",
+ "\xE0\xF0\xE9 \xEE\xFA\xEB\xE5\xE5\xEF \xEC\xF4\xE2\xE5\xF2 \xE1\xEA, \xE1\xE6\xE4 \xE0\xE9\xEF \xF1\xF4\xF7...",
+ "...\xF2\xEB\xF9\xE9\xE5 \xE0\xFA\xE4 \xE0\xE1\xEF...",
+ "...\xE0\xE1\xEC \xE0\xFA \xF2\xE9\xF0\xE9\xEA \xE0\xF0\xE9 \xEE\xF9\xE0\xE9\xF8 \xEB\xF4\xE9 \xF9\xE4\xEF.",
+ "\xE0\xE9\xF0\xF0\xE9 \xEE\xE6\xE9\xEC \xE3\xEE\xF2\xE4 \xF2\xEC \xF7\xE9\xF8\xF0\xE3\xE9\xE4...",
+ "...\xE0\xE1\xEC \xEC\xE0 \xE0\xE5\xEB\xEC \xEC\xF9\xEC\xE5\xEC \xEE\xEE\xEA \xE0\xFA \xF9\xEC\xEA.",
+ "Malcolm the Jester has broken free!",
+ "He now controls the Kyragem...",
+ "...source of all magic in Kyrandia!",
+ "",
+ "\xE0\xFA\xE4 \xEE\xF2\xE6 \xEC\xE4\xEB\xF9\xE9\xEC \xE0\xE5\xFA\xE9!",
+ "\xE0\xEA \xEC\xE0, \xE9\xF9 \xEC\xE9 \xEE\xF9\xE4\xE5 \xEE\xE9\xE5\xE7\xE3 \xE1\xF9\xE1\xE9\xEC\xEA...",
+ "\xEB\xE9\xF9\xE5\xF3 \xEE\xE1\xE3\xE7!",
+ "\xE0\xE1\xEC \xE0\xFA\xEF \xEC\xEA \xE0\xE6\xE4\xF8\xE4 \xE4\xE5\xE2\xF0\xFA.",
+ "\xE0\xEC \xFA\xF7\xF4\xE5\xF5 \xF2\xEC \xE4\xF2\xF5 \xE4\xE6\xE4!",
+ "\xE0\xEC \xFA\xE8\xF4\xF1 \xF2\xEC \xE4\xF2\xF5 \xE4\xE6\xE4 \xF1\xF0\xE0\xE9 \xF7\xE8\xEF!",
+ "\xE1\xE5!",
+ "\xE6\xE4 \xEE\xF6\xE7\xE9\xF7 \xE9\xE5\xFA\xF8 \xEB\xEB\xE4...",
+ "...\xEC\xE0 \xEB\xEA?",
+ "\xE7\xE4 \xE7\xE4 \xE7\xE4...",
+ "\xE4\xE0\xE9\xEF \xE0\xF6\xE1\xF2\xE5\xFA \xE3\xE1\xF8 \xF0\xF4\xEC\xE0?",
+ "\xE8\xE5\xE1 \xEC\xE4\xE9\xE5\xFA \xE1\xE7\xE9\xE9\xED!",
+ "\xE1\xF8\xF0\xE3\xE5\xEF!",
+ "\xF1\xE1\xE0! \xF2\xF9\xE9\xF0\xE5 \xE6\xE0\xFA!",
+ "\xEC\xE0! \xE0\xFA\xE4 \xF2\xF9\xE9\xFA \xE6\xE0\xFA!",
+ "\xE9\xE7\xE9 \xE4\xEE\xEC\xEA \xE1\xF8\xF0\xE3\xE5\xEF!",
+ "\xEC\xE7\xE9\xE9 \xE4\xEE\xE9\xF1\xE8\xE9\xF7\xF0\xE9\xED \xE4\xEE\xEC\xEB\xE5\xFA\xE9\xE9\xED!",
+ "\xE5\xE1\xEB\xEF, \xE4\xE1\xE4 \xF0\xF6\xE0 \xEC\xF9\xF7\xED \xE0\xFA \xF7\xE9\xF8\xF0\xE3\xE9\xE4!",
+ "\xF8\xF2\xE9\xE5\xEF \xEE\xF6\xE5\xE9\xEF!",
+ "\xEC\xE4\xEB\xF8\xE6\xE4 \xE4\xEE\xEC\xEB\xE5\xFA\xE9\xFA \xE4\xF8\xE0\xF9\xE5\xF0\xE4 \xF9\xEC\xE9...",
+ "\xE0\xF0\xE9 \xEE\xEE\xF0\xE4 \xE0\xFA \xE4\xF1\xF0\xE3\xEC\xE9\xED \xEC\xF0\xF2\xEC\xE9\xE9\xED \xE4\xF8\xF9\xEE\xE9\xE5\xFA \xF9\xEC \xF7\xE9\xF8\xF0\xE3\xE9\xE4!",
+ "\xEB\xEC \xE4\xEB\xE1\xE5\xE3, \xE1\xF8\xF0\xE3\xE5\xEF!",
+ "\xE4\xE0\xF8\xF5 \xE4\xF4\xF1\xE9\xF7\xE4 \xEC\xE4\xFA\xE9\xE9\xF4\xE7...",
+ "\xE5\xE7\xE1\xF8\xE9\xEA \xF9\xE1\xE5 \xEC\xF2\xF6\xEE\xED!",
+ "\xE1\xF8\xE9\xEF \xE4\xE9\xF7\xF8\xE4...",
+ "\xEE\xEC\xF7\xE5\xEC\xED \xE4\xF6\xEC\xE9\xE7 \xEC\xE4\xF9\xFA\xE7\xF8\xF8!",
+ "\xE1\xF7\xF8\xE5\xE1 \xE4\xE5\xE0 \xE9\xE2\xE9\xF2 \xE0\xEC\xE9\xE9.",
+ "\xF0\xE0 \xF2\xE6\xF8\xE9 \xEC\xE1\xF8\xF0\xE3\xE5\xEF...",
+ ""
+};
+
+static const StringListProvider k1IntroStringsDOSCDHebrewProvider = { ARRAYSIZE(k1IntroStringsDOSCDHebrew), k1IntroStringsDOSCDHebrew };
+
+static const char *const k1ItemNamesDOSCDHebrew[107] = {
+ "\xF0\xE5\xF4\xEA",
+ "\xE0\xE7\xEC\xEE\xE4",
+ "\xFA\xF8\xF9\xE9\xF9",
+ "\xE9\xE4\xEC\xE5\xED",
+ "\xE1\xF8\xF7\xFA",
+ "\xF4\xF0\xE9\xF0\xE4",
+ "\xE0\xE5\xE3\xED",
+ "\xF4\xE8\xE3\xE4",
+ "\xF1\xF4\xE9\xF8",
+ "\xEC\xF9\xED",
+ "\xE8\xE5\xF4\xE6",
+ "\xF9\xE4\xED",
+ "\xE0\xE1\xEF \xF9\xEE\xF9",
+ "\xE0\xE1\xEF \xE9\xF8\xE7",
+ "\xE0\xE1\xEF \xF7\xF9\xFA",
+ "\xE0\xE1\xEF \xF9\xE5\xE0\xE1\xFA",
+ "\xF9\xE5\xF9\xF0\xE4",
+ "\xF6\xE1\xF2\xE5\xF0\xE9",
+ "\xF1\xE7\xEC\xE1",
+ "\xF9\xE5\xF9\xF0\xFA \xEB\xF1\xF3",
+ "\xF4\xF1\xEC\xE5\xEF \xEB\xF1\xF3",
+ "\xEE\xE8\xE1\xF2 \xEB\xF1\xF3",
+ "\xEE\xE8\xE1\xF2 \xE6\xE4\xE1",
+ "\xE8\xE1\xF2\xFA \xE6\xE4\xE1",
+ "\xE2\xE1\xE9\xF2 \xEE\xEC\xEB\xE5\xFA\xE9",
+ "\xE0\xF6\xE8\xF8\xE5\xE1\xEC",
+ "\xE1\xEC\xE5\xE8",
+ "\xE0\xE2\xE5\xE6",
+ "\xE2\xF8\xE2\xF8\xE9 \xE0\xF9 \xF7\xE5\xF8\xF0\xE9-\xF2\xE3",
+ "\xE2\xF8\xE2\xF8\xE9 \xE0\xF9",
+ "\xE2\xF8\xE2\xF8\xE9 \xE0\xF9",
+ "\xE2\xF8\xE2\xF8\xE9 \xE0\xF9",
+ "\xE2\xF8\xE2\xF8\xE9 \xE0\xF9",
+ "\xE2\xF8\xE2\xF8\xE9 \xE0\xF9",
+ "\xE3\xE2",
+ "\xE0\xE3\xF8\xE4",
+ "\xF9\xE5\xF7 \xE8\xEC\xE4",
+ "\xF2\xF6\xED",
+ "\xFA\xF4\xE5\xE7",
+ "\xEC\xE9\xE1\xFA \xFA\xF4\xE5\xE7",
+ "\xE0\xE5\xEB\xEE\xF0\xE9\xE5\xFA",
+ "\xF4\xE8\xF8\xE9\xE4",
+ "\xF4\xFA\xF7",
+ "\xE2\xE5\xEC\xE4",
+ "\xEE\xF1\xE5\xF8",
+ "'\xF2\xF0\xE7",
+ "\xF0\xE5\xF6\xE4",
+ "\xE1\xE9\xF6\xE4",
+ "\xF2\xEC\xE4",
+ "\xFA\xEC\xFA\xEF",
+ "\xEB\xE5\xEB\xE1 \xF0\xE5\xF4\xEC",
+ "\xEB\xE3\xE5\xF8 \xE1\xE3\xE5\xEC\xE7",
+ "\xE3\xEE\xF2\xE4",
+ "\xF8\xE0\xE9",
+ "\xF4\xFA\xE9\xFA \xF7\xF8\xE7",
+ "\xE0\xE1\xE5\xE1",
+ "\xF9\xF2\xE5\xEF \xE7\xE5\xEC",
+ "\xEE\xF4\xFA\xE7 \xE1\xF8\xE6\xEC",
+ "\xEE\xF4\xFA\xE7 \xE9\xF8\xF7\xEF",
+ "\xEE\xF4\xFA\xE7 \xE1\xE6\xEC\xFA",
+ "\xF9\xE9\xF7\xE5\xE9 \xE0\xE3\xE5\xED",
+ "\xF9\xE9\xF7\xE5\xE9 \xE0\xE3\xE5\xED",
+ "\xF9\xE9\xF7\xE5\xE9 \xEB\xE7\xE5\xEC",
+ "\xF9\xE9\xF7\xE5\xE9 \xEB\xE7\xE5\xEC",
+ "\xF9\xE9\xF7\xE5\xE9 \xF6\xE4\xE5\xE1",
+ "\xF9\xE9\xF7\xE5\xE9 \xF6\xE4\xE5\xE1",
+ "\xF9\xE9\xF7\xE5\xE9 \xE9\xF8\xE5\xF7",
+ "\xF9\xE9\xF7\xE5\xE9 \xEB\xFA\xE5\xED",
+ "\xF9\xE9\xF7\xE5\xE9 \xF1\xE2\xE5\xEC",
+ "\xF9\xE9\xF7\xE5\xE9 \xE4\xF7\xF9\xFA \xE1\xF2\xF0\xEF",
+ "\xEE\xE9\xED \xEE\xFA\xE5\xF7\xE9\xED",
+ "\xEE\xE9\xED \xEE\xFA\xE5\xF7\xE9\xED",
+ "\xEE\xE9\xED \xEE\xEC\xE5\xE7\xE9\xED",
+ "\xEE\xE9\xED \xEE\xEC\xE5\xE7\xE9\xED",
+ "\xEE\xE9\xED \xEE\xE9\xF0\xF8\xEC\xE9\xE9\xED",
+ "\xEE\xE9\xED \xEE\xE9\xF0\xF8\xEC\xE9\xE9\xED",
+ "\xEE\xE9\xED \xF7\xF1\xE5\xEE\xE9\xED",
+ "\xEE\xE9\xED \xF7\xF1\xE5\xEE\xE9\xED",
+ "\xE1\xF7\xE1\xE5\xF7\xE5\xEF \xF8\xE9\xF7",
+ "\xE1\xF7\xE1\xE5\xF7\xE5\xEF \xF8\xE9\xF7",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xEE\xE2\xE9\xEC\xE4",
+ "\xF4\xE9\xF1\xFA \xF7\xEC\xF3",
+ "\xF4\xE9\xF1\xFA \xF7\xEC\xF3",
+ "\xF4\xE9\xF1\xFA \xF7\xEC\xF3",
+ "\xF4\xE9\xF1\xFA \xF7\xEC\xF3",
+ "\xF4\xE9\xF1\xFA \xF7\xEC\xF3",
+ "\xE0\xE1\xEF \xEB\xF9\xF3 \xE0\xE3\xE5\xEE\xE4",
+ "\xE0\xE1\xEF \xEB\xF9\xF3 \xEB\xFA\xE5\xEE\xE4",
+ "\xE0\xE1\xEF \xEB\xF9\xF3 \xF6\xE4\xE5\xE1\xE4",
+ "\xE0\xE1\xEF \xEB\xF9\xF3 \xE9\xF8\xE5\xF7\xE4",
+ "\xE0\xE1\xEF \xEB\xF9\xF3 \xEB\xE7\xE5\xEC\xE4-\xE9\xF8\xE5\xF7\xE4",
+ "\xE0\xE1\xEF \xEB\xF9\xF3 \xEB\xE7\xE5\xEC\xE4",
+ "\xE0\xE1\xEF \xEB\xF9\xF3 \xF1\xE2\xE5\xEC\xE4",
+ "\xF1\xEC\xF2 \xEB\xE1\xE3",
+ "\xEB\xFA\xF8 \xEE\xEC\xEB\xE5\xFA",
+ "\xF9\xF8\xE1\xE9\xE8 \xEE\xEC\xEB\xE5\xFA",
+ "\xEE\xF4\xFA\xE7 \xE6\xE4\xE1",
+ "\xF4\xF8\xE9\xE8 \xEC\xE0 \xEE\xE5\xEB\xF8"
+};
+
+static const StringListProvider k1ItemNamesDOSCDHebrewProvider = { ARRAYSIZE(k1ItemNamesDOSCDHebrew), k1ItemNamesDOSCDHebrew };
+
+static const char *const k1TakenStringsDOSCDHebrew[2] = {
+ "\xEC\xF7\xE7\xFA\xED ",
+ "\xEC\xF7\xE7\xFA\xED "
+};
+
+static const StringListProvider k1TakenStringsDOSCDHebrewProvider = { ARRAYSIZE(k1TakenStringsDOSCDHebrew), k1TakenStringsDOSCDHebrew };
+
+static const char *const k1PlacedStringsDOSCDHebrew[1] = {
+ "\xE4\xF0\xE7\xFA\xED "
+};
+
+static const StringListProvider k1PlacedStringsDOSCDHebrewProvider = { ARRAYSIZE(k1PlacedStringsDOSCDHebrew), k1PlacedStringsDOSCDHebrew };
+
+static const char *const k1DroppedStringsDOSCDHebrew[1] = {
+ "\xF9\xEE\xE8\xFA\xED "
+};
+
+static const StringListProvider k1DroppedStringsDOSCDHebrewProvider = { ARRAYSIZE(k1DroppedStringsDOSCDHebrew), k1DroppedStringsDOSCDHebrew };
+
+static const char *const k1NoDropStringsDOSCDHebrew[2] = {
+ "\xEC\xE0 \xF0\xE9\xFA\xEF \xEC\xF9\xEE\xE5\xE8 \xF2\xE5\xE3 \xE7\xF4\xF6\xE9\xED \xE1\xE6\xE9\xF8\xE4 \xE4\xE6\xE5.",
+ "\xEC\xE0 \xF0\xE9\xFA\xEF \xEC\xF9\xE9\xED \xE0\xFA \xE6\xE4 \xEB\xE0\xEF."
+};
+
+static const StringListProvider k1NoDropStringsDOSCDHebrewProvider = { ARRAYSIZE(k1NoDropStringsDOSCDHebrew), k1NoDropStringsDOSCDHebrew };
+
+static const char *const k1PutDownStringDOSCDHebrew[1] = {
+ "\xE0\xE5\xEC\xE9 \xEE\xE5\xE8\xE1 \xFA\xE7\xE9\xEC\xE4 \xF9\xE0\xF0\xE9\xE7 \xE0\xFA \xE6\xE4."
+};
+
+static const StringListProvider k1PutDownStringDOSCDHebrewProvider = { ARRAYSIZE(k1PutDownStringDOSCDHebrew), k1PutDownStringDOSCDHebrew };
+
+static const char *const k1WaitAmuletStringDOSCDHebrew[1] = {
+ "\xE0\xF0\xE9 \xEE\xF0\xE9\xE7 \xF9\xF2\xEC\xE9\xE9 \xEC\xE4\xEE\xFA\xE9\xEF \xF9\xEB\xE5\xE7\xE5\xFA\xE9\xE5 \xF9\xEC \xE4\xF7\xEE\xF2 \xF9\xEC\xE9 \xE9\xE7\xE6\xF8\xE5."
+};
+
+static const StringListProvider k1WaitAmuletStringDOSCDHebrewProvider = { ARRAYSIZE(k1WaitAmuletStringDOSCDHebrew), k1WaitAmuletStringDOSCDHebrew };
+
+static const char *const k1BlackJewelStringDOSCDHebrew[1] = {
+ "\xE6\xE5 \xE0\xE1\xEF \xE7\xEF, \xE0\xE1\xEC \xEE\xE3\xE5\xF2 \xE4\xE9\xE0 \xF9\xE7\xE5\xF8\xE4?"
+};
+
+static const StringListProvider k1BlackJewelStringDOSCDHebrewProvider = { ARRAYSIZE(k1BlackJewelStringDOSCDHebrew), k1BlackJewelStringDOSCDHebrew };
+
+static const char *const k1HealingTipStringDOSCDHebrew[1] = {
+ "\xE1\xE7\xE9\xE9, \xE6\xE4 \xF2\xF9\xE5\xE9 \xEC\xE4\xE9\xE5\xFA \xF9\xE9\xEE\xE5\xF9\xE9 \xE0\xED \xE7\xEC\xE9\xEC\xE4 \xE0\xF4\xE2\xF2."
+};
+
+static const StringListProvider k1HealingTipStringDOSCDHebrewProvider = { ARRAYSIZE(k1HealingTipStringDOSCDHebrew), k1HealingTipStringDOSCDHebrew };
+
+static const char *const k1PoisonGoneStringDOSCDHebrew[2] = {
+ "\xEE\xE3\xE4\xE9\xED!",
+ "\xE4\xF9\xF4\xF2\xE5\xFA \xE4\xF8\xF2\xEC \xF0\xF2\xEC\xEE\xE5 \xEB\xEC\xE0 \xE4\xE9\xE5!"
+};
+
+static const StringListProvider k1PoisonGoneStringDOSCDHebrewProvider = { ARRAYSIZE(k1PoisonGoneStringDOSCDHebrew), k1PoisonGoneStringDOSCDHebrew };
+
+static const char *const k1ThePoisonStringsDOSCDHebrew[4] = {
+ "\xE4\xE0\xF8\xF1...",
+ "\xEC\xE0 \xEE\xF6\xEC\xE9\xE7 \xEC\xF0\xF9\xE5\xED...",
+ "\xE0\xF0\xE9 \xEC\xE0 \xEE\xF8\xE2\xE9\xF9 \xE8\xE5\xE1 \xEB\xEC \xEB\xEA...",
+ "\xE4\xF0\xE7\xF9 \xE4\xE6\xE4\r\xE1\xE5\xE3\xE0\xE9 \xE0\xF8\xF1\xE9!"
+};
+
+static const StringListProvider k1ThePoisonStringsDOSCDHebrewProvider = { ARRAYSIZE(k1ThePoisonStringsDOSCDHebrew), k1ThePoisonStringsDOSCDHebrew };
+
+static const char *const k1FluteStringsDOSCDHebrew[40] = {
+ "\xEC\xE0 \xF0\xF9\xEE\xF2 \xEE\xF8\xF9\xE9\xED \xE1\xEE\xE9\xE5\xE7\xE3.",
+ "\xE4\xFA\xE5 \xE4\xE0\xE7\xF8\xE5\xEF \xE1\xE4\xE7\xEC\xE8 \xE4\xE9\xE4 \xE2\xE1\xE5\xE4!",
+ "\xBA",
+ "\xBA",
+ "",
+ "\x01",
+ "\x01\xB3",
+ "\xB3",
+ "\x06\x04\x08\x03\x06",
+ "\x08\x01\x01",
+ "\x02\x04",
+ "\x05\x02",
+ "\x08\x01\x01",
+ "\x11",
+ "5",
+ "Y",
+ "",
+ "",
+ "",
+ "",
+ "\x15",
+ "9",
+ "]",
+ "",
+ "",
+ "",
+ "",
+ "\x07",
+ ")",
+ "M",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "SHAPE_HORZ_REV",
+ "SHAPE_VERT_REV"
+};
+
+static const StringListProvider k1FluteStringsDOSCDHebrewProvider = { ARRAYSIZE(k1FluteStringsDOSCDHebrew), k1FluteStringsDOSCDHebrew };
+
+static const char *const k1WispJewelStringsDOSCDHebrew[2] = {
+ "\xEC\xE0 \xEE\xEE\xF9 \xEE\xFA\xE7\xF9\xF7 \xEC\xE9 \xEB\xF8\xE2\xF2.",
+ "\xE0\xE5\xEC\xE9 \xEE\xE5\xE8\xE1 \xFA\xE7\xE9\xEC\xE4 \xF9\xE0\xF0\xE9\xE7 \xE0\xFA \xE6\xE4."
+};
+
+static const StringListProvider k1WispJewelStringsDOSCDHebrewProvider = { ARRAYSIZE(k1WispJewelStringsDOSCDHebrew), k1WispJewelStringsDOSCDHebrew };
+
+static const char *const k1MagicJewelStringsDOSCDHebrew[1] = {
+ "\xE6\xE5 \xE4\xE9\xFA\xE4 \xE4\xF8\xE2\xF9\xE4 \xEE\xE5\xE6\xF8\xE4."
+};
+
+static const StringListProvider k1MagicJewelStringsDOSCDHebrewProvider = { ARRAYSIZE(k1MagicJewelStringsDOSCDHebrew), k1MagicJewelStringsDOSCDHebrew };
+
+static const char *const k1FlaskFullStringDOSCDHebrew[1] = {
+ "\xE4\xE1\xF7\xE1\xE5\xF7\xE5\xEF \xEB\xE1\xF8 \xEE\xEC\xE0."
+};
+
+static const StringListProvider k1FlaskFullStringDOSCDHebrewProvider = { ARRAYSIZE(k1FlaskFullStringDOSCDHebrew), k1FlaskFullStringDOSCDHebrew };
+
+static const char *const k1FullFlaskStringDOSCDHebrew[4] = {
+ "\xE4\xE1\xF7\xE1\xE5\xF7\xE5\xEF \xEE\xEC\xE0 \xF2\xEB\xF9\xE9\xE5\r\xE1\xEE\xE9\xED \xEE\xFA\xE5\xF7\xE9\xED \xE5\xEE\xE1\xF2\xE1\xF2\xE9\xED.",
+ "\xE4\xE1\xF7\xE1\xE5\xF7\xE5\xEF \xEE\xEC\xE0 \xF2\xEB\xF9\xE9\xE5\r\xE1\xEE\xE9\xED \xEE\xEC\xE5\xE7\xE9\xED.",
+ "\xE4\xE1\xF7\xE1\xE5\xF7\xE5\xEF \xEE\xEC\xE0 \xF2\xEB\xF9\xE9\xE5\r\xE1\xEE\xE9\xED \xEE\xE9\xF0\xF8\xEC\xE9\xE9\xED.",
+ "\xEE\xE9\xED \xF7\xF1\xE5\xEE\xE9\xED."
+};
+
+static const StringListProvider k1FullFlaskStringDOSCDHebrewProvider = { ARRAYSIZE(k1FullFlaskStringDOSCDHebrew), k1FullFlaskStringDOSCDHebrew };
+
+static const char *const k1OutroHomeStringDOSCDHebrew[1] = {
+ "\xE1\xE9\xFA"
+};
+
+static const StringListProvider k1OutroHomeStringDOSCDHebrewProvider = { ARRAYSIZE(k1OutroHomeStringDOSCDHebrew), k1OutroHomeStringDOSCDHebrew };
+
+static const char *const k1VeryCleverStringDOSCDHebrew[1] = {
+ "\xF9\xF0\xE5\xEF \xE1\xE9\xE5\xFA\xF8! \xE0\xE1\xEC \xE4\xEE\xE0\xEE\xF6\xE9\xED \xE4\xE0\xE5\xEE\xEC\xEC\xE9\xED \xE4\xEC\xEC\xE5 \xEC\xE7\xE9\xF0\xED."
+};
+
+static const StringListProvider k1VeryCleverStringDOSCDHebrewProvider = { ARRAYSIZE(k1VeryCleverStringDOSCDHebrew), k1VeryCleverStringDOSCDHebrew };
+
+static const char *const k1GUIStringsDOSCDHebrew[81] = {
+ "\xE3\xE1\xF8\xE9 \xE9\xEE\xE9 \xF7\xE9\xF8\xF0\xE3\xE9\xE4",
+ "\xE8\xF2\xE9\xF0\xFA \xEE\xF9\xE7\xF7",
+ "\xF9\xEE\xE9\xF8\xFA \xE4\xEE\xF9\xE7\xF7",
+ "\xE1\xF7\xF8\xE9 \xEE\xF9\xE7\xF7",
+ "\xE9\xF6\xE9\xE0\xE4 \xEE\xE4\xEE\xF9\xE7\xF7",
+ "\xE7\xE6\xF8\xE4 \xEC\xEE\xF9\xE7\xF7",
+ "\xE1\xF7\xF8\xE9 \xEE\xF9\xE7\xF7",
+ "\xE0\xE9\xE6\xE4 \xEE\xF9\xE7\xF7 \xEC\xE8\xF2\xE5\xEF?",
+ "\xE1\xE7\xF8\xE5 \xE4\xE9\xEB\xEF \xEC\xF9\xEE\xE5\xF8:",
+ "] \xEE\xF9\xE1\xF6\xFA \xF8\xE9\xF7\xE4 [",
+ "\xE1\xE9\xE8\xE5\xEC",
+ "\xE4\xE6\xE9\xF0\xE5 \xFA\xE9\xE0\xE5\xF8 \xF9\xEC \xE4\xEE\xF9\xE7\xF7 \xE4\xF9\xEE\xE5\xF8:",
+ "\xF9\xEE\xE9\xF8\xE4",
+ "\xF0\xE5\xE7 \xF2\xEC \xEE\xF9\xEB\xE1\xEA \xE1\xF9\xEC\xE5\xED, \xE1\xF8\xF0\xE3\xE5\xEF.",
+ "\xE4\xE0\xED \xE0\xFA\xED \xE1\xE8\xE5\xE7\xE9\xED \xF9\xE1\xF8\xF6\xE5\xF0\xEB\xED \xEC\xF6\xE0\xFA?",
+ "XXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "XXXXXXXXXXXX",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "\xFA\xF4\xF8\xE9\xE8 \xF8\xE0\xF9\xE9",
+ "\xF4\xE5\xF2\xEC",
+ "\xEB\xE1\xE5\xE9",
+ "\xEB\xEF",
+ "\xEC\xE0",
+ "\xCD\x0E\x17""+""\xD5\x0E\x17""+""\xDA\x0E\x17""+""\xE1\x0E\x17""+""\xE6\x0E\x17""+""\xEE\x0E\x17""+""\xF8\x0E\x17""+""\x03\x0F\x17""+""\x10\x0F\x17""+""\x18\x0F\x17""+""\x1F\x0F\x17""+$""\x0F\x17""+\xEE\xE4\xE9\xF8\xE5\xFA \xE4\xEC\xE9\xEB\xE4 ",
+ "\xEE\xE4\xE9\xF8\xE5\xFA \xE8\xF7\xF1\xE8 ",
+ "\xEE\xE5\xE6\xE9\xF7\xE4 ",
+ "\xF6\xEC\xE9\xEC\xE9\xED ",
+ "\xF7\xE5\xEC / \xE8\xF7\xF1\xE8 "
+};
+
+static const StringListProvider k1GUIStringsDOSCDHebrewProvider = { ARRAYSIZE(k1GUIStringsDOSCDHebrew), k1GUIStringsDOSCDHebrew };
+
+static const char *const k1NewGameStringDOSCDHebrew[1] = {
+ "] \xE4\xFA\xE7\xEC\xFA \xEE\xF9\xE7\xF7 \xE7\xE3\xF9 ["
+};
+
+static const StringListProvider k1NewGameStringDOSCDHebrewProvider = { ARRAYSIZE(k1NewGameStringDOSCDHebrew), k1NewGameStringDOSCDHebrew };
+
+static const char *const k1ConfigStringsDOSCDHebrew[12] = {
+ "\xE0\xE8\xE9\xFA \xE1\xE9\xE5\xFA\xF8",
+ "\xE0\xE8\xE9\xFA",
+ "\xF8\xE2\xE9\xEC\xE4",
+ "\xEE\xE4\xE9\xF8\xE4",
+ "\xEE\xE4\xE9\xF8\xE4 \xE1\xE9\xE5\xFA\xF8",
+ "\xE8\xF7\xF1\xE8 \xE1\xEC\xE1\xE3",
+ "\xF7\xE5\xEC \xE1\xEC\xE1\xE3",
+ "\xF7\xE5\xEC \xE5\xE8\xF7\xF1\xE8",
+ "\xE0\xE8\xE9\xFA \xE1\xE9\xE5\xFA\xF8",
+ "\xF8\xE2\xE9\xEC\xE4",
+ "\xEE\xE4\xE9\xF8\xE4",
+ "\xEC\xE7\xE9\xF6\xE4"
+};
+
+static const StringListProvider k1ConfigStringsDOSCDHebrewProvider = { ARRAYSIZE(k1ConfigStringsDOSCDHebrew), k1ConfigStringsDOSCDHebrew };
+
diff --git a/engines/kyra/detection_tables.h b/engines/kyra/detection_tables.h
index a125b0ff57..cc8502c8e7 100644
--- a/engines/kyra/detection_tables.h
+++ b/engines/kyra/detection_tables.h
@@ -341,6 +341,20 @@ const KYRAGameDescription adGameDescs[] = {
},
KYRA1_CD_FLAGS
},
+
+ { // HEBREW FAN TRANSLATION
+ {
+ "kyra1",
+ "CD",
+ AD_ENTRY1("GEMCUT.PAK", "20c141be61ed01bfda09197e0452bcf7"),
+ Common::HE_ISR,
+ Common::kPlatformDOS,
+ ADGF_CD,
+ GUIO4(GUIO_MIDIADLIB, GUIO_MIDIMT32, GUIO_MIDIPCSPK, GUIO_RENDERVGA)
+ },
+ KYRA1_CD_FLAGS
+ },
+
{
{
"kyra1",
diff --git a/engines/kyra/gui/gui_lok.cpp b/engines/kyra/gui/gui_lok.cpp
index 7772ac4325..6c0d60dd0d 100644
--- a/engines/kyra/gui/gui_lok.cpp
+++ b/engines/kyra/gui/gui_lok.cpp
@@ -357,7 +357,7 @@ void GUI_LoK::setGUILabels() {
int menuLabelGarbageOffset = 0;
if (_vm->gameFlags().isTalkie) {
- if (_vm->gameFlags().lang == Common::EN_ANY)
+ if (_vm->gameFlags().lang == Common::EN_ANY || _vm->gameFlags().lang == Common::HE_ISR)
offset = 52;
else if (_vm->gameFlags().lang == Common::DE_DEU)
offset = 30;
diff --git a/engines/kyra/resource/staticres.cpp b/engines/kyra/resource/staticres.cpp
index d9ff76bbef..a6c1bdc0ee 100644
--- a/engines/kyra/resource/staticres.cpp
+++ b/engines/kyra/resource/staticres.cpp
@@ -39,7 +39,7 @@
namespace Kyra {
-#define RESFILE_VERSION 107
+#define RESFILE_VERSION 108
namespace {
bool checkKyraDat(Common::SeekableReadStream *file) {
@@ -94,6 +94,7 @@ const IndexTable iLanguageTable[] = {
{ Common::IT_ITA, 5 },
{ Common::JA_JPN, 6 },
{ Common::RU_RUS, 7 },
+ { Common::HE_ISR, 8 },
{ -1, -1 }
};
@@ -964,6 +965,8 @@ void KyraEngine_LoK::loadMainScreen(int page) {
_screen->loadBitmap("MAIN_ITA.CPS", page, page, 0);
else if (_flags.lang == Common::RU_RUS)
_screen->loadBitmap("MAIN_ENG.CPS", page, page, 0);
+ else if (_flags.lang == Common::HE_ISR)
+ _screen->loadBitmap("MAIN_HEB.CPS", page, page, 0);
else
warning("no main graphics file found");
diff --git a/engines/kyra/sequence/seqplayer_lok.cpp b/engines/kyra/sequence/seqplayer_lok.cpp
index 2ce2e9da7f..3c72affc6d 100644
--- a/engines/kyra/sequence/seqplayer_lok.cpp
+++ b/engines/kyra/sequence/seqplayer_lok.cpp
@@ -602,6 +602,9 @@ bool SeqPlayer::playSequence(const uint8 *seqData, bool skipSeq) {
memset(_seqMovies, 0, sizeof(_seqMovies));
_screen->_curPage = 0;
+ char revBuffer[384];
+ memset(revBuffer, 0, sizeof(revBuffer));
+ int charIdx = 0;
while (!_seqQuitFlag && !_vm->shouldQuit()) {
if (skipSeq && _vm->seq_skipSequence()) {
while (1) {
@@ -619,17 +622,36 @@ bool SeqPlayer::playSequence(const uint8 *seqData, bool skipSeq) {
if (_seqDisplayedTextTimer < _system->getMillis()) {
char charStr[3];
charStr[0] = _vm->seqTextsTable()[_seqDisplayedText][_seqDisplayedChar];
+ if (_vm->gameFlags().lang == Common::HE_ISR) {
+ for (int k = charIdx; k > 0; k--) {
+ revBuffer[k] = revBuffer[k - 1];
+ }
+ revBuffer[0] = charStr[0];
+ if (!charIdx) {
+ int w = _screen->getTextWidth(_vm->seqTextsTable()[_seqDisplayedText] + _seqDisplayedChar);
+ _seqDisplayedTextX += w;
+ }
+ charIdx++;
+ }
charStr[1] = charStr[2] = '\0';
if (_vm->gameFlags().lang == Common::JA_JPN)
charStr[1] = _vm->seqTextsTable()[_seqDisplayedText][++_seqDisplayedChar];
- _screen->printText(charStr, _seqDisplayedTextX, 180, 0xF, 0xC);
- _seqDisplayedTextX += _screen->getCharWidth((uint8)charStr[0]);
+ if (_vm->gameFlags().lang == Common::HE_ISR) {
+ _seqDisplayedTextX -= _screen->getCharWidth((uint8)charStr[0]);
+ _screen->printText(revBuffer, _seqDisplayedTextX, 180, 0xF, 0xC);
+ } else {
+ _screen->printText(charStr, _seqDisplayedTextX, 180, 0xF, 0xC);
+ _seqDisplayedTextX += _screen->getCharWidth((uint8)charStr[0]);
+ }
++_seqDisplayedChar;
- if (_vm->seqTextsTable()[_seqDisplayedText][_seqDisplayedChar] == '\0')
+ if (_vm->seqTextsTable()[_seqDisplayedText][_seqDisplayedChar] == '\0') {
_seqDisplayedTextTimer = 0xFFFFFFFF;
- else
+ memset(revBuffer, 0, sizeof(revBuffer));
+ charIdx = 0;
+ } else {
_seqDisplayedTextTimer = _system->getMillis() + 1000 / ((_vm->gameFlags().lang == Common::FR_FRA) ? 120 : 60);
+ }
}
}
diff --git a/engines/kyra/sequence/sequences_lok.cpp b/engines/kyra/sequence/sequences_lok.cpp
index 97e5c4c7a9..62bec398f4 100644
--- a/engines/kyra/sequence/sequences_lok.cpp
+++ b/engines/kyra/sequence/sequences_lok.cpp
@@ -266,6 +266,8 @@ bool KyraEngine_LoK::seq_introStory() {
_screen->loadBitmap("TEXT_ENG.CPS", 3, 3, &_screen->getPalette(0));
else if (_flags.lang == Common::RU_RUS && _flags.isTalkie)
_screen->loadBitmap("TEXT_ENG.CPS", 3, 3, &_screen->getPalette(0));
+ else if (_flags.lang == Common::HE_ISR)
+ _screen->loadBitmap("TEXT_HEB.CPS", 3, 3, &_screen->getPalette(0));
else
warning("no story graphics file found");
diff --git a/engines/kyra/text/text.cpp b/engines/kyra/text/text.cpp
index e7b5b0a479..4ffdffe800 100644
--- a/engines/kyra/text/text.cpp
+++ b/engines/kyra/text/text.cpp
@@ -204,6 +204,15 @@ void TextDisplayer::printTalkTextMessage(const char *text, int x, int y, uint8 c
}
void TextDisplayer::printText(const char *str, int x, int y, uint8 c0, uint8 c1, uint8 c2) {
+ char revBuffer[384];
+ memset(revBuffer, 0, sizeof(revBuffer));
+ if (_vm->gameFlags().lang == Common::HE_ISR) {
+ int len = strlen(str);
+ for (int i = 0; i < len; i++) {
+ revBuffer[i] = str[len - i - 1];
+ }
+ str = revBuffer;
+ }
uint8 colorMap[] = { 0, 15, 12, 12 };
colorMap[3] = c1;
_screen->setTextColor(colorMap, 0, 3);
diff --git a/engines/kyra/text/text_lok.cpp b/engines/kyra/text/text_lok.cpp
index f89bd9a4c2..6146778e85 100644
--- a/engines/kyra/text/text_lok.cpp
+++ b/engines/kyra/text/text_lok.cpp
@@ -350,16 +350,28 @@ void KyraEngine_LoK::drawSentenceCommand(const char *sentence, int color) {
_startSentencePalIndex = color;
}
- _text->printText(sentence, 8, 143, 0xFF, _flags.platform == Common::kPlatformAmiga ? 19 : 12, 0);
+ if (_flags.lang != Common::HE_ISR) {
+ _text->printText(sentence, 8, 143, 0xFF, _flags.platform == Common::kPlatformAmiga ? 19 : 12, 0);
+ } else {
+ _screen->_charSpacing = -2;
+ _text->printText(sentence, 311 - _screen->getTextWidth(sentence), 143, 0xFF, _flags.platform == Common::kPlatformAmiga ? 19 : 12, 0);
+ _screen->_charSpacing = 0;
+ }
setTextFadeTimerCountdown(15);
_fadeText = false;
}
void KyraEngine_LoK::updateSentenceCommand(const char *str1, const char *str2, int color) {
char sentenceCommand[500];
- Common::strlcpy(sentenceCommand, str1, sizeof(sentenceCommand));
- if (str2)
- Common::strlcat(sentenceCommand, str2, sizeof(sentenceCommand));
+ if (_flags.lang != Common::HE_ISR) {
+ Common::strlcpy(sentenceCommand, str1, sizeof(sentenceCommand));
+ if (str2)
+ Common::strlcat(sentenceCommand, str2, sizeof(sentenceCommand));
+ } else {
+ if (str2)
+ Common::strlcpy(sentenceCommand, str2, sizeof(sentenceCommand));
+ Common::strlcat(sentenceCommand, str1, sizeof(sentenceCommand));
+ }
drawSentenceCommand(sentenceCommand, color);
_screen->updateScreen();
More information about the Scummvm-git-logs
mailing list