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

neuromancer noreply at scummvm.org
Sat Apr 6 11:12:50 UTC 2024


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:
7ce5c1344e FREESCAPE: added more dark releases for amiga/atari
ea2121f9ed FREESCAPE: improved parsing of groups in dark releases for amiga/atari


Commit: 7ce5c1344ede73903a3d09b2eebb5edcbdd445f9
    https://github.com/scummvm/scummvm/commit/7ce5c1344ede73903a3d09b2eebb5edcbdd445f9
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-04-06T13:10:22+02:00

Commit Message:
FREESCAPE: added more dark releases for amiga/atari

Changed paths:
    engines/freescape/detection.cpp


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index 870355ffb4d..35e840c5b16 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -335,6 +335,20 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_UNSTABLE,
 		GUIO1(GUIO_NOMIDI)
 	},
+	// Microstatus release
+	{
+		"darkside",
+		"Encrypted binary with CopyLock",
+		{
+			{"0.DRK", 0, "c19bc332f6550e21e7b8ef79bcf3d99e", 81840},
+			{"1.DRK", 0, "9e700d991054f4393b1ccef706586b5b", 223272},
+			AD_LISTEND
+		},
+		Common::EN_ANY,
+		Common::kPlatformAtariST,
+		ADGF_UNSUPPORTED,
+		GUIO1(GUIO_NOMIDI)
+	},
 	// Stampede Amiga, Issue 1, July 1990
 	{
 		"darkside",
@@ -346,7 +360,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformAmiga,
-		ADGF_UNSTABLE,
+		ADGF_UNSUPPORTED,
 		GUIO1(GUIO_NOMIDI)
 	},
 	{


Commit: ea2121f9ed5ded3f2ee5ec7470b7b80128bc40a1
    https://github.com/scummvm/scummvm/commit/ea2121f9ed5ded3f2ee5ec7470b7b80128bc40a1
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-04-06T13:10:22+02:00

Commit Message:
FREESCAPE: improved parsing of groups in dark releases for amiga/atari

Changed paths:
    engines/freescape/loaders/8bitBinaryLoader.cpp
    engines/freescape/objects/group.cpp


diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index cce00b8345a..3b06ed4ef84 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -130,11 +130,12 @@ Group *FreescapeEngine::load8bitGroupV1(Common::SeekableReadStream *file, byte r
 		else
 			value = readField(file, 8);
 
-		debugC(1, kFreescapeDebugParser, "Reading value: %x", value);
 		int opcode = value >> 8;
+		debugC(1, kFreescapeDebugParser, "Reading opcode: %x", opcode);
 		AnimationOpcode* operation = new AnimationOpcode(opcode);
 		byteSizeOfObject--;
 		if (opcode == 0xff) {
+			assert(value == 0xffff);
 			debugC(1, kFreescapeDebugParser, "Group operation rewind");
 		} else if (opcode == 0x01) {
 			debugC(1, kFreescapeDebugParser, "Group operation script execution");
diff --git a/engines/freescape/objects/group.cpp b/engines/freescape/objects/group.cpp
index 74635449f24..598769cee0c 100644
--- a/engines/freescape/objects/group.cpp
+++ b/engines/freescape/objects/group.cpp
@@ -67,14 +67,17 @@ void Group::linkObject(Object *obj) {
 	if (objectIndex == -1)
 		return;
 
+	debugC(1, kFreescapeDebugParser, "Linking object: %d to group %d", obj->getObjectID(), this->getObjectID());
 	_origins.push_back(obj->getOrigin());
+	debugC(1, kFreescapeDebugParser, "Origin %f, %f %f", obj->getOrigin().x(), obj->getOrigin().y(), obj->getOrigin().z());
+
 	obj->_partOfGroup = this;
 	_objects.push_back(obj);
 }
 
 void Group::assemble(int index) {
 	GeometricObject *gobj = (GeometricObject *)_objects[index];
-	gobj->makeVisible();
+	//gobj->makeVisible();
 	Math::Vector3d position = _operations[_step]->position;
 
 	if (!GeometricObject::isPolygon(gobj->getType()))
@@ -85,17 +88,7 @@ void Group::assemble(int index) {
 }
 
 void Group::run() {
-	if (_finished)
-		return;
-
-	uint32 groupSize = _objects.size();
-	for (uint32 i = 0; i < groupSize ; i++) {
-		run(i);
-	}
-}
-
-void Group::run(int index) {
-	if (_step < 0)
+	if (_finished || _step < 0)
 		return;
 
 	int opcode = _operations[_step]->opcode;
@@ -103,13 +96,21 @@ void Group::run(int index) {
 		reset();
 	} else if (opcode == 0x01) {
 		g_freescape->executeCode(_operations[_step]->condition, false, true, false, false);
+	} else if (opcode == 0x6e) {
+		uint32 groupSize = _objects.size();
+		for (uint32 i = 0; i < groupSize ; i++)
+			_objects[i]->makeInvisible();
 	} else {
-		if (opcode == 0x10)
+		uint32 groupSize = _objects.size();
+		for (uint32 i = 0; i < groupSize ; i++)
+			assemble(i);
+
+		if (opcode == 0x10) {
 			if (!_active) {
 				_step = -1;
 				return;
 			}
-		assemble(index);
+		}
 	}
 }
 




More information about the Scummvm-git-logs mailing list