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

neuromancer noreply at scummvm.org
Sat Sep 7 08:04:23 UTC 2024


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
f388369c79 FREESCAPE: improved border image loading from castle amiga demo


Commit: f388369c796c2057e842a80cd406d0996b8797c6
    https://github.com/scummvm/scummvm/commit/f388369c796c2057e842a80cd406d0996b8797c6
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-09-07T10:05:45+02:00

Commit Message:
FREESCAPE: improved border image loading from castle amiga demo

Changed paths:
    engines/freescape/freescape.h
    engines/freescape/games/castle/amiga.cpp
    engines/freescape/games/palettes.cpp


diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 1e8b58b07fb..4bfbe90f586 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -243,6 +243,7 @@ public:
 	Graphics::ManagedSurface *loadAndConvertNeoImage(Common::SeekableReadStream *stream, int offset, byte *palette = nullptr);
 	Graphics::ManagedSurface *loadAndCenterScrImage(Common::SeekableReadStream *stream);
 	void loadPalettes(Common::SeekableReadStream *file, int offset);
+	byte *loadPalette(Common::SeekableReadStream *file);
 	void swapPalette(uint16 areaID);
 	virtual byte *findCGAPalette(uint16 levelID);
 	const CGAPaletteEntry *_rawCGAPaletteByArea;
diff --git a/engines/freescape/games/castle/amiga.cpp b/engines/freescape/games/castle/amiga.cpp
index af6f946b5b7..01042a6f8b3 100644
--- a/engines/freescape/games/castle/amiga.cpp
+++ b/engines/freescape/games/castle/amiga.cpp
@@ -66,7 +66,7 @@ void CastleEngine::loadAssetsAmigaDemo() {
 	if (!file.isOpen())
 		error("Failed to open 'x' file");
 
-	_viewArea = Common::Rect(37, 29, 277, 149);
+	_viewArea = Common::Rect(40, 29, 280, 154);
 	loadMessagesVariableSize(&file, 0x8bb2, 178);
 	loadRiddles(&file, 0x96c8, 20);
 	load8bitBinary(&file, 0x162a6, 16);
@@ -75,9 +75,13 @@ void CastleEngine::loadAssetsAmigaDemo() {
 	file.seek(0x2be96); // Area 255
 	_areaMap[255] = load8bitArea(&file, 16);
 
-	file.seek(0x2cf26);
+	file.seek(0x3c6d0);
+	byte *borderPalete = loadPalette(&file);
+
+	file.seek(0x2cf28 + 0x28 - 0x2 + 0x28);
 	_border = loadFrameFromPlanesVertical(&file, 160, 200);
-	_border->convertToInPlace(_gfx->_texturePixelFormat, _paletteByArea[1], 16);
+	_border->convertToInPlace(_gfx->_texturePixelFormat, borderPalete, 16);
+	free(borderPalete);
 	file.close();
 
 	_areaMap[2]->_groundColor = 1;
diff --git a/engines/freescape/games/palettes.cpp b/engines/freescape/games/palettes.cpp
index a6ed950a0cc..d8870095603 100644
--- a/engines/freescape/games/palettes.cpp
+++ b/engines/freescape/games/palettes.cpp
@@ -127,6 +127,24 @@ void FreescapeEngine::loadColorPalette() {
 	_gfx->setColorMap(&_colorMap);
 }
 
+byte *FreescapeEngine::loadPalette(Common::SeekableReadStream *file) {
+	int r, g, b;
+	auto palette = new byte[16][3];
+	for (int c = 0; c < 16; c++) {
+		int v = file->readUint16BE();
+		r = (v & 0xf00) >> 8;
+		r = r << 4 | r;
+		palette[c][0] = r & 0xff;
+		g = (v & 0xf0) >> 4;
+		g = g << 4 | g;
+		palette[c][1] = g & 0xff;
+		b = v & 0xf;
+		b = b << 4 | b;
+		palette[c][2] = b & 0xff;
+	}
+	return (byte *)palette;
+}
+
 void FreescapeEngine::loadPalettes(Common::SeekableReadStream *file, int offset) {
 	file->seek(offset);
 	int r, g, b;




More information about the Scummvm-git-logs mailing list