[Scummvm-git-logs] scummvm master -> 580c49ba42b13dcd6b02584ac878b2c67e20c428

dreammaster paulfgilbert at gmail.com
Thu Jun 18 03:12:44 UTC 2020


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

Summary:
3ceb244c1a GLK: COMPREHEND: Also print dumped scripts to console
551a4fca06 GLK: COMPREHEND: Use warning for missing opcodes
580c49ba42 GLK: COMPREHEND: Implement movement opcode


Commit: 3ceb244c1a927e5879d2c5057af2155a446030c2
    https://github.com/scummvm/scummvm/commit/3ceb244c1a927e5879d2c5057af2155a446030c2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-06-17T20:12:29-07:00

Commit Message:
GLK: COMPREHEND: Also print dumped scripts to console

Changed paths:
    engines/glk/comprehend/debugger.cpp


diff --git a/engines/glk/comprehend/debugger.cpp b/engines/glk/comprehend/debugger.cpp
index 000a2b237e..78a5b595ff 100644
--- a/engines/glk/comprehend/debugger.cpp
+++ b/engines/glk/comprehend/debugger.cpp
@@ -49,6 +49,7 @@ void Debugger::print(const char *fmt, ...) {
 	va_end(argp);
 
 	debugPrintf("%s", msg.c_str());
+	debugN("%s", msg.c_str());
 }
 
 bool Debugger::cmdDump(int argc, const char **argv) {


Commit: 551a4fca06a8289fe6c66d5f8e6e5d9d746bc4d9
    https://github.com/scummvm/scummvm/commit/551a4fca06a8289fe6c66d5f8e6e5d9d746bc4d9
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-06-17T20:12:29-07:00

Commit Message:
GLK: COMPREHEND: Use warning for missing opcodes

Changed paths:
    engines/glk/comprehend/game.cpp


diff --git a/engines/glk/comprehend/game.cpp b/engines/glk/comprehend/game.cpp
index c626252e1b..4d30438df5 100644
--- a/engines/glk/comprehend/game.cpp
+++ b/engines/glk/comprehend/game.cpp
@@ -1006,13 +1006,10 @@ void ComprehendGame::eval_instruction(FunctionState *func_state,
 
 	default:
 		if (instr->_opcode & 0x80) {
-			debugC(kDebugScripts,
-			       "Unhandled command opcode %.2x",
-			       instr->_opcode);
+			warning("Unhandled command opcode %.2x", instr->_opcode);
 		} else {
-			debugC(kDebugScripts,
-			       "Unhandled test opcode %.2x - returning false",
-			       instr->_opcode);
+			warning("Unhandled test opcode %.2x - returning false",
+			    instr->_opcode);
 			func_set_test_result(func_state, false);
 		}
 		break;


Commit: 580c49ba42b13dcd6b02584ac878b2c67e20c428
    https://github.com/scummvm/scummvm/commit/580c49ba42b13dcd6b02584ac878b2c67e20c428
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-06-17T20:12:29-07:00

Commit Message:
GLK: COMPREHEND: Implement movement opcode

Changed paths:
    engines/glk/comprehend/debugger_dumper.cpp
    engines/glk/comprehend/game.cpp
    engines/glk/comprehend/game.h
    engines/glk/comprehend/game_data.h
    engines/glk/comprehend/opcode_map.cpp


diff --git a/engines/glk/comprehend/debugger_dumper.cpp b/engines/glk/comprehend/debugger_dumper.cpp
index 53f3bd504f..b596041f4c 100644
--- a/engines/glk/comprehend/debugger_dumper.cpp
+++ b/engines/glk/comprehend/debugger_dumper.cpp
@@ -77,7 +77,7 @@ DebuggerDumper::DebuggerDumper() : _game(nullptr) {
 	_opcodes[OPCODE_VAR_SUB] = "var_sub";
 	_opcodes[OPCODE_SET_OBJECT_DESCRIPTION] = "set_object_description";
 	_opcodes[OPCODE_SET_OBJECT_LONG_DESCRIPTION] = "set_object_long_description";
-	_opcodes[OPCODE_MOVE] = "move";
+	_opcodes[OPCODE_MOVE_DEFAULT] = "move_default";
 	_opcodes[OPCODE_PRINT] = "print";
 	_opcodes[OPCODE_REMOVE_OBJECT] = "remove_object";
 	_opcodes[OPCODE_SET_FLAG] = "set_flag";
@@ -89,7 +89,7 @@ DebuggerDumper::DebuggerDumper() : _game(nullptr) {
 	_opcodes[OPCODE_SET_ROOM_GRAPHIC] = "set_room_graphic";
 	_opcodes[OPCODE_SET_OBJECT_GRAPHIC] = "set_object_graphic";
 	_opcodes[OPCODE_REMOVE_CURRENT_OBJECT] = "remove_current_object";
-	_opcodes[OPCODE_DO_VERB] = "do_verb";
+	_opcodes[OPCODE_MOVE_DIR] = "move_dir";
 	_opcodes[OPCODE_VAR_INC] = "var_inc";
 	_opcodes[OPCODE_VAR_DEC] = "var_dec";
 	_opcodes[OPCODE_MOVE_CURRENT_OBJECT_TO_ROOM] = "move_current_object_to_room";
diff --git a/engines/glk/comprehend/game.cpp b/engines/glk/comprehend/game.cpp
index 4d30438df5..e8860c8361 100644
--- a/engines/glk/comprehend/game.cpp
+++ b/engines/glk/comprehend/game.cpp
@@ -596,7 +596,7 @@ void ComprehendGame::eval_instruction(FunctionState *func_state,
 			move_to(instr->_operand[0]);
 		break;
 
-	case OPCODE_MOVE:
+	case OPCODE_MOVE_DEFAULT:
 		/* Move in the direction dictated by the current verb */
 		if (verb->_index - 1 >= NR_DIRECTIONS)
 			error("Bad verb %d:%d in move",
@@ -1000,10 +1000,14 @@ void ComprehendGame::eval_instruction(FunctionState *func_state,
 		break;
 
 	case OPCODE_SPECIAL:
-		/* Game specific opcode */
+		// Game specific opcode
 		handleSpecialOpcode(instr->_operand[0]);
 		break;
 
+	case OPCODE_MOVE_DIR:
+		doMovementVerb(instr->_operand[0]);
+		break;
+
 	default:
 		if (instr->_opcode & 0x80) {
 			warning("Unhandled command opcode %.2x", instr->_opcode);
@@ -1237,5 +1241,16 @@ uint ComprehendGame::getRandomNumber(uint max) const {
 	return g_comprehend->getRandomNumber(max);
 }
 
+void ComprehendGame::doMovementVerb(uint verbNum) {
+	assert(verbNum >= 1 && verbNum <= NR_DIRECTIONS);
+	Room *room = get_room(_currentRoom);
+	byte newRoom = room->_direction[verbNum - 1];
+
+	if (newRoom)
+		move_to(newRoom);
+	else
+		console_println(_strings[0].c_str());
+}
+
 } // namespace Comprehend
 } // namespace Glk
diff --git a/engines/glk/comprehend/game.h b/engines/glk/comprehend/game.h
index e077adb23f..931a07dc83 100644
--- a/engines/glk/comprehend/game.h
+++ b/engines/glk/comprehend/game.h
@@ -60,6 +60,7 @@ private:
 	void doBeforeTurn();
 	void doAfterTurn();
 	void read_input();
+	void doMovementVerb(uint verbNum);
 
 protected:
 	void game_save();
diff --git a/engines/glk/comprehend/game_data.h b/engines/glk/comprehend/game_data.h
index be1af9ea9e..eef6de0970 100644
--- a/engines/glk/comprehend/game_data.h
+++ b/engines/glk/comprehend/game_data.h
@@ -90,7 +90,7 @@ enum {
 	OPCODE_VAR_SUB,
 	OPCODE_SET_OBJECT_DESCRIPTION,
 	OPCODE_SET_OBJECT_LONG_DESCRIPTION,
-	OPCODE_MOVE,
+	OPCODE_MOVE_DEFAULT,
 	OPCODE_MOVE_DIRECTION,
 	OPCODE_PRINT,
 	OPCODE_REMOVE_OBJECT,
@@ -106,7 +106,7 @@ enum {
 	OPCODE_SET_ROOM_GRAPHIC,
 	OPCODE_SET_OBJECT_GRAPHIC,
 	OPCODE_REMOVE_CURRENT_OBJECT,
-	OPCODE_DO_VERB,
+	OPCODE_MOVE_DIR,
 	OPCODE_VAR_INC,
 	OPCODE_VAR_DEC,
 	OPCODE_MOVE_CURRENT_OBJECT_TO_ROOM,
diff --git a/engines/glk/comprehend/opcode_map.cpp b/engines/glk/comprehend/opcode_map.cpp
index c327ef63fe..9d9e1137a4 100644
--- a/engines/glk/comprehend/opcode_map.cpp
+++ b/engines/glk/comprehend/opcode_map.cpp
@@ -78,7 +78,7 @@ void OpcodeMap::loadVersion1() {
 	_opcodeMap[0x89] = OPCODE_MOVE_OBJECT_TO_CURRENT_ROOM;
 	_opcodeMap[0x8a] = OPCODE_VAR_SUB;
 	_opcodeMap[0x8b] = OPCODE_SET_OBJECT_DESCRIPTION;
-	_opcodeMap[0x8c] = OPCODE_MOVE;
+	_opcodeMap[0x8c] = OPCODE_MOVE_DEFAULT;
 	_opcodeMap[0x8e] = OPCODE_PRINT;
 	_opcodeMap[0x95] = OPCODE_REMOVE_OBJECT;
 	_opcodeMap[0x99] = OPCODE_SET_FLAG;
@@ -91,7 +91,7 @@ void OpcodeMap::loadVersion1() {
 	_opcodeMap[0xa4] = OPCODE_DROP_CURRENT_OBJECT;
 	_opcodeMap[0xa2] = OPCODE_SET_ROOM_GRAPHIC;
 	_opcodeMap[0xb0] = OPCODE_REMOVE_CURRENT_OBJECT;
-	_opcodeMap[0xb1] = OPCODE_DO_VERB;
+	_opcodeMap[0xb1] = OPCODE_MOVE_DIR;
 	_opcodeMap[0xb9] = OPCODE_SET_STRING_REPLACEMENT;
 	_opcodeMap[0xbd] = OPCODE_VAR_INC;
 	_opcodeMap[0xc1] = OPCODE_VAR_DEC;
@@ -136,7 +136,7 @@ void OpcodeMap::loadVersion2() {
 	_opcodeMap[0x89] = OPCODE_SPECIAL;
 	_opcodeMap[0x8a] = OPCODE_VAR_SUB;
 	_opcodeMap[0x8b] = OPCODE_SET_OBJECT_DESCRIPTION;
-	_opcodeMap[0x8c] = OPCODE_MOVE;
+	_opcodeMap[0x8c] = OPCODE_MOVE_DEFAULT;
 	_opcodeMap[0x8e] = OPCODE_PRINT;
 	_opcodeMap[0x8f] = OPCODE_SET_OBJECT_LONG_DESCRIPTION;
 	_opcodeMap[0x90] = OPCODE_WAIT_KEY;
@@ -148,7 +148,7 @@ void OpcodeMap::loadVersion2() {
 	_opcodeMap[0x9e] = OPCODE_INVENTORY_ROOM;
 	_opcodeMap[0xa0] = OPCODE_TAKE_CURRENT_OBJECT;
 	_opcodeMap[0xa2] = OPCODE_SET_OBJECT_GRAPHIC;
-	_opcodeMap[0xb1] = OPCODE_DO_VERB;
+	_opcodeMap[0xb1] = OPCODE_MOVE_DIR;
 	_opcodeMap[0xb5] = OPCODE_DESCRIBE_CURRENT_OBJECT;
 	_opcodeMap[0xc1] = OPCODE_VAR_DEC;
 	_opcodeMap[0xc2] = OPCODE_SET_ROOM_GRAPHIC;




More information about the Scummvm-git-logs mailing list