[Scummvm-git-logs] scummvm master -> a0ff1b7fcf90a42a91a4b7554b2e277a77409a05
sdelamarre
noreply at scummvm.org
Sun May 18 21:13:33 UTC 2025
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
bf05db4894 GOB: Fix a crash when processing some invalid VMD frames (Adibou2/Sciences)
4c34b0adfa GOB: Add support for Italian translations in Adibou games
a0ff1b7fcf GOB: Ensure the 3D driving activity is disabled in Adibou2/Sciences
Commit: bf05db4894b9379cea8703b7a7f0d3c8ed14411f
https://github.com/scummvm/scummvm/commit/bf05db4894b9379cea8703b7a7f0d3c8ed14411f
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2025-05-18T23:13:09+02:00
Commit Message:
GOB: Fix a crash when processing some invalid VMD frames (Adibou2/Sciences)
Some VMDs sometimes include a frame with negative coordinates, which is
just ignored by the decoder. We must ignore it too outside the decoder
when cross-blitting a frame from a paletted video to a high color surface.
Changed paths:
engines/gob/videoplayer.cpp
diff --git a/engines/gob/videoplayer.cpp b/engines/gob/videoplayer.cpp
index 5acdad98ff4..757a24bc94e 100644
--- a/engines/gob/videoplayer.cpp
+++ b/engines/gob/videoplayer.cpp
@@ -683,12 +683,14 @@ bool VideoPlayer::playFrame(int slot, Properties &properties) {
int16 y = 0;
int16 width = 0;
int16 height = 0;
- video->decoder->getFrameCoords(video->decoder->getCurFrame(), x, y, width, height);
- Graphics::crossBlitMap(video->surface->getData(x, y), static_cast<const byte *>(surface->getBasePtr(x, y)),
- video->surface->getWidth() * video->surface->getBPP(),
- surface->pitch,
- width, height,
- video->surface->getBPP(), video->highColorMap);
+ if (video->decoder->getFrameCoords(video->decoder->getCurFrame(), x, y, width, height)
+ && x >= 0 && y >= 0 && width > 0 && height > 0) {
+ Graphics::crossBlitMap(video->surface->getData(x, y), static_cast<const byte *>(surface->getBasePtr(x, y)),
+ video->surface->getWidth() * video->surface->getBPP(),
+ surface->pitch,
+ width, height,
+ video->surface->getBPP(), video->highColorMap);
+ }
}
if (_vm->getGameType() != kGameTypeAdibou2)
Commit: 4c34b0adfa11870c7c2b744eaf6e9dda42d7a93e
https://github.com/scummvm/scummvm/commit/4c34b0adfa11870c7c2b744eaf6e9dda42d7a93e
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2025-05-18T23:13:09+02:00
Commit Message:
GOB: Add support for Italian translations in Adibou games
Changed paths:
engines/gob/databases.cpp
diff --git a/engines/gob/databases.cpp b/engines/gob/databases.cpp
index ffea1380611..13c78b3ed27 100644
--- a/engines/gob/databases.cpp
+++ b/engines/gob/databases.cpp
@@ -51,6 +51,8 @@ void TranslationDatabases::setLanguage(Common::Language language) {
lang = "E";
else if (language == Common::DE_DEU)
lang = "G";
+ else if (language == Common::IT_ITA)
+ lang = "G";
else if (language == Common::FR_FRA)
lang = "F";
else
Commit: a0ff1b7fcf90a42a91a4b7554b2e277a77409a05
https://github.com/scummvm/scummvm/commit/a0ff1b7fcf90a42a91a4b7554b2e277a77409a05
Author: Simon Delamarre (simon.delamarre14 at gmail.com)
Date: 2025-05-18T23:13:09+02:00
Commit Message:
GOB: Ensure the 3D driving activity is disabled in Adibou2/Sciences
This 3D minigame is a separate executable in the original, and is not based
on Gob, thus not supported by ScummVM.
Changed paths:
engines/gob/inter_v7.cpp
diff --git a/engines/gob/inter_v7.cpp b/engines/gob/inter_v7.cpp
index 1f82d4b7469..793555bb490 100644
--- a/engines/gob/inter_v7.cpp
+++ b/engines/gob/inter_v7.cpp
@@ -1739,9 +1739,7 @@ void Inter_v7::o7_getFreeMem(OpFuncParams ¶ms) {
void Inter_v7::o7_checkData(OpFuncParams ¶ms) {
Common::String file = getFile(_vm->_game->_script->evalString());
- if (_vm->getGameType() == kGameTypeAdibou2
- &&
- file == "CD.INF") {
+ if (_vm->getGameType() == kGameTypeAdibou2 && file == "CD.INF") {
// WORKAROUND: some versions of Adibou2 are only able to handle one CD at a time.
// In such versions, scripts always begin to look for CD.INF file in the CD, and check
// if its contents matches the selected application. We insert a hack here, to set
@@ -1784,7 +1782,10 @@ void Inter_v7::o7_checkData(OpFuncParams ¶ms) {
int32 size = -1;
int16 handle = 1;
SaveLoad::SaveMode mode = _vm->_saveLoad->getSaveMode(file.c_str());
- if (mode == SaveLoad::kSaveModeNone) {
+ if (_vm->getGameType() == kGameTypeAdibou2 && file.compareToIgnoreCase("CARON.BOU") == 0) {
+ // WORKAROUND to disable the 3D driving activity in Adibou2/Sciences (not supported in ScummVM)
+ size = -1;
+ } else if (mode == SaveLoad::kSaveModeNone) {
size = _vm->_dataIO->fileSize(file);
if (size == -1)
warning("File \"%s\" not found", file.c_str());
@@ -1801,9 +1802,7 @@ void Inter_v7::o7_checkData(OpFuncParams ¶ms) {
file.c_str(), size);
WRITE_VAR_OFFSET(varOff, handle);
- if (_vm->getGameType() == kGameTypeAdibou2
- &&
- _vm->isCurrentTot("BE_CD.TOT")) {
+ if (_vm->getGameType() == kGameTypeAdibou2 && _vm->isCurrentTot("BE_CD.TOT")) {
// WORKAROUND: in script BE_CD.TOT of Adibou 2, o7_checkData() can be called in the "leave" callback of a hotspot.
// This corrupts the "current hotspot" variable, which is also VAR(16) (!), and lead to an infinite loop.
// We skip writing the file size into VAR(16) here as a workarond (the value is not used anyway).
More information about the Scummvm-git-logs
mailing list