[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