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

dreammaster paulfgilbert at gmail.com
Fri Jun 14 06:42:12 CEST 2019


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:
8759a9e851 GLK: ADVSYS: Added readLine method
4f7c9899f2 GLK: ADVSYS: Initialization fixes
c151020675 GLK: ADVSYS: Fix data reads from gamefile


Commit: 8759a9e851283c69e8c86ce15eed7e2e53bc032c
    https://github.com/scummvm/scummvm/commit/8759a9e851283c69e8c86ce15eed7e2e53bc032c
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-06-13T20:45:53-07:00

Commit Message:
GLK: ADVSYS: Added readLine method

Changed paths:
    engines/glk/advsys/glk_interface.cpp


diff --git a/engines/glk/advsys/glk_interface.cpp b/engines/glk/advsys/glk_interface.cpp
index 6ec5a08..3e1ccb6 100644
--- a/engines/glk/advsys/glk_interface.cpp
+++ b/engines/glk/advsys/glk_interface.cpp
@@ -40,8 +40,21 @@ void GlkInterface::print(int number) {
 }
 
 Common::String GlkInterface::readLine() {
-	// TODO: Stub
-	return "";
+	event_t ev;
+	char line[200];
+
+	glk_request_line_event(_window, line, 199, 0);
+
+	do {
+		glk_select(&ev);
+		if (ev.type == evtype_Quit)
+			return "";
+		else if (ev.type == evtype_LineInput)
+			break;
+	} while (!shouldQuit() && ev.type != evtype_Quit);
+
+	line[199] = '\0';
+	return Common::String(line);
 }
 
 } // End of namespace AdvSys


Commit: 4f7c9899f214d327fa0181b47435370275ffd8ae
    https://github.com/scummvm/scummvm/commit/4f7c9899f214d327fa0181b47435370275ffd8ae
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-06-13T20:45:53-07:00

Commit Message:
GLK: ADVSYS: Initialization fixes

Changed paths:
    engines/glk/advsys/glk_interface.cpp
    engines/glk/advsys/vm.cpp
    engines/glk/advsys/vm.h


diff --git a/engines/glk/advsys/glk_interface.cpp b/engines/glk/advsys/glk_interface.cpp
index 3e1ccb6..be164f2 100644
--- a/engines/glk/advsys/glk_interface.cpp
+++ b/engines/glk/advsys/glk_interface.cpp
@@ -27,7 +27,7 @@ namespace AdvSys {
 
 bool GlkInterface::initialize() {
 	_window = glk_window_open(0, 0, 0, wintype_TextBuffer, 1);
-	return !_window;
+	return _window != nullptr;
 }
 
 void GlkInterface::print(const Common::String &msg) {
diff --git a/engines/glk/advsys/vm.cpp b/engines/glk/advsys/vm.cpp
index 17db9ab..e21c5ac 100644
--- a/engines/glk/advsys/vm.cpp
+++ b/engines/glk/advsys/vm.cpp
@@ -104,8 +104,7 @@ ExecutionResult VM::execute(int offset) {
 
 void VM::executeOpcode() {
 	// Get next opcode
-	uint opcode = getCodeByte(_pc);
-	++_pc;
+	uint opcode = readCodeByte();
 
 	if (opcode >= OP_BRT && opcode <= OP_VOWEL) {
 		(this->*_METHODS[(int)opcode - 1])();
diff --git a/engines/glk/advsys/vm.h b/engines/glk/advsys/vm.h
index 6a877c9..76f05de 100644
--- a/engines/glk/advsys/vm.h
+++ b/engines/glk/advsys/vm.h
@@ -165,7 +165,7 @@ public:
 	/**
 	 * Constructor
 	 */
-	FunctionPointer(FixedStack &s) : _stack(s), _index(-1) {}
+	FunctionPointer(FixedStack &s) : _stack(s), _index(0) {}
 
 	/**
 	 * Array indexing


Commit: c151020675950503a40594ec8bb97a25a4bb10a5
    https://github.com/scummvm/scummvm/commit/c151020675950503a40594ec8bb97a25a4bb10a5
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-06-13T20:45:53-07:00

Commit Message:
GLK: ADVSYS: Fix data reads from gamefile

Changed paths:
    engines/glk/advsys/game.cpp
    engines/glk/advsys/game.h


diff --git a/engines/glk/advsys/game.cpp b/engines/glk/advsys/game.cpp
index 50b258d..ea8bac9 100644
--- a/engines/glk/advsys/game.cpp
+++ b/engines/glk/advsys/game.cpp
@@ -99,9 +99,9 @@ enum LinkField {
 };
 
 Game::Game() : Header(), _stream(nullptr), _restartFlag(false), _residentOffset(0), _wordCount(0),
-		_objectCount(0), _actionCount(0), _variableCount(0), _residentBase(nullptr),
-		_wordTable(nullptr), _wordTypeTable(nullptr), _objectTable(nullptr), _actionTable(nullptr),
-		_variableTable(nullptr), _saveArea(nullptr), _msgBlockNum(-1), _msgBlockOffset(0) {
+		_objectCount(0), _actionCount(0), _variableCount(0), _wordTable(nullptr), _wordTypeTable(nullptr),
+		_objectTable(nullptr), _actionTable(nullptr), _variableTable(nullptr), _saveArea(nullptr),
+		_msgBlockNum(-1), _msgBlockOffset(0) {
 	_msgCache.resize(MESSAGE_CACHE_SIZE);
 	for (int idx = 0; idx < MESSAGE_CACHE_SIZE; ++idx)
 		_msgCache[idx] = new CacheEntry();
@@ -133,7 +133,6 @@ bool Game::init(Common::SeekableReadStream *s) {
 		return false;
 	decrypt(&_data[0], _size);
 
-	_residentBase = &_data[0];
 	_wordTable = &_data[_wordTableOffset];
 	_wordTypeTable = &_data[_wordTypeTableOffset];
 	_objectTable = &_data[_objectTableOffset];
@@ -183,8 +182,8 @@ int Game::findWord(const Common::String &word) const {
 	// Iterate over the dictionary for the word
 	for (int idx = 1; idx <= _wordCount; ++idx) {
 		int wordOffset = READ_LE_UINT16(_wordTable + idx * 2);
-		if (w == (const char *)_residentBase + wordOffset + 2)
-			return READ_LE_UINT16(_residentBase + wordOffset);
+		if (w == (const char *)_dataSpace + wordOffset + 2)
+			return readWord(wordOffset);
 	}
 
 	return NIL;
diff --git a/engines/glk/advsys/game.h b/engines/glk/advsys/game.h
index 5920f41..cce7822 100644
--- a/engines/glk/advsys/game.h
+++ b/engines/glk/advsys/game.h
@@ -213,7 +213,6 @@ public:
 	int _actionCount;
 	int _variableCount;
 
-	byte *_residentBase;
 	byte *_wordTable;
 	byte *_wordTypeTable;
 	byte *_objectTable;
@@ -294,14 +293,14 @@ public:
 	 * Gets a field from an object
 	 */
 	int getObjectField(int obj, int offset) const {
-		return READ_LE_UINT16(_residentBase + getObjectLocation(obj) + offset);
+		return READ_LE_UINT16(_dataSpace + getObjectLocation(obj) + offset);
 	}
 
 	/**
 	 * Sets a field in an object
 	 */
 	int setObjectField(int obj, int offset, int val) {
-		WRITE_LE_UINT16(_residentBase + getObjectLocation(obj) + offset, val);
+		WRITE_LE_UINT16(_dataSpace + getObjectLocation(obj) + offset, val);
 		return val;
 	}
 
@@ -309,14 +308,14 @@ public:
 	 * Gets a field from an action
 	 */
 	int getActionField(int action, int offset) const {
-		return READ_LE_UINT16(_residentBase + getActionLocation(action) + offset);
+		return READ_LE_UINT16(_dataSpace + getActionLocation(action) + offset);
 	}
 
 	/**
 	 * Gets a byte field from an action
 	 */
 	int getActionByte(int action, int offset) const {
-		return _residentBase[getActionLocation(action) + offset];
+		return _dataSpace[getActionLocation(action) + offset];
 	}
 
 	/**
@@ -357,14 +356,14 @@ public:
 	 * Read a word
 	 */
 	int readWord(int offset) const {
-		return READ_LE_UINT16(_residentBase + offset);
+		return READ_LE_UINT16(_dataSpace + offset);
 	}
 
 	/**
 	 * Write a word
 	 */
 	void writeWord(int offset, int val) {
-		WRITE_LE_UINT16(_residentBase + offset, val);
+		WRITE_LE_UINT16(_dataSpace + offset, val);
 	}
 
 	/**





More information about the Scummvm-git-logs mailing list