[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