[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