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

neuromancer noreply at scummvm.org
Wed Mar 8 19:43:41 UTC 2023


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:
b61d503e9a FREESCAPE: color and ui fixes for driller cpc
fd85df270f FREESCAPE: correctly parse images in dos driller demo and removed extra files from freescape.dat


Commit: b61d503e9ac979796050ea0e64b665271af311a3
    https://github.com/scummvm/scummvm/commit/b61d503e9ac979796050ea0e64b665271af311a3
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-03-08T20:45:02+01:00

Commit Message:
FREESCAPE: color and ui fixes for driller cpc

Changed paths:
    engines/freescape/games/driller/cpc.cpp
    engines/freescape/games/driller/driller.cpp


diff --git a/engines/freescape/games/driller/cpc.cpp b/engines/freescape/games/driller/cpc.cpp
index 25750cfb6b1..68c33eba2e4 100644
--- a/engines/freescape/games/driller/cpc.cpp
+++ b/engines/freescape/games/driller/cpc.cpp
@@ -123,11 +123,18 @@ void deobfuscateDrillerCPCVirtualWorlds(byte *memBuffer) {
 	}
 }
 
-byte kCPCPalettePinkBlueWhiteData[4][3] = {
+byte kCPCPaletteTitleData[4][3] = {
 	{0x00, 0x00, 0x00},
-	{0x55, 0xff, 0xff},
-	{0xff, 0x55, 0xff},
-	{0xff, 0xff, 0xff},
+	{0x00, 0x80, 0xff},
+	{0xff, 0x00, 0x00},
+	{0xff, 0xff, 0x00},
+};
+
+byte kCPCPaletteBorderData[4][3] = {
+	{0x00, 0x00, 0x00},
+	{0xff, 0x80, 0x00},
+	{0x80, 0xff, 0xff},
+	{0x00, 0x80, 0x00},
 };
 
 Graphics::ManagedSurface *readCPCImage(Common::SeekableReadStream *file) {
@@ -181,7 +188,7 @@ void DrillerEngine::loadAssetsCPCFullGame() {
 		error("Failed to open DSCN1.BIN");
 
 	_title = readCPCImage(&file);
-	_title->setPalette((byte*)&kCPCPalettePinkBlueWhiteData, 0, 4);
+	_title->setPalette((byte*)&kCPCPaletteTitleData, 0, 4);
 
 	file.close();
 	file.open("DSCN2.BIN");
@@ -189,7 +196,7 @@ void DrillerEngine::loadAssetsCPCFullGame() {
 		error("Failed to open DSCN2.BIN");
 
 	_border = readCPCImage(&file);
-	_border->setPalette((byte*)&kCPCPalettePinkBlueWhiteData, 0, 4);
+	_border->setPalette((byte*)&kCPCPaletteBorderData, 0, 4);
 
 	file.close();
 	file.open("DRILL.BIN");
@@ -220,9 +227,9 @@ void DrillerEngine::drawCPCUI(Graphics::Surface *surface) {
 
 	int score = _gameStateVars[k8bitVariableScore];
 	drawStringInSurface(_currentArea->_name, 200, 185, front, back, surface);
-	drawStringInSurface(Common::String::format("%04d", int(2 * _position.x())), 149, 145, front, back, surface);
-	drawStringInSurface(Common::String::format("%04d", int(2 * _position.z())), 149, 153, front, back, surface);
-	drawStringInSurface(Common::String::format("%04d", int(2 * _position.y())), 149, 161, front, back, surface);
+	drawStringInSurface(Common::String::format("%04d", int(2 * _position.x())), 150, 145, front, back, surface);
+	drawStringInSurface(Common::String::format("%04d", int(2 * _position.z())), 150, 153, front, back, surface);
+	drawStringInSurface(Common::String::format("%04d", int(2 * _position.y())), 150, 161, front, back, surface);
 	if (_playerHeightNumber >= 0)
 		drawStringInSurface(Common::String::format("%d", _playerHeightNumber), 54, 161, front, back, surface);
 	else
diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index 76bef52466b..62ff6f7d970 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -420,6 +420,9 @@ void DrillerEngine::drawInfoMenu() {
 		case Common::kRenderZX:
 			color = 6;
 			break;
+		case Common::kRenderCPC:
+			color = _gfx->_underFireBackgroundColor;
+			break;
 		default:
 			color = 14;
 	}


Commit: fd85df270fa8e3973f82bb565aba689d8b93fd7c
    https://github.com/scummvm/scummvm/commit/fd85df270fa8e3973f82bb565aba689d8b93fd7c
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-03-08T20:45:02+01:00

Commit Message:
FREESCAPE: correctly parse images in dos driller demo and removed extra files from freescape.dat

Changed paths:
  R devtools/create_freescape/driller_cga.bmp
  R devtools/create_freescape/driller_cpc.bmp
    dists/engine-data/freescape.dat
    engines/freescape/freescape.h
    engines/freescape/games/driller/dos.cpp
    engines/freescape/games/driller/driller.cpp


diff --git a/devtools/create_freescape/driller_cga.bmp b/devtools/create_freescape/driller_cga.bmp
deleted file mode 100644
index 4234daf00ac..00000000000
Binary files a/devtools/create_freescape/driller_cga.bmp and /dev/null differ
diff --git a/devtools/create_freescape/driller_cpc.bmp b/devtools/create_freescape/driller_cpc.bmp
deleted file mode 100644
index 2b834a76adc..00000000000
Binary files a/devtools/create_freescape/driller_cpc.bmp and /dev/null differ
diff --git a/dists/engine-data/freescape.dat b/dists/engine-data/freescape.dat
index 322725f9b14..4bae5edd3a7 100644
Binary files a/dists/engine-data/freescape.dat and b/dists/engine-data/freescape.dat differ
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;
 




More information about the Scummvm-git-logs mailing list