[Scummvm-git-logs] scummvm master -> 2638372c188c4666cd49f0e1ae75ec5dbe83c6ca
neuromancer
noreply at scummvm.org
Wed Aug 16 11:11:14 UTC 2023
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
35ff362dcb FREESCAPE: improved implementation of STARTANIM opcode
2638372c18 FREESCAPE: read strings in dark relese for amiga
Commit: 35ff362dcb5294e5ecae19286e9c5e171b661e09
https://github.com/scummvm/scummvm/commit/35ff362dcb5294e5ecae19286e9c5e171b661e09
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-16T13:10:44+02:00
Commit Message:
FREESCAPE: improved implementation of STARTANIM opcode
Changed paths:
engines/freescape/language/instruction.cpp
diff --git a/engines/freescape/language/instruction.cpp b/engines/freescape/language/instruction.cpp
index a2b0517f7a4..7a005dcaaeb 100644
--- a/engines/freescape/language/instruction.cpp
+++ b/engines/freescape/language/instruction.cpp
@@ -655,8 +655,13 @@ void FreescapeEngine::executeStartAnim(FCLInstruction &instruction) {
debugC(1, kFreescapeDebugCode, "Staring animation of object %d", objID);
Object *obj = _currentArea->objectWithID(objID);
assert(obj);
- assert(obj->_partOfGroup);
- Group *group = (Group *)obj->_partOfGroup;
+ Group *group = nullptr;
+ if (obj->getType() == kGroupType) {
+ group = (Group *)obj;
+ } else {
+ assert(obj->_partOfGroup);
+ group = (Group *)obj->_partOfGroup;
+ }
debugC(1, kFreescapeDebugCode, "From group %d", group->getObjectID());
group->_active = true;
}
Commit: 2638372c188c4666cd49f0e1ae75ec5dbe83c6ca
https://github.com/scummvm/scummvm/commit/2638372c188c4666cd49f0e1ae75ec5dbe83c6ca
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-08-16T13:10:44+02:00
Commit Message:
FREESCAPE: read strings in dark relese for amiga
Changed paths:
engines/freescape/freescape.h
engines/freescape/games/dark/amiga.cpp
engines/freescape/games/dark/dark.cpp
engines/freescape/loaders/8bitBinaryLoader.cpp
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index a86f0f85f88..2c81d2f6730 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -372,7 +372,7 @@ public:
Common::StringArray _messagesList;
void loadMessagesFixedSize(Common::SeekableReadStream *file, int offset, int size, int number);
- void loadMessagesVariableSize(Common::SeekableReadStream *file, int offset, int number);
+ virtual void loadMessagesVariableSize(Common::SeekableReadStream *file, int offset, int number);
void loadFonts(Common::SeekableReadStream *file, int offset);
void loadFonts(byte *font, int charNumber);
@@ -563,6 +563,7 @@ public:
void loadAssetsAmigaFullGame() override;
void loadAssetsZXDemo() override;
+ void loadMessagesVariableSize(Common::SeekableReadStream *file, int offset, int number) override;
int _lastTenSeconds;
int _lastSecond;
diff --git a/engines/freescape/games/dark/amiga.cpp b/engines/freescape/games/dark/amiga.cpp
index 6647b6239f8..51b6f005a9c 100644
--- a/engines/freescape/games/dark/amiga.cpp
+++ b/engines/freescape/games/dark/amiga.cpp
@@ -75,6 +75,7 @@ void DarkEngine::loadAssetsAmigaFullGame() {
_border = loadAndConvertNeoImage(stream, 0x1b762);
load8bitBinary(stream, 0x2e96a, 16);
loadPalettes(stream, 0x2e638);
+ loadMessagesVariableSize(stream, 0x3d37, 66);
}
void DarkEngine::drawAmigaAtariSTUI(Graphics::Surface *surface) {
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index a80ae57ce1b..a21ad7f5803 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -775,6 +775,24 @@ void DarkEngine::drawInfoMenu() {
delete surface;
}
+void DarkEngine::loadMessagesVariableSize(Common::SeekableReadStream *file, int offset, int number) {
+ file->seek(offset);
+ debugC(1, kFreescapeDebugParser, "String table:");
+
+ for (int i = 0; i < number; i++) {
+ Common::String message = "";
+ while (true) {
+ byte c = file->readByte();
+ if (c <= 21)
+ break;
+ message = message + c;
+ }
+
+ _messagesList.push_back(message);
+ debugC(1, kFreescapeDebugParser, "'%s'", _messagesList[i].c_str());
+ }
+}
+
Common::Error DarkEngine::saveGameStreamExtended(Common::WriteStream *stream, bool isAutosave) {
for (auto &it : _areaMap) {
stream->writeUint16LE(it._key);
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index cb371d457d2..cf97cbdf9fb 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -1015,7 +1015,7 @@ void FreescapeEngine::loadMessagesVariableSize(Common::SeekableReadStream *file,
}
_messagesList.push_back(message);
- debugC(1, kFreescapeDebugParser, "%s", _messagesList[i].c_str());
+ debugC(1, kFreescapeDebugParser, "'%s'", _messagesList[i].c_str());
}
}
More information about the Scummvm-git-logs
mailing list