[Scummvm-cvs-logs] scummvm master -> 840633c5085e794d9323d947440fec6d39dcf79f

bluegr bluegr at gmail.com
Wed Jan 2 19:03:27 CET 2013


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:
69da727c55 TOLTECS: Add a debug console
840633c508 TOLTECS: Cleanup of the script debug messages


Commit: 69da727c550c9f0f57bd50ca2d70e1730266df59
    https://github.com/scummvm/scummvm/commit/69da727c550c9f0f57bd50ca2d70e1730266df59
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-01-02T10:02:29-08:00

Commit Message:
TOLTECS: Add a debug console

Changed paths:
  A engines/toltecs/console.cpp
  A engines/toltecs/console.h
    engines/toltecs/module.mk
    engines/toltecs/resource.cpp
    engines/toltecs/resource.h
    engines/toltecs/toltecs.cpp
    engines/toltecs/toltecs.h



diff --git a/engines/toltecs/console.cpp b/engines/toltecs/console.cpp
new file mode 100644
index 0000000..f339490
--- /dev/null
+++ b/engines/toltecs/console.cpp
@@ -0,0 +1,79 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "gui/debugger.h"
+
+#include "toltecs/console.h"
+//#include "toltecs/palette.h"
+#include "toltecs/resource.h"
+//#include "toltecs/sound.h"
+#include "toltecs/toltecs.h"
+
+namespace Toltecs {
+
+Console::Console(ToltecsEngine *vm) : GUI::Debugger(), _vm(vm) {
+	DCmd_Register("room",			WRAP_METHOD(Console, Cmd_Room));
+	DCmd_Register("dump",			WRAP_METHOD(Console, Cmd_Dump));
+}
+
+Console::~Console() {
+}
+
+bool Console::Cmd_Room(int argc, const char **argv) {
+	if (argc < 2) {
+		DebugPrintf("Current room number is %d\n", _vm->_sceneResIndex);
+#if 0
+		DebugPrintf("Calling this command with the room number changes the room\n");
+		DebugPrintf("WARNING: It's a bad idea to warp to rooms with this, as the room object scripts are not loaded\n");
+#endif
+		return true;
+#if 0
+	} else {
+		int roomNum = atoi(argv[1]);
+
+		// sfClearPaletteFragments
+		_vm->_palette->clearFragments();
+
+		// sfLoadScene
+		_vm->_sound->stopAll();
+		_vm->_res->purgeCache();
+		_vm->loadScene(roomNum);
+#endif
+	}
+
+	return false;
+}
+
+bool Console::Cmd_Dump(int argc, const char **argv) {
+	if (argc < 2) {
+		DebugPrintf("Usage: dump <resource number>\n");
+		return true;
+	}
+
+	int resNum = atoi(argv[1]);
+	_vm->_arc->dump(resNum);
+	DebugPrintf("Resource %d has been dumped to disk\n", resNum);
+
+	return true;
+}
+
+} // End of namespace Toltecs
diff --git a/engines/toltecs/console.h b/engines/toltecs/console.h
new file mode 100644
index 0000000..bcdfd0c
--- /dev/null
+++ b/engines/toltecs/console.h
@@ -0,0 +1,45 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TOLTECS_CONSOLE_H
+#define TOLTECS_CONSOLE_H
+
+#include "gui/debugger.h"
+
+namespace Toltecs {
+
+class ToltecsEngine;
+
+class Console : public GUI::Debugger {
+public:
+	Console(ToltecsEngine *vm);
+	virtual ~Console(void);
+
+private:
+	ToltecsEngine *_vm;
+
+	bool Cmd_Dump(int argc, const char **argv);
+	bool Cmd_Room(int argc, const char **argv);
+};
+
+} // End of namespace Toltecs
+#endif
diff --git a/engines/toltecs/module.mk b/engines/toltecs/module.mk
index aa4a6f3..0de1eef 100644
--- a/engines/toltecs/module.mk
+++ b/engines/toltecs/module.mk
@@ -2,6 +2,7 @@ MODULE := engines/toltecs
 
 MODULE_OBJS = \
 	animation.o \
+	console.o \
 	detection.o \
 	menu.o \
 	microtiles.o \
diff --git a/engines/toltecs/resource.cpp b/engines/toltecs/resource.cpp
index 0b9f7c8..437b4a9 100644
--- a/engines/toltecs/resource.cpp
+++ b/engines/toltecs/resource.cpp
@@ -61,16 +61,11 @@ uint32 ArchiveReader::getResourceSize(uint resIndex) {
 	return _offsets[resIndex + 1] - _offsets[resIndex];
 }
 
-void ArchiveReader::dump(uint resIndex, const char *prefix) {
+void ArchiveReader::dump(uint resIndex) {
 	int32 resourceSize = getResourceSize(resIndex);
 	byte *data = new byte[resourceSize];
 
-	Common::String fn;
-
-	if (prefix)
-		fn = Common::String::format("%s_%04X.0", prefix, resIndex);
-	else
-		fn = Common::String::format("%04X.0", resIndex);
+	Common::String fn = Common::String::format("toltecs_res.%03d", resIndex);
 
 	openResource(resIndex);
 	read(data, resourceSize);
diff --git a/engines/toltecs/resource.h b/engines/toltecs/resource.h
index 3fed2e1..3d45d9f 100644
--- a/engines/toltecs/resource.h
+++ b/engines/toltecs/resource.h
@@ -50,7 +50,7 @@ public:
 	// Returns the size of the resource
 	uint32 getResourceSize(uint resIndex);
 
-	void dump(uint resIndex, const char *prefix = NULL);
+	void dump(uint resIndex);
 
 protected:
 	uint32 *_offsets;
diff --git a/engines/toltecs/toltecs.cpp b/engines/toltecs/toltecs.cpp
index b3ab097..6d8a5eb 100644
--- a/engines/toltecs/toltecs.cpp
+++ b/engines/toltecs/toltecs.cpp
@@ -39,6 +39,7 @@
 
 #include "toltecs/toltecs.h"
 #include "toltecs/animation.h"
+#include "toltecs/console.h"
 #include "toltecs/menu.h"
 #include "toltecs/movie.h"
 #include "toltecs/music.h"
@@ -126,6 +127,7 @@ Common::Error ToltecsEngine::run() {
 	_menuSystem = new MenuSystem(this);
 
 	_sound = new Sound(this);
+	_console = new Console(this);
 
 	_cfgText = ConfMan.getBool("subtitles");
 	_cfgVoices = !ConfMan.getBool("speech_mute");
@@ -179,6 +181,7 @@ Common::Error ToltecsEngine::run() {
 	_music->stopSequence();
 	_sound->stopAll();
 
+	delete _console;
 	delete _arc;
 	delete _res;
 	delete _screen;
@@ -218,7 +221,6 @@ void ToltecsEngine::requestLoadgame(int slotNum) {
 }
 
 void ToltecsEngine::loadScene(uint resIndex) {
-
 	Resource *sceneResource = _res->load(resIndex);
 	byte *scene = sceneResource->data;
 
@@ -253,13 +255,10 @@ void ToltecsEngine::loadScene(uint resIndex) {
 
 	_screen->_fullRefresh = true;
 	_screen->_renderQueue->clear();
-
 }
 
 void ToltecsEngine::updateScreen() {
-
 	_sound->updateSpeech();
-
 	_screen->updateShakeScreen();
 
 	// TODO: Set quit flag
@@ -292,7 +291,6 @@ void ToltecsEngine::updateScreen() {
 		_counter02 = (currUpdateTime - prevUpdateTime) / 13;
 	} while (_counter02 == 0);
 	prevUpdateTime = currUpdateTime;
-
 }
 
 void ToltecsEngine::drawScreen() {
@@ -313,6 +311,7 @@ void ToltecsEngine::drawScreen() {
 		_screen->_guiRefresh = false;
 	}
 
+	_console->onFrame();
 	_system->updateScreen();
 	_system->delayMillis(10);
 
@@ -320,7 +319,6 @@ void ToltecsEngine::drawScreen() {
 }
 
 void ToltecsEngine::updateInput() {
-
 	Common::Event event;
 	Common::EventManager *eventMan = _system->getEventManager();
 	while (eventMan->pollEvent(event)) {
@@ -330,6 +328,9 @@ void ToltecsEngine::updateInput() {
 
 			//debug("key: flags = %02X; keycode = %d", _keyState.flags, _keyState.keycode);
 
+			if (event.kbd.hasFlags(Common::KBD_CTRL) && event.kbd.keycode == Common::KEYCODE_d)
+				_console->attach();
+
 			switch (event.kbd.keycode) {
 			case Common::KEYCODE_F5:
 				showMenu(kMenuIdSave);
@@ -411,9 +412,7 @@ void ToltecsEngine::updateInput() {
 			_mouseWaitForRelease = false;
 			_mouseButton = 0;
 		}
-
 	}
-
 }
 
 void ToltecsEngine::setGuiHeight(int16 guiHeight) {
@@ -481,7 +480,6 @@ void ToltecsEngine::scrollCameraRight(int16 delta) {
 }
 
 void ToltecsEngine::updateCamera() {
-
 	if (_cameraX != _newCameraX) {
 		_cameraX = _newCameraX;
 		_screen->_fullRefresh = true;
@@ -495,11 +493,9 @@ void ToltecsEngine::updateCamera() {
 	}
 
 	//debug(0, "ToltecsEngine::updateCamera() _cameraX = %d; _cameraY = %d", _cameraX, _cameraY);
-
 }
 
 void ToltecsEngine::talk(int16 slotIndex, int16 slotOffset) {
-
 	byte *scanData = _script->getSlotData(slotIndex) + slotOffset;
 
 	while (*scanData < 0xF0) {
@@ -529,11 +525,9 @@ void ToltecsEngine::talk(int16 slotIndex, int16 slotOffset) {
 	} else {
 		_screen->updateTalkText(slotIndex, slotOffset);
 	}
-
 }
 
 void ToltecsEngine::walk(byte *walkData) {
-
 	int16 xdelta, ydelta, v8, v10, v11;
 	int16 xstep, ystep;
 	ScriptWalk walkInfo;
@@ -616,7 +610,6 @@ void ToltecsEngine::walk(byte *walkData) {
 	WRITE_LE_UINT16(walkData + 14, walkInfo.xerror);
 	WRITE_LE_UINT16(walkData + 16, walkInfo.mulValue);
 	WRITE_LE_UINT16(walkData + 18, walkInfo.scaling);
-
 }
 
 int16 ToltecsEngine::findRectAtPoint(byte *rectData, int16 x, int16 y, int16 index, int16 itemSize,
diff --git a/engines/toltecs/toltecs.h b/engines/toltecs/toltecs.h
index b95a4f7..0be2d2a 100644
--- a/engines/toltecs/toltecs.h
+++ b/engines/toltecs/toltecs.h
@@ -42,6 +42,7 @@ struct ToltecsGameDescription;
 
 class AnimationPlayer;
 class ArchiveReader;
+class Console;
 class Input;
 class MenuSystem;
 class MoviePlayer;
@@ -144,6 +145,7 @@ public:
 
 	AnimationPlayer *_anim;
 	ArchiveReader *_arc;
+	Console *_console;
 	Input *_input;
 	MenuSystem *_menuSystem;
 	MoviePlayer *_moviePlayer;


Commit: 840633c5085e794d9323d947440fec6d39dcf79f
    https://github.com/scummvm/scummvm/commit/840633c5085e794d9323d947440fec6d39dcf79f
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2013-01-02T10:02:29-08:00

Commit Message:
TOLTECS: Cleanup of the script debug messages

Changed paths:
    engines/toltecs/script.cpp



diff --git a/engines/toltecs/script.cpp b/engines/toltecs/script.cpp
index 00019d9..f5e3f84 100644
--- a/engines/toltecs/script.cpp
+++ b/engines/toltecs/script.cpp
@@ -170,7 +170,6 @@ void ScriptInterpreter::setupScriptFunctions() {
 }
 
 void ScriptInterpreter::loadScript(uint resIndex, uint slotIndex) {
-
 	delete[] _slots[slotIndex].data;
 
  	_slots[slotIndex].resIndex = resIndex;
@@ -178,7 +177,6 @@ void ScriptInterpreter::loadScript(uint resIndex, uint slotIndex) {
 	_slots[slotIndex].size = scriptResource->size;
  	_slots[slotIndex].data = new byte[_slots[slotIndex].size];
  	memcpy(_slots[slotIndex].data, scriptResource->data, _slots[slotIndex].size);
-
 }
 
 void ScriptInterpreter::setMainScript(uint slotIndex) {
@@ -244,10 +242,9 @@ int16 ScriptInterpreter::readInt16() {
 }
 
 void ScriptInterpreter::execOpcode(byte opcode) {
-
 	int16 ofs;
 
-	debug(1, "opcode = %d", opcode);
+	debug(2, "opcode = %d", opcode);
 
 	switch (opcode) {
 	case 0:
@@ -255,9 +252,9 @@ void ScriptInterpreter::execOpcode(byte opcode) {
 		// ok
 		_subCode = _code;
 		byte length = readByte();
-		debug(1, "length = %d", length);
+		debug(2, "length = %d", length);
 		uint16 index = readInt16();
-		debug(1, "callScriptFunction %d", index);
+		debug(2, "callScriptFunction %d", index);
 		execScriptFunction(index);
 		_code += length - 2;
 		break;
@@ -478,15 +475,14 @@ void ScriptInterpreter::execOpcode(byte opcode) {
 }
 
 void ScriptInterpreter::execScriptFunction(uint16 index) {
-	debug(4, "execScriptFunction(%d)", index);
 	if (index >= _scriptFuncs.size())
 		error("ScriptInterpreter::execScriptFunction() Invalid script function index %d", index);
-	debug(4, "%s", _scriptFuncNames[index]);
+	debug(1, "execScriptFunction %s (%d)", _scriptFuncNames[index], index);
 	(*_scriptFuncs[index])();
 }
 
 int16 ScriptInterpreter::getGameVar(uint variable) {
-	debug(0, "ScriptInterpreter::getGameVar(%d{%s})", variable, varNames[variable]);
+	debug(2, "ScriptInterpreter::getGameVar(%d{%s})", variable, varNames[variable]);
 
 	switch (variable) {
 	case  0: return _vm->_mouseDisabled;
@@ -518,7 +514,7 @@ int16 ScriptInterpreter::getGameVar(uint variable) {
 }
 
 void ScriptInterpreter::setGameVar(uint variable, int16 value) {
-	debug(0, "ScriptInterpreter::setGameVar(%d{%s}, %d)", variable, varNames[variable], value);
+	debug(2, "ScriptInterpreter::setGameVar(%d{%s}, %d)", variable, varNames[variable], value);
 
 	switch (variable) {
 	case 0:
@@ -609,27 +605,27 @@ int16 ScriptInterpreter::popInt16() {
 }
 
 void ScriptInterpreter::localWrite8(int16 offset, byte value) {
-	//debug(1, "localWrite8(%d, %d)", offset, value);
+	//debug(2, "localWrite8(%d, %d)", offset, value);
 	_localData[offset] = value;
 }
 
 byte ScriptInterpreter::localRead8(int16 offset) {
-	//debug(1, "localRead8(%d) -> %d", offset, _localData[offset]);
+	//debug(2, "localRead8(%d) -> %d", offset, _localData[offset]);
 	return _localData[offset];
 }
 
 void ScriptInterpreter::localWrite16(int16 offset, int16 value) {
-	//debug(1, "localWrite16(%d, %d)", offset, value);
+	//debug(2, "localWrite16(%d, %d)", offset, value);
 	WRITE_LE_UINT16(&_localData[offset], value);
 }
 
 int16 ScriptInterpreter::localRead16(int16 offset) {
-	//debug(1, "localRead16(%d) -> %d", offset, (int16)READ_LE_UINT16(&_localData[offset]));
+	//debug(2, "localRead16(%d) -> %d", offset, (int16)READ_LE_UINT16(&_localData[offset]));
 	return (int16)READ_LE_UINT16(&_localData[offset]);
 }
 
 byte *ScriptInterpreter::localPtr(int16 offset) {
-	//debug(1, "localPtr(%d)", offset);
+	//debug(2, "localPtr(%d)", offset);
 	return &_localData[offset];
 }
 
@@ -941,7 +937,8 @@ void ScriptInterpreter::sfStopShakeScreen() {
 
 void ScriptInterpreter::sfStartSequence() {
 	int16 sequenceResIndex = arg16(3);
-	//debug("ScriptInterpreter::sfStartSequence(%d)", sequenceResIndex);
+	debug(1, "ScriptInterpreter::sfStartSequence(%d)", sequenceResIndex);
+
 	if (sequenceResIndex >= 0) {
 		//_vm->_arc->dump(sequenceResIndex, "music");	// DEBUG: Dump music so we know what's in there
 
@@ -950,7 +947,6 @@ void ScriptInterpreter::sfStartSequence() {
 }
 
 void ScriptInterpreter::sfEndSequence() {
-	//debug("ScriptInterpreter::sfEndSequence");
 	_vm->_music->stopSequence();
 }
 






More information about the Scummvm-git-logs mailing list