[Scummvm-git-logs] scummvm master -> c32027672eed9bddf90b953dada5f04b6f1a3656

bluegr bluegr at gmail.com
Tue Jun 25 07:10:24 CEST 2019


This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c2b7fc526e WINTERMUTE: Detection tables for Tanya Grotter dilogy
555e400d76 WINTERMUTE: Hardcode known path prefix for tanya2
b9af5ad304 WINTERMUTE: Fix IsKeyDown to work with ASCII
1e005d37e2 WINTERMUTE: Handle enum in GetNumScripts
62aebde208 WINTERMUTE: Support even more keycodes at IsKeyDown()
4b763f0e9e WINTERMUTE: Add debugN + comment for getNumScripts()
d53bd4e7a8 WINTERMUTE: Add more details in openDiskFile() comment
c32027672e WINTERMUTE: Add comments + warning() for IsKeyDown() method


Commit: c2b7fc526e7da440563cc2a7b3a96dcdb7fc81a4
    https://github.com/scummvm/scummvm/commit/c2b7fc526e7da440563cc2a7b3a96dcdb7fc81a4
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2019-06-25T08:10:16+03:00

Commit Message:
WINTERMUTE: Detection tables for Tanya Grotter dilogy

Tanya Grotter games are based on first 2 books of a Russian fantasy
novel series by Dmitri Yemets.
Those games were both released in Russian only.

Changed paths:
    engines/wintermute/detection_tables.h


diff --git a/engines/wintermute/detection_tables.h b/engines/wintermute/detection_tables.h
index ad02af6..e3ce066 100644
--- a/engines/wintermute/detection_tables.h
+++ b/engines/wintermute/detection_tables.h
@@ -87,6 +87,8 @@ static const PlainGameDescriptor wintermuteGames[] = {
 	{"spaceinvaders",   "Space Invaders"},
 	{"spacemadness",    "Space Madness"},
 	{"sofiasdebt",      "Sofia's Debt"},
+	{"tanya1",          "Tanya Grotter and the Magical Double Bass"},
+	{"tanya2",          "Tanya Grotter and the Disappearing Floor"},
 	{"theancientmark1", "The Ancient Mark - Episode 1"},
 	{"thebox",          "The Box"},
 	{"thekite",         "The Kite"},
@@ -581,6 +583,12 @@ static const WMEGameDescription gameDescriptions[] = {
 	// Space Madness
 	WME_WINENTRY("spacemadness", "1.0.2",
 		WME_ENTRY1s("data.dcp",  "b9b83135dc7a9e1b4b5f50195dbeb630", 39546622), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION),
+	// Tanya Grotter and the Magical Double Bass
+	WME_WINENTRY("tanya1", "",
+		WME_ENTRY1s("data.dcp", "035bbdaff078cc4053ecf4b518c0d0fd", 1007507786), Common::RU_RUS, ADGF_UNSTABLE, LATEST_VERSION),
+	// Tanya Grotter and the Disappearing Floor
+	WME_WINENTRY("tanya2", "",
+		WME_ENTRY1s("data.dcp", "9c15f14990f630177e063da885d03e6d", 936959767), Common::RU_RUS, ADGF_UNSTABLE, LATEST_VERSION),
 	// The Ancient Mark - Episode 1
 	WME_WINENTRY("theancientmark1", "",
 		WME_ENTRY1s("data.dcp", "ca04c26f03b2bd307368b306b297ddd7", 364664692), Common::EN_ANY, ADGF_UNSTABLE, LATEST_VERSION),


Commit: 555e400d768004355a79e693e4b7e9258ac95c7a
    https://github.com/scummvm/scummvm/commit/555e400d768004355a79e693e4b7e9258ac95c7a
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2019-06-25T08:10:16+03:00

Commit Message:
WINTERMUTE: Hardcode known path prefix for tanya2

Missing path is
"d:\engine\ТГ2\tg_ie_080128_1005\data\interface\pixel\pixel.png" from
scenes\code\episode_01\scene_comics_1\scene_comics_1.scene

Changed paths:
    engines/wintermute/base/file/base_disk_file.cpp


diff --git a/engines/wintermute/base/file/base_disk_file.cpp b/engines/wintermute/base/file/base_disk_file.cpp
index 0684b3f..3da5d8b 100644
--- a/engines/wintermute/base/file/base_disk_file.cpp
+++ b/engines/wintermute/base/file/base_disk_file.cpp
@@ -122,6 +122,7 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) {
 		const char* const knownPrefixes[] = { // Known absolute paths
 				"c:/windows/fonts/", // East Side Story refers to "c:\windows\fonts\framd.ttf"
 				"c:/carol6/svn/data/", // Carol Reed 6: Black Circle refers to "c:\carol6\svn\data\sprites\system\help.png"
+				"d:/engine/\0xD2\0xC32/tg_ie_080128_1005/data/", //Tanya Grotter and the Disappearing Floor
 				"f:/dokument/spel 5/demo/data/" // Carol Reed 5 (non-demo) refers to "f:\dokument\spel 5\demo\data\scenes\credits\op_cred_00\op_cred_00.jpg"
 		};
 


Commit: b9af5ad30496cf04604189008e9efe2af1b9164b
    https://github.com/scummvm/scummvm/commit/b9af5ad30496cf04604189008e9efe2af1b9164b
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2019-06-25T08:10:16+03:00

Commit Message:
WINTERMUTE: Fix IsKeyDown to work with ASCII

Tanya Grotter series has a cheat, that is triggered with
(Keyboard.IsKeyDown("A") && Keyboard.IsControl && Keyboard.IsAlt &&
Game.DebugMode) condition.
vKeyToKeyCode(97) would produce a warning message, fixed this.

Changed paths:
    engines/wintermute/base/base_keyboard_state.cpp


diff --git a/engines/wintermute/base/base_keyboard_state.cpp b/engines/wintermute/base/base_keyboard_state.cpp
index e35e544..e2803e3 100644
--- a/engines/wintermute/base/base_keyboard_state.cpp
+++ b/engines/wintermute/base/base_keyboard_state.cpp
@@ -81,7 +81,7 @@ bool BaseKeyboardState::scCallMethod(ScScript *script, ScStack *stack, ScStack *
 	if (strcmp(name, "IsKeyDown") == 0) {
 		stack->correctParams(1);
 		ScValue *val = stack->pop();
-		int vKey;
+		uint32 vKeyCode;
 
 		if (val->_type == VAL_STRING && strlen(val->getString()) > 0) {
 			const char *str = val->getString();
@@ -89,12 +89,12 @@ bool BaseKeyboardState::scCallMethod(ScScript *script, ScStack *stack, ScStack *
 			if (temp >= 'A' && temp <= 'Z') {
 				temp += ('a' - 'A');
 			}
-			vKey = (int)temp;
+			vKeyCode = (int)temp;
 		} else {
-			vKey = val->getInt();
+			vKeyCode = vKeyToKeyCode(val->getInt());
 		}
 
-		bool isDown = _keyStates[vKeyToKeyCode(vKey)];
+		bool isDown = _keyStates[vKeyCode];
 
 		stack->pushBool(isDown);
 		return STATUS_OK;


Commit: 1e005d37e2e7a139303c38b5b068b35e7cc0eb7e
    https://github.com/scummvm/scummvm/commit/1e005d37e2e7a139303c38b5b068b35e7cc0eb7e
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2019-06-25T08:10:16+03:00

Commit Message:
WINTERMUTE: Handle enum in GetNumScripts

This code is used only in debug mode and only to display some script
counters.
States are handled in the very same way in WME Lite, so there is no
reason to log tons of warning here.

Changed paths:
    engines/wintermute/base/scriptables/script_engine.cpp


diff --git a/engines/wintermute/base/scriptables/script_engine.cpp b/engines/wintermute/base/scriptables/script_engine.cpp
index 8d957c6..a24b412 100644
--- a/engines/wintermute/base/scriptables/script_engine.cpp
+++ b/engines/wintermute/base/scriptables/script_engine.cpp
@@ -433,7 +433,6 @@ int ScEngine::getNumScripts(int *running, int *waiting, int *persistent) {
 			numPersistent++;
 			break;
 		default:
-			warning("ScEngine::GetNumScripts - unhandled enum");
 			break;
 		}
 		numTotal++;


Commit: 62aebde208685c027d1ad381abedf6aa0dc72f6d
    https://github.com/scummvm/scummvm/commit/62aebde208685c027d1ad381abedf6aa0dc72f6d
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2019-06-25T08:10:16+03:00

Commit Message:
WINTERMUTE: Support even more keycodes at IsKeyDown()

Changed paths:
    engines/wintermute/base/base_keyboard_state.cpp


diff --git a/engines/wintermute/base/base_keyboard_state.cpp b/engines/wintermute/base/base_keyboard_state.cpp
index e2803e3..a9e2b8c 100644
--- a/engines/wintermute/base/base_keyboard_state.cpp
+++ b/engines/wintermute/base/base_keyboard_state.cpp
@@ -318,6 +318,50 @@ enum VKeyCodes {
 	kVkInsert     = 45,
 	kVkDelete     = 46,
 
+	kVkA          = 65, //printable
+	kVkB          = 66, //printable
+	kVkC          = 67, //printable
+	kVkD          = 68, //printable
+	kVkE          = 69, //printable
+	kVkF          = 70, //printable
+	kVkG          = 71, //printable
+	kVkH          = 72, //printable
+	kVkI          = 73, //printable
+	kVkJ          = 74, //printable
+	kVkK          = 75, //printable
+	kVkL          = 76, //printable
+	kVkM          = 77, //printable
+	kVkN          = 78, //printable
+	kVkO          = 79, //printable
+	kVkP          = 80, //printable
+	kVkQ          = 81, //printable
+	kVkR          = 82, //printable
+	kVkS          = 83, //printable
+	kVkT          = 84, //printable
+	kVkU          = 85, //printable
+	kVkV          = 86, //printable
+	kVkW          = 87, //printable
+	kVkX          = 88, //printable
+	kVkY          = 89, //printable
+	kVkZ          = 90, //printable
+
+	kVkNumpad0    = 96, //printable
+	kVkNumpad1    = 97, //printable
+	kVkNumpad2    = 98, //printable
+	kVkNumpad3    = 99, //printable
+	kVkNumpad4    = 100, //printable
+	kVkNumpad5    = 101, //printable
+	kVkNumpad6    = 102, //printable
+	kVkNumpad7    = 103, //printable
+	kVkNumpad8    = 104, //printable
+	kVkNumpad9    = 105, //printable
+	kVkMultiply   = 106, //printable
+	kVkAdd        = 107, //printable
+	kVkSeparator  = 108, //printable
+	kVkSubtract   = 109, //printable
+	kVkDecimal    = 110, //printable
+	kVkDivide     = 111, //printable
+
 	kVkF1         = 112,
 	kVkF2         = 113,
 	kVkF3         = 114,
@@ -471,6 +515,90 @@ Common::KeyCode BaseKeyboardState::vKeyToKeyCode(uint32 vkey) {
 		return Common::KEYCODE_INSERT;
 	case kVkDelete:
 		return Common::KEYCODE_DELETE;
+	case kVkA:
+		return Common::KEYCODE_a;
+	case kVkB:
+		return Common::KEYCODE_b;
+	case kVkC:
+		return Common::KEYCODE_c;
+	case kVkD:
+		return Common::KEYCODE_d;
+	case kVkE:
+		return Common::KEYCODE_e;
+	case kVkF:
+		return Common::KEYCODE_f;
+	case kVkG:
+		return Common::KEYCODE_g;
+	case kVkH:
+		return Common::KEYCODE_h;
+	case kVkI:
+		return Common::KEYCODE_i;
+	case kVkJ:
+		return Common::KEYCODE_j;
+	case kVkK:
+		return Common::KEYCODE_k;
+	case kVkL:
+		return Common::KEYCODE_l;
+	case kVkM:
+		return Common::KEYCODE_m;
+	case kVkN:
+		return Common::KEYCODE_n;
+	case kVkO:
+		return Common::KEYCODE_o;
+	case kVkP:
+		return Common::KEYCODE_p;
+	case kVkQ:
+		return Common::KEYCODE_q;
+	case kVkR:
+		return Common::KEYCODE_r;
+	case kVkS:
+		return Common::KEYCODE_s;
+	case kVkT:
+		return Common::KEYCODE_t;
+	case kVkU:
+		return Common::KEYCODE_u;
+	case kVkV:
+		return Common::KEYCODE_v;
+	case kVkW:
+		return Common::KEYCODE_w;
+	case kVkX:
+		return Common::KEYCODE_x;
+	case kVkY:
+		return Common::KEYCODE_y;
+	case kVkZ:
+		return Common::KEYCODE_z;
+	case kVkNumpad0:
+		return Common::KEYCODE_KP0;
+	case kVkNumpad1:
+		return Common::KEYCODE_KP1;
+	case kVkNumpad2:
+		return Common::KEYCODE_KP2;
+	case kVkNumpad3:
+		return Common::KEYCODE_KP3;
+	case kVkNumpad4:
+		return Common::KEYCODE_KP4;
+	case kVkNumpad5:
+		return Common::KEYCODE_KP5;
+	case kVkNumpad6:
+		return Common::KEYCODE_KP6;
+	case kVkNumpad7:
+		return Common::KEYCODE_KP7;
+	case kVkNumpad8:
+		return Common::KEYCODE_KP8;
+	case kVkNumpad9:
+		return Common::KEYCODE_KP9;
+	case kVkMultiply:
+		return Common::KEYCODE_KP_MULTIPLY;
+	case kVkAdd:
+		return Common::KEYCODE_KP_PLUS;
+	case kVkSeparator:
+		return Common::KEYCODE_KP_EQUALS;
+	case kVkSubtract:
+		return Common::KEYCODE_KP_MINUS;
+	case kVkDecimal:
+		return Common::KEYCODE_KP_PERIOD;
+	case kVkDivide:
+		return Common::KEYCODE_KP_DIVIDE;
 	case kVkF1:
 		return Common::KEYCODE_F1;
 	case kVkF2:


Commit: 4b763f0e9e2cbd9bc1656212d546e92a80ec4e72
    https://github.com/scummvm/scummvm/commit/4b763f0e9e2cbd9bc1656212d546e92a80ec4e72
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2019-06-25T08:10:16+03:00

Commit Message:
WINTERMUTE: Add debugN + comment for getNumScripts()

Changed paths:
    engines/wintermute/base/scriptables/script_engine.cpp


diff --git a/engines/wintermute/base/scriptables/script_engine.cpp b/engines/wintermute/base/scriptables/script_engine.cpp
index a24b412..0e16006 100644
--- a/engines/wintermute/base/scriptables/script_engine.cpp
+++ b/engines/wintermute/base/scriptables/script_engine.cpp
@@ -433,6 +433,15 @@ int ScEngine::getNumScripts(int *running, int *waiting, int *persistent) {
 			numPersistent++;
 			break;
 		default:
+			// Those states were not handled in original WME as well:
+			// * SCRIPT_FINISHED,
+			// * SCRIPT_ERROR,
+			// * SCRIPT_WAITING_SCRIPT,
+			// * SCRIPT_THREAD_FINISHED		
+			debugN("ScEngine::GetNumScripts - unhandled enum: %d\n", _scripts[i]->_state);
+
+			// This method calculates thread counts to be shown at debug screen only
+			// Extend BaseGame::displayDebugInfo() if you want to handle those states
 			break;
 		}
 		numTotal++;


Commit: d53bd4e7a83d2a446b6217ea121aad413e91688a
    https://github.com/scummvm/scummvm/commit/d53bd4e7a83d2a446b6217ea121aad413e91688a
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2019-06-25T08:10:16+03:00

Commit Message:
WINTERMUTE: Add more details in openDiskFile() comment

Changed paths:
    engines/wintermute/base/file/base_disk_file.cpp


diff --git a/engines/wintermute/base/file/base_disk_file.cpp b/engines/wintermute/base/file/base_disk_file.cpp
index 3da5d8b..c4883e2 100644
--- a/engines/wintermute/base/file/base_disk_file.cpp
+++ b/engines/wintermute/base/file/base_disk_file.cpp
@@ -122,7 +122,7 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) {
 		const char* const knownPrefixes[] = { // Known absolute paths
 				"c:/windows/fonts/", // East Side Story refers to "c:\windows\fonts\framd.ttf"
 				"c:/carol6/svn/data/", // Carol Reed 6: Black Circle refers to "c:\carol6\svn\data\sprites\system\help.png"
-				"d:/engine/\0xD2\0xC32/tg_ie_080128_1005/data/", //Tanya Grotter and the Disappearing Floor
+				"d:/engine/\0xD2\0xC32/tg_ie_080128_1005/data/", // Tanya Grotter and the Disappearing Floor refers to "d:\engine\<\0xD2><\0xC3>2\tg_ie_080128_1005\data\interface\pixel\pixel.png"
 				"f:/dokument/spel 5/demo/data/" // Carol Reed 5 (non-demo) refers to "f:\dokument\spel 5\demo\data\scenes\credits\op_cred_00\op_cred_00.jpg"
 		};
 


Commit: c32027672eed9bddf90b953dada5f04b6f1a3656
    https://github.com/scummvm/scummvm/commit/c32027672eed9bddf90b953dada5f04b6f1a3656
Author: lolbot-iichan (lolbot_iichan at mail.ru)
Date: 2019-06-25T08:10:16+03:00

Commit Message:
WINTERMUTE: Add comments + warning() for IsKeyDown() method

Changed paths:
    engines/wintermute/base/base_keyboard_state.cpp


diff --git a/engines/wintermute/base/base_keyboard_state.cpp b/engines/wintermute/base/base_keyboard_state.cpp
index a9e2b8c..d3614bb 100644
--- a/engines/wintermute/base/base_keyboard_state.cpp
+++ b/engines/wintermute/base/base_keyboard_state.cpp
@@ -84,13 +84,30 @@ bool BaseKeyboardState::scCallMethod(ScScript *script, ScStack *stack, ScStack *
 		uint32 vKeyCode;
 
 		if (val->_type == VAL_STRING && strlen(val->getString()) > 0) {
+			// IsKeyDown(strings) checks if a key with given ASCII code is pressed
+			// Only 1st character of given string is used for the check
+
+			// This check must be case insensitive, which means that 
+			// IsKeyDown("a") & IsKeyDown("A") are either both true or both false 
 			const char *str = val->getString();
 			char temp = str[0];
 			if (temp >= 'A' && temp <= 'Z') {
 				temp += ('a' - 'A');
 			}
-			vKeyCode = (int)temp;
+
+			// Common::KeyCode is equal to ASCII code for any lowercase ASCII character
+			if (temp >= ' ' && temp <= '~') {
+				vKeyCode = (int)temp;
+			} else {
+				warning("Unhandled IsKeyDown(string): check for non-ASCII character");
+				vKeyCode = 0;
+			}
 		} else {
+			// IsKeyDown(int) checks if a key with given keycode is pressed
+			// For letters, single keycode is used for upper and lower case
+			// This mean that IsKeyDown(65) is true for both 'a' and Shift+'a'
+
+			// See "MSDN: Virtual-Key Codes" for more details on original WME keycodes
 			vKeyCode = vKeyToKeyCode(val->getInt());
 		}
 





More information about the Scummvm-git-logs mailing list