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

dreammaster paulfgilbert at gmail.com
Sun Sep 13 05:06: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:
9e4d151b8a GLK: COMPREHEND: Added VAR_GTE opcodes
1cfc2ac225 GLK: COMPREHEND: Added VAR_EQ and VAR_GT opcodes
a80a6b5208 GLK: COMPREHEND: Added OBJECT_CAN_TAKE opcode


Commit: 9e4d151b8ac5c9e403936760ccad1a45b89e5fd0
    https://github.com/scummvm/scummvm/commit/9e4d151b8ac5c9e403936760ccad1a45b89e5fd0
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-09-12T21:33:34-07:00

Commit Message:
GLK: COMPREHEND: Added VAR_GTE opcodes

Changed paths:
    engines/glk/comprehend/debugger_dumper.cpp
    engines/glk/comprehend/game.cpp
    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 c27b774394..761408ba39 100644
--- a/engines/glk/comprehend/debugger_dumper.cpp
+++ b/engines/glk/comprehend/debugger_dumper.cpp
@@ -53,6 +53,8 @@ DebuggerDumper::DebuggerDumper() : _game(nullptr) {
 	_opcodes[OPCODE_OR] = "or";
 	_opcodes[OPCODE_IN_ROOM] = "in_room";
 	_opcodes[OPCODE_VAR_EQ] = "var_eq";
+	_opcodes[OPCODE_VAR_GTE1] = "var_gte1";
+	_opcodes[OPCODE_VAR_GTE2] = "var_gte2";
 	_opcodes[OPCODE_CURRENT_OBJECT_NOT_VALID] = "current_object_not_valid";
 	_opcodes[OPCODE_INVENTORY_FULL] = "inventory_full";
 	_opcodes[OPCODE_OBJECT_PRESENT] = "object_present";
diff --git a/engines/glk/comprehend/game.cpp b/engines/glk/comprehend/game.cpp
index 1abaebc7ed..15bf9e9d9c 100644
--- a/engines/glk/comprehend/game.cpp
+++ b/engines/glk/comprehend/game.cpp
@@ -630,6 +630,18 @@ void ComprehendGame::eval_instruction(FunctionState *func_state,
 		                     _variables[instr->_operand[1]]);
 		break;
 
+	case OPCODE_VAR_GTE1:
+		func_set_test_result(func_state,
+			_variables[0] >=
+			_variables[instr->_operand[0]]);
+		break;
+
+	case OPCODE_VAR_GTE2:
+		func_set_test_result(func_state,
+			_variables[instr->_operand[0]] >=
+			_variables[instr->_operand[1]]);
+		break;
+
 	case OPCODE_TURN_TICK:
 		_variables[VAR_TURN_COUNT]++;
 		break;
diff --git a/engines/glk/comprehend/game_data.h b/engines/glk/comprehend/game_data.h
index 44dc87c288..c9e65e954b 100644
--- a/engines/glk/comprehend/game_data.h
+++ b/engines/glk/comprehend/game_data.h
@@ -55,6 +55,8 @@ enum {
 	OPCODE_OR,
 	OPCODE_IN_ROOM,
 	OPCODE_VAR_EQ,
+	OPCODE_VAR_GTE1,
+	OPCODE_VAR_GTE2,
 	OPCODE_CURRENT_OBJECT_TAKEABLE,
 	OPCODE_OBJECT_PRESENT,
 	OPCODE_ELSE,
diff --git a/engines/glk/comprehend/opcode_map.cpp b/engines/glk/comprehend/opcode_map.cpp
index add15c50e5..0e844618be 100644
--- a/engines/glk/comprehend/opcode_map.cpp
+++ b/engines/glk/comprehend/opcode_map.cpp
@@ -46,6 +46,7 @@ void OpcodeMap::loadVersion1() {
 	_opcodeMap[0x06] = OPCODE_VAR_EQ;
 	_opcodeMap[0x08] = OPCODE_CURRENT_OBJECT_TAKEABLE;
 	_opcodeMap[0x09] = OPCODE_OBJECT_PRESENT;
+	_opcodeMap[0x0a] = OPCODE_VAR_GTE2;
 	_opcodeMap[0x0c] = OPCODE_ELSE;
 	_opcodeMap[0x0e] = OPCODE_OBJECT_IN_ROOM;
 	_opcodeMap[0x14] = OPCODE_CURRENT_OBJECT_NOT_VALID;
@@ -55,6 +56,7 @@ void OpcodeMap::loadVersion1() {
 	_opcodeMap[0x20] = OPCODE_HAVE_CURRENT_OBJECT;
 	_opcodeMap[0x21] = OPCODE_OBJECT_IS_NOT_NOWHERE;
 	_opcodeMap[0x24] = OPCODE_CURRENT_OBJECT_PRESENT;
+	_opcodeMap[0x2d] = OPCODE_VAR_GTE1;
 	_opcodeMap[0x31] = OPCODE_TEST_ROOM_FLAG;
 	_opcodeMap[0x41] = OPCODE_NOT_HAVE_OBJECT;
 	_opcodeMap[0x45] = OPCODE_NOT_IN_ROOM;
@@ -106,6 +108,7 @@ void OpcodeMap::loadVersion2() {
 	_opcodeMap[0x06] = OPCODE_VAR_EQ;
 	_opcodeMap[0x08] = OPCODE_CURRENT_IS_OBJECT;
 	_opcodeMap[0x09] = OPCODE_OBJECT_PRESENT;
+	_opcodeMap[0x0a] = OPCODE_VAR_GTE2;
 	_opcodeMap[0x0c] = OPCODE_ELSE;
 	_opcodeMap[0x11] = OPCODE_OBJECT_IS_NOWHERE;
 	_opcodeMap[0x14] = OPCODE_CURRENT_OBJECT_NOT_VALID;


Commit: 1cfc2ac225f4d265b0d1fcedd678a66fb4cca004
    https://github.com/scummvm/scummvm/commit/1cfc2ac225f4d265b0d1fcedd678a66fb4cca004
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-09-12T21:58:44-07:00

Commit Message:
GLK: COMPREHEND: Added VAR_EQ and VAR_GT opcodes

Changed paths:
    engines/glk/comprehend/debugger_dumper.cpp
    engines/glk/comprehend/game.cpp
    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 761408ba39..0f347c1a8c 100644
--- a/engines/glk/comprehend/debugger_dumper.cpp
+++ b/engines/glk/comprehend/debugger_dumper.cpp
@@ -52,7 +52,10 @@ DebuggerDumper::DebuggerDumper() : _game(nullptr) {
 
 	_opcodes[OPCODE_OR] = "or";
 	_opcodes[OPCODE_IN_ROOM] = "in_room";
-	_opcodes[OPCODE_VAR_EQ] = "var_eq";
+	_opcodes[OPCODE_VAR_EQ1] = "var_eq1";
+	_opcodes[OPCODE_VAR_EQ2] = "var_eq2";
+	_opcodes[OPCODE_VAR_GT1] = "var_gt1";
+	_opcodes[OPCODE_VAR_GT2] = "var_gt2";
 	_opcodes[OPCODE_VAR_GTE1] = "var_gte1";
 	_opcodes[OPCODE_VAR_GTE2] = "var_gte2";
 	_opcodes[OPCODE_CURRENT_OBJECT_NOT_VALID] = "current_object_not_valid";
diff --git a/engines/glk/comprehend/game.cpp b/engines/glk/comprehend/game.cpp
index 15bf9e9d9c..fca1fd83ef 100644
--- a/engines/glk/comprehend/game.cpp
+++ b/engines/glk/comprehend/game.cpp
@@ -624,10 +624,28 @@ void ComprehendGame::eval_instruction(FunctionState *func_state,
 		_variables[instr->_operand[0]]--;
 		break;
 
-	case OPCODE_VAR_EQ:
+	case OPCODE_VAR_EQ1:
 		func_set_test_result(func_state,
-		                     _variables[instr->_operand[0]] ==
-		                     _variables[instr->_operand[1]]);
+			_variables[0] ==
+			_variables[instr->_operand[0]]);
+		break;
+
+	case OPCODE_VAR_EQ2:
+		func_set_test_result(func_state,
+		    _variables[instr->_operand[0]] ==
+		    _variables[instr->_operand[1]]);
+		break;
+
+	case OPCODE_VAR_GT1:
+		func_set_test_result(func_state,
+			_variables[0] >
+			_variables[instr->_operand[0]]);
+		break;
+
+	case OPCODE_VAR_GT2:
+		func_set_test_result(func_state,
+			_variables[instr->_operand[0]] >
+			_variables[instr->_operand[1]]);
 		break;
 
 	case OPCODE_VAR_GTE1:
diff --git a/engines/glk/comprehend/game_data.h b/engines/glk/comprehend/game_data.h
index c9e65e954b..3f1b011c39 100644
--- a/engines/glk/comprehend/game_data.h
+++ b/engines/glk/comprehend/game_data.h
@@ -54,7 +54,10 @@ enum {
 	OPCODE_HAVE_OBJECT,
 	OPCODE_OR,
 	OPCODE_IN_ROOM,
-	OPCODE_VAR_EQ,
+	OPCODE_VAR_EQ1,
+	OPCODE_VAR_EQ2,
+	OPCODE_VAR_GT1,
+	OPCODE_VAR_GT2,
 	OPCODE_VAR_GTE1,
 	OPCODE_VAR_GTE2,
 	OPCODE_CURRENT_OBJECT_TAKEABLE,
diff --git a/engines/glk/comprehend/opcode_map.cpp b/engines/glk/comprehend/opcode_map.cpp
index 0e844618be..319b3fd907 100644
--- a/engines/glk/comprehend/opcode_map.cpp
+++ b/engines/glk/comprehend/opcode_map.cpp
@@ -41,9 +41,10 @@ void OpcodeMap::loadOpcodes(int version) {
 
 void OpcodeMap::loadVersion1() {
 	_opcodeMap[0x01] = OPCODE_HAVE_OBJECT;
+	_opcodeMap[0x02] = OPCODE_VAR_GT2;
 	_opcodeMap[0x04] = OPCODE_OR;
 	_opcodeMap[0x05] = OPCODE_IN_ROOM;
-	_opcodeMap[0x06] = OPCODE_VAR_EQ;
+	_opcodeMap[0x06] = OPCODE_VAR_EQ2;
 	_opcodeMap[0x08] = OPCODE_CURRENT_OBJECT_TAKEABLE;
 	_opcodeMap[0x09] = OPCODE_OBJECT_PRESENT;
 	_opcodeMap[0x0a] = OPCODE_VAR_GTE2;
@@ -56,6 +57,8 @@ void OpcodeMap::loadVersion1() {
 	_opcodeMap[0x20] = OPCODE_HAVE_CURRENT_OBJECT;
 	_opcodeMap[0x21] = OPCODE_OBJECT_IS_NOT_NOWHERE;
 	_opcodeMap[0x24] = OPCODE_CURRENT_OBJECT_PRESENT;
+	_opcodeMap[0x25] = OPCODE_VAR_GT1;
+	_opcodeMap[0x29] = OPCODE_VAR_EQ1;
 	_opcodeMap[0x2d] = OPCODE_VAR_GTE1;
 	_opcodeMap[0x31] = OPCODE_TEST_ROOM_FLAG;
 	_opcodeMap[0x41] = OPCODE_NOT_HAVE_OBJECT;
@@ -103,13 +106,15 @@ void OpcodeMap::loadVersion1() {
 
 void OpcodeMap::loadVersion2() {
 	_opcodeMap[0x01] = OPCODE_HAVE_OBJECT;
+	_opcodeMap[0x02] = OPCODE_VAR_GT2;
 	_opcodeMap[0x04] = OPCODE_OR;
 	_opcodeMap[0x05] = OPCODE_IN_ROOM;
-	_opcodeMap[0x06] = OPCODE_VAR_EQ;
+	_opcodeMap[0x06] = OPCODE_VAR_EQ2;
 	_opcodeMap[0x08] = OPCODE_CURRENT_IS_OBJECT;
-	_opcodeMap[0x09] = OPCODE_OBJECT_PRESENT;
+	_opcodeMap[0x09] = OPCODE_VAR_GT1;
 	_opcodeMap[0x0a] = OPCODE_VAR_GTE2;
 	_opcodeMap[0x0c] = OPCODE_ELSE;
+	_opcodeMap[0x0d] = OPCODE_VAR_EQ1;
 	_opcodeMap[0x11] = OPCODE_OBJECT_IS_NOWHERE;
 	_opcodeMap[0x14] = OPCODE_CURRENT_OBJECT_NOT_VALID;
 	_opcodeMap[0x19] = OPCODE_TEST_FLAG;


Commit: a80a6b5208e27d47b62675928b2ae6905eef13c1
    https://github.com/scummvm/scummvm/commit/a80a6b5208e27d47b62675928b2ae6905eef13c1
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-09-12T22:05:09-07:00

Commit Message:
GLK: COMPREHEND: Added OBJECT_CAN_TAKE opcode

Changed paths:
    engines/glk/comprehend/debugger_dumper.cpp
    engines/glk/comprehend/game.cpp
    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 0f347c1a8c..bd8d6ea871 100644
--- a/engines/glk/comprehend/debugger_dumper.cpp
+++ b/engines/glk/comprehend/debugger_dumper.cpp
@@ -108,6 +108,7 @@ DebuggerDumper::DebuggerDumper() : _game(nullptr) {
 	_opcodes[OPCODE_DRAW_OBJECT] = "draw_object";
 	_opcodes[OPCODE_WAIT_KEY] = "wait_key";
 	_opcodes[OPCODE_TEST_FALSE] = "test_false";
+	_opcodes[OPCODE_OBJECT_CAN_TAKE] = "object_can_take";
 }
 
 Common::String DebuggerDumper::dumpInstruction(ComprehendGame *game,
diff --git a/engines/glk/comprehend/game.cpp b/engines/glk/comprehend/game.cpp
index fca1fd83ef..d84237af03 100644
--- a/engines/glk/comprehend/game.cpp
+++ b/engines/glk/comprehend/game.cpp
@@ -733,6 +733,11 @@ void ComprehendGame::eval_instruction(FunctionState *func_state,
 		func_set_test_result(func_state, !item || item->_room != _currentRoom);
 		break;
 
+	case OPCODE_OBJECT_CAN_TAKE:
+		item = get_item(instr->_operand[0] - 1);
+		func_set_test_result(func_state, item->_flags & ITEMF_CAN_TAKE);
+		break;
+
 	case OPCODE_CURRENT_OBJECT_NOT_IN_ROOM:
 		item = get_item_by_noun(noun);
 		func_set_test_result(func_state, !item || item->_room != _currentRoom);
diff --git a/engines/glk/comprehend/game_data.h b/engines/glk/comprehend/game_data.h
index 3f1b011c39..b1611a8c1b 100644
--- a/engines/glk/comprehend/game_data.h
+++ b/engines/glk/comprehend/game_data.h
@@ -126,7 +126,8 @@ enum {
 	OPCODE_TEST_FALSE,
 	OPCODE_CAN_TAKE,
 	OPCODE_TOO_HEAVY,
-	OPCODE_NOT_MAX_WEIGHT
+	OPCODE_NOT_MAX_WEIGHT,
+	OPCODE_OBJECT_CAN_TAKE
 };
 
 /* Game state update flags */
diff --git a/engines/glk/comprehend/opcode_map.cpp b/engines/glk/comprehend/opcode_map.cpp
index 319b3fd907..3778a211b0 100644
--- a/engines/glk/comprehend/opcode_map.cpp
+++ b/engines/glk/comprehend/opcode_map.cpp
@@ -122,6 +122,7 @@ void OpcodeMap::loadVersion2() {
 	_opcodeMap[0x20] = OPCODE_HAVE_CURRENT_OBJECT;
 	_opcodeMap[0x21] = OPCODE_OBJECT_PRESENT;
 	_opcodeMap[0x22] = OPCODE_OBJECT_IN_ROOM;
+	_opcodeMap[0x2d] = OPCODE_OBJECT_CAN_TAKE;
 	_opcodeMap[0x30] = OPCODE_CURRENT_OBJECT_PRESENT;
 	_opcodeMap[0x31] = OPCODE_TEST_ROOM_FLAG;
 	_opcodeMap[0x38] = OPCODE_INVENTORY_FULL;




More information about the Scummvm-git-logs mailing list