[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