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

neuromancer noreply at scummvm.org
Mon Jul 31 06:07:03 UTC 2023


This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
b22b9430da FREESCAPE: added another variant of dark
4497a2b938 FREESCAPE: improved amiga detection of dark and castle releases
e2bf4f46b2 FREESCAPE: fixes to load data from the amiga release of dark
e5e232857a FREESCAPE: added atari st release of dark
1eb4a4a10d FREESCAPE: better reading of group objects in amiga/atari releases
bf85a24cec FREESCAPE: allow loading castle demo for amiga


Commit: b22b9430daa012bd3a1c9c0cb451cfc0e5c78feb
    https://github.com/scummvm/scummvm/commit/b22b9430daa012bd3a1c9c0cb451cfc0e5c78feb
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-07-31T08:05:56+02:00

Commit Message:
FREESCAPE: added another variant of dark

Changed paths:
    engines/freescape/detection.cpp


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index cdc3a29e403..8160e0604cf 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -319,6 +319,21 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_UNSTABLE,
 		GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
 	},
+	{
+		"darkside",
+		"",
+		{
+			{"DARKSIDE.EXE", 0, "5a936e23a890f4a96b6fdd865bd1f4a5", 20905},
+			{"DSIDEC.EXE", 0, "31e6c169d9270b6de8c1c2e746ac238e", 49504},
+			{"DSIDEE.EXE", 0, "524281f7d2dc49e0a41fcb1d38ee2559", 56800},
+			{"DSIDEH.EXE", 0, "5e18e0746647bd04f43b9db24b6a036d", 53232},
+			AD_LISTEND
+		},
+		Common::EN_ANY,
+		Common::kPlatformDOS,
+		ADGF_UNSTABLE,
+		GUIO3(GUIO_NOMIDI, GUIO_RENDEREGA, GUIO_RENDERCGA)
+	},
 	{
 		"darkside",
 		"Demo",


Commit: 4497a2b9387d69d660b314f42293cc4c06008657
    https://github.com/scummvm/scummvm/commit/4497a2b9387d69d660b314f42293cc4c06008657
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-07-31T08:05:56+02:00

Commit Message:
FREESCAPE: improved amiga detection of dark and castle releases

Changed paths:
    engines/freescape/detection.cpp


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index 8160e0604cf..00e3d5354a6 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -289,6 +289,20 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_UNSTABLE,
 		GUIO1(GUIO_NOMIDI)
 	},
+	// Stampede Amiga, Issue 1, July 1990
+	{
+		"darkside",
+		"",
+		{
+			{"DARKSIDE", 0, "5cf22e88959284097790189cf05b1862", 84004},
+			{"1.DRK", 0, "49cc73a5ca7adb26065286a7afd4d0a4", 280704},
+			AD_LISTEND
+		},
+		Common::EN_ANY,
+		Common::kPlatformAmiga,
+		ADGF_UNSTABLE,
+		GUIO1(GUIO_NOMIDI)
+	},
 	{
 		"darkside",
 		"",
@@ -444,7 +458,7 @@ static const ADGameDescription gameDescriptions[] = {
 	// Stampede Amiga, Issue 1, July 1990
 	{
 		"castlemaster",
-		"Demo",
+		"",
 		{
 			{"cm", 0, "b7e713a0742fa09aa81c9606bbbba4af", 4068},
 			{"x", 0, "c8c811439da0cf8a193e35feb5b5c6dc", 353388},
@@ -452,7 +466,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformAmiga,
-		ADGF_UNSTABLE | ADGF_DEMO,
+		ADGF_UNSTABLE,
 		GUIO1(GUIO_NOMIDI)
 	},
 	{


Commit: e2bf4f46b281831581b2bd2854d90d02d94726db
    https://github.com/scummvm/scummvm/commit/e2bf4f46b281831581b2bd2854d90d02d94726db
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-07-31T08:05:56+02:00

Commit Message:
FREESCAPE: fixes to load data from the amiga release of dark

Changed paths:
    engines/freescape/freescape.cpp
    engines/freescape/games/dark/amiga.cpp
    engines/freescape/games/palettes.cpp
    engines/freescape/language/8bitDetokeniser.cpp
    engines/freescape/loaders/8bitBinaryLoader.cpp
    engines/freescape/ui.cpp


diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 7c49535d9d3..c1cddb4903d 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -198,13 +198,15 @@ void FreescapeEngine::drawBorder() {
 
 void FreescapeEngine::drawTitle() {
 	_gfx->setViewport(_fullscreenViewArea);
-	if (!_titleTexture) {
-		Graphics::Surface *title = _gfx->convertImageFormatIfNecessary(_title);
-		_titleTexture = _gfx->createTexture(title);
-		title->free();
-		delete title;
+	if (_title) {
+		if (!_titleTexture) {
+			Graphics::Surface *title = _gfx->convertImageFormatIfNecessary(_title);
+			_titleTexture = _gfx->createTexture(title);
+			title->free();
+			delete title;
+		}
+		_gfx->drawTexturedRect2D(_fullscreenViewArea, _fullscreenViewArea, _titleTexture);
 	}
-	_gfx->drawTexturedRect2D(_fullscreenViewArea, _fullscreenViewArea, _titleTexture);
 	_gfx->setViewport(_viewArea);
 }
 
diff --git a/engines/freescape/games/dark/amiga.cpp b/engines/freescape/games/dark/amiga.cpp
index fcc2b4c8f71..a032595036c 100644
--- a/engines/freescape/games/dark/amiga.cpp
+++ b/engines/freescape/games/dark/amiga.cpp
@@ -73,6 +73,7 @@ Common::SeekableReadStream *DarkEngine::decryptFile(const Common::String filenam
 void DarkEngine::loadAssetsAmigaFullGame() {
 	Common::SeekableReadStream *stream = decryptFile("1.drk");
 	load8bitBinary(stream, 0x2e96a, 16);
+	loadPalettes(stream, 0x2e638);
 }
 
 } // End of namespace Freescape
\ No newline at end of file
diff --git a/engines/freescape/games/palettes.cpp b/engines/freescape/games/palettes.cpp
index ee93a325dd1..ad14649f479 100644
--- a/engines/freescape/games/palettes.cpp
+++ b/engines/freescape/games/palettes.cpp
@@ -130,10 +130,17 @@ void FreescapeEngine::loadColorPalette() {
 void FreescapeEngine::loadPalettes(Common::SeekableReadStream *file, int offset) {
 	file->seek(offset);
 	int r, g, b;
-	// This loop will load all the available palettes, which are more
-	// the current areas. This indicates that more areas
-	// were originally planned, but they are not in the final game
-	for (uint i = 0; i < _areaMap.size() + 2; i++) {
+	uint numberOfAreas = _areaMap.size();
+
+	if (isDriller())
+		// This loop will load all the available palettes, which are more
+		// than the current areas in Driller. This indicates that more areas
+		// were originally planned, but they are not in the final game
+		numberOfAreas += 2;
+	else if (isDark())
+		numberOfAreas -= 2;
+
+	for (uint i = 0; i < numberOfAreas; i++) {
 		int label = readField(file, 8);
 		auto palette = new byte[16][3];
 		debugC(1, kFreescapeDebugParser, "Loading palette for area: %d at %lx", label, file->pos());
diff --git a/engines/freescape/language/8bitDetokeniser.cpp b/engines/freescape/language/8bitDetokeniser.cpp
index 747ce3e9101..98ae3b66348 100644
--- a/engines/freescape/language/8bitDetokeniser.cpp
+++ b/engines/freescape/language/8bitDetokeniser.cpp
@@ -48,7 +48,7 @@ Common::String detokenise8bitCondition(Common::Array<uint16> &tokenisedCondition
 		 2, 1, 1, 2, 1, 1, 2, 1,
 		 1, 2, 2, 1, 2, 0, 0, 0,
 		 1, 1, 0, 1, 1, 1, 1, 1,
-		 2, 2, 1, 1, 0, 1, 0, 0,
+		 2, 2, 1, 1, 1, 1, 0, 0,
 		 0, 0, 0, 0, 0, 0, 2, 2,
 		 1};
 
@@ -302,6 +302,11 @@ Common::String detokenise8bitCondition(Common::Array<uint16> &tokenisedCondition
 			currentInstruction = FCLInstruction(Token::PRINT);
 			break;
 
+		case 36: // Not sure about this one
+			detokenisedStream += "STOPANIM (";
+			currentInstruction = FCLInstruction(Token::STOPANIM);
+			break;
+
 		case 37:
 			detokenisedStream += "STARTANIM (";
 			currentInstruction = FCLInstruction(Token::STARTANIM);
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index 55f85977f22..1b139c59d38 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -537,7 +537,10 @@ Area *FreescapeEngine::load8bitArea(Common::SeekableReadStream *file, uint16 nco
 	}
 	int64 endLastObject = file->pos();
 	debugC(1, kFreescapeDebugParser, "Last position %lx", endLastObject);
-	assert(endLastObject == static_cast<int64>(base + cPtr) || areaNumber == 192);
+	if (isDark() && isAmiga())
+		assert(endLastObject <= static_cast<int64>(base + cPtr));
+	else
+		assert(endLastObject == static_cast<int64>(base + cPtr) || areaNumber == 192);
 	file->seek(base + cPtr);
 	uint8 numConditions = readField(file, 8);
 	debugC(1, kFreescapeDebugParser, "%d area conditions at %x of area %d", numConditions, base + cPtr, areaNumber);
diff --git a/engines/freescape/ui.cpp b/engines/freescape/ui.cpp
index 121137f3a88..6a2f5dda482 100644
--- a/engines/freescape/ui.cpp
+++ b/engines/freescape/ui.cpp
@@ -24,6 +24,9 @@
 namespace Freescape {
 
 void FreescapeEngine::titleScreen() {
+	if (!_title)
+		return;
+
 	int maxWait = 60 * 6;
 	for (int i = 0; i < maxWait; i++ ) {
 		Common::Event event;
@@ -61,6 +64,9 @@ void FreescapeEngine::titleScreen() {
 }
 
 void FreescapeEngine::borderScreen() {
+	if (!_border)
+		return;
+
 	int maxWait = 6 * 60;
 	for (int i = 0; i < maxWait; i++ ) {
 		Common::Event event;


Commit: e5e232857a9812ee86f5af65c31b93f7130a8599
    https://github.com/scummvm/scummvm/commit/e5e232857a9812ee86f5af65c31b93f7130a8599
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-07-31T08:05:56+02:00

Commit Message:
FREESCAPE: added atari st release of dark

Changed paths:
    engines/freescape/detection.cpp


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index 00e3d5354a6..94be669dc45 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -289,6 +289,20 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_UNSTABLE,
 		GUIO1(GUIO_NOMIDI)
 	},
+	// Cinemaware release
+	{
+		"darkside",
+		"",
+		{
+			{"0.DRK", 0, "e237ae052a85ff92e70bd3528442e1e4", 78298},
+			{"1.DRK", 0, "9e700d991054f4393b1ccef706586b5b", 223272},
+			AD_LISTEND
+		},
+		Common::EN_ANY,
+		Common::kPlatformAtariST,
+		ADGF_UNSTABLE,
+		GUIO1(GUIO_NOMIDI)
+	},
 	// Stampede Amiga, Issue 1, July 1990
 	{
 		"darkside",


Commit: 1eb4a4a10dc2a0aace717ae2ce9889c42e7290f8
    https://github.com/scummvm/scummvm/commit/1eb4a4a10dc2a0aace717ae2ce9889c42e7290f8
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-07-31T08:05:56+02:00

Commit Message:
FREESCAPE: better reading of group objects in amiga/atari releases

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


diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index 1b139c59d38..e4859f595cf 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -301,7 +301,12 @@ Object *FreescapeEngine::load8bitObject(Common::SeekableReadStream *file) {
 
 		byteSizeOfObject++;
 		while(--byteSizeOfObject > 0)
-			groupDataArray.push_back(readField(file, 8));
+			if (isAmiga() || isAtariST()) {
+				uint16 field = file->readUint16BE();
+				groupDataArray.push_back(field >> 8);
+				groupDataArray.push_back(field && 0xff);
+			} else
+				groupDataArray.push_back(readField(file, 8));
 
 		return new Group(
 			objectID,


Commit: bf85a24cec44ed17375818ec44554e6b7c6f5e30
    https://github.com/scummvm/scummvm/commit/bf85a24cec44ed17375818ec44554e6b7c6f5e30
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-07-31T08:05:56+02:00

Commit Message:
FREESCAPE: allow loading castle demo for amiga

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


diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index e4859f595cf..7da6db21cbd 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -510,6 +510,12 @@ Area *FreescapeEngine::load8bitArea(Common::SeekableReadStream *file, uint16 nco
 		extraColor[1] = readField(file, 8);
 		extraColor[2] = readField(file, 8);
 		extraColor[3] = readField(file, 8);
+
+		if (isAmiga()) {
+			// TODO
+			groundColor = skyColor;
+			skyColor = 0;
+		}
 	}
 	debugC(1, kFreescapeDebugParser, "Area name: %s", name.c_str());
 




More information about the Scummvm-git-logs mailing list