[Scummvm-git-logs] scummvm master -> ef332f38c11dc82d40cd712d77ee54bccc784ed1
sev-
noreply at scummvm.org
Sun Sep 18 22:46:11 UTC 2022
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c9ef71a528 AGI: limit input to <= 0xFF in RU_RUS & HE_ISR translations
ef332f38c1 AGI: French translation support
Commit: c9ef71a5289daac1544ebda33fb1416aa3d57859
https://github.com/scummvm/scummvm/commit/c9ef71a5289daac1544ebda33fb1416aa3d57859
Author: DL (dl at thespr3.com)
Date: 2022-09-19T00:46:07+02:00
Commit Message:
AGI: limit input to <= 0xFF in RU_RUS & HE_ISR translations
Prevents right-click and mouse scroll wheel from adding unwanted keypresses to the player input line when language is HE_ISR or RU_RUS.
Changed paths:
engines/agi/text.cpp
diff --git a/engines/agi/text.cpp b/engines/agi/text.cpp
index d9cb46ff16e..4ed24abed50 100644
--- a/engines/agi/text.cpp
+++ b/engines/agi/text.cpp
@@ -711,7 +711,7 @@ void TextMgr::promptKeyPress(uint16 newKey) {
switch (_vm->getLanguage()) {
case Common::RU_RUS:
case Common::HE_ISR:
- if (newKey >= 0x20)
+ if ((newKey >= 0x20) && (newKey <= 0xff))
acceptableInput = true;
break;
default:
@@ -1025,7 +1025,7 @@ void TextMgr::stringKeyPress(uint16 newKey) {
switch (_vm->getLanguage()) {
case Common::RU_RUS:
case Common::HE_ISR:
- if (newKey >= 0x20)
+ if ((newKey >= 0x20) && (newKey <= 0xff))
acceptableInput = true;
break;
default:
Commit: ef332f38c11dc82d40cd712d77ee54bccc784ed1
https://github.com/scummvm/scummvm/commit/ef332f38c11dc82d40cd712d77ee54bccc784ed1
Author: DL (dl at thespr3.com)
Date: 2022-09-19T00:46:07+02:00
Commit Message:
AGI: French translation support
Changed paths:
engines/agi/detection.h
engines/agi/detection_tables.h
engines/agi/keyboard.cpp
engines/agi/loader_v2.cpp
engines/agi/text.cpp
engines/agi/words.cpp
diff --git a/engines/agi/detection.h b/engines/agi/detection.h
index 81758d5b73b..751e9db4a8a 100644
--- a/engines/agi/detection.h
+++ b/engines/agi/detection.h
@@ -67,7 +67,8 @@ enum AgiGameFeatures {
GF_AGI256 = (1 << 2), // marks fanmade AGI-256 games
GF_FANMADE = (1 << 3), // marks fanmade games
GF_OLDAMIGAV20 = (1 << 4),
- GF_2GSOLDSOUND = (1 << 5)
+ GF_2GSOLDSOUND = (1 << 5),
+ GF_EXTCHAR = (1 << 6) // use WORDS.TOK.EXTENDED
};
enum BooterDisks {
diff --git a/engines/agi/detection_tables.h b/engines/agi/detection_tables.h
index ddf4f3e32df..a60ae239d2f 100644
--- a/engines/agi/detection_tables.h
+++ b/engines/agi/detection_tables.h
@@ -717,7 +717,7 @@ static const AGIGameDescription gameDescriptions[] = {
GAME("pq1", "2.0G 1987-12-03", "d194e5d88363095f55d5096b8e32fbbb", 0x2917, GID_PQ1),
// Police Quest 1 (PC) 2.0G 12/3/87; with Hebrew translation
- GAME_LVFPN("pq1", "2.0G 1987-12-03", "PQ1.WAG", "59e1b2fb6d025968b8ed7388f107c7b5", -1, Common::HE_ISR, 0x2917, 0, GID_PQ1, Common::kPlatformDOS, GType_V2, GAMEOPTIONS_DEFAULT),
+ GAME_LVFPN("pq1", "2.0G 1987-12-03", "PQ1.WAG", "59e1b2fb6d025968b8ed7388f107c7b5", -1, Common::HE_ISR, 0x2917, GF_EXTCHAR, GID_PQ1, Common::kPlatformDOS, GType_V2, GAMEOPTIONS_DEFAULT),
// Police Quest 1 (CoCo3 360k) [AGI 2.023]
GAME_PS("pq1", "", "28a077041f75aab78f66804800940085", 375, 0x2440, GID_PQ1, Common::kPlatformCoCo3),
@@ -757,6 +757,9 @@ static const AGIGameDescription gameDescriptions[] = {
// Space Quest 1 (PC 5.25"/3.5") 2.2 [AGI 2.426/2.917]
GAME("sq1", "2.2 1987-05-07 5.25\"/3.5\"", "5d67630aba008ec5f7f9a6d0a00582f4", 0x2440, GID_SQ1),
+ // Space Quest 1 (PC 5.25"/3.5") 2.2 [AGI 2.917]; French Translation
+ GAME_LVFPN("sq1", "2.2 1987-05-07 5.25\"/3.5\"", "words.tok.extended", "3f1730f3c9d4622a986f735af0f8734a", 12665, Common::FR_FRA, 0x2917, GF_EXTCHAR, GID_SQ1, Common::kPlatformDOS, GType_V2, GAMEOPTIONS_DEFAULT),
+
// Space Quest 1 (CoCo3 360k) [AGI 2.072]
GAME_PS("sq1", "", "5d67630aba008ec5f7f9a6d0a00582f4", 372, 0x2440, GID_SQ1, Common::kPlatformCoCo3),
diff --git a/engines/agi/keyboard.cpp b/engines/agi/keyboard.cpp
index 2075791c9fe..1f85b5a1009 100644
--- a/engines/agi/keyboard.cpp
+++ b/engines/agi/keyboard.cpp
@@ -155,6 +155,56 @@ void AgiEngine::processScummVMEvents() {
}
}
+ if (_game._vm->getLanguage() == Common::FR_FRA) {
+ // Convert to CP858
+ if (key >= 0x80 && key <= 0xff) {
+ switch (key) {
+ case 0xe9:
+ key = 0x82;
+ break;
+ case 0xe8:
+ key = 0x8a;
+ break;
+ case 0xe7:
+ key = 0x87;
+ break;
+ case 0xe0:
+ key = 0x85;
+ break;
+ case 0xf9:
+ key = 0x97;
+ break;
+ case 0xf4:
+ key = 0x93;
+ break;
+ case 0xee:
+ key = 0x8c;
+ break;
+ case 0xef:
+ key = 0x8b;
+ break;
+ case 0xea:
+ key = 0x88;
+ break;
+ case 0xeb:
+ key = 0x89;
+ break;
+ case 0xe2:
+ key = 0x83;
+ break;
+ case 0xe4:
+ key = 0x84;
+ break;
+ case 0xfb:
+ key = 0x96;
+ break;
+ case 0xfc:
+ key = 0x81;
+ break;
+ }
+ }
+ }
+
if ((key) && (key <= 0xFF)) {
// No special key, directly accept it
// Is ISO-8859-1, we need lower 128 characters only, which is plain ASCII, so no mapping required
diff --git a/engines/agi/loader_v2.cpp b/engines/agi/loader_v2.cpp
index 0893cf7e1a8..5121711febe 100644
--- a/engines/agi/loader_v2.cpp
+++ b/engines/agi/loader_v2.cpp
@@ -275,10 +275,11 @@ int AgiLoader_v2::loadObjects(const char *fname) {
}
int AgiLoader_v2::loadWords(const char *fname) {
- if (_vm->getLanguage() != Common::HE_ISR)
- return _vm->_words->loadDictionary(fname);
- else
+ if (_vm->getFeatures() & GF_EXTCHAR) {
return _vm->_words->loadExtendedDictionary(fname);
+ } else {
+ return _vm->_words->loadDictionary(fname);
+ }
}
} // End of namespace Agi
diff --git a/engines/agi/text.cpp b/engines/agi/text.cpp
index 4ed24abed50..be7c3535627 100644
--- a/engines/agi/text.cpp
+++ b/engines/agi/text.cpp
@@ -714,6 +714,10 @@ void TextMgr::promptKeyPress(uint16 newKey) {
if ((newKey >= 0x20) && (newKey <= 0xff))
acceptableInput = true;
break;
+ case Common::FR_FRA:
+ if ((newKey >= 0x20) && (newKey != 0x5e) && (newKey <= 0xff))
+ acceptableInput = true;
+ break;
default:
if ((newKey >= 0x20) && (newKey <= 0x7f))
acceptableInput = true;
@@ -1028,6 +1032,10 @@ void TextMgr::stringKeyPress(uint16 newKey) {
if ((newKey >= 0x20) && (newKey <= 0xff))
acceptableInput = true;
break;
+ case Common::FR_FRA:
+ if ((newKey >= 0x20) && (newKey != 0x5e) && (newKey <= 0xff))
+ acceptableInput = true;
+ break;
default:
if ((newKey >= 0x20) && (newKey <= 0x7f))
acceptableInput = true;
diff --git a/engines/agi/words.cpp b/engines/agi/words.cpp
index 3369cc1d0ed..c7b0320345d 100644
--- a/engines/agi/words.cpp
+++ b/engines/agi/words.cpp
@@ -251,7 +251,7 @@ int16 Words::findWordInDictionary(const Common::String &userInputLowcased, uint1
foundWordLen = 0;
- const byte lastCharInAbc = _vm->getLanguage() == Common::HE_ISR ? 0xfa : 'z';
+ const byte lastCharInAbc = _vm->getFeatures() & GF_EXTCHAR ? 0xff : 'z';
if ((firstChar >= 'a') && (firstChar <= lastCharInAbc)) {
// word has to start with a letter
More information about the Scummvm-git-logs
mailing list