From c77e28050002a023caeaf6577af6eed38551b11f Mon Sep 17 00:00:00 2001 From: neuromancer Date: Wed, 8 Mar 2023 20:43:17 +0100 Subject: [PATCH] FREESCAPE: correctly parse images in dos driller demo and removed extra files from freescape.dat --- devtools/create_freescape/driller_cga.bmp | Bin 192054 -> 0 bytes devtools/create_freescape/driller_cpc.bmp | Bin 192054 -> 0 bytes dists/engine-data/freescape.dat | Bin 237009 -> 226704 bytes engines/freescape/freescape.h | 2 + engines/freescape/games/driller/dos.cpp | 47 +++++++++++++++++++- engines/freescape/games/driller/driller.cpp | 3 -- 6 files changed, 48 insertions(+), 4 deletions(-) delete mode 100644 devtools/create_freescape/driller_cga.bmp delete mode 100644 devtools/create_freescape/driller_cpc.bmp diff --git a/devtools/create_freescape/driller_cga.bmp b/devtools/create_freescape/driller_cga.bmp deleted file mode 100644 index 4234daf00acc69b94b44dceda04d2e0f911e34ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192054 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 diff --git a/devtools/create_freescape/driller_cpc.bmp b/devtools/create_freescape/driller_cpc.bmp deleted file mode 100644 index 2b834a76adcbe3bfb75cce651f4273e9045c5175..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192054 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 RlgVTW!sdu9_t`%5@SP+2N`*TJnxA%ajJy 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 F{SUrSC;9*Y diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h index 1b21c8edcc4..d2f8405437a 100644 --- a/engines/freescape/freescape.h +++ b/engines/freescape/freescape.h @@ -462,6 +462,8 @@ private: void drawAmigaAtariSTUI(Graphics::Surface *surface); Graphics::ManagedSurface *load8bitTitleImage(Common::SeekableReadStream *file, int offset); + Graphics::ManagedSurface *load8bitDemoImage(Common::SeekableReadStream *file, int offset); + uint32 getPixel8bitTitleImage(int index); void renderPixels8bitTitleImage(Graphics::ManagedSurface *surface, int &i, int &j, int pixels); }; diff --git a/engines/freescape/games/driller/dos.cpp b/engines/freescape/games/driller/dos.cpp index ee38b0a6b13..4998673f6a7 100644 --- a/engines/freescape/games/driller/dos.cpp +++ b/engines/freescape/games/driller/dos.cpp @@ -196,6 +196,50 @@ byte kEGADefaultPaletteData[16][3] = { {0x00, 0x00, 0x00} }; +Graphics::ManagedSurface *DrillerEngine::load8bitDemoImage(Common::SeekableReadStream *file, int offset) { + Graphics::ManagedSurface *surface = new Graphics::ManagedSurface(); + surface->create(320, 200, Graphics::PixelFormat::createFormatCLUT8()); + surface->fillRect(Common::Rect(0, 0, 320, 200), 0); + file->seek(offset); + int i = 0; + int j = 0; + while (true) { + byte pixels = file->readByte(); + for (int b = 0; b < 4; b++) { + int color = pixels & 3; + pixels = pixels >> 2; + surface->setPixel(i + (3 - b), 2 * j, color); + } + i = i + 4; + if (i == 320) { + i = 0; + j++; + } + if (j == 100) + break; + } + file->seek(0xc0, SEEK_CUR); + + i = 0; + j = 0; + while (true) { + byte pixels = file->readByte(); + for (int b = 0; b < 4; b++) { + int color = pixels & 3; + pixels = pixels >> 2; + surface->setPixel(i + (3 - b), 2 * j + 1, color); + } + i = i + 4; + if (i == 320) { + i = 0; + j++; + } + if (j == 100) + break; + } + return surface; +} + void DrillerEngine::loadAssetsDOSFullGame() { Common::File file; if (_renderMode == Common::kRenderEGA) { @@ -256,7 +300,6 @@ void DrillerEngine::loadAssetsDOSDemo() { _renderMode = Common::kRenderCGA; // DOS demos is CGA only _viewArea = Common::Rect(36, 16, 284, 117); // correct view area _gfx->_renderMode = _renderMode; - loadBundledImages(); file.open("d2"); if (!file.isOpen()) error("Failed to open 'd2' file"); @@ -265,6 +308,8 @@ void DrillerEngine::loadAssetsDOSDemo() { loadMessagesFixedSize(&file, 0x636, 14, 20); load8bitBinary(&file, 0x55b0, 4); loadGlobalObjects(&file, 0x8c); + _border = load8bitDemoImage(&file, 0x6220); + _border->setPalette((byte*)&kCGAPalettePinkBlueWhiteData, 0, 4); // Fixed for a corrupted area names in the demo data _areaMap[2]->_name = "LAPIS LAZULI"; diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp index 62ff6f7d970..782506c5ea8 100644 --- a/engines/freescape/games/driller/driller.cpp +++ b/engines/freescape/games/driller/driller.cpp @@ -105,9 +105,6 @@ void DrillerEngine::titleScreen() { } } void DrillerEngine::borderScreen() { - if (isDOS() && isDemo()) // Demo will not show the border - return; - if (isAmiga() || isAtariST()) // TODO: implement these with their own animations return;