[Scummvm-cvs-logs] scummvm master -> fc6b1c39d9eb21759d7ce59b223c573a9a4017aa

sev- sev at scummvm.org
Wed Mar 16 13:28:09 CET 2016


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

Summary:
a25032eef9 WAGE: Put debugger in tilde key `~'
c4471757b4 WAGE: Enhanced 'scenes' debug command
3608d7343c WAGE: Implement script command in debugger
fc6b1c39d9 WAGE: More games to detection, all have problems


Commit: a25032eef95467c95a684fc05a2885c95d18781a
    https://github.com/scummvm/scummvm/commit/a25032eef95467c95a684fc05a2885c95d18781a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-03-16T13:27:59+01:00

Commit Message:
WAGE: Put debugger in tilde key `~'

Changed paths:
    engines/wage/wage.cpp



diff --git a/engines/wage/wage.cpp b/engines/wage/wage.cpp
index 3e3ddaa..e0299c8 100644
--- a/engines/wage/wage.cpp
+++ b/engines/wage/wage.cpp
@@ -132,6 +132,8 @@ Common::Error WageEngine::run() {
 	_shouldQuit = false;
 
 	while (!_shouldQuit) {
+		_debugger->onFrame();
+
 		processEvents();
 
 		_gui->draw();
@@ -182,6 +184,11 @@ void WageEngine::processEvents() {
 				break;
 
 			default:
+				if (event.kbd.ascii == '~') {
+					_debugger->attach();
+					break;
+				}
+
 				if (event.kbd.flags & (Common::KBD_ALT | Common::KBD_CTRL | Common::KBD_META)) {
 					if (event.kbd.ascii >= 0x20 && event.kbd.ascii <= 0x7f) {
 						_gui->processMenuShortCut(event.kbd.flags, event.kbd.ascii);


Commit: c4471757b49f95fcecf12eff29e41b36fb47acd6
    https://github.com/scummvm/scummvm/commit/c4471757b49f95fcecf12eff29e41b36fb47acd6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-03-16T13:27:59+01:00

Commit Message:
WAGE: Enhanced 'scenes' debug command

Changed paths:
    engines/wage/debugger.cpp
    engines/wage/debugger.h



diff --git a/engines/wage/debugger.cpp b/engines/wage/debugger.cpp
index f4444f8..2b6ec61 100644
--- a/engines/wage/debugger.cpp
+++ b/engines/wage/debugger.cpp
@@ -28,7 +28,7 @@
 
 namespace Wage {
 
-Debugger::Debugger(WageEngine *vm) : GUI::Debugger(), _vm(vm) {
+Debugger::Debugger(WageEngine *engine) : GUI::Debugger(), _engine(engine) {
 	registerCmd("continue", WRAP_METHOD(Debugger, cmdExit));
 	registerCmd("scenes", WRAP_METHOD(Debugger, Cmd_ListScenes));
 }
@@ -37,10 +37,17 @@ Debugger::~Debugger() {
 }
 
 bool Debugger::Cmd_ListScenes(int argc, const char **argv) {
-	for (uint i = 0; i < _vm->_world->_orderedScenes.size(); i++) {
-		debugPrintf("%d: %s\n", i, _vm->_world->_orderedScenes[i]->_name.c_str());
+	int currentScene;
+
+	for (uint i = 0; i < _engine->_world->_orderedScenes.size(); i++) {
+		if (_engine->_world->_player->_currentScene == _engine->_world->_orderedScenes[i])
+			currentScene = i;
+
+		debugPrintf("%d: %s\n", i, _engine->_world->_orderedScenes[i]->_name.c_str());
 	}
 
+	debugPrintf("\nCurrent scene is #%d: %s\n", currentScene, _engine->_world->_orderedScenes[currentScene]->_name.c_str());
+
 	return true;
 }
 
diff --git a/engines/wage/debugger.h b/engines/wage/debugger.h
index e1d3b1c..339a555 100644
--- a/engines/wage/debugger.h
+++ b/engines/wage/debugger.h
@@ -32,12 +32,12 @@ class WageEngine;
 
 class Debugger : public GUI::Debugger {
 protected:
-	WageEngine *_vm;
+	WageEngine *_engine;
 
 	bool Cmd_ListScenes(int argc, const char **argv);
 
 public:
-	Debugger(WageEngine *vm);
+	Debugger(WageEngine *engine);
 	virtual ~Debugger();
 };
 


Commit: 3608d7343c510b1a994824d91c35c87adc8a03ac
    https://github.com/scummvm/scummvm/commit/3608d7343c510b1a994824d91c35c87adc8a03ac
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-03-16T13:27:59+01:00

Commit Message:
WAGE: Implement script command in debugger

Changed paths:
    engines/wage/debugger.cpp
    engines/wage/debugger.h
    engines/wage/script.h



diff --git a/engines/wage/debugger.cpp b/engines/wage/debugger.cpp
index 2b6ec61..7d01b0b 100644
--- a/engines/wage/debugger.cpp
+++ b/engines/wage/debugger.cpp
@@ -24,6 +24,7 @@
 #include "wage/wage.h"
 #include "wage/debugger.h"
 #include "wage/entities.h"
+#include "wage/script.h"
 #include "wage/world.h"
 
 namespace Wage {
@@ -31,15 +32,33 @@ namespace Wage {
 Debugger::Debugger(WageEngine *engine) : GUI::Debugger(), _engine(engine) {
 	registerCmd("continue", WRAP_METHOD(Debugger, cmdExit));
 	registerCmd("scenes", WRAP_METHOD(Debugger, Cmd_ListScenes));
+	registerCmd("script", WRAP_METHOD(Debugger, Cmd_Script));
 }
 
 Debugger::~Debugger() {
 }
 
+static int strToInt(const char *s) {
+	if (!*s)
+		// No string at all
+		return 0;
+	else if (toupper(s[strlen(s) - 1]) != 'H')
+		// Standard decimal string
+		return atoi(s);
+
+	// Hexadecimal string
+	uint tmp = 0;
+	int read = sscanf(s, "%xh", &tmp);
+
+	if (read < 1)
+		error("strToInt failed on string \"%s\"", s);
+	return (int)tmp;
+}
+
 bool Debugger::Cmd_ListScenes(int argc, const char **argv) {
 	int currentScene;
 
-	for (uint i = 0; i < _engine->_world->_orderedScenes.size(); i++) {
+	for (uint i = 1; i < _engine->_world->_orderedScenes.size(); i++) { // #0 is STORAGE@
 		if (_engine->_world->_player->_currentScene == _engine->_world->_orderedScenes[i])
 			currentScene = i;
 
@@ -51,4 +70,28 @@ bool Debugger::Cmd_ListScenes(int argc, const char **argv) {
 	return true;
 }
 
+bool Debugger::Cmd_Script(int argc, const char **argv) {
+	Script *script = _engine->_world->_player->_currentScene->_script;
+
+	if (argc >= 2) {
+		int scriptNum = strToInt(argv[1]);
+
+		if (scriptNum)
+			script = _engine->_world->_orderedScenes[scriptNum]->_script;
+		else
+			script = _engine->_world->_globalScript;
+	}
+
+	if (script == NULL) {
+		debugPrintf("There is no script for current scene\n");
+		return true;
+	}
+
+	for (uint i = 0; i < script->_scriptText.size(); i++) {
+		debugPrintf("%d [%04x]: %s\n", i, script->_scriptText[i]->offset, script->_scriptText[i]->line.c_str());
+	}
+
+	return true;
+}
+
 } // End of namespace Wage
diff --git a/engines/wage/debugger.h b/engines/wage/debugger.h
index 339a555..9068776 100644
--- a/engines/wage/debugger.h
+++ b/engines/wage/debugger.h
@@ -35,6 +35,7 @@ protected:
 	WageEngine *_engine;
 
 	bool Cmd_ListScenes(int argc, const char **argv);
+	bool Cmd_Script(int argc, const char **argv);
 
 public:
 	Debugger(WageEngine *engine);
diff --git a/engines/wage/script.h b/engines/wage/script.h
index 325733a..de94762 100644
--- a/engines/wage/script.h
+++ b/engines/wage/script.h
@@ -150,8 +150,10 @@ private:
 
 	void assign(byte operandType, int uservar, uint16 value);
 
-	Common::Array<ScriptText *> _scriptText;
 	void convertToText();
+
+public:
+	Common::Array<ScriptText *> _scriptText;
 };
 
 } // End of namespace Wage


Commit: fc6b1c39d9eb21759d7ce59b223c573a9a4017aa
    https://github.com/scummvm/scummvm/commit/fc6b1c39d9eb21759d7ce59b223c573a9a4017aa
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-03-16T13:28:02+01:00

Commit Message:
WAGE: More games to detection, all have problems

Changed paths:
    engines/wage/detection_tables.h
    engines/wage/script.cpp



diff --git a/engines/wage/detection_tables.h b/engines/wage/detection_tables.h
index 6533b3b..f14ddb8 100644
--- a/engines/wage/detection_tables.h
+++ b/engines/wage/detection_tables.h
@@ -61,8 +61,12 @@ static const ADGameDescription gameDescriptions[] = {
 	FANGAMEN("Little Pythagoras", "Little Pythagoras 1.1.1", "94a9c4f8b3dabd1846d76215a49bd221", 628821),
 	FANGAME("Lost Crystal", "8174c81ea1858d0079ae040dae2cefd3", 771072),
 	FANGAME("Magic Rings", "913812a1ac7a6b0e48dadd1afa1c7763", 109044),
+	// No way to click on the house
+	FANGAME("Messy House", "913812a1ac7a6b0e48dadd1afa1c7763", 177120),
 	FANGAME("Midnight Snack", "913812a1ac7a6b0e48dadd1afa1c7763", 67952),
 	FANGAME("Minitorian", "913812a1ac7a6b0e48dadd1afa1c7763", 586464),
+	// No way to pass through the first screen
+	FANGAME("Nightcrawler Ned", "94a9c4f8b3dabd1846d76215a49bd221", 366542),
 	FANGAME("Pavilion", "4d991d7d1534d48d90598d86ea6d5d97", 231687),
 	FANGAME("Puzzle Piece Search", "595117cbed33e8de1ab3714b33880205", 247693), // From Joshua's Worlds 1.0
 	// Empty(?)  first scene
@@ -80,6 +84,8 @@ static const ADGameDescription gameDescriptions[] = {
 	FANGAMEN("Spear of Destiny", "SpearOfDestiny", "913812a1ac7a6b0e48dadd1afa1c7763", 333665), // Original file name "SpearOfDestiny†"
 	FANGAME("Star Trek", "44aaef4806578700429de5aaf95c266e", 53320),
 	FANGAME("Strange Disappearance", "d81f2d03a1e863f04fb1e3a5495b720e", 772282),
+	// Code 0x03 in text
+	FANGAME("Swamp Witch", "913812a1ac7a6b0e48dadd1afa1c7763", 739781), // Original file name "Swamp Witch†"
 	FANGAME("Sweetspace Now!", "e12ec4d76d48bdc86567c5e63750547e", 123813), // Comes with Jumble
 	FANGAME("Time Bomb", "4b0e1a1fbaaa4930accd0f9f0e1519c7", 64564),
 	FANGAMEN("The Hotel Caper", "The Hotel Caper V1.0", "595117cbed33e8de1ab3714b33880205", 231969),
diff --git a/engines/wage/script.cpp b/engines/wage/script.cpp
index bd99fa1..294c08e 100644
--- a/engines/wage/script.cpp
+++ b/engines/wage/script.cpp
@@ -1124,7 +1124,7 @@ void Script::convertToText() {
 
 		if (c < 0x80) {
 			if (c < 0x20)
-				error("Unknown code 0x%02x at %d", c, _data->pos());
+				error("convertToText: Unknown code 0x%02x at %d", c, _data->pos());
 
 			do {
 				scr->line += c;






More information about the Scummvm-git-logs mailing list