[Scummvm-git-logs] scummvm branch-3-0 -> 55e1faeb1c793b145500c9ddd44001ebe204bc4f

neuromancer noreply at scummvm.org
Thu Dec 4 07:44:08 UTC 2025


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

Summary:
3f401ea758 FREESCAPE: better rendering of dark UI for zx spectrum
8803080129 FREESCAPE: adjusted positions of UI elements in castle (dos)
0cd77b4f6f FREESCAPE: adjusted support labels for some releases/games
55e1faeb1c TINYGL: Clamp viewport coordinates to INT_MAX and INT_MIN to avoid overflow


Commit: 3f401ea75842783f4f07f04ffac9389565a1f50d
    https://github.com/scummvm/scummvm/commit/3f401ea75842783f4f07f04ffac9389565a1f50d
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2025-12-04T08:39:06+01:00

Commit Message:
FREESCAPE: better rendering of dark UI for zx spectrum

Changed paths:
    engines/freescape/games/dark/zx.cpp


diff --git a/engines/freescape/games/dark/zx.cpp b/engines/freescape/games/dark/zx.cpp
index 10d64bf6d48..cd231aac36e 100644
--- a/engines/freescape/games/dark/zx.cpp
+++ b/engines/freescape/games/dark/zx.cpp
@@ -150,11 +150,11 @@ void DarkEngine::drawZXUI(Graphics::Surface *surface) {
 	drawStringInSurface(Common::String::format("%04d", int(2 * _position.z())), 191, 149, front, transparent, surface);
 	drawStringInSurface(Common::String::format("%04d", int(2 * _position.y())), 191, 157, front, transparent, surface);
 
-	surface->fillRect(Common::Rect(80, 165, 95, 171), back);
-	surface->fillRect(Common::Rect(80, 172, 102, 178), back);
+	surface->fillRect(Common::Rect(80, 165, 95, 172), back);
+	surface->fillRect(Common::Rect(80, 172, 102, 179), back);
 	drawStringInSurface(Common::String::format("%02d", int(_angleRotations[_angleRotationIndex])), 79, 165, front, transparent, surface);
 	drawStringInSurface(Common::String::format("%3d", _playerSteps[_playerStepIndex]), 79, 173, front, transparent, surface);
-	surface->fillRect(Common::Rect(96, 12, 151, 18), back);
+	surface->fillRect(Common::Rect(96, 12, 151, 19), back);
 	drawStringInSurface(Common::String::format("%07d", score), 95, 13, front, transparent, surface);
 	drawStringInSurface(Common::String::format("%3d%%", ecds), 191, 13, front, back, surface);
 
@@ -176,20 +176,26 @@ void DarkEngine::drawZXUI(Graphics::Surface *surface) {
 
 	if (shield >= 0) {
 		Common::Rect shieldBar;
-		shieldBar = Common::Rect(80, 140, 143 - (_maxShield - shield), 148);
+		shieldBar = Common::Rect(80, 141, 143 - (_maxShield - shield), 148);
 		surface->fillRect(shieldBar, back);
 
-		shieldBar = Common::Rect(80, 141, 143 - (_maxShield - shield), 147);
+		shieldBar = Common::Rect(80, 142, 143 - (_maxShield - shield), 147);
 		surface->fillRect(shieldBar, front);
+
+		shieldBar = Common::Rect(80, 144, 143 - (_maxShield - shield), 145);
+		surface->fillRect(shieldBar, back);
 	}
 
 	if (energy >= 0) {
 		Common::Rect energyBar;
-		energyBar = Common::Rect(80, 147, 143 - (_maxEnergy - energy), 155);
+		energyBar = Common::Rect(80, 148, 143 - (_maxEnergy - energy), 155);
 		surface->fillRect(energyBar, back);
 
-		energyBar = Common::Rect(80, 148, 143 - (_maxEnergy - energy), 154);
+		energyBar = Common::Rect(80, 149, 143 - (_maxEnergy - energy), 154);
 		surface->fillRect(energyBar, front);
+
+		energyBar = Common::Rect(80, 151, 143 - (_maxEnergy - energy), 152);
+		surface->fillRect(energyBar, back);
 	}
 	uint32 clockColor = _gfx->_texturePixelFormat.ARGBToColor(0xFF, 0xFF, 0x00, 0x00);
 	drawBinaryClock(surface, 273, 128, clockColor, back);


Commit: 88030801292d0b3b359e45e362f2bfeb53df176c
    https://github.com/scummvm/scummvm/commit/88030801292d0b3b359e45e362f2bfeb53df176c
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2025-12-04T08:39:21+01:00

Commit Message:
FREESCAPE: adjusted positions of UI elements in castle (dos)

Changed paths:
    engines/freescape/games/castle/dos.cpp


diff --git a/engines/freescape/games/castle/dos.cpp b/engines/freescape/games/castle/dos.cpp
index 23b33d6ff64..69f441e8e1d 100644
--- a/engines/freescape/games/castle/dos.cpp
+++ b/engines/freescape/games/castle/dos.cpp
@@ -463,7 +463,7 @@ void CastleEngine::drawDOSUI(Graphics::Surface *surface) {
 		surface->copyRectToSurfaceWithKey((const Graphics::Surface)*_keysBorderFrames[k], 76 - k * 3, 179, Common::Rect(0, 0, 6, 14), black);
 	}
 
-	drawEnergyMeter(surface, Common::Point(39, 157));
+	drawEnergyMeter(surface, Common::Point(38, 158));
 	int flagFrameIndex = (_ticks / 10) % 4;
 	surface->copyRectToSurface(*_flagFrames[flagFrameIndex], 285, 5, Common::Rect(0, 0, _flagFrames[flagFrameIndex]->w, _flagFrames[flagFrameIndex]->h));
 


Commit: 0cd77b4f6f81f4cf46b329d6b9a9eeb9fe6bfb31
    https://github.com/scummvm/scummvm/commit/0cd77b4f6f81f4cf46b329d6b9a9eeb9fe6bfb31
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2025-12-04T08:39:31+01:00

Commit Message:
FREESCAPE: adjusted support labels for some releases/games

Changed paths:
    engines/freescape/detection.cpp


diff --git a/engines/freescape/detection.cpp b/engines/freescape/detection.cpp
index 0f73184a86b..ccd37cd7ad1 100644
--- a/engines/freescape/detection.cpp
+++ b/engines/freescape/detection.cpp
@@ -101,7 +101,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("DRILLER.C64.DATA", "055b261bf28f313041bc4c23ff03c8da", 54532),
 		Common::EN_ANY,
 		Common::kPlatformC64,
-		ADGF_UNSTABLE | GF_C64_TAPE,
+		ADGF_TESTING | GF_C64_TAPE,
 		GUIO3(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING, GUIO_RENDERC64)
 	},
 	{
@@ -119,7 +119,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("DRILLER.C64.DATA", "055b261bf28f313041bc4c23ff03c8da", 55556),
 		Common::EN_ANY,
 		Common::kPlatformC64,
-		ADGF_UNSTABLE | GF_C64_DISC,
+		ADGF_TESTING | GF_C64_DISC,
 		GUIO3(GUIO_NOMIDI, GAMEOPTION_AUTOMATIC_DRILLING, GUIO_RENDERC64)
 	},
 	{
@@ -169,7 +169,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformAtariST,
-		ADGF_UNSTABLE | GF_ATARI_BUDGET,
+		ADGF_TESTING | GF_ATARI_BUDGET,
 		GUIO3(GUIO_NOMIDI, GUIO_RENDERATARIST, GAMEOPTION_AUTOMATIC_DRILLING)
 	},
 	{
@@ -367,7 +367,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformAmiga,
-		ADGF_UNSTABLE,
+		ADGF_TESTING,
 		GUIO2(GUIO_NOMIDI, GUIO_RENDERAMIGA)
 	},
 	// Microstatus release decrypted
@@ -381,7 +381,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformAmiga,
-		ADGF_UNSTABLE,
+		ADGF_TESTING,
 		GUIO2(GUIO_NOMIDI, GUIO_RENDERATARIST)
 	},
 	// Cinemaware release
@@ -395,7 +395,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformAtariST,
-		ADGF_UNSTABLE,
+		ADGF_TESTING,
 		GUIO2(GUIO_NOMIDI, GUIO_RENDERATARIST)
 	},
 	// Microstatus release
@@ -423,7 +423,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformAtariST,
-		ADGF_UNSTABLE,
+		ADGF_TESTING,
 		GUIO2(GUIO_NOMIDI, GUIO_RENDERATARIST)
 	},
 	// Stampede Amiga, Issue 1, July 1990
@@ -533,7 +533,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("DARKSIDE.C64.DATA", "7d5fc9a962a146e303a0c71a2d5c651e", 48129),
 		Common::EN_ANY,
 		Common::kPlatformC64,
-		ADGF_UNSTABLE | GF_C64_TAPE,
+		ADGF_TESTING | GF_C64_TAPE,
 		GUIO2(GUIO_NOMIDI, GUIO_RENDERC64)
 	},
 	{
@@ -542,7 +542,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("DARKSIDE.C64.DATA", "1d8e42c71d6a9ae0e682396824dd12ba", 53780),
 		Common::EN_ANY,
 		Common::kPlatformC64,
-		ADGF_UNSTABLE | GF_C64_DISC,
+		ADGF_TESTING | GF_C64_DISC,
 		GUIO2(GUIO_NOMIDI, GUIO_RENDERC64)
 	},
 	{
@@ -554,7 +554,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformC64,
-		ADGF_UNSTABLE | GF_C64_DISC,
+		ADGF_TESTING | GF_C64_DISC,
 		GUIO2(GUIO_NOMIDI, GUIO_RENDERC64)
 	},
 
@@ -801,7 +801,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("castlemaster.zx.data", "e2ed83c30cd0ed7119e349d0f677ae91", 36096),
 		Common::EN_ANY,
 		Common::kPlatformZX,
-		ADGF_TESTING | GF_ZX_RETAIL,
+		GF_ZX_RETAIL,
 		GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERZX)
 	},
 	// Disc release
@@ -811,7 +811,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("castlemaster.zx.data", "98513a4438ba93971d793a0fbc875b70", 36309),
 		Common::EN_ANY,
 		Common::kPlatformZX,
-		ADGF_TESTING | GF_ZX_DISC,
+		GF_ZX_DISC,
 		GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERZX)
 	},
 	// Spanish release was disc-only?
@@ -821,7 +821,7 @@ static const ADGameDescription gameDescriptions[] = {
 		AD_ENTRY1s("castlemaster.zx.data", "3e6f6b283fa00a3073edce2392950601", 36309),
 		Common::ES_ESP,
 		Common::kPlatformZX,
-		ADGF_TESTING | GF_ZX_DISC,
+		GF_ZX_DISC,
 		GUIO3(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDERZX)
 	},
 	{
@@ -835,7 +835,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::EN_ANY,
 		Common::kPlatformDOS,
-		ADGF_TESTING | ADGF_DEMO,
+		ADGF_DEMO,
 		GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
 	},
 	{
@@ -908,7 +908,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::UNK_LANG, // Multi-language
 		Common::kPlatformDOS,
-		ADGF_TESTING,
+		ADGF_NO_FLAGS,
 		GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
 	},
 	{
@@ -924,7 +924,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::UNK_LANG, // Multi-language
 		Common::kPlatformDOS,
-		ADGF_TESTING,
+		ADGF_NO_FLAGS,
 		GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
 	},
 	{
@@ -940,7 +940,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::UNK_LANG, // Multi-language
 		Common::kPlatformDOS,
-		ADGF_UNSTABLE,
+		ADGF_UNSUPPORTED, // Compressed with lzexe
 		GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
 	},
 	{
@@ -956,7 +956,7 @@ static const ADGameDescription gameDescriptions[] = {
 		},
 		Common::UNK_LANG, // Multi-language
 		Common::kPlatformDOS,
-		ADGF_UNSUPPORTED,
+		ADGF_UNSUPPORTED, // Game data offset are different
 		GUIO4(GUIO_NOMIDI, GAMEOPTION_TRAVEL_ROCK, GUIO_RENDEREGA, GUIO_RENDERCGA)
 	},
 	{


Commit: 55e1faeb1c793b145500c9ddd44001ebe204bc4f
    https://github.com/scummvm/scummvm/commit/55e1faeb1c793b145500c9ddd44001ebe204bc4f
Author: neuromancer (neuromancer at users.noreply.github.com)
Date: 2025-12-04T08:43:12+01:00

Commit Message:
TINYGL: Clamp viewport coordinates to INT_MAX and INT_MIN to avoid overflow

Changed paths:
    graphics/tinygl/clip.cpp


diff --git a/graphics/tinygl/clip.cpp b/graphics/tinygl/clip.cpp
index d0b0b968873..8dfc7b7ecb4 100644
--- a/graphics/tinygl/clip.cpp
+++ b/graphics/tinygl/clip.cpp
@@ -37,13 +37,37 @@ namespace TinyGL {
 #define CLIP_ZMAX   (1 << 5)
 
 void GLContext::gl_transform_to_viewport(GLVertex *v) {
-	float winv;
+	float winv, result;
 
 	// coordinates
 	winv = (float)(1.0 / v->pc.W);
-	v->zp.x = (int)(v->pc.X * winv * viewport.scale.X + viewport.trans.X);
-	v->zp.y = (int)(v->pc.Y * winv * viewport.scale.Y + viewport.trans.Y);
-	v->zp.z = (int)(v->pc.Z * winv * viewport.scale.Z + viewport.trans.Z);
+	// Compute and clamp X coordinate
+	result = v->pc.X * winv * viewport.scale.X + viewport.trans.X;
+	if (result > (float)INT_MAX)
+			v->zp.x = INT_MAX;
+	else if (result < (float)INT_MIN)
+			v->zp.x = INT_MIN;
+	else
+			v->zp.x = (int)result;
+
+	// Compute and clamp Y coordinate
+	result = v->pc.Y * winv * viewport.scale.Y + viewport.trans.Y;
+	if (result > (float)INT_MAX)
+			v->zp.y = INT_MAX;
+	else if (result < (float)INT_MIN)
+			v->zp.y = INT_MIN;
+	else
+			v->zp.y = (int)result;
+
+	// Compute and clamp Z coordinate
+	result = v->pc.Z * winv * viewport.scale.Z + viewport.trans.Z;
+	if (result > (float)INT_MAX)
+			v->zp.z = INT_MAX;
+	else if (result < (float)INT_MIN)
+			v->zp.z = INT_MIN;
+	else
+			v->zp.z = (int)result;
+
 
 	// color
 	v->zp.r = (int)(v->color.X * ZB_POINT_RED_MAX);




More information about the Scummvm-git-logs mailing list