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

neuromancer noreply at scummvm.org
Mon Jan 2 11:44:50 UTC 2023


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

Summary:
3cd8f444b5 COMMON: added Commodore 64 rendering mode
7cee9ad61c FREESCAPE: basic parsing of Driller for C64
edc0cd234e PRIVATE: added support for the japanese mac release


Commit: 3cd8f444b55b86a2de39d534066ed9eff3511333
    https://github.com/scummvm/scummvm/commit/3cd8f444b55b86a2de39d534066ed9eff3511333
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-01-02T08:09:37-03:00

Commit Message:
COMMON: added Commodore 64 rendering mode

Changed paths:
    common/rendermode.cpp
    common/rendermode.h


diff --git a/common/rendermode.cpp b/common/rendermode.cpp
index a4ab61f1a05..3196429fe8f 100644
--- a/common/rendermode.cpp
+++ b/common/rendermode.cpp
@@ -50,6 +50,7 @@ const RenderModeDescription g_renderModes[] = {
 	{ "macintoshbw", _s("Macintosh b/w"), kRenderMacintoshBW },
 	{ "cpc", "Amstrad CPC", kRenderCPC },
 	{ "zx", "ZX Spectrum", kRenderZX },
+	{ "c64", "Commodore 64", kRenderC64 },
 	{nullptr, nullptr, kRenderDefault}
 };
 
diff --git a/common/rendermode.h b/common/rendermode.h
index 753411c0556..0e79d13936d 100644
--- a/common/rendermode.h
+++ b/common/rendermode.h
@@ -62,6 +62,7 @@ enum RenderMode {
 	kRenderCGA_BW = 15,
 	kRenderCPC = 16,
 	kRenderZX = 17,
+	kRenderC64 = 18,
 };
 
 struct RenderModeDescription {


Commit: 7cee9ad61c4fd50cb79ffaac831b80cce7fa75e1
    https://github.com/scummvm/scummvm/commit/7cee9ad61c4fd50cb79ffaac831b80cce7fa75e1
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-01-02T08:09:37-03:00

Commit Message:
FREESCAPE: basic parsing of Driller for C64

Changed paths:
    engines/freescape/detection.cpp
    engines/freescape/freescape.cpp
    engines/freescape/freescape.h
    engines/freescape/games/driller.cpp
    engines/freescape/games/palettes.cpp
    engines/freescape/gfx.cpp
    engines/freescape/gfx.h
    engines/freescape/loaders/8bitBinaryLoader.cpp


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index 4175b4dde9a..8f9b7599a91 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -83,6 +83,44 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_CPC_ZAFIRO | ADGF_TESTING,
 		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
 	},
+	{
+		"spacestationoblivion",
+		"",
+		{
+			{"SPACESTATIONOBLIVION.C64.EXTRACTED", 0, "85680576865e211f868885e9997a08b8", 22782},
+			AD_LISTEND
+		},
+		Common::EN_ANY,
+		Common::kPlatformC64,
+		ADGF_TESTING,
+		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+	},
+
+	{
+		"spacestationoblivion",
+		"",
+		{
+			{"SPACESTATIONOBLIVION.C64.EXTRACTED", 0, "2b3537e21b8b871ec074df2962999781", 64514},
+			AD_LISTEND
+		},
+		Common::EN_ANY,
+		Common::kPlatformC64,
+		ADGF_TESTING,
+		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+	},
+
+	{
+		"driller",
+		"",
+		{
+			{"DRILLER.C64.EXTRACTED", 0, "73a6f206e54fb13245fe6d92f60fbb34", 41071},
+			AD_LISTEND
+		},
+		Common::EN_ANY,
+		Common::kPlatformC64,
+		ADGF_TESTING,
+		GUIO2(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING)
+	},
 	{
 		"driller",
 		"",
diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index 81bd32d5c4d..54c77270779 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -53,6 +53,8 @@ FreescapeEngine::FreescapeEngine(OSystem *syst, const ADGameDescription *gd)
 		_renderMode = Common::kRenderCPC;
 	} else if (isSpectrum()) {
 		_renderMode = Common::kRenderZX;
+	} else if (isC64()) {
+		_renderMode = Common::kRenderC64;
 	}
 
 	_variant = gd->flags;
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 6688c844d2d..12120fc3e36 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -98,6 +98,7 @@ public:
 	bool isDOS() { return _gameDescription->platform == Common::kPlatformDOS; }
 	bool isSpectrum() { return _gameDescription->platform == Common::kPlatformZX; }
 	bool isCPC() { return _gameDescription->platform == Common::kPlatformAmstradCPC; }
+	bool isC64() { return _gameDescription->platform == Common::kPlatformC64; }
 
 	Common::Error run() override;
 
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index 552dc1c18ba..8aceabb3da4 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -516,7 +516,16 @@ void DrillerEngine::loadAssetsFullGame() {
 			// TODO
 		} else
 			error("Unknown Amstrad CPC variant");
-
+	} else if (isC64()) {
+		if (_targetName.hasPrefix("spacestationoblivion")) {
+			file.open("spacestationoblivion.c64.extracted");
+			//load8bitBinary(&file, 0xeee, 4);
+			load8bitBinary(&file, 0x8e02, 4);
+		} else if (_targetName.hasPrefix("driller")) {
+			file.open("driller.c64.extracted");
+			load8bitBinary(&file, 0x63a6, 4);
+			//load8bitBinary(&file, 0x58f4, 4);
+		}
 	} else if (_renderMode == Common::kRenderEGA) {
 		loadBundledImages();
 		file.open("DRILLE.EXE");
diff --git a/engines/freescape/games/palettes.cpp b/engines/freescape/games/palettes.cpp
index 989ff3c0d8f..c04ffdbc946 100644
--- a/engines/freescape/games/palettes.cpp
+++ b/engines/freescape/games/palettes.cpp
@@ -39,7 +39,27 @@ byte dos_EGA_palette[16][3] = {
 	{0xff, 0x55, 0x55},
 	{0xff, 0x55, 0xff},
 	{0xff, 0xff, 0x55},
-	{0xff, 0xff, 0xff}};
+	{0xff, 0xff, 0xff}
+};
+
+byte kDrillerC64Palette[16][3] = {
+	{0x00, 0x00, 0x00},
+	{0xff, 0xff, 0xff},
+	{0x88, 0x00, 0x00},
+	{0xdd, 0x88, 0x55},
+	{0x00, 0xcc, 0x55},
+	{0xcc, 0x44, 0xcc},
+	{0x00, 0x00, 0xaa},
+	{0xee, 0xee, 0x77},
+	{0xaa, 0xff, 0xee},
+	{0x66, 0x44, 0x00},
+	{0xff, 0x77, 0x77},
+	{0x33, 0x33, 0x33},
+	{0x77, 0x77, 0x77},
+	{0xaa, 0xff, 0x66},
+	{0x00, 0x88, 0xff},
+	{0xbb, 0xbb, 0xbb}
+};
 
 byte kDrillerZXPalette[9][3] = {
 	{0x00, 0x00, 0x00},
@@ -93,6 +113,8 @@ byte kDrillerCPCPalette1[27][3] = {
 void FreescapeEngine::loadColorPalette() {
 	if (_renderMode == Common::kRenderEGA) {
 		_gfx->_palette = (byte *)&dos_EGA_palette;
+	} else if (_renderMode == Common::kRenderC64) {
+		_gfx->_palette = (byte *)&kDrillerC64Palette;
 	} else if (_renderMode == Common::kRenderZX) {
 		_gfx->_palette = (byte *)kDrillerZXPalette;
 	} else if (_renderMode == Common::kRenderCPC) {
diff --git a/engines/freescape/gfx.cpp b/engines/freescape/gfx.cpp
index 85390ee9526..c271c80daf3 100644
--- a/engines/freescape/gfx.cpp
+++ b/engines/freescape/gfx.cpp
@@ -92,6 +92,19 @@ bool Renderer::getRGBAtCGA(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &
 	return true;
 }
 
+bool Renderer::getRGBAtC64(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2) {
+	if (index == _keyColor)
+		return false;
+
+	byte *entry = (*_colorMap)[index - 1];
+	byte be = *(entry);
+	readFromPalette(be >> 4, r1, g1, b1);
+	entry++;
+	be = *(entry);
+	readFromPalette(be >> 4, r2, g2, b2);
+	return true;
+}
+
 bool Renderer::getRGBAtZX(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *stipple) {
 	if (index == _keyColor)
 		return false;
@@ -241,6 +254,8 @@ bool Renderer::getRGBAt(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2,
 		return true;
 	} else if (_renderMode == Common::kRenderEGA)
 		return getRGBAtEGA(index, r1, g1, b1, r2, g2, b2);
+	else if (_renderMode == Common::kRenderC64)
+		return getRGBAtC64(index, r1, g1, b1, r2, g2, b2);
 	else if (_renderMode == Common::kRenderCGA)
 		return getRGBAtCGA(index, r1, g1, b1, r2, g2, b2);
 	else if (_renderMode == Common::kRenderCPC)
diff --git a/engines/freescape/gfx.h b/engines/freescape/gfx.h
index 1a337a2d81b..9d7ca6c378b 100644
--- a/engines/freescape/gfx.h
+++ b/engines/freescape/gfx.h
@@ -99,6 +99,7 @@ public:
 	void readFromPalette(uint8 index, uint8 &r, uint8 &g, uint8 &b);
 	uint8 indexFromColor(uint8 r, uint8 g, uint8 b);
 	bool getRGBAt(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2, byte *stipple);
+	bool getRGBAtC64(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2);
 	bool getRGBAtCGA(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2);
 	bool getRGBAtCPC(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2);
 	bool getRGBAtEGA(uint8 index, uint8 &r1, uint8 &g1, uint8 &b1, uint8 &r2, uint8 &g2, uint8 &b2);
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index 3ec6fa47242..a14397f033f 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -546,7 +546,7 @@ void FreescapeEngine::load8bitBinary(Common::SeekableReadStream *file, int offse
 	// grab the areas
 	Area *newArea = nullptr;
 	for (uint16 area = 0; area < numberOfAreas; area++) {
-		debugC(1, kFreescapeDebugParser, "Area offset %d", fileOffsetForArea[area]);
+		debugC(1, kFreescapeDebugParser, "Starting to parse area index %d at offset %x", area, fileOffsetForArea[area]);
 
 		file->seek(offset + fileOffsetForArea[area]);
 		newArea = load8bitArea(file, ncolors);


Commit: edc0cd234e6cb72558b5b68c5c12521847a5dbf6
    https://github.com/scummvm/scummvm/commit/edc0cd234e6cb72558b5b68c5c12521847a5dbf6
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-01-02T08:44:31-03:00

Commit Message:
PRIVATE: added support for the japanese mac release

Changed paths:
    engines/private/detection.cpp
    engines/private/private.cpp


diff --git a/engines/private/detection.cpp b/engines/private/detection.cpp
index 8a720a95a16..d16c5f61791 100644
--- a/engines/private/detection.cpp
+++ b/engines/private/detection.cpp
@@ -197,6 +197,15 @@ static const ADGameDescription gameDescriptions[] = {
 		ADGF_NO_FLAGS,
 		GUIO1(GUIO_NOMIDI)
 	},
+	{
+		"private-eye", // MacOS release (JP) uninstalled
+		0,
+		AD_ENTRY1s("xn--16jc8na7ay6a0eyg9e5nud0e4525d", "d:113b57e2f6bdaf1146fe83fe0f992891", 1477309),
+		Common::JA_JPN,
+		Common::kPlatformMacintosh,
+		ADGF_NO_FLAGS,
+		GUIO1(GUIO_NOMIDI)
+	},
 	{
 		"private-eye", // MacOS demo (US)
 		nullptr,
diff --git a/engines/private/private.cpp b/engines/private/private.cpp
index f54cf13aa7a..c691ec3e5b0 100644
--- a/engines/private/private.cpp
+++ b/engines/private/private.cpp
@@ -147,7 +147,10 @@ Common::SeekableReadStream *PrivateEngine::loadAssets() {
 
 	delete test;
 
-	file = Common::MacResManager::openFileOrDataFork(isDemo() ? "Private Eye Demo Installer" : "Private Eye Installer");
+	if (_language == Common::JA_JPN)
+		file = Common::MacResManager::openFileOrDataFork("xn--16jc8na7ay6a0eyg9e5nud0e4525d");
+	else
+		file = Common::MacResManager::openFileOrDataFork(isDemo() ? "Private Eye Demo Installer" : "Private Eye Installer");
 	if (file) {
 		Common::Archive *s = createStuffItArchive(file);
 		Common::SeekableReadStream *file2 = nullptr;




More information about the Scummvm-git-logs mailing list