[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