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

neuromancer noreply at scummvm.org
Mon Oct 14 10:45:16 UTC 2024


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

Summary:
1b5df20e1e FREESCAPE: convert menu strings to uppercase
74c21e6796 FREESCAPE: load font for castle demo for amiga
11b40ecf99 FREESCAPE: correctly load title screen for driller amiga
d0fd267dd3 FREESCAPE: correctly load title screen for driller atari


Commit: 1b5df20e1e2c721b1f3b9cdeaeefb3e0054f10ff
    https://github.com/scummvm/scummvm/commit/1b5df20e1e2c721b1f3b9cdeaeefb3e0054f10ff
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-10-14T12:31:11+02:00

Commit Message:
FREESCAPE: convert menu strings to uppercase

Changed paths:
    engines/freescape/ui.cpp


diff --git a/engines/freescape/ui.cpp b/engines/freescape/ui.cpp
index 7c93ab131da..c7dcb6cc69e 100644
--- a/engines/freescape/ui.cpp
+++ b/engines/freescape/ui.cpp
@@ -197,9 +197,9 @@ void FreescapeEngine::borderScreen() {
 			pad = 30;
 
 		if (isDOS())
-			lines.push_back(centerAndPadString("Configuration Menu", pad));
+			lines.push_back(centerAndPadString("CONFIGURATION MENU", pad));
 		else
-			lines.push_back(centerAndPadString("Control Options", pad));
+			lines.push_back(centerAndPadString("CONTROL OPTIONS", pad));
 		lines.push_back("");
 		lines.push_back(centerAndPadString("1: KEYBOARD ONLY   ", pad));
 		lines.push_back(centerAndPadString("2: IBM JOYSTICK    ", pad));
@@ -209,12 +209,12 @@ void FreescapeEngine::borderScreen() {
 		if (isDOS())
 			lines.push_back(centerAndPadString("SPACEBAR:  BEGIN MISSION", pad));
 		else
-			lines.push_back(centerAndPadString("Enter: Begin Mission", pad));
+			lines.push_back(centerAndPadString("ENTER: BEGIN MISSION", pad));
 		lines.push_back("");
 		if (isDOS())
 			lines.push_back(centerAndPadString("COPYRIGHT 1988 INCENTIVE", pad));
 		else
-			lines.push_back(centerAndPadString("(c) 1988 Incentive", pad));
+			lines.push_back(centerAndPadString("(c) 1988 INCENTIVE", pad));
 
 		lines.push_back("");
 


Commit: 74c21e67963494fa3ce282d4dd81a22ba1940dc5
    https://github.com/scummvm/scummvm/commit/74c21e67963494fa3ce282d4dd81a22ba1940dc5
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-10-14T12:31:11+02:00

Commit Message:
FREESCAPE: load font for castle demo for amiga

Changed paths:
    engines/freescape/games/castle/amiga.cpp
    engines/freescape/games/castle/castle.cpp
    engines/freescape/loaders/8bitBinaryLoader.cpp


diff --git a/engines/freescape/games/castle/amiga.cpp b/engines/freescape/games/castle/amiga.cpp
index ace70465087..59b29ab5f75 100644
--- a/engines/freescape/games/castle/amiga.cpp
+++ b/engines/freescape/games/castle/amiga.cpp
@@ -68,15 +68,33 @@ void CastleEngine::loadAssetsAmigaDemo() {
 
 	_viewArea = Common::Rect(40, 29, 280, 154);
 	loadMessagesVariableSize(&file, 0x8bb2, 178);
-	loadRiddles(&file, 0x96c8, 19);
+	loadRiddles(&file, 0x96c8 - 2 - 19 * 2, 19);
+
+	file.seek(0x3c6d0);
+	byte *borderPalete = loadPalette(&file);
+
+	file.seek(0x11eec);
+	Common::Array<Graphics::ManagedSurface *> chars;
+	for (int i = 0; i < 90; i++) {
+		Graphics::ManagedSurface *img = loadFrameFromPlanes(&file, 8, 8);
+		//Graphics::ManagedSurface *imgRiddle = new Graphics::ManagedSurface();
+		//imgRiddle->copyFrom(*img);
+
+		chars.push_back(img);
+		chars[i]->convertToInPlace(_gfx->_texturePixelFormat, borderPalete, 16);
+
+		//charsRiddle.push_back(imgRiddle);
+		//charsRiddle[i]->convertToInPlace(_gfx->_texturePixelFormat, (byte *)&kEGARiddleFontPalette, 16);
+	}
+	_font = Font(chars);
+	_font.setCharWidth(9);
+
 	load8bitBinary(&file, 0x162a6, 16);
 	loadPalettes(&file, 0x151a6);
 
 	file.seek(0x2be96); // Area 255
 	_areaMap[255] = load8bitArea(&file, 16);
 
-	file.seek(0x3c6d0);
-	byte *borderPalete = loadPalette(&file);
 
 	file.seek(0x2cf28 + 0x28 - 0x2 + 0x28);
 	_border = loadFrameFromPlanesVertical(&file, 160, 200);
@@ -93,6 +111,7 @@ void CastleEngine::loadAssetsAmigaDemo() {
 }
 
 void CastleEngine::drawAmigaAtariSTUI(Graphics::Surface *surface) {
+	drawStringInSurface(_currentArea->_name, 97, 182, 0, 0, surface);
 }
 
 } // End of namespace Freescape
\ No newline at end of file
diff --git a/engines/freescape/games/castle/castle.cpp b/engines/freescape/games/castle/castle.cpp
index bb8eba2c541..e0bbed1f0da 100644
--- a/engines/freescape/games/castle/castle.cpp
+++ b/engines/freescape/games/castle/castle.cpp
@@ -739,10 +739,8 @@ void CastleEngine::loadRiddles(Common::SeekableReadStream *file, int offset, int
 					message = message + c;
 			}
 
-			/*if (isAmiga() || isAtariST())
+			if (isAmiga() || isAtariST())
 				debug("extra byte: %x", file->readByte());
-			debugC(1, kFreescapeDebugParser, "extra byte: %x", file->readByte());
-			debugC(1, kFreescapeDebugParser, "extra byte: %x", file->readByte());*/
 			debugC(1, kFreescapeDebugParser, "'%s' with offset: %d, %d", message.c_str(), x, y);
 
 			riddle._lines.push_back(RiddleText(x, y, message));
@@ -1056,6 +1054,8 @@ void CastleEngine::updateTimeVariables() {
 }
 
 void CastleEngine::borderScreen() {
+	if (isAmiga() && isDemo())
+		return; // Skip character selection
 
 	if (isSpectrum())
 		FreescapeEngine::borderScreen();
@@ -1080,11 +1080,7 @@ void CastleEngine::borderScreen() {
 		surface->free();
 		delete surface;
 	}
-
-	if (isAmiga() && isDemo()) {
-		// Skip character selection
-	} else
-		selectCharacterScreen();
+	selectCharacterScreen();
 }
 
 void CastleEngine::drawOption() {
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index d70ba705196..9bd84806bc9 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -655,7 +655,7 @@ Area *FreescapeEngine::load8bitArea(Common::SeekableReadStream *file, uint16 nco
 		byte idx = readField(file, 8);
 		if (isAmiga())
 			name = _messagesList[idx + 51];
-		if (isSpectrum())
+		else if (isSpectrum())
 			name = areaNumber == 255 ? "GLOBAL" : _messagesList[idx + 16];
 		else
 			name = _messagesList[idx + 41];
@@ -765,6 +765,8 @@ Area *FreescapeEngine::load8bitArea(Common::SeekableReadStream *file, uint16 nco
 void FreescapeEngine::load8bitBinary(Common::SeekableReadStream *file, int offset, int ncolors) {
 	file->seek(offset);
 	uint8 numberOfAreas = readField(file, 8);
+	if (isAmiga() && isCastle() && isDemo())
+		numberOfAreas = 87;
 	debugC(1, kFreescapeDebugParser, "Number of areas: %d", numberOfAreas);
 
 	uint32 dbSize = readPtr(file);


Commit: 11b40ecf991d1705a1af2a4a23a7e1750a08b72f
    https://github.com/scummvm/scummvm/commit/11b40ecf991d1705a1af2a4a23a7e1750a08b72f
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-10-14T12:31:11+02:00

Commit Message:
FREESCAPE: correctly load title screen for driller amiga

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


diff --git a/engines/freescape/games/driller/amiga.cpp b/engines/freescape/games/driller/amiga.cpp
index 413870979d1..638c09b401d 100644
--- a/engines/freescape/games/driller/amiga.cpp
+++ b/engines/freescape/games/driller/amiga.cpp
@@ -35,13 +35,7 @@ void DrillerEngine::loadAssetsAmigaFullGame() {
 			error("Failed to open 'driller' executable for Amiga");
 
 		_border = loadAndConvertNeoImage(&file, 0x137f4);
-		byte *palette = (byte *)malloc(16 * 3);
-		for (int i = 0; i < 16; i++) { // gray scale palette
-			palette[i * 3 + 0] = i * (255 / 16);
-			palette[i * 3 + 1] = i * (255 / 16);
-			palette[i * 3 + 2] = i * (255 / 16);
-		}
-		_title = loadAndConvertNeoImage(&file, 0x10, palette);
+		_title = loadAndConvertNeoImage(&file, 0xce);
 
 		loadFonts(&file, 0x8940);
 		loadMessagesFixedSize(&file, 0xc66e, 14, 20);


Commit: d0fd267dd369a5432a03240de40da20a2d394181
    https://github.com/scummvm/scummvm/commit/d0fd267dd369a5432a03240de40da20a2d394181
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2024-10-14T12:31:11+02:00

Commit Message:
FREESCAPE: correctly load title screen for driller atari

Changed paths:
    engines/freescape/games/driller/amiga.cpp
    engines/freescape/games/driller/atari.cpp
    engines/freescape/games/driller/driller.cpp
    engines/freescape/games/driller/driller.h


diff --git a/engines/freescape/games/driller/amiga.cpp b/engines/freescape/games/driller/amiga.cpp
index 638c09b401d..14daf539e1b 100644
--- a/engines/freescape/games/driller/amiga.cpp
+++ b/engines/freescape/games/driller/amiga.cpp
@@ -235,6 +235,9 @@ void DrillerEngine::initAmigaAtari() {
 	_infoScreenArea = Common::Rect(125, 172, 152, 197);
 	_saveGameArea = Common::Rect(9, 145, 39, 154);
 	_loadGameArea = Common::Rect(9, 156, 39, 164);
+
+	_borderExtra = nullptr;
+	_borderExtraTexture = nullptr;
 }
 
 } // End of namespace Freescape
\ No newline at end of file
diff --git a/engines/freescape/games/driller/atari.cpp b/engines/freescape/games/driller/atari.cpp
index c4bad291d8d..611b5e94370 100644
--- a/engines/freescape/games/driller/atari.cpp
+++ b/engines/freescape/games/driller/atari.cpp
@@ -66,7 +66,8 @@ void DrillerEngine::loadAssetsAtariFullGame() {
 		Common::SeekableReadStream *stream = decryptFileAtari("x.prg");
 
 		_border = loadAndConvertNeoImage(stream, 0x14b96);
-		_title = loadAndConvertNeoImage(stream, 0x1c916);
+		_borderExtra = loadAndConvertNeoImage(stream, 0x1c916);
+		_title = loadAndConvertNeoImage(stream, 0x3f6);
 
 		loadFonts(stream, 0x8a92);
 		loadMessagesFixedSize(stream, 0xda22, 14, 20);
@@ -99,13 +100,7 @@ void DrillerEngine::loadAssetsAtariFullGame() {
 			loadSoundsFx(&file, 0x30da6 - 0x1d6, 25);
 		} else {
 			_border = loadAndConvertNeoImage(&file, 0x1371a);
-			byte *palette = (byte *)malloc(16 * 3);
-			for (int i = 0; i < 16; i++) { // gray scale palette
-				palette[i * 3 + 0] = i * (255 / 16);
-				palette[i * 3 + 1] = i * (255 / 16);
-				palette[i * 3 + 2] = i * (255 / 16);
-			}
-			_title = loadAndConvertNeoImage(&file, 0x10, palette);
+			_title = loadAndConvertNeoImage(&file, 0x396);
 
 			loadFonts(&file, 0x8a32);
 			loadMessagesFixedSize(&file, 0xc5d8, 14, 20);
diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index 9928eac2e37..62baeaa9346 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -111,6 +111,14 @@ DrillerEngine::DrillerEngine(OSystem *syst, const ADGameDescription *gd) : Frees
 
 DrillerEngine::~DrillerEngine() {
 	delete _drillBase;
+
+	if (_borderExtra) {
+		delete _borderExtra;
+		_borderExtra = nullptr;
+	}
+
+	if (_borderExtraTexture)
+		_gfx->freeTexture(_borderExtraTexture);
 }
 
 void DrillerEngine::initKeymaps(Common::Keymap *engineKeyMap, Common::Keymap *infoScreenKeyMap, const char *target) {
diff --git a/engines/freescape/games/driller/driller.h b/engines/freescape/games/driller/driller.h
index 5e5d87ef498..149346cbfe9 100644
--- a/engines/freescape/games/driller/driller.h
+++ b/engines/freescape/games/driller/driller.h
@@ -103,6 +103,8 @@ private:
 
 	uint32 getPixel8bitTitleImage(int index);
 	void renderPixels8bitTitleImage(Graphics::ManagedSurface *surface, int &i, int &j, int pixels);
+	Graphics::ManagedSurface *_borderExtra;
+	Texture *_borderExtraTexture;
 
 	Common::SeekableReadStream *decryptFileAtari(const Common::Path &filename);
 };




More information about the Scummvm-git-logs mailing list