[Scummvm-git-logs] scummvm master -> 9b1185ff92813a740a1117937468af8ac1e62701

neuromancer noreply at scummvm.org
Sat Mar 28 09:28:57 UTC 2026


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

Summary:
0e12f5af57 FREESCAPE: improved endgame in amiga/atari
9f34f36c49 FREESCAPE: improved endgame code in amiga/atari
3c2446705f FREESCAPE: remove redundant code
ab06f0349b FREESCAPE: correctly show areas cleared in driller amiga/atari
9b1185ff92 FREESCAPE: correclty execute castle cpc endgame


Commit: 0e12f5af57ad3f6e36f4e510ca6761199d165e1b
    https://github.com/scummvm/scummvm/commit/0e12f5af57ad3f6e36f4e510ca6761199d165e1b
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-03-28T10:28:44+01:00

Commit Message:
FREESCAPE: improved endgame in amiga/atari

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 d942963ea4c..cfd74afb0b4 100644
--- a/engines/freescape/games/driller/amiga.cpp
+++ b/engines/freescape/games/driller/amiga.cpp
@@ -406,7 +406,7 @@ void DrillerEngine::drawAmigaAtariSTUI(Graphics::Surface *surface) {
 	Common::String coords;
 
 	// It seems that some demos will not include the complete font
-	if (!isDemo() || (_variant & GF_AMIGA_MAGAZINE_DEMO) || (_variant & GF_ATARI_MAGAZINE_DEMO)) {
+	if (_currentArea->getAreaID() != _endArea && (!isDemo() || (_variant & GF_AMIGA_MAGAZINE_DEMO) || (_variant & GF_ATARI_MAGAZINE_DEMO))) {
 
 		drawString(kDrillerFontSmall, ":", 38, 18, white, white, transparent, surface); // ":" is the next character to "9" representing "x"
 		coords = Common::String::format("%04d", 2 * int(_position.x()));


Commit: 9f34f36c491bac39df6c5474a6b43d6d975cfa55
    https://github.com/scummvm/scummvm/commit/9f34f36c491bac39df6c5474a6b43d6d975cfa55
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-03-28T10:28:44+01:00

Commit Message:
FREESCAPE: improved endgame code in amiga/atari

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


diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index 7298f771d48..009705cc815 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -937,14 +937,6 @@ bool DrillerEngine::triggerWinCondition() {
 	if (!_currentArea || _currentArea->getAreaID() != 18)
 		gotoArea(18, 20);
 
-	if ((isAmiga() || isAtariST()) && _currentArea && _currentArea->getAreaID() == _endArea) {
-		_endGameDelayTicks = 0;
-		_endGameKeyPressed = false;
-		_endGamePlayerEndArea = false;
-		_amigaAtariEndGameStep = -1;
-		_gameStateControl = kFreescapeGameStateEnd;
-	}
-
 	return true;
 }
 
@@ -974,7 +966,6 @@ void DrillerEngine::endGame() {
 			if (_gameStateVars[32] == 18) // All areas are complete
 				insertTemporaryMessage(_messagesList[19], INT_MIN);
 
-			waitInLoop(0); // Initial BT01 after switching to set 127
 			for (int step = 0; step < 21; step++) {
 				_position.z() += 400.0f / areaScale;
 				_position.y() -= 140.0f / areaScale;


Commit: 3c2446705fd5db7070114ea27560217d35216027
    https://github.com/scummvm/scummvm/commit/3c2446705fd5db7070114ea27560217d35216027
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-03-28T10:28:44+01:00

Commit Message:
FREESCAPE: remove redundant code

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


diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index 009705cc815..19cbd380457 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -963,9 +963,6 @@ void DrillerEngine::endGame() {
 			_endGamePlayerEndArea = false;
 			_amigaAtariEndGameStep = 0;
 
-			if (_gameStateVars[32] == 18) // All areas are complete
-				insertTemporaryMessage(_messagesList[19], INT_MIN);
-
 			for (int step = 0; step < 21; step++) {
 				_position.z() += 400.0f / areaScale;
 				_position.y() -= 140.0f / areaScale;
@@ -986,11 +983,6 @@ void DrillerEngine::endGame() {
 
 		if (!_endGamePlayerEndArea)
 			return;
-
-		if (_gameStateVars[32] == 18) { // All areas are complete
-			insertTemporaryMessage(_messagesList[19], _countdown - 2);
-			_gameStateVars[32] = 0;  // Avoid repeating the message
-		}
 	}
 
 	if (_endGameKeyPressed) {


Commit: ab06f0349bc3046ebc0b8a0ddeaefa49ca3d516a
    https://github.com/scummvm/scummvm/commit/ab06f0349bc3046ebc0b8a0ddeaefa49ca3d516a
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-03-28T10:28:44+01:00

Commit Message:
FREESCAPE: correctly show areas cleared in driller amiga/atari

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


diff --git a/engines/freescape/games/driller/driller.cpp b/engines/freescape/games/driller/driller.cpp
index 19cbd380457..19b07cd85b1 100644
--- a/engines/freescape/games/driller/driller.cpp
+++ b/engines/freescape/games/driller/driller.cpp
@@ -282,7 +282,7 @@ void DrillerEngine::gotoArea(uint16 areaID, int entranceID) {
 		_pitch = 335;
 		_flyMode = true; // Avoid falling
 		// Show the number of completed areas
-		_areaMap[127]->_name.replace(0, 3, Common::String::format("%4d", _gameStateVars[32]));
+		_areaMap[127]->_name.replace(0, isAmiga() || isAtariST() ? 4 : 3, Common::String::format("%4d", _gameStateVars[32]));
 	} else
 		playSound(_soundIndexAreaChange, false, _soundFxHandle);
 


Commit: 9b1185ff92813a740a1117937468af8ac1e62701
    https://github.com/scummvm/scummvm/commit/9b1185ff92813a740a1117937468af8ac1e62701
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2026-03-28T10:28:44+01:00

Commit Message:
FREESCAPE: correclty execute castle cpc endgame

Changed paths:
    engines/freescape/games/castle/castle.cpp
    engines/freescape/language/instruction.cpp
    engines/freescape/ui.cpp


diff --git a/engines/freescape/games/castle/castle.cpp b/engines/freescape/games/castle/castle.cpp
index 9e696d4ce2a..008f0c5f32f 100644
--- a/engines/freescape/games/castle/castle.cpp
+++ b/engines/freescape/games/castle/castle.cpp
@@ -737,18 +737,14 @@ bool CastleEngine::checkIfGameEnded() {
 }
 
 bool CastleEngine::triggerWinCondition() {
-	if (isDOS()) {
+	if (isDOS() || isAmiga() || isAtariST()) {
 		if (!_areaMap.contains(74))
 			return false;
 		gotoArea(74, 0);
 	} else {
-		setGameBit(31);
+		_gameStateVars[31] = 10;
+		gotoArea(16, 136);
 	}
-
-	_endGameDelayTicks = 0;
-	_endGameKeyPressed = false;
-	_endGamePlayerEndArea = false;
-	_gameStateControl = kFreescapeGameStateEnd;
 	return true;
 }
 
diff --git a/engines/freescape/language/instruction.cpp b/engines/freescape/language/instruction.cpp
index aa646daca7c..c67acf8abda 100644
--- a/engines/freescape/language/instruction.cpp
+++ b/engines/freescape/language/instruction.cpp
@@ -355,7 +355,7 @@ void FreescapeEngine::executeRedraw(FCLInstruction &instruction) {
 	if (isEclipse2() && _currentArea->getAreaID() == _startArea && _gameStateControl == kFreescapeGameStateStart)
 		delay = delay * 10;
 
-	if (isCastle() && isSpectrum() && getGameBit(31))
+	if (isCastle() && (isSpectrum() || isCPC()) && getGameBit(31))
 		delay = delay * 15; // Slow down redraws when the final cutscene is playing
 	waitInLoop(delay);
 }
diff --git a/engines/freescape/ui.cpp b/engines/freescape/ui.cpp
index 9f26f70a4de..dca45969c04 100644
--- a/engines/freescape/ui.cpp
+++ b/engines/freescape/ui.cpp
@@ -43,7 +43,7 @@ void FreescapeEngine::waitInLoop(int maxWait) {
 			case Common::EVENT_MOUSEMOVE:
 				if (_hasFallen || _playerWasCrushed || _gameStateControl != kFreescapeGameStatePlaying)
 					break;
-				if (isCastle() && isSpectrum() && getGameBit(31)) // Game is finished
+				if (isCastle() && (isSpectrum() || isCPC()) && getGameBit(31)) // Game is finished
 					break;
 				if (isDriller() && _gameStateVars[32] == 18) // Game is finished
 					break;




More information about the Scummvm-git-logs mailing list