From cb2d09b5b8dcff46f7f73cdf4e24bf180bb79536 Mon Sep 17 00:00:00 2001 From: neuromancer Date: Thu, 3 Nov 2022 20:03:28 +0100 Subject: [PATCH] FREESCAPE: corrected the number of total areas in castle (thanks to @farmboy0) --- engines/freescape/loaders/8bitBinaryLoader.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp index e5824d993cb..4b80737165c 100644 --- a/engines/freescape/loaders/8bitBinaryLoader.cpp +++ b/engines/freescape/loaders/8bitBinaryLoader.cpp @@ -300,9 +300,6 @@ Area *FreescapeEngine::load8bitArea(Common::SeekableReadStream *file, uint16 nco // debug("Condition Ptr: %x", cPtr); debugC(1, kFreescapeDebugParser, "Pos before first object: %lx", file->pos()); - if (areaNumber == 192) - return nullptr; - uint8 gasPocketX = 0; uint8 gasPocketY = 0; uint8 gasPocketRadius = 0; @@ -402,6 +399,9 @@ void FreescapeEngine::load8bitBinary(Common::SeekableReadStream *file, int offse uint8 numberOfAreas = readField(file, 8); debugC(1, kFreescapeDebugParser, "Number of areas: %d", numberOfAreas); + if (isDOS() && isCastle()) // Castle Master for DOS has an invalid number of areas + numberOfAreas = 104; + uint32 dbSize = readField(file, 16); debugC(1, kFreescapeDebugParser, "Database ends at %x", dbSize); @@ -500,8 +500,7 @@ void FreescapeEngine::load8bitBinary(Common::SeekableReadStream *file, int offse else debugC(1, kFreescapeDebugParser, "WARNING: area ID repeated: %d", newArea->getAreaID()); } else { - debugC(1, kFreescapeDebugParser, "Invalid area %d?", area); - break; + error("Invalid area %d?", area); } }