[Scummvm-git-logs] scummvm master -> 342c96eec6c3e5a02fc38ebb305966b2b62c72ea

neuromancer noreply at scummvm.org
Thu Dec 29 17:13:12 UTC 2022


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:
aea468c6c8 FREESCAPE: support for two different Driller Amstrad CPC releases directly from their edsk files
342c96eec6 FREESCAPE: added border image for Driller Amstrad CPC releases and regenerated freescape.dat file


Commit: aea468c6c842e49c0fe33ccd97fa0090d66546e1
    https://github.com/scummvm/scummvm/commit/aea468c6c842e49c0fe33ccd97fa0090d66546e1
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-12-29T14:12:51-03:00

Commit Message:
FREESCAPE: support for two different Driller Amstrad CPC releases directly from their edsk files

Changed paths:
    engines/freescape/detection.cpp
    engines/freescape/freescape.h
    engines/freescape/games/driller.cpp


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index 44a17c3ed8f..4175b4dde9a 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -68,7 +68,19 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformAmstradCPC,
-		ADGF_TESTING,
+		ADGF_CPC_RETAIL | ADGF_TESTING,
+		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+	},
+	{
+		"driller",
+		"",
+		{
+			{"DRILLER.CPC.EDSK", 0, "252f90756eaee25f2231e8d3bfaab68f", 125952},
+			AD_LISTEND
+		},
+		Common::EN_ANY,
+		Common::kPlatformAmstradCPC,
+		ADGF_CPC_ZAFIRO | ADGF_TESTING,
 		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
 	},
 	{
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 58e337f859b..53039576998 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -347,6 +347,8 @@ enum DrillerReleaseFlags {
 		ADGF_AMIGA_BUDGET = (1 << 1),
 		ADGF_ZX_RETAIL = (1 << 2),
 		ADGF_ZX_MUSICAL = (1 << 3),
+		ADGF_CPC_RETAIL = (1 << 4),
+		ADGF_CPC_ZAFIRO = (1 << 5),
 };
 
 class DrillerEngine : public FreescapeEngine {
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index d782e11ae84..8ebbe3df93e 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -368,31 +368,31 @@ Common::SeekableReadStream *parseEDSK(const Common::String filename) {
 	// We don't know the final size, but we allocate enough
 	byte *memBuffer = (byte *)malloc(size); 
 
-	byte ntracks = edskBuffer[48] - 2;
 	byte nsides = edskBuffer[49];
 	assert(nsides == 1);
+	int ntracks = 0;
 	int i = 256;
 	int j = 0;
-	while (ntracks > 0) {
-		ntracks--;
-
+	while (i + 1 < size) {
 		byte ssize = edskBuffer[i + 0x14];
 		int start = i + 0x100;
-
+		debugC(1, kFreescapeDebugParser, "sector size: %d", ssize);
 		if (ssize == 2) {
 			i = i + 9 * 512 + 256;
 		} else if (ssize == 5) {
 			i = i + 8 * 512 + 256;
 		} else if (ssize == 0) {
-			i = i + 0x8400;
+			i = size - 1;
+		} else if (ssize == 3) {
+			break; // Not sure
 		} else {
-			assert(ntracks == 0);
+			error("ssize: %d", ssize);
 		}
 		int osize = i - start;
-		debugC(1, kFreescapeDebugParser, "copying start: %x size: %x", start, osize);
+		debugC(1, kFreescapeDebugParser, "copying track %d start: %x size: %x", ntracks, start, osize);
 		memcpy(memBuffer + j, edskBuffer + start, osize);
 		j = j + osize;
-
+		ntracks++;
 	}
 	free(edskBuffer);
 	return (new Common::MemoryReadStream(memBuffer, size));
@@ -507,7 +507,13 @@ void DrillerEngine::loadAssetsFullGame() {
 		//loadFonts(&file, 0x62ca);
 		//loadGlobalObjects(&file, 0x1c93);
 
-		load8bitBinary(stream, 0xec76, 4);
+		if (_variant & ADGF_CPC_RETAIL)
+			load8bitBinary(stream, 0xec76, 4);
+		else if (_variant & ADGF_CPC_ZAFIRO)
+			load8bitBinary(stream, 0xda76, 4);
+		else
+			error("Unknown Amstrad CPC variant");
+
 	} else if (_renderMode == Common::kRenderEGA) {
 		loadBundledImages();
 		file.open("DRILLE.EXE");


Commit: 342c96eec6c3e5a02fc38ebb305966b2b62c72ea
    https://github.com/scummvm/scummvm/commit/342c96eec6c3e5a02fc38ebb305966b2b62c72ea
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-12-29T14:12:51-03:00

Commit Message:
FREESCAPE: added border image for Driller Amstrad CPC releases and regenerated freescape.dat file

Changed paths:
  A devtools/create_freescape/driller-cpc_Amstrad CPC.bmp
    dists/engine-data/freescape.dat
    engines/freescape/games/driller.cpp


diff --git a/devtools/create_freescape/driller-cpc_Amstrad CPC.bmp b/devtools/create_freescape/driller-cpc_Amstrad CPC.bmp
new file mode 100644
index 00000000000..2b834a76adc
Binary files /dev/null and b/devtools/create_freescape/driller-cpc_Amstrad CPC.bmp differ
diff --git a/dists/engine-data/freescape.dat b/dists/engine-data/freescape.dat
index 9a09f177b63..0340b9413fa 100644
Binary files a/dists/engine-data/freescape.dat and b/dists/engine-data/freescape.dat differ
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index 8ebbe3df93e..5b9481019e9 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -107,6 +107,8 @@ DrillerEngine::DrillerEngine(OSystem *syst, const ADGameDescription *gd) : Frees
 		_viewArea = Common::Rect(36, 16, 284, 118);
 	else if (isSpectrum())
 		_viewArea = Common::Rect(58, 20, 266, 124);
+	else if (isCPC())
+		_viewArea = Common::Rect(36, 19, 284, 120);
 
 	_playerHeightNumber = 1;
 	_playerHeights.push_back(16);
@@ -501,6 +503,7 @@ void DrillerEngine::loadAssetsFullGame() {
 		else
 			error("Unknown ZX spectrum variant");
 	} else if (isCPC()) {
+		loadBundledImages();
 		Common::SeekableReadStream *stream = parseEDSK("driller.cpc.edsk");
 		//loadMessagesFixedSize(&file, 0x20e4, 14, 20);
 




More information about the Scummvm-git-logs mailing list