[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