[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